sws 0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+