sws 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. data/doc/DOC.otl +34 -0
  2. data/doc/Makefile +13 -0
  3. data/doc/architecture.dia +0 -0
  4. data/doc/docbook/architecture.png +0 -0
  5. data/doc/docbook/concepts.docbook +474 -0
  6. data/doc/docbook/installation.docbook +57 -0
  7. data/doc/docbook/introduction.docbook +130 -0
  8. data/doc/docbook/sws_manual.docbook +35 -0
  9. data/doc/docbook/todo.docbook +38 -0
  10. data/doc/docbook/tutorial.docbook +594 -0
  11. data/examples/README +1 -0
  12. data/examples/addressbook/CardBrowse/CardBrowse.html +43 -0
  13. data/examples/addressbook/CardBrowse/CardBrowse.rb +65 -0
  14. data/examples/addressbook/CardBrowse/CardBrowse.sws +92 -0
  15. data/examples/addressbook/Login/LoginPage.html +12 -0
  16. data/examples/addressbook/Login/LoginPage.rb +19 -0
  17. data/examples/addressbook/Login/LoginPage.sws +15 -0
  18. data/examples/addressbook/README +1 -0
  19. data/examples/addressbook/addressbook.rb +70 -0
  20. data/examples/addressbook/application.yaml +8 -0
  21. data/examples/addressbook/db.yaml +7 -0
  22. data/examples/component_demo/CheckBoxDemo/CheckBoxDemo.html +11 -0
  23. data/examples/component_demo/CheckBoxDemo/CheckBoxDemo.rb +21 -0
  24. data/examples/component_demo/CheckBoxDemo/CheckBoxDemo.sws +25 -0
  25. data/examples/component_demo/ComponentDemo.rb +21 -0
  26. data/examples/component_demo/ConditionalDemo/ConditionalDemo.html +18 -0
  27. data/examples/component_demo/ConditionalDemo/ConditionalDemo.rb +2 -0
  28. data/examples/component_demo/ConditionalDemo/ConditionalDemo.sws +22 -0
  29. data/examples/component_demo/FileUploadDemo/FileUploadDemo.html +10 -0
  30. data/examples/component_demo/FileUploadDemo/FileUploadDemo.rb +9 -0
  31. data/examples/component_demo/FileUploadDemo/FileUploadDemo.sws +33 -0
  32. data/examples/component_demo/FormFieldsDemo/FormFieldsDemo.html +12 -0
  33. data/examples/component_demo/FormFieldsDemo/FormFieldsDemo.rb +21 -0
  34. data/examples/component_demo/FormFieldsDemo/FormFieldsDemo.sws +40 -0
  35. data/examples/component_demo/FormListsDemo/FormListsDemo.html +11 -0
  36. data/examples/component_demo/FormListsDemo/FormListsDemo.rb +37 -0
  37. data/examples/component_demo/FormListsDemo/FormListsDemo.sws +47 -0
  38. data/examples/component_demo/GenericDemo/GenericDemo.html +4 -0
  39. data/examples/component_demo/GenericDemo/GenericDemo.rb +2 -0
  40. data/examples/component_demo/GenericDemo/GenericDemo.sws +10 -0
  41. data/examples/component_demo/HyperlinkDemo/HyperlinkDemo.html +8 -0
  42. data/examples/component_demo/HyperlinkDemo/HyperlinkDemo.rb +20 -0
  43. data/examples/component_demo/HyperlinkDemo/HyperlinkDemo.sws +19 -0
  44. data/examples/component_demo/ImageLinkDemo/ImageLinkDemo.html +11 -0
  45. data/examples/component_demo/ImageLinkDemo/ImageLinkDemo.rb +2 -0
  46. data/examples/component_demo/ImageLinkDemo/ImageLinkDemo.sws +14 -0
  47. data/examples/component_demo/PageWrapper/PageWrapper.html +23 -0
  48. data/examples/component_demo/PageWrapper/PageWrapper.rb +2 -0
  49. data/examples/component_demo/PageWrapper/PageWrapper.sws +42 -0
  50. data/examples/component_demo/README +1 -0
  51. data/examples/component_demo/RepetitionDemo/RepetitionDemo.html +13 -0
  52. data/examples/component_demo/RepetitionDemo/RepetitionDemo.rb +19 -0
  53. data/examples/component_demo/RepetitionDemo/RepetitionDemo.sws +20 -0
  54. data/examples/component_demo/StringDemo/StringDemo.html +5 -0
  55. data/examples/component_demo/StringDemo/StringDemo.rb +16 -0
  56. data/examples/component_demo/StringDemo/StringDemo.sws +14 -0
  57. data/examples/component_demo/application.yaml +28 -0
  58. data/examples/component_demo/poweredby.jpg +0 -0
  59. data/examples/component_demo/style.css +1 -0
  60. data/examples/movies/Menu/Menu.html +3 -0
  61. data/examples/movies/Menu/Menu.rb +7 -0
  62. data/examples/movies/Menu/Menu.sws +7 -0
  63. data/examples/movies/MovieBrowse/MovieBrowse.html +68 -0
  64. data/examples/movies/MovieBrowse/MovieBrowse.rb +178 -0
  65. data/examples/movies/MovieBrowse/MovieBrowse.sws +127 -0
  66. data/examples/movies/README +1 -0
  67. data/examples/movies/UserBrowse/UserBrowse.html +50 -0
  68. data/examples/movies/UserBrowse/UserBrowse.rb +69 -0
  69. data/examples/movies/UserBrowse/UserBrowse.sws +49 -0
  70. data/examples/movies/application.yaml +11 -0
  71. data/examples/movies/da.rb +36 -0
  72. data/examples/movies/dbmovies.rb +44 -0
  73. data/examples/movies/frameworks/TestFramework/framework.yaml +4 -0
  74. data/examples/movies/frameworks/TestFramework/resources/im1.jpg +0 -0
  75. data/examples/movies/images/pbr1b.jpg +0 -0
  76. data/examples/movies/movies.rb +28 -0
  77. data/examples/movies/movies.sds +119 -0
  78. data/examples/movies/movies.sqlite +0 -0
  79. data/examples/movies/movies_mysql.sql +28 -0
  80. data/examples/movies/movies_postgres.sql +27 -0
  81. data/examples/movies/movies_sqlite.sql +28 -0
  82. data/lib/sws.rb +89 -0
  83. data/lib/sws/Core/components/CheckBox/CheckBox.api +5 -0
  84. data/lib/sws/Core/components/CheckBox/CheckBox.rb +45 -0
  85. data/lib/sws/Core/components/CheckBoxList/CheckBoxList.api +13 -0
  86. data/lib/sws/Core/components/CheckBoxList/CheckBoxList.rb +54 -0
  87. data/lib/sws/Core/components/Conditional/Conditional.api +3 -0
  88. data/lib/sws/Core/components/Conditional/Conditional.html +1 -0
  89. data/lib/sws/Core/components/Conditional/Conditional.rb +39 -0
  90. data/lib/sws/Core/components/Conditional/Conditional.sws +2 -0
  91. data/lib/sws/Core/components/Content/Content.rb +18 -0
  92. data/lib/sws/Core/components/ExceptionPage/ExceptionPage.html +13 -0
  93. data/lib/sws/Core/components/ExceptionPage/ExceptionPage.rb +18 -0
  94. data/lib/sws/Core/components/ExceptionPage/ExceptionPage.sws +16 -0
  95. data/lib/sws/Core/components/FileUpload/FileUpload.api +16 -0
  96. data/lib/sws/Core/components/FileUpload/FileUpload.rb +62 -0
  97. data/lib/sws/Core/components/Form/Form.api +9 -0
  98. data/lib/sws/Core/components/Form/Form.html +3 -0
  99. data/lib/sws/Core/components/Form/Form.rb +55 -0
  100. data/lib/sws/Core/components/Form/Form.sws +12 -0
  101. data/lib/sws/Core/components/GenericContainer/GenericContainer.api +10 -0
  102. data/lib/sws/Core/components/GenericContainer/GenericContainer.html +1 -0
  103. data/lib/sws/Core/components/GenericContainer/GenericContainer.rb +39 -0
  104. data/lib/sws/Core/components/GenericContainer/GenericContainer.sws +12 -0
  105. data/lib/sws/Core/components/GenericElement/GenericElement.api +10 -0
  106. data/lib/sws/Core/components/GenericElement/GenericElement.rb +34 -0
  107. data/lib/sws/Core/components/HiddenField/HiddenField.api +7 -0
  108. data/lib/sws/Core/components/HiddenField/HiddenField.rb +37 -0
  109. data/lib/sws/Core/components/Hyperlink/Hyperlink.api +13 -0
  110. data/lib/sws/Core/components/Hyperlink/Hyperlink.html +1 -0
  111. data/lib/sws/Core/components/Hyperlink/Hyperlink.rb +102 -0
  112. data/lib/sws/Core/components/Hyperlink/Hyperlink.sws +12 -0
  113. data/lib/sws/Core/components/Image/Image.api +11 -0
  114. data/lib/sws/Core/components/Image/Image.rb +49 -0
  115. data/lib/sws/Core/components/ImageButton/ImageButton.api +16 -0
  116. data/lib/sws/Core/components/ImageButton/ImageButton.rb +76 -0
  117. data/lib/sws/Core/components/Link/Link.api +11 -0
  118. data/lib/sws/Core/components/Link/Link.rb +39 -0
  119. data/lib/sws/Core/components/PasswordField/PasswordField.api +7 -0
  120. data/lib/sws/Core/components/PasswordField/PasswordField.rb +41 -0
  121. data/lib/sws/Core/components/RadioButton/RadioButton.api +7 -0
  122. data/lib/sws/Core/components/RadioButton/RadioButton.rb +44 -0
  123. data/lib/sws/Core/components/RadioButtonList/RadioButtonList.api +20 -0
  124. data/lib/sws/Core/components/RadioButtonList/RadioButtonList.rb +76 -0
  125. data/lib/sws/Core/components/Repetition/Repetition.api +10 -0
  126. data/lib/sws/Core/components/Repetition/Repetition.html +1 -0
  127. data/lib/sws/Core/components/Repetition/Repetition.rb +137 -0
  128. data/lib/sws/Core/components/Repetition/Repetition.sws +2 -0
  129. data/lib/sws/Core/components/ResetButton/ResetButton.api +5 -0
  130. data/lib/sws/Core/components/ResetButton/ResetButton.rb +28 -0
  131. data/lib/sws/Core/components/Select/Select.api +24 -0
  132. data/lib/sws/Core/components/Select/Select.rb +57 -0
  133. data/lib/sws/Core/components/String/String.api +5 -0
  134. data/lib/sws/Core/components/String/String.rb +28 -0
  135. data/lib/sws/Core/components/SubmitButton/SubmitButton.api +6 -0
  136. data/lib/sws/Core/components/SubmitButton/SubmitButton.rb +53 -0
  137. data/lib/sws/Core/components/TextArea/TextArea.api +9 -0
  138. data/lib/sws/Core/components/TextArea/TextArea.rb +28 -0
  139. data/lib/sws/Core/components/TextField/TextField.api +9 -0
  140. data/lib/sws/Core/components/TextField/TextField.rb +46 -0
  141. data/lib/sws/Core/framework.yaml +25 -0
  142. data/lib/sws/JSComponents/components/JSMenu/JSMenu.api +5 -0
  143. data/lib/sws/JSComponents/components/JSMenu/JSMenu.html +58 -0
  144. data/lib/sws/JSComponents/components/JSMenu/JSMenu.rb +34 -0
  145. data/lib/sws/JSComponents/components/JSMenu/JSMenu.sws +37 -0
  146. data/lib/sws/JSComponents/framework.yaml +3 -0
  147. data/lib/sws/adaptor.rb +334 -0
  148. data/lib/sws/application.rb +604 -0
  149. data/lib/sws/component.rb +656 -0
  150. data/lib/sws/cookie.rb +27 -0
  151. data/lib/sws/direct_action.rb +38 -0
  152. data/lib/sws/extensions.rb +49 -0
  153. data/lib/sws/parsers.rb +374 -0
  154. data/lib/sws/request.rb +308 -0
  155. data/lib/sws/response.rb +70 -0
  156. data/lib/sws/session.rb +195 -0
  157. data/lib/sws/slot.rb +198 -0
  158. metadata +263 -0
@@ -0,0 +1,2 @@
1
+ class ConditionalDemo < SWS::Component
2
+ end
@@ -0,0 +1,22 @@
1
+ page_wrapper:
2
+ _class: PageWrapper
3
+
4
+ condition_true_negate_false:
5
+ _class: SWS::Conditional
6
+ condition: true
7
+ negate: false
8
+
9
+ condition_true_negate_true:
10
+ _class: SWS::Conditional
11
+ condition: true
12
+ negate: true
13
+
14
+ condition_false_negate_true:
15
+ _class: SWS::Conditional
16
+ condition: false
17
+ negate: true
18
+
19
+ condition_false_negate_false:
20
+ _class: SWS::Conditional
21
+ condition: false
22
+ negate: false
@@ -0,0 +1,10 @@
1
+ <span sws="page_wrapper">
2
+ <form sws="form">
3
+ <input type="file" sws="file_upload"><br>
4
+ <input type="submit" sws="submit_button"><br>
5
+ File name: <span sws="file_name_string"></span><br>
6
+ File content-type: <span sws="file_content_type_string"></span><br>
7
+ File charset: <span sws="file_charset_string"></span><br>
8
+ File contents: <span sws="file_contents_string"></span><br>
9
+ </form>
10
+ </span>
@@ -0,0 +1,9 @@
1
+ class FileUploadDemo < SWS::Component
2
+
3
+ attr_accessor :file_name, :file_contents, :file_content_type, :file_charset
4
+
5
+ def form_submitted
6
+ return self
7
+ end
8
+
9
+ end
@@ -0,0 +1,33 @@
1
+ page_wrapper:
2
+ _class: PageWrapper
3
+
4
+ form:
5
+ _class: SWS::Form
6
+ enctype: "'multipart/form-data'"
7
+
8
+ file_upload:
9
+ _class: SWS::FileUpload
10
+ filename: file_name
11
+ data: file_contents
12
+ content_type: file_content_type
13
+ charset: file_charset
14
+
15
+ file_name_string:
16
+ _class: SWS::String
17
+ value: file_name
18
+
19
+ file_content_type_string:
20
+ _class: SWS::String
21
+ value: file_content_type
22
+
23
+ file_charset_string:
24
+ _class: SWS::String
25
+ value: file_charset
26
+
27
+ file_contents_string:
28
+ _class: SWS::String
29
+ value: file_contents
30
+
31
+ submit_button:
32
+ _class: SWS::SubmitButton
33
+ action: form_submitted
@@ -0,0 +1,12 @@
1
+ <span sws="page_wrapper">
2
+ <form sws="form">
3
+ <input type="hidden" sws="hidden_field">
4
+ <input type="text" sws="text_field"><br>
5
+ <input type="password" sws="password_field"><br>
6
+ <textarea sws="textarea"></textarea><br>
7
+ <input type="reset" sws="reset_button"><input type="submit" sws="submit_button"><br>
8
+ Hidden field: <span sws="hidden_string"></span><br>
9
+ Text field: <span sws="text_string"></span><br>
10
+ Textarea: <span sws="textarea_string"></span><br>
11
+ </form>
12
+ </span>
@@ -0,0 +1,21 @@
1
+ class FormFieldsDemo < SWS::Component
2
+
3
+ attr_accessor :hidden_text, :text, :long_text, :password
4
+
5
+ def initialize (*args)
6
+
7
+ super(*args)
8
+ @hidden_text = "Some text in a hidden field"
9
+ @text = "Some text in Textfield"
10
+ @long_text = "some text in textarea"
11
+ @password = "pass"
12
+
13
+ end
14
+
15
+
16
+ def form_submitted ()
17
+ puts( "Password: #{@password}" )
18
+ return self
19
+ end
20
+
21
+ end
@@ -0,0 +1,40 @@
1
+ page_wrapper:
2
+ _class: PageWrapper
3
+
4
+ form:
5
+ _class: SWS::Form
6
+
7
+ hidden_field:
8
+ _class: SWS::HiddenField
9
+ value: hidden_text
10
+
11
+ text_field:
12
+ _class: SWS::TextField
13
+ value: text
14
+
15
+ password_field:
16
+ _class: SWS::PasswordField
17
+ value: password
18
+
19
+ textarea:
20
+ _class: SWS::TextArea
21
+ value: long_text
22
+
23
+ reset_button:
24
+ _class: SWS::ResetButton
25
+
26
+ submit_button:
27
+ _class: SWS::SubmitButton
28
+ action: form_submitted
29
+
30
+ hidden_string:
31
+ _class: SWS::String
32
+ value: hidden_text
33
+
34
+ text_string:
35
+ _class: SWS::String
36
+ value: text
37
+
38
+ textarea_string:
39
+ _class: SWS::String
40
+ value: long_text
@@ -0,0 +1,11 @@
1
+ <span sws="page_wrapper">
2
+ <form sws="form">
3
+ <span sws="checkboxlist"></span><br>
4
+ <span sws="radiobuttonlist"></span><br>
5
+ <select sws="select"></select><br>
6
+ <input type="submit" sws="submit_button"><br>
7
+ </form>
8
+ Selected names: <span sws="last_names"></span><br>
9
+ Selected animal: <span sws="selected_animal_string"></span><br>
10
+ Selected fruits' weight: <span sws="selected_fruit_string"></span><br>
11
+ </span>
@@ -0,0 +1,37 @@
1
+ Name = Struct.new( :first_name, :last_name )
2
+ Fruit = Struct.new( :name, :weight )
3
+
4
+ class FormListsDemo < SWS::Component
5
+
6
+ attr_reader :names, :last_names, :animals, :fruits, :total_fruit_weight
7
+ attr_accessor :name_cursor, :selected_names, :animal_cursor, :selected_animal, :fruit_cursor, :selected_fruits
8
+
9
+
10
+ def initialize ( *args )
11
+
12
+ super( *args )
13
+ @names = [ Name.new( "John", "Smith" ), Name.new( "Marek", "Janukowicz" ), Name.new( "First","Last" ) ]
14
+ @animals = [ "Cat", "Dog", "Bird" ]
15
+ @fruits = [ Fruit.new( "Apple",2 ), Fruit.new( "Banana",1 ), Fruit.new( "Pear", 4 ) ]
16
+
17
+ end
18
+
19
+
20
+ def form_submitted
21
+
22
+ if ( @selected_names )
23
+ @last_names = @selected_names.collect { |name| "#{name.last_name}, " }
24
+ else
25
+ @last_names = nil
26
+ end
27
+ if ( @selected_fruits )
28
+ @total_fruit_weight = @selected_fruits.inject(0) { |sum,fruit| sum + fruit.weight }
29
+ else
30
+ @total_fruit_weight = 0
31
+ end
32
+ return self
33
+
34
+ end
35
+
36
+
37
+ end
@@ -0,0 +1,47 @@
1
+ page_wrapper:
2
+ _class: PageWrapper
3
+
4
+ form:
5
+ _class: SWS::Form
6
+
7
+ checkboxlist:
8
+ _class: SWS::CheckBoxList
9
+ list: names
10
+ item: name_cursor
11
+ display_string: name_cursor.first_name
12
+ selections: selected_names
13
+ prefix: "'Name: '"
14
+ suffix: "'<BR>'"
15
+ disabled: false
16
+
17
+ radiobuttonlist:
18
+ _class: SWS::RadioButtonList
19
+ list: animals
20
+ item: animal_cursor
21
+ selection: selected_animal
22
+ suffix: "'<BR>'"
23
+
24
+ select:
25
+ _class: SWS::Select
26
+ list: fruits
27
+ item: fruit_cursor
28
+ display_string: fruit_cursor.name
29
+ selections: selected_fruits
30
+ size: 3
31
+ multiple: true
32
+
33
+ last_names:
34
+ _class: SWS::String
35
+ value: last_names
36
+
37
+ selected_animal_string:
38
+ _class: SWS::String
39
+ value: selected_animal
40
+
41
+ selected_fruit_string:
42
+ _class: SWS::String
43
+ value: total_fruit_weight
44
+
45
+ submit_button:
46
+ _class: SWS::SubmitButton
47
+ action: form_submitted
@@ -0,0 +1,4 @@
1
+ <span sws="page_wrapper">
2
+ <span sws="italic_container">Some italic text</span>
3
+ <span sws="hr_element">
4
+ </span>
@@ -0,0 +1,2 @@
1
+ class GenericDemo < SWS::Component
2
+ end
@@ -0,0 +1,10 @@
1
+ page_wrapper:
2
+ _class: PageWrapper
3
+
4
+ italic_container:
5
+ _class: SWS::GenericContainer
6
+ tag_name: "'I'"
7
+
8
+ hr_element:
9
+ _class: SWS::GenericElement
10
+ tag_name: "'HR'"
@@ -0,0 +1,8 @@
1
+ <span sws="page_wrapper">
2
+ This link gets target from "other_tag_string" binding<br>
3
+ <a sws="page_name_link">Go to StringDemo page</a><br>
4
+ And this one gets it from regular HTML tag attribute<br>
5
+ <a sws="href_link" target="_blank">Go to URL</a><br>
6
+ <a sws="action_link">Call action</a><br>
7
+ Action called <span sws="action_count_string"></span> times.
8
+ </span>
@@ -0,0 +1,20 @@
1
+ class HyperlinkDemo < SWS::Component
2
+
3
+ attr_reader :action_count
4
+
5
+ def initialize (*args)
6
+
7
+ super( *args )
8
+ @action_count = 0
9
+
10
+ end
11
+
12
+
13
+ def increase_counter ()
14
+
15
+ @action_count += 1
16
+ return self
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,19 @@
1
+ page_wrapper:
2
+ _class: PageWrapper
3
+
4
+ page_name_link:
5
+ _class: SWS::Hyperlink
6
+ page_name: "'StringDemo'"
7
+ other_tag_string: "'target=\"_blank\"'"
8
+
9
+ href_link:
10
+ _class: SWS::Hyperlink
11
+ href: "'http://www.ruby-lang.org'"
12
+
13
+ action_link:
14
+ _class: SWS::Hyperlink
15
+ action: increase_counter
16
+
17
+ action_count_string:
18
+ _class: SWS::String
19
+ value: action_count
@@ -0,0 +1,11 @@
1
+ <html>
2
+ <head>
3
+ <title>Component Demo</title>
4
+ <span sws="css_link"></span>
5
+ </head>
6
+ <body>
7
+ No wrapper here, as we need to change the head to add CSS there. Use <a sws="string_demo_link">this link</a> to go back.
8
+ Some <span class="bold">CSS-ized</span> text.<br>
9
+ <img sws="logo_image">
10
+ </body>
11
+ </html>
@@ -0,0 +1,2 @@
1
+ class ImageLinkDemo < SWS::Component
2
+ end
@@ -0,0 +1,14 @@
1
+ css_link:
2
+ _class: SWS::Link
3
+ resource: "'style.css'"
4
+ rel: "'stylesheet'"
5
+ type: "'text/css'"
6
+ framework: "'app'"
7
+
8
+ string_demo_link:
9
+ _class: SWS::Hyperlink
10
+ page_name: "'StringDemo'"
11
+
12
+ logo_image:
13
+ _class: SWS::Image
14
+ resource: "'poweredby.jpg'"
@@ -0,0 +1,23 @@
1
+ <html>
2
+ <head><title>Component Demo</title></head>
3
+
4
+ <body>
5
+ <center><h2>This is a demo for builtin SWS components. Select links on the left to view demo pages for particular components.</h2></center>
6
+ <table width=100%>
7
+ <tr><td width=20% valign="top">
8
+ <a sws="string_demo_link">String</a><br>
9
+ <a sws="repetition_demo_link">Repetition</a><br>
10
+ <a sws="conditional_demo_link">Conditional</a><br>
11
+ <a sws="checkbox_demo_link">CheckBox</a><br>
12
+ <a sws="form_lists_demo_link">Form lists</a><br>
13
+ <a sws="file_upload_demo_link">FileUpload</a><br>
14
+ <a sws="generic_demo_link">GenericContainer and GenericElement</a><br>
15
+ <a sws="form_fields_demo_link">Form fields</a><br>
16
+ <a sws="hyperlink_demo_link">Hyperlink</a><br>
17
+ <a sws="image_link_demo_link">Image and Link</a><br>
18
+ </td>
19
+ <td><span sws="content"></span></td>
20
+ </tr>
21
+ </table>
22
+ </body>
23
+ </html>
@@ -0,0 +1,2 @@
1
+ class PageWrapper < SWS::Component
2
+ end
@@ -0,0 +1,42 @@
1
+ string_demo_link:
2
+ _class: SWS::Hyperlink
3
+ page_name: "'StringDemo'"
4
+
5
+ repetition_demo_link:
6
+ _class: SWS::Hyperlink
7
+ page_name: "'RepetitionDemo'"
8
+
9
+ conditional_demo_link:
10
+ _class: SWS::Hyperlink
11
+ page_name: "'ConditionalDemo'"
12
+
13
+ checkbox_demo_link:
14
+ _class: SWS::Hyperlink
15
+ page_name: "'CheckBoxDemo'"
16
+
17
+ form_lists_demo_link:
18
+ _class: SWS::Hyperlink
19
+ page_name: "'FormListsDemo'"
20
+
21
+ file_upload_demo_link:
22
+ _class: SWS::Hyperlink
23
+ page_name: "'FileUploadDemo'"
24
+
25
+ generic_demo_link:
26
+ _class: SWS::Hyperlink
27
+ page_name: "'GenericDemo'"
28
+
29
+ form_fields_demo_link:
30
+ _class: SWS::Hyperlink
31
+ page_name: "'FormFieldsDemo'"
32
+
33
+ hyperlink_demo_link:
34
+ _class: SWS::Hyperlink
35
+ page_name: "'HyperlinkDemo'"
36
+
37
+ image_link_demo_link:
38
+ _class: SWS::Hyperlink
39
+ page_name: "'ImageLinkDemo'"
40
+
41
+ content:
42
+ _class: SWS::Content
@@ -0,0 +1 @@
1
+ This application contains demo pages for all SWS components.
@@ -0,0 +1,13 @@
1
+ <span sws="page_wrapper">
2
+ <table border=1>
3
+ <span sws="component_repetition">
4
+ <tr><th><span sws="component_name_string"></span></th>
5
+ <td><span sws="attribute_repetition">
6
+ <input type="text" sws="attribute_name_textfield"><br>
7
+ </span>
8
+ </td>
9
+ </tr>
10
+ </span>
11
+ </table>
12
+ </span>
13
+