summaryrefslogtreecommitdiff
path: root/webapps/qooxdoo-0.6.5-sdk/frontend/application
diff options
context:
space:
mode:
Diffstat (limited to 'webapps/qooxdoo-0.6.5-sdk/frontend/application')
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/Makefile53
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/Makefile120
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/Application.js75
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/ClassViewer.js1684
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/InfoViewer.js59
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/TreeUtil.js382
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/Viewer.js433
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/index.html15
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/css/apiviewer.css320
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class18.gifbin0 -> 590 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_abstract18.gifbin0 -> 608 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_abstract_warning18.gifbin0 -> 630 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_static18.gifbin0 -> 609 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_static_warning18.gifbin0 -> 631 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_warning18.gifbin0 -> 610 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/close.gifbin0 -> 121 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/colorstrip.gifbin0 -> 326 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/constant18.gifbin0 -> 123 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/constructor18.gifbin0 -> 316 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/event18.gifbin0 -> 91 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/method_protected18.gifbin0 -> 169 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/method_public18.gifbin0 -> 279 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/nextlevel.gifbin0 -> 66 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/open.gifbin0 -> 124 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_abstract18.gifbin0 -> 60 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_constructor18.gifbin0 -> 72 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_error18.gifbin0 -> 105 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_inherited18.gifbin0 -> 72 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_overridden18.gifbin0 -> 70 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_static18.gifbin0 -> 57 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_warning18.gifbin0 -> 189 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/package18.gifbin0 -> 221 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/package_warning18.gifbin0 -> 372 bytes
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/property18.gifbin0 -> 106 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/C.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/de.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/en.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/es.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/fr.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/Makefile104
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/Application.js410
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/ArticleView.js85
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/index.html15
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/css/reader.css54
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/ajaxian.xml789
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/febo-feeds.opml.xml29
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-blog.xml278
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-news.xml284
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/safari.xml223
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/zimbra-atom.xml699
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/images/locale.pngbin0 -> 811 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/proxy/proxy.php60
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/C.po93
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/de.po95
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/en.po93
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/es.po94
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/it.po94
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/ru.po94
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/sv.po93
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/tr.po95
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/index.html183
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/Makefile122
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/css/layout.css173
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/css/layout_ie.css11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_1.html73
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_2.html172
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_3.html39
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ButtonView_1.html89
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ButtonView_2.html98
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Button_1.html73
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/CheckBox_1.html104
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorPopup_1.html83
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorSelector_1.html29
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorSelector_2.html30
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ComboBoxEx_1.html230
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ComboBox_1.html101
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Command_1.html141
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Command_2.html186
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/DateChooser_1.html31
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Drag_1.html57
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fields_1.html107
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Flash_1.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1.html26
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/fsm.js297
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/gui.js95
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/main.js11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GalleryList_1.html129
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Gallery_1.html116
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_1.html107
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_2.html153
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_3.html160
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Iframe_1.html71
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Inline_1.html260
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_1.html67
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_2.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_3.html51
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_4.html58
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/List_1.html127
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Menu_1.html193
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/NativeWindow_1.html198
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RadioButton_1.html114
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RepeatButton_1.html73
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Resizer_1.html63
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RpcTreeFullControl_1.html194
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Spinner_1.html107
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/SplitPane_1.html72
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/SplitPane_2.html75
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TabView_1.html156
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TabView_2.html127
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Table_1.html107
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Table_2.html50
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_1.html252
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_2.html269
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_3.html184
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_4.html196
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolTip_1.html111
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_1.html235
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_2.html270
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_3.html298
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_4.html384
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Tree_1.html191
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Window_1.html308
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file1.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file10.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file2.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file3.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file4.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file5.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file6.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file7.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file8.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file9.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/fo_tester.flabin0 -> 58368 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/fo_tester.swfbin0 -> 10210 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/index.html8
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ArrayCreate_1.html57
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ArrayCreate_2.html47
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_1.html43
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_2.html51
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_3.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_4.html52
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_1.html43
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_2.html51
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_3.html52
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_4.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_5.html50
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/NumberCreate_1.html110
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectCreate_1.html57
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectCreate_2.html77
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_1.html92
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_2.html88
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_3.html97
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectSize_1.html62
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/Qooxdoo_1.html83
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_1.html95
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_2.html98
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_3.html109
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/TypeCheck_1.html84
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/index.html8
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_1.html286
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_2.html187
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_3.html322
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_4.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_5.html43
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_6.html43
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_7.html43
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_8.html43
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_9.html44
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Border_1.html177
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/BoxLayout_1.html283
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/BoxLayout_2.html324
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_1.html73
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_2.html25
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_2.xml51
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_3.html26
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_3.xml33
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_4.html42
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Button_1.html44
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CSS_1.html110
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_1.html616
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_3.html52
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_4.html50
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_5.html45
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clipping_1.html76
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clone_1.html91
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clone_2.html108
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_1.html235
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_2.html77
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_3.html176
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_1.html102
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_2.html116
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_3.html123
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_4.html41
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CookieStorage_1.html45
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CookieStorage_2.html67
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Cookie_1.html45
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CrossBrowser_1.html166
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CrossBrowser_2.html128
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DateChooserButton_1.html64
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DateChooserButton_2.html65
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_1.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_2.html224
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_3.html140
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_4.html140
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_5.html164
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_6.html71
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DragAndDropManager_1.html131
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DragAndDropManager_2.html135
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/EnabledDisabled_1.html230
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FieldSet_1.html141
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Fields_1.html179
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_1.html319
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_2.html193
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_3.html277
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FocusManager_1.html108
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Font_1.html63
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FormUtils_1.html86
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Gallery_2.html135
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Gallery_3.html178
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Generate_1.html267
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_1.html79
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_10.html94
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_11.html124
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_2.html88
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_3.html82
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_4.html81
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_5.html85
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_6.html109
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_7.html112
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_8.html115
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_9.html120
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/History_1.html84
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_1.html1261
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_2.html1233
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_3.html594
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HtmlTable_1.html142
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HtmlTable_2.html140
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/IconHtml_1.html29
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Image_1.html114
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Image_2.html150
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Keyhandler_1.html117
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_1.html172
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_2.html40
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_3.html177
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_4.html101
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Leak_1.html71
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Link_1.html29
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_1.html57
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_10.html86
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_2.html52
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_3.html52
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_4.html52
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_5.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_6.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_7.html114
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_8.html121
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_9.html119
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_1.html128
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_2.html111
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_3.html55
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Menu_1.html129
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Menu_2.html205
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Node_1.html39
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Popups_1.html106
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Popups_2.html102
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_1.html116
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_2.html134
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_3.html240
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_4.html470
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_5.html95
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/SplitPane_1.html91
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_1.html50
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_2.html52
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_3.html52
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_4.html53
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_5.html55
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_1.html227
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_2.html113
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_3.html39
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_4.html193
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_1.html196
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_2.html189
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_3.html114
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_4.html198
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_5.html198
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_6.html222
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_1.html69
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_2.html98
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_3.html84
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_4.html186
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_5.html176
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_6.html135
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_1.html171
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_2.html294
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_3.html201
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_4.html40
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_5.html148
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_6.html231
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_7.html233
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Umlauts_1.html26
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_1.html1257
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_2.html1227
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_3.html552
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_1.html179
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_2.html54
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_3.html99
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_4.html104
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_5.html221
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_6.html109
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/bigFont.css3
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/boldFont.css3
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/filesize/400kb.xml10224
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/filesize/40kb.xml1003
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.html11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.js10
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.txt8
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.xml11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.html11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.js10
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.txt8
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.xml11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.html11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.js10
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.txt8
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.xml11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.html11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.js10
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.txt8
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.xml11
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file1.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file10.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file2.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file3.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file4.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file5.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file6.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file7.swfbin0 -> 353 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file8.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file9.swfbin0 -> 354 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/fo_tester.flabin0 -> 58368 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/fo_tester.swfbin0 -> 10210 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/grid_dialog_box.pngbin0 -> 25808 bytes
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/index.html8
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/index.html122
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/translation/C.po0
-rwxr-xr-xwebapps/qooxdoo-0.6.5-sdk/frontend/application/sample/tool/layout.py149
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/Makefile106
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/class/showcase/Application.js1504
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/index.html15
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/C.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/ar.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de.po139
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de_AT.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de_DE.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/en.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/en_US.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/es.po141
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/es_ES.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/fr.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/fr_FR.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/it.po142
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/ru.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/sv.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/tr.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/zh.po138
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/Makefile107
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/class/webmail/Application.js147
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/index.html15
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/index.xhtml.tmpl17
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/C.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/de.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/en.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/es.po0
-rw-r--r--webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/fr.po0
374 files changed, 56676 insertions, 0 deletions
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/Makefile b/webapps/qooxdoo-0.6.5-sdk/frontend/application/Makefile
new file mode 100644
index 0000000000..ab6eeacb6c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/Makefile
@@ -0,0 +1,53 @@
+################################################################################
+#
+# qooxdoo - the new era of web development
+#
+# http://qooxdoo.org
+#
+# Copyright:
+# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org
+#
+# License:
+# LGPL: http://www.gnu.org/licenses/lgpl.html
+# EPL: http://www.eclipse.org/org/documents/epl-v10.php
+# See the LICENSE file in the project's top-level directory for details.
+#
+# Authors:
+# * Sebastian Werner (wpbasti)
+# * Andreas Ecker (ecker)
+# * Fabian Jakobs (fjakobs)
+#
+################################################################################
+
+APPLICATIONS = apiviewer feedreader sample showcase webmail
+
+source:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION source || exit 1; done
+
+build:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION build || exit 1; done
+
+api:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION api || exit 1; done
+
+all:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION all || exit 1; done
+
+publish:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION publish || exit 1; done
+
+fix:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION fix || exit 1; done
+
+pretty:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION pretty || exit 1; done
+
+clean:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION clean || exit 1; done
+
+distclean:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION distclean || exit 1; done
+
+locales:
+ @for APPLICATION in $(APPLICATIONS); do $(MAKE) -s -C $$APPLICATION locales || exit 1; done
+ \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/Makefile b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/Makefile
new file mode 100755
index 0000000000..65aa2373b7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/Makefile
@@ -0,0 +1,120 @@
+################################################################################
+#
+# qooxdoo - the new era of web development
+#
+# http://qooxdoo.org
+#
+# Copyright:
+# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org
+#
+# License:
+# LGPL: http://www.gnu.org/licenses/lgpl.html
+# EPL: http://www.eclipse.org/org/documents/epl-v10.php
+# See the LICENSE file in the project's top-level directory for details.
+#
+# Authors:
+# * Sebastian Werner (wpbasti)
+# * Andreas Ecker (ecker)
+# * Fabian Jakobs (fjakobs)
+#
+################################################################################
+
+################################################################################
+# BASIC SETTINGS
+################################################################################
+
+#
+# Location of your qooxdoo distribution
+# Could be relative from this location or absolute
+#
+QOOXDOO_PATH = ../../..
+
+#
+# The same as above, but from the webserver point of view
+# Starting point is the application HTML file of the source folder.
+# In most cases just add a "/.." compared to above
+#
+QOOXDOO_URI = ../../../..
+
+#
+# Namespace of your application e.g. custom
+#
+APPLICATION_NAMESPACE = apiviewer
+
+#
+# Titles used in your API viewer and during the build process
+#
+APPLICATION_MAKE_TITLE = APIVIEWER
+APPLICATION_API_TITLE = ApiViewer
+
+#
+# Additional files (space separated list)
+#
+APPLICATION_FILES = index.html
+
+
+
+
+
+################################################################################
+# ADVANCED SETTINGS
+################################################################################
+
+#
+# Enable resource filtering in API viewer
+#
+APPLICATION_RESOURCE_FILTER = true
+
+#
+# We don't need the full source code
+#
+APPLICATION_COMPLETE_SOURCE = false
+
+#
+# Disable line breaks
+#
+APPLICATION_LINEBREAKS_BUILD = false
+APPLICATION_LINEBREAKS_SOURCE = false
+
+#
+# qooxdoo.org sync
+#
+APPLICATION_PUBLISH_PATH = root@qooxdoo.org:/var/www/qooxdoo/api/$(FRAMEWORK_VERSION)
+
+
+
+
+
+
+################################################################################
+# INCLUDE CORE
+################################################################################
+
+ifneq ($(QOOXDOO_PATH),PLEASE_DEFINE_QOOXDOO_PATH)
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/targets.mk
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/application.mk
+endif
+
+error:
+ @echo " * Please configure QOOXDOO_PATH"
+
+
+
+
+
+
+################################################################################
+# EXTENSIONS
+################################################################################
+
+source:
+ @$(CMD_GENERATOR) \
+ --generate-api-documentation \
+ --api-documentation-json-file $(APPLICATION_PATH)/source/script/apidata.js \
+ --class-path $(FRAMEWORK_SOURCE_PATH)/class
+
+build:
+ @$(CMD_GENERATOR) \
+ --generate-api-documentation \
+ --api-documentation-json-file $(APPLICATION_PATH)/build/script/apidata.js \
+ --class-path $(FRAMEWORK_SOURCE_PATH)/class
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/Application.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/Application.js
new file mode 100644
index 0000000000..ac44e36e97
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/Application.js
@@ -0,0 +1,75 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Til Schneider (til132)
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(apiviewer)
+#resource(css:css)
+#resource(image:image)
+#embed(apiviewer.css/*)
+
+************************************************************************ */
+
+/**
+ * Your custom application
+ */
+qx.OO.defineClass("apiviewer.Application", qx.component.AbstractApplication,
+function () {
+ qx.component.AbstractApplication.call(this);
+});
+
+qx.Settings.setDefault("resourceUri", "./resource");
+
+
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.initialize = function(e)
+{
+ // Define alias for custom resource path
+ qx.manager.object.AliasManager.getInstance().add("api", qx.Settings.getValueOfClass("apiviewer.Application", "resourceUri"));
+
+ // Reduce log level
+ qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_WARN);
+
+ // Include CSS file
+ qx.html.StyleSheet.includeFile(qx.manager.object.AliasManager.getInstance().resolvePath("api/css/apiviewer.css"));
+};
+
+qx.Proto.main = function(e)
+{
+ // Initialize the viewer
+ this.viewer = new apiviewer.Viewer;
+ this.viewer.addToDocument();
+};
+
+qx.Proto.finalize = function(e)
+{
+ // Finally load the data
+ this.viewer.load("script/apidata.js");
+};
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/ClassViewer.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/ClassViewer.js
new file mode 100755
index 0000000000..083b558fa3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/ClassViewer.js
@@ -0,0 +1,1684 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Til Schneider (til132)
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(apiviewer)
+
+************************************************************************ */
+
+/**
+ * Shows the class details.
+ */
+qx.OO.defineClass("apiviewer.ClassViewer", qx.ui.embed.HtmlEmbed,
+function() {
+ qx.ui.embed.HtmlEmbed.call(this);
+
+ this.setOverflow("auto");
+ this.setPadding(20);
+ this.setEdge(0);
+ this.setHtmlProperty("id", "ClassViewer");
+ this.setVisibility(false);
+
+ apiviewer.ClassViewer.instance = this;
+});
+
+
+qx.Proto._fixLinks = function(el)
+{
+ var a = el.getElementsByTagName("a");
+ for (var i=0; i<a.length; i++)
+ {
+ if (typeof a[i].href == "string" && a[i].href.indexOf("http://") == 0) {
+ a[i].target = "_blank";
+ }
+ }
+}
+
+/**
+ * Initializes the content of the embedding DIV. Will be called by the
+ * HtmlEmbed element initialization routine.
+ */
+qx.Proto._syncHtml = function()
+{
+ var ClassViewer = apiviewer.ClassViewer;
+
+ document._detailViewer = this;
+
+ this._infoPanelHash = {};
+
+ var html = "";
+
+ // Add title
+ html += '<h1></h1>';
+
+ // Add description
+ html += ClassViewer.DIV_START + ClassViewer.DIV_END;
+
+ html += '<div id="ControlFrame">';
+ html += '<input type="checkbox" id="showInherited" onclick="document._detailViewer._onInheritedCheckBoxClick()"/><label for="showInherited">Show Inherited</label>';
+ html += '&#160;';
+ html += '<input type="checkbox" id="showProtected" onclick="document._detailViewer._onProtectedCheckBoxClick()"/><label for="showProtected">Show Protected</label>';
+ html += '</div>';
+
+
+
+ // BASICS
+
+ // Add constructor info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_CONSTRUCTOR,
+ "constructor", "constructor", this._createMethodInfo,
+ this._methodHasDetails, false, true);
+
+ // Add event info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_EVENT,
+ "events", "events", this._createEventInfo,
+ this._eventHasDetails, true, true);
+
+ // Add properties info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_PROPERTY,
+ "properties", "properties", this._createPropertyInfo,
+ qx.lang.Function.returnTrue, true, true);
+
+
+
+ // PUBLIC
+
+ // Add methods info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_METHOD,
+ "methods", "methods", this._createMethodInfo,
+ this._methodHasDetails, true, true);
+
+ // Add static methods info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_METHOD_STATIC,
+ "methods-static", "static methods", this._createMethodInfo,
+ this._methodHasDetails, false, true);
+
+ // Add constants info
+ html += this._createInfoPanel(ClassViewer.NODE_TYPE_CONSTANT,
+ "constants", "constants", this._createConstantInfo,
+ this._constantHasDetails, false, true);
+
+
+
+
+ // Set the html
+ // doc.body.innerHTML = html;
+ this.getElement().innerHTML = html;
+ this._fixLinks(this.getElement());
+
+ // Extract the main elements
+ var divArr = this.getElement().childNodes;
+ this._titleElem = divArr[0];
+ this._classDescElem = divArr[1];
+ this._controlFrame = divArr[2];
+
+ this._infoPanelHash[ClassViewer.NODE_TYPE_CONSTRUCTOR].infoElem = divArr[3];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_EVENT].infoElem = divArr[4];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_PROPERTY].infoElem = divArr[5];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_METHOD].infoElem = divArr[6];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_METHOD_STATIC].infoElem = divArr[7];
+ this._infoPanelHash[ClassViewer.NODE_TYPE_CONSTANT].infoElem = divArr[8];
+
+ // Get the child elements
+ for (var nodeType in this._infoPanelHash)
+ {
+ var typeInfo = this._infoPanelHash[nodeType];
+ typeInfo.infoTitleElem = typeInfo.infoElem.firstChild;
+ typeInfo.infoBodyElem = typeInfo.infoElem.lastChild;
+ }
+
+ // Update the view
+ if (this._currentClassDocNode)
+ {
+ // NOTE: We have to set this._currentClassDocNode to null beore, because
+ // otherwise showClass thinks, there's nothing to do
+ var classDocNode = this._currentClassDocNode;
+ this._currentClassDocNode = null;
+ this.showClass(classDocNode);
+ }
+}
+
+
+/**
+ * Creates an info panel. An info panel shows the information about one item
+ * type (e.g. for public methods).
+ *
+ * @param nodeType {Integer} the node type to create the info panel for.
+ * @param listName {String} the name of the node list in the class doc node where
+ * the items shown by this info panel are stored.
+ * @param labelText {String} the label text describing the node type.
+ * @param infoFactory {function} the factory method creating the HTML for one
+ * item.
+ * @param hasDetailDecider {function} a function returning <code>true</code>
+ * when a item has details.
+ * @param addInheritedCheckBox {Boolean} whether to add a "show inherited ..."
+ * checkbox.
+ * @param isOpen {Boolean} whether the info panel is open by default.
+ * @return {String} the HTML for the info panel.
+ */
+qx.Proto._createInfoPanel = function(nodeType, listName, labelText, infoFactory,
+ hasDetailDecider, addInheritedCheckBox, isOpen)
+{
+ var uppercaseLabelText = labelText.charAt(0).toUpperCase() + labelText.substring(1);
+
+ typeInfo = { listName:listName, labelText:labelText, infoFactory:infoFactory,
+ hasDetailDecider:hasDetailDecider, isOpen:isOpen,
+ hasInheritedCheckBox:addInheritedCheckBox };
+ this._infoPanelHash[nodeType] = typeInfo;
+
+ var html = '<div class="infoPanel"><h2>';
+
+ html += '<img class="openclose" src="'
+ + qx.manager.object.AliasManager.getInstance().resolvePath('api/image/' + (isOpen ? 'close.gif' : 'open.gif')) + '"'
+ + " onclick=\"document._detailViewer._onShowInfoPanelBodyClicked(" + nodeType + ")\"/> "
+ + '<span '
+ + " onclick=\"document._detailViewer._onShowInfoPanelBodyClicked(" + nodeType + ")\">"
+ + uppercaseLabelText
+ + '</span>';
+
+ html += '</h2><div></div></div>';
+
+ return html;
+}
+
+
+/**
+ * Shows the information about a class.
+ *
+ * @param classNode {Map} the doc node of the class to show.
+ */
+qx.Proto.showClass = function(classNode) {
+ if (this._currentClassDocNode == classNode) {
+ // Nothing to do
+ return;
+ }
+
+ this._currentClassDocNode = classNode;
+
+ if (!this._titleElem) {
+ // _initContentDocument was not called yet
+ // -> Do nothing, the class will be shown in _initContentDocument.
+ return;
+ }
+
+ var ClassViewer = apiviewer.ClassViewer;
+
+ var titleHtml = "";
+
+ titleHtml += '<div class="packageName">' + classNode.attributes.packageName + '</div>';
+
+ titleHtml += '<span class="typeInfo">';
+
+ if (classNode.attributes.isAbstract) {
+ titleHtml += "Abstract ";
+ } else if (classNode.attributes.isStatic) {
+ titleHtml += "Static ";
+ }
+
+ titleHtml += "Class ";
+ titleHtml += '</span>';
+ titleHtml += classNode.attributes.name;
+
+ this._titleElem.innerHTML = titleHtml;
+
+ var classHtml = "";
+
+ // Add the class description
+ var descNode = apiviewer.TreeUtil.getChild(classNode, "desc");
+ if (descNode) {
+ var desc = descNode.attributes.text;
+
+ if (desc != "")
+ {
+ classHtml += '<div class="classDescription">' + this._createDescriptionHtml(desc, classNode) + '</div>';
+ classHtml += "<br/>";
+ }
+ }
+
+
+ // Create the class hierarchy
+ classHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Inheritance hierarchy:" + ClassViewer.DIV_END;
+
+ var classHierarchy = [];
+ var currClass = classNode;
+ while (currClass != null) {
+ classHierarchy.push(currClass);
+ currClass = this._getClassDocNode(currClass.attributes.superClass);
+ }
+ this._currentClassHierarchy = classHierarchy;
+
+ // Add the class hierarchy
+ classHtml += ClassViewer.createImageHtml("api/image/class18.gif") + "Object<br/>";
+ var indent = 0;
+ for (var i = classHierarchy.length - 1; i >= 0; i--) {
+ classHtml += ClassViewer.createImageHtml("api/image/nextlevel.gif", null, "margin-left:" + indent + "px")
+ + ClassViewer.createImageHtml(apiviewer.TreeUtil.getIconUrl(classHierarchy[i]));
+ if (i != 0) {
+ classHtml += this._createItemLinkHtml(classHierarchy[i].attributes.fullName, null, false);
+ } else {
+ classHtml += classHierarchy[i].attributes.fullName;
+ }
+ classHtml += "<br/>";
+ indent += 18;
+ }
+
+ classHtml += '<br/>';
+
+ // Add child classes
+ if (classNode.attributes.childClasses) {
+ classHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Direct subclasses:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT;
+
+ var classNameArr = classNode.attributes.childClasses.split(",");
+ for (var i = 0; i < classNameArr.length; i++) {
+ if (i != 0) {
+ classHtml += ", ";
+ }
+ classHtml += this._createItemLinkHtml(classNameArr[i], null, true, false);
+ }
+
+ classHtml += ClassViewer.DIV_END;
+ classHtml += '<br/>';
+ }
+
+ // Add @see attributes
+ var ctorList = apiviewer.TreeUtil.getChild(classNode, "constructor");
+ if (ctorList) {
+ classHtml += this._createSeeAlsoHtml(ctorList.children[0], classNode);
+ classHtml += '<br/>';
+ }
+
+ this._classDescElem.innerHTML = classHtml;
+ this._fixLinks(this._classDescElem);
+
+ // Refresh the info viewers
+ this._updateInfoViewers();
+
+ // Scroll to top
+ this.getElement().scrollTop = 0;
+}
+
+qx.Proto._updateInfoViewers = function()
+{
+ for (var nodeType in this._infoPanelHash) {
+ this._updateInfoPanel(parseInt(nodeType));
+ }
+}
+
+qx.Proto.showInfo = function(classNode) {
+ if (this._currentClassDocNode == classNode) {
+ // Nothing to do
+ return;
+ }
+
+ this._currentClassDocNode = classNode;
+
+ if (!this._titleElem) {
+ // _initContentDocument was not called yet
+ // -> Do nothing, the class will be shown in _initContentDocument.
+ return;
+ }
+
+ var ClassViewer = apiviewer.ClassViewer;
+
+ this._titleElem.innerHTML = "Info View";
+ this._classDescElem.innerHTML = "";
+
+ // Scroll to top
+ this.getElement().scrollTop = 0;
+}
+
+/**
+ * Highlights an item (property, method or constant) and scrolls it visible.
+ *
+ * @param itemName {String} the name of the item to highlight.
+ */
+qx.Proto.showItem = function(itemName) {
+ var itemNode = apiviewer.TreeUtil.getItemDocNode(this._currentClassDocNode, itemName);
+ if (! itemNode) {
+ alert("Item '" + itemName + "' not found");
+ }
+
+ var nodeType = this._getTypeForItemNode(itemNode);
+ var elem = this._getItemElement(nodeType, itemNode.attributes.name).parentNode.parentNode;
+
+ // Handle mark
+ if (this._markedElement) {
+ this._markedElement.className = "";
+ }
+
+ elem.className = "marked";
+ this._markedElement = elem;
+
+ // Scroll the element visible
+ var top = qx.html.Location.getPageBoxTop(elem);
+ var height = elem.offsetHeight;
+
+ var doc = this.getElement();
+ var scrollTop = doc.scrollTop;
+ var clientHeight = doc.offsetHeight;
+
+ if (scrollTop > top) {
+ doc.scrollTop = top;
+ } else if (scrollTop < top + height - clientHeight) {
+ doc.scrollTop = top + height - clientHeight;
+ }
+}
+
+qx.Proto._showProtected = false;
+qx.Proto._showInherited = false;
+
+/**
+ * Updates an info panel.
+ *
+ * @param nodeType {Integer} the node type of which to update the info panel.
+ */
+qx.Proto._updateInfoPanel = function(nodeType)
+{
+ var ClassViewer = apiviewer.ClassViewer;
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Get the nodes to show
+ var nodeArr = [];
+ var fromClassHash = null;
+
+ if (this._currentClassDocNode)
+ {
+ if (this._showInherited && (nodeType == apiviewer.ClassViewer.NODE_TYPE_EVENT || nodeType == apiviewer.ClassViewer.NODE_TYPE_PROPERTY || nodeType == apiviewer.ClassViewer.NODE_TYPE_METHOD))
+ {
+ fromClassArr = [];
+ fromClassHash = {};
+
+ var currClassNode = this._currentClassDocNode;
+
+ while (currClassNode != null)
+ {
+ var currParentNode = apiviewer.TreeUtil.getChild(currClassNode, typeInfo.listName);
+ var currNodeArr = currParentNode ? currParentNode.children : null;
+ if (currNodeArr)
+ {
+ // Add the nodes from this class
+ for (var i = 0; i < currNodeArr.length; i++)
+ {
+ var name = currNodeArr[i].attributes.name;
+
+ if (fromClassHash[name] == null)
+ {
+ fromClassHash[name] = currClassNode;
+ nodeArr.push(currNodeArr[i]);
+ }
+ }
+ }
+
+ var superClassName = currClassNode.attributes.superClass;
+ currClassNode = superClassName ? this._getClassDocNode(superClassName) : null;
+ }
+ }
+ else
+ {
+ var parentNode = apiviewer.TreeUtil.getChild(this._currentClassDocNode, typeInfo.listName);
+ nodeArr = parentNode ? parentNode.children : null;
+ }
+ }
+
+ if (nodeArr)
+ {
+ // Filter protected
+ if (nodeType == apiviewer.ClassViewer.NODE_TYPE_METHOD || nodeType == apiviewer.ClassViewer.NODE_TYPE_METHOD_STATIC)
+ {
+ if (nodeArr.length != 0 && !this._showProtected)
+ {
+ copyArr = nodeArr.concat();
+
+ for (var i=nodeArr.length-1; i>=0; i--)
+ {
+ var node = nodeArr[i];
+
+ if (nodeArr[i].attributes.name.charAt(0) == "_") {
+ qx.lang.Array.removeAt(copyArr, i);
+ }
+ }
+
+ nodeArr = copyArr;
+ }
+ }
+
+ // Sort the nodeArr by name
+ // Move protected methods to the end
+ nodeArr.sort(function(obj1, obj2)
+ {
+ var n1 = obj1.attributes.name;
+ var n2 = obj2.attributes.name;
+ var p1 = n1.charAt(0) == "_";
+ var p2 = n2.charAt(0) == "_";
+ var h1 = n1.charAt(0) == "__";
+ var h2 = n2.charAt(0) == "__";
+
+ if (p1 == p2 && h1 == h2)
+ {
+ return n1.toLowerCase() < n2.toLowerCase() ? -1 : 1;
+ }
+ else
+ {
+ return h1 ? 1 : p1 ? 1 : -1;
+ }
+ });
+ }
+
+ // Show the nodes
+ if (nodeArr && nodeArr.length > 0)
+ {
+ var html = '<table cellspacing="0" cellpadding="0" class="info" width="100%">';
+
+ for (var i = 0; i < nodeArr.length; i++)
+ {
+ var node = nodeArr[i];
+
+ var fromClassNode = fromClassHash ? fromClassHash[node.attributes.name] : null;
+ if (fromClassNode == null) {
+ fromClassNode = this._currentClassDocNode;
+ }
+
+ var info = typeInfo.infoFactory.call(this, node, nodeType, fromClassNode, false);
+ var inherited = fromClassNode && (fromClassNode != this._currentClassDocNode);
+ var iconUrl = apiviewer.TreeUtil.getIconUrl(node, inherited, "_updateInfoPanel");
+
+ // Create the title row
+ html += '<tr>';
+
+ html += '<td class="icon">' + ClassViewer.createImageHtml(iconUrl) + '</td>';
+ html += '<td class="type">' + ((info.typeHtml.length != 0) ? (info.typeHtml + "&nbsp;") : "") + '</td>';
+
+ html += '<td class="toggle">';
+ if (typeInfo.hasDetailDecider.call(this, node, nodeType, fromClassNode))
+ {
+ // This node has details -> Show the detail button
+ html += '<img src="' + qx.manager.object.AliasManager.getInstance().resolvePath("api/image/open.gif") + '"'
+ + " onclick=\"document._detailViewer._onShowItemDetailClicked(" + nodeType + ",'"
+ + node.attributes.name + "'"
+ + ((fromClassNode != this._currentClassDocNode) ? ",'" + fromClassNode.attributes.fullName + "'" : "")
+ + ")\"/>";
+ }
+ else
+ {
+ html += "&#160;";
+ }
+ html += '</td>';
+
+ html += '<td class="text">';
+
+ // Create headline
+ html += '<h3';
+
+ if (typeInfo.hasDetailDecider.call(this, node, nodeType, fromClassNode))
+ {
+ html += " onclick=\"document._detailViewer._onShowItemDetailClicked(" + nodeType + ",'"
+ + node.attributes.name + "'"
+ + ((fromClassNode != this._currentClassDocNode) ? ",'" + fromClassNode.attributes.fullName + "'" : "")
+ + ")\">";
+ }
+ else
+ {
+ html += '>';
+ }
+
+ html += info.titleHtml;
+ html += '</h3>';
+
+ // Create content area
+ html += '<div _itemName="' + nodeArr[i].attributes.name + '">';
+ html += info.textHtml;
+ html += '</div>';
+
+ html += '</td>';
+ html += '</tr>';
+ }
+
+ html += '</table>';
+
+ typeInfo.infoBodyElem.innerHTML = html;
+ this._fixLinks(typeInfo.infoBodyElem);
+ typeInfo.infoBodyElem.style.display = !typeInfo.isOpen ? "none" : "";
+ typeInfo.infoElem.style.display = "";
+ }
+ else
+ {
+ typeInfo.infoElem.style.display = "none";
+ }
+}
+
+
+/**
+ * Event handler. Called when the user clicked a button for showing/hiding the
+ * details of an item.
+ *
+ * @param nodeType {Integer} the node type of the item to show/hide the details.
+ * @param name {String} the name of the item.
+ * @param fromClassName {String} the name of the class the item the item was
+ * defined in.
+ */
+qx.Proto._onShowItemDetailClicked = function(nodeType, name, fromClassName) {
+ try {
+ var typeInfo = this._infoPanelHash[nodeType];
+ var textDiv = this._getItemElement(nodeType, name);
+
+ if (!textDiv) {
+ throw Error("Element for name '" + name + "' not found!");
+ }
+
+ var showDetails = textDiv._showDetails ? !textDiv._showDetails : true;
+ textDiv._showDetails = showDetails;
+
+ var fromClassNode = this._currentClassDocNode;
+ if (fromClassName) {
+ fromClassNode = this._getClassDocNode(fromClassName);
+ }
+
+ var listNode = apiviewer.TreeUtil.getChild(fromClassNode, typeInfo.listName);
+ var node;
+ if (nodeType == apiviewer.ClassViewer.NODE_TYPE_CONSTRUCTOR) {
+ node = listNode.children[0];
+ } else {
+ node = apiviewer.TreeUtil.getChildByAttribute(listNode, "name", name);
+ }
+
+ // Update the close/open image
+ var opencloseImgElem = textDiv.parentNode.previousSibling.firstChild;
+ opencloseImgElem.src = qx.manager.object.AliasManager.getInstance().resolvePath(showDetails ? 'api/image/close.gif' : 'api/image/open.gif');
+
+ // Update content
+ var info = typeInfo.infoFactory.call(this, node, nodeType, fromClassNode, showDetails);
+ textDiv.innerHTML = info.textHtml;
+ this._fixLinks(textDiv);
+ } catch (exc) {
+ this.error("Toggling item details failed", exc);
+ }
+}
+
+
+/**
+ * Event handler. Called when the user clicked on the "show inherited ..." checkbox.
+ */
+qx.Proto._onInheritedCheckBoxClick = function()
+{
+ this._showInherited = document.getElementById("showInherited").checked;
+ this._updateInfoViewers();
+}
+
+/**
+ * Event handler. Called when the user clicked on the "show protected ..." checkbox.
+ */
+qx.Proto._onProtectedCheckBoxClick = function()
+{
+ this._showProtected = document.getElementById("showProtected").checked;
+ this._updateInfoViewers();
+}
+
+
+/**
+ * Event handler. Called when the user clicked a button for showing/hiding the
+ * body of an info panel.
+ *
+ * @param nodeType {Integer} the node type of which the show/hide-body-button was
+ * clicked.
+ */
+qx.Proto._onShowInfoPanelBodyClicked = function(nodeType) {
+ try {
+ var typeInfo = this._infoPanelHash[nodeType];
+ typeInfo.isOpen = !typeInfo.isOpen;
+
+ var imgElem = typeInfo.infoTitleElem.getElementsByTagName("img")[0];
+ imgElem.src = qx.manager.object.AliasManager.getInstance().resolvePath(typeInfo.isOpen ? 'api/image/close.gif' : 'api/image/open.gif');
+
+ this._updateInfoPanel(nodeType);
+ } catch (exc) {
+ this.error("Toggling info body failed", exc);
+ }
+}
+
+
+/**
+ * Gets the HTML element showing the details of an item.
+ *
+ * @param nodeType {Integer} the node type of the item.
+ * @param name {String} the item's name.
+ * @return {Element} the HTML element showing the details of the item.
+ */
+qx.Proto._getItemElement = function(nodeType, name) {
+ var typeInfo = this._infoPanelHash[nodeType];
+ var elemArr = typeInfo.infoBodyElem.getElementsByTagName("TBODY")[0].childNodes;
+
+ for (var i = 0; i < elemArr.length; i++) {
+ // ARRG, should be implemented in a more fault-tolerant way
+ // iterate over tr's, look inside the third "td" and there the second element
+ if (elemArr[i].childNodes[3].childNodes[1].getAttribute("_itemName") == name) {
+ return elemArr[i].childNodes[3].childNodes[1];
+ }
+ }
+}
+
+
+/**
+ * Selects an item.
+ *
+ * @param itemName {String} the name of the item.
+ * @see ApiViewer#selectItem
+ */
+qx.Proto._selectItem = function(itemName) {
+ try {
+ apiviewer.Viewer.instance.selectItem(itemName);
+ qx.ui.core.Widget.flushGlobalQueues();
+ } catch (exc) {
+ this.error("Selecting item '" + itemName + "' failed", exc);
+ }
+}
+
+
+/**
+ * Gets the doc node of a class.
+ *
+ * @param className {String} the name of the class.
+ * @return {Map} the doc node of the class.
+ */
+qx.Proto._getClassDocNode = function(className) {
+ if (className) {
+ return apiviewer.TreeUtil.getClassDocNode(apiviewer.Viewer.instance.getDocTree(), className);
+ } else {
+ return null;
+ }
+}
+
+
+/**
+ * Creates the HTML showing the information about a property.
+ *
+ * @param node {Map} the doc node of the property.
+ * @param nodeType {Integer} the node type of the property.
+ * @param fromClassNode {Map} the doc node of the class the property was defined.
+ * @param showDetails {Boolean} whether to show the details.
+ * @return {String} the HTML showing the information about the property.
+ */
+qx.Proto._createPropertyInfo = function(node, nodeType, fromClassNode, showDetails) {
+ var ClassViewer = apiviewer.ClassViewer;
+
+ var info = {}
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Get the property node that holds the documentation
+ var docClassNode = fromClassNode;
+ var docNode = node;
+ if (node.attributes.docFrom) {
+ docClassNode = this._getClassDocNode(node.attributes.docFrom);
+ var listNode = apiviewer.TreeUtil.getChild(docClassNode, typeInfo.listName);
+ docNode = apiviewer.TreeUtil.getChildByAttribute(listNode, "name", node.attributes.name);
+ }
+
+ // Add the title
+ info.typeHtml = this._createTypeHtml(node, fromClassNode, "var");
+ info.titleHtml = node.attributes.name;
+
+ // Add the description
+ info.textHtml = this._createDescHtml(docNode, fromClassNode, showDetails);
+
+ if (showDetails) {
+ // Add allowed values
+ var allowedValue = null;
+ if (node.attributes.possibleValues) {
+ allowedValue = node.attributes.possibleValues;
+ } else if (node.attributes.classname) {
+ allowedValue = "instances of " + node.attributes.classname;
+ } else if (node.attributes.instance) {
+ allowedValue = "instances of " + node.attributes.instance + " or sub classes";
+ } else if (node.attributes.unitDetection) {
+ allowedValue = "units: " + node.attributes.unitDetection;
+ } else if (node.attributes.type) {
+ allowedValue = "any " + node.attributes.type;
+ }
+
+ if (allowedValue) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Allowed values:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT;
+
+ if (node.attributes.allowNull != "false") {
+ info.textHtml += "null, ";
+ }
+ info.textHtml += allowedValue + ClassViewer.DIV_END;
+ }
+
+ // Add default value
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Default value:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + (node.attributes.defaultValue ? node.attributes.defaultValue : "null")
+ + ClassViewer.DIV_END;
+
+ // Add get alias
+ if (node.attributes.getAlias) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Get alias:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT + node.attributes.getAlias + ClassViewer.DIV_END;
+ }
+
+ // Add set alias
+ if (node.attributes.setAlias) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Set alias:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT + node.attributes.setAlias + ClassViewer.DIV_END;
+ }
+
+ // Add inherited from or overridden from
+ if (fromClassNode && fromClassNode != this._currentClassDocNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Inherited from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(fromClassNode.attributes.fullName)
+ + ClassViewer.DIV_END;
+ } else if (node.attributes.overriddenFrom) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Overridden from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(node.attributes.overriddenFrom)
+ + ClassViewer.DIV_END;
+ }
+
+ // Add @see attributes
+ info.textHtml += this._createSeeAlsoHtml(docNode, docClassNode);
+
+ // Add documentation errors
+ info.textHtml += this._createErrorHtml(docNode, docClassNode);
+ }
+
+ return info;
+}
+
+
+/**
+ * Checks whether an event has details.
+ *
+ * @param node {Map} the doc node of the event.
+ * @param nodeType {Integer} the node type of the event.
+ * @param fromClassNode {Map} the doc node of the class the event was defined.
+ * @return {Boolean} whether the event has details.
+ */
+qx.Proto._eventHasDetails = function(node, nodeType, fromClassNode) {
+ return (fromClassNode != this._currentClassDocNode) // event is inherited
+ || this._hasSeeAlsoHtml(node)
+ || this._hasErrorHtml(node)
+ || this._descHasDetails(node);
+};
+
+
+/**
+ * Creates the HTML showing the information about an event.
+ *
+ * @param node {Map} the doc node of the event.
+ * @param nodeType {Integer} the node type of the event.
+ * @param fromClassNode {Map} the doc node of the class the event was defined.
+ * @param showDetails {Boolean} whether to show the details.
+ * @return {String} the HTML showing the information about the event.
+ */
+qx.Proto._createEventInfo = function(node, nodeType, fromClassNode, showDetails) {
+ var ClassViewer = apiviewer.ClassViewer;
+
+ var info = {}
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Add the title
+ info.typeHtml = this._createTypeHtml(node, fromClassNode, "var");
+ info.titleHtml = node.attributes.name;
+
+ // Add the description
+ info.textHtml = this._createDescHtml(node, fromClassNode, showDetails);
+
+ if (showDetails) {
+ // Add inherited from or overridden from
+ if (fromClassNode && fromClassNode != this._currentClassDocNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Inherited from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(fromClassNode.attributes.fullName)
+ + ClassViewer.DIV_END;
+ }
+
+ // Add @see attributes
+ info.textHtml += this._createSeeAlsoHtml(node, fromClassNode);
+
+ // Add documentation errors
+ info.textHtml += this._createErrorHtml(node, fromClassNode);
+ }
+
+ return info;
+};
+
+
+/**
+ * Checks whether a method has details.
+ *
+ * @param node {Map} the doc node of the method.
+ * @param nodeType {Integer} the node type of the method.
+ * @param fromClassNode {Map} the doc node of the class the method was defined.
+ * @return {Boolean} whether the method has details.
+ */
+qx.Proto._methodHasDetails = function(node, nodeType, fromClassNode) {
+ var TreeUtil = apiviewer.TreeUtil;
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Get the method node that holds the documentation
+ var docClassNode = fromClassNode;
+ var docNode = node;
+ if (node.attributes.docFrom) {
+ docClassNode = this._getClassDocNode(node.attributes.docFrom);
+ var listNode = TreeUtil.getChild(docClassNode, typeInfo.listName);
+ docNode = TreeUtil.getChildByAttribute(listNode, "name", node.attributes.name);
+ }
+
+ // Check whether there are details
+ var hasParams = TreeUtil.getChild(docNode, "params") != null;
+ var hasReturn = TreeUtil.getChild(docNode, "return") != null;
+ var isOverridden = fromClassNode != this._currentClassDocNode;
+
+ return (fromClassNode != this._currentClassDocNode) // method is inherited
+ || (node.attributes.overriddenFrom != null) // method is overridden
+ || (TreeUtil.getChild(docNode, "params") != null) // method has params
+ || (TreeUtil.getChild(docNode, "return") != null) // method has return value
+ || this._hasSeeAlsoHtml(docNode)
+ || this._hasErrorHtml(docNode)
+ || this._descHasDetails(docNode);
+}
+
+
+/**
+ * Creates the HTML showing the information about a method.
+ *
+ * @param node {Map} the doc node of the method.
+ * @param nodeType {Integer} the node type of the method.
+ * @param fromClassNode {Map} the doc node of the class the method was defined.
+ * @param showDetails {Boolean} whether to show the details.
+ * @return {String} the HTML showing the information about the method.
+ */
+qx.Proto._createMethodInfo = function(node, nodeType, fromClassNode, showDetails) {
+ var ClassViewer = apiviewer.ClassViewer;
+ var TreeUtil = apiviewer.TreeUtil;
+
+ var info = {}
+
+ var typeInfo = this._infoPanelHash[nodeType];
+
+ // Get the method node that holds the documentation
+ var docClassNode = fromClassNode;
+ var docNode = node;
+ if (node.attributes.docFrom) {
+ docClassNode = this._getClassDocNode(node.attributes.docFrom);
+ var listNode = TreeUtil.getChild(docClassNode, typeInfo.listName);
+ docNode = TreeUtil.getChildByAttribute(listNode, "name", node.attributes.name);
+ }
+
+ if (node.attributes.isAbstract) {
+ info.typeHtml = "abstract ";
+ } else {
+ info.typeHtml = "";
+ }
+
+ // Get name, icon and return type
+ var returnNode = TreeUtil.getChild(docNode, "return");
+ if (node.attributes.isCtor) {
+ info.titleHtml = fromClassNode.attributes.name;
+ } else {
+ info.titleHtml = node.attributes.name;
+ info.typeHtml += this._createTypeHtml(returnNode, fromClassNode, "void");
+ }
+
+ // Add the title (the method signature)
+ info.titleHtml += '<span class="methodSignature"> <span class="parenthesis">(</span>';
+ var paramsNode = TreeUtil.getChild(docNode, "params");
+ if (paramsNode) {
+ for (var i = 0; i < paramsNode.children.length; i++) {
+ var param = paramsNode.children[i];
+ if (i != 0) {
+ info.titleHtml += '<span class="separator">,</span> ';
+ }
+ info.titleHtml += '<span class="parameterType">' + this._createTypeHtml(param, fromClassNode, "var") + "</span> "
+ + param.attributes.name;
+ if (param.attributes.defaultValue) {
+ info.titleHtml += "?";
+ }
+ }
+ }
+ info.titleHtml += '<span class="parenthesis">)</span></span>';
+
+ // Add the description
+ if (node.attributes.isCtor) {
+ info.textHtml = "Creates a new instance of " + fromClassNode.attributes.name + ".";
+ } else {
+ info.textHtml = this._createDescHtml(docNode, docClassNode, showDetails);
+ }
+
+
+ if (showDetails) {
+ // Add Parameters
+ var paramsNode = TreeUtil.getChild(docNode, "params");
+ if (paramsNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Parameters:" + ClassViewer.DIV_END;
+ for (var i = 0; i < paramsNode.children.length; i++) {
+ var param = paramsNode.children[i];
+ var paramType = param.attributes.type ? param.attributes.type : "var";
+ var dims = param.attributes.arrayDimensions;
+ if (dims) {
+ for (var i = 0; i < dims; i++) {
+ paramType += "[]";
+ }
+ }
+ var defaultValue = param.attributes.defaultValue;
+
+ info.textHtml += ClassViewer.DIV_START_DETAIL_TEXT;
+ if (defaultValue) {
+ info.textHtml += ClassViewer.SPAN_START_OPTIONAL;
+ }
+ info.textHtml += ClassViewer.SPAN_START_PARAM_NAME + param.attributes.name + ClassViewer.SPAN_END;
+ if (defaultValue) {
+ info.textHtml += " (default: " + defaultValue + ") " + ClassViewer.SPAN_END;
+ }
+
+ var paramDescNode = TreeUtil.getChild(param, "desc");
+ if (paramDescNode) {
+ info.textHtml += " " + this._createDescriptionHtml(paramDescNode.attributes.text, docClassNode);
+ }
+ info.textHtml += ClassViewer.DIV_END;
+ }
+ }
+
+ // Add return value
+ if (returnNode) {
+ var returnDescNode = TreeUtil.getChild(returnNode, "desc");
+ if (returnDescNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Returns:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createDescriptionHtml(returnDescNode.attributes.text, docClassNode)
+ + ClassViewer.DIV_END;
+ }
+ }
+
+ // Add inherited from or overridden from
+ if (fromClassNode && fromClassNode != this._currentClassDocNode) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Inherited from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(fromClassNode.attributes.fullName)
+ + ClassViewer.DIV_END;
+ } else if (node.attributes.overriddenFrom) {
+ info.textHtml += ClassViewer.DIV_START_DETAIL_HEADLINE + "Overridden from:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT
+ + this._createItemLinkHtml(node.attributes.overriddenFrom)
+ + ClassViewer.DIV_END;
+ }
+
+ // Add @see attributes
+ info.textHtml += this._createSeeAlsoHtml(docNode, docClassNode);
+
+ // Add documentation errors
+ info.textHtml += this._createErrorHtml(docNode, docClassNode);
+ }
+
+ return info;
+}
+
+
+/**
+ * Checks whether a constant has details.
+ *
+ * @param node {Map} the doc node of the constant.
+ * @param nodeType {Integer} the node type of the constant.
+ * @param fromClassNode {Map} the doc node of the class the constant was defined.
+ * @return {Boolean} whether the constant has details.
+ */
+qx.Proto._constantHasDetails = function(node, nodeType, fromClassNode) {
+ return (
+ this._hasSeeAlsoHtml(node) ||
+ this._hasErrorHtml(node) ||
+ this._descHasDetails(node) ||
+ this._hasConstantValueHtml(node)
+ );
+}
+
+
+/**
+ * Creates the HTML showing the information about a constant.
+ *
+ * @param node {Map} the doc node of the constant.
+ * @param nodeType {Integer} the node type of the constant.
+ * @param fromClassNode {Map} the doc node of the class the constant was defined.
+ * @param showDetails {Boolean} whether to show the details.
+ * @return {String} the HTML showing the information about the constant.
+ */
+qx.Proto._createConstantInfo = function(node, nodeType, fromClassNode, showDetails) {
+ var info = {}
+
+ // Add the title
+ info.typeHtml = this._createTypeHtml(node, fromClassNode, "var");
+ info.titleHtml = node.attributes.name;
+
+ // Add the description
+ info.textHtml = this._createDescHtml(node, fromClassNode, showDetails);
+
+ if (showDetails) {
+ info.textHtml += this._createConstantValueHtml(node, fromClassNode);
+
+ // Add @see attributes
+ info.textHtml += this._createSeeAlsoHtml(node, fromClassNode);
+
+ // Add documentation errors
+ info.textHtml += this._createErrorHtml(node, fromClassNode);
+
+ }
+
+ return info;
+}
+
+
+/**
+ * Returns whether the description of an item has details (has more than one
+ * sentence).
+ *
+ * @param node {Map} the doc node of the item.
+ * @return {Boolean} whether the description of an item has details.
+ */
+qx.Proto._descHasDetails = function(node) {
+ var descNode = apiviewer.TreeUtil.getChild(node, "desc");
+ if (descNode) {
+ var desc = descNode.attributes.text;
+ return this._extractFirstSentence(desc) != desc;
+ } else {
+ return false;
+ }
+}
+
+
+/**
+ * Creates the HTML showing the description of an item.
+ *
+ * @param node {Map} the doc node of the item.
+ * @param fromClassNode {Map} the doc node of the class the item was defined.
+ * @param showDetails {Boolean} whether to show details. If <code>false</code>
+ * only the first sentence of the description will be shown.
+ * @return {String} the HTML showing the description.
+ */
+qx.Proto._createDescHtml = function(node, fromClassNode, showDetails) {
+ var descNode = apiviewer.TreeUtil.getChild(node, "desc");
+ if (descNode) {
+ var desc = descNode.attributes.text;
+ if (!showDetails) {
+ desc = this._extractFirstSentence(desc);
+ }
+ return apiviewer.ClassViewer.DIV_START_DESC
+ + this._createDescriptionHtml(desc, fromClassNode)
+ + apiviewer.ClassViewer.DIV_END;
+ } else {
+ return "";
+ }
+}
+
+
+/**
+ * Extracts the first sentence from a text.
+ *
+ * @param text {String} the text.
+ * @return {String} the first sentence from the text.
+ */
+qx.Proto._extractFirstSentence = function(text)
+{
+ var ret = text;
+
+ // Extract first block
+ var pos = ret.indexOf("</p>");
+ if (pos != -1)
+ {
+ ret = ret.substr(0, pos+4);
+
+ var hit = apiviewer.ClassViewer.SENTENCE_END_REGEX.exec(ret);
+ if (hit != null) {
+ ret = text.substring(0, hit.index + hit[0].length - 1) + "</p>";
+ }
+ }
+
+ return ret;
+}
+
+
+/**
+ * Checks whether a constant value is provided
+ *
+ * @param node {Map} the doc node of the item.
+ * @return {Boolean} whether the constant provides a value
+ */
+qx.Proto._hasConstantValueHtml = function(node) {
+ return node.attributes.value ? true : false;
+}
+
+
+/**
+ * Creates the HTML showing the value of a constant
+ *
+ * @param node {Map} the doc node of the item.
+ * @param fromClassNode {Map} the doc node of the class the item was defined.
+ * @return {String} the HTML showing the value of the constant
+ */
+qx.Proto._createConstantValueHtml = function(node, fromClassNode) {
+ var ClassViewer = apiviewer.ClassViewer;
+ this.debug (node.attributes.value)
+ if (this._hasConstantValueHtml(node)) {
+ return (
+ ClassViewer.DIV_START_DETAIL_HEADLINE + "Value: " + ClassViewer.DIV_END +
+ ClassViewer.DIV_START_DETAIL_TEXT + qx.html.String.escape(qx.io.Json.stringify(node.attributes.value)) + ClassViewer.DIV_END
+ );
+ } else {
+ return "";
+ }
+}
+
+
+/**
+ * Checks whether a item has &#64;see attributes.
+ *
+ * @param node {Map} the doc node of the item.
+ * @return {Boolean} whether the item has &#64;see attributes.
+ */
+qx.Proto._hasSeeAlsoHtml = function(node) {
+ return apiviewer.TreeUtil.getChild(node, "see") ? true : false;
+}
+
+
+/**
+ * Creates the HTML showing the &#64;see attributes of an item.
+ *
+ * @param node {Map} the doc node of the item.
+ * @param fromClassNode {Map} the doc node of the class the item was defined.
+ * @return {String} the HTML showing the &#64;see attributes.
+ */
+qx.Proto._createSeeAlsoHtml = function(node, fromClassNode) {
+ var ClassViewer = apiviewer.ClassViewer;
+
+ var descNode = apiviewer.TreeUtil.getChild(node, "see");
+
+ if (node.children)
+ {
+ var seeAlsoHtml = "";
+ for (var i = 0; i < node.children.length; i++) {
+ if (node.children[i].type == "see") {
+ // This is a @see attribute
+ if (seeAlsoHtml.length != 0) {
+ seeAlsoHtml += ", ";
+ }
+ seeAlsoHtml += this._createItemLinkHtml(node.children[i].attributes.name, fromClassNode);
+ }
+ }
+ if (seeAlsoHtml.length != 0) {
+ // We had @see attributes
+ return ClassViewer.DIV_START_DETAIL_HEADLINE + "See also:" + ClassViewer.DIV_END
+ + ClassViewer.DIV_START_DETAIL_TEXT + seeAlsoHtml + ClassViewer.DIV_END;
+ }
+ }
+
+ // Nothing found
+ return "";
+}
+
+
+/**
+ * Checks whether a item has documentation errors.
+ *
+ * @param node {Map} the doc node of the item.
+ * @return {Boolean} whether the item has documentation errors.
+ */
+qx.Proto._hasErrorHtml = function(node) {
+ var errorNode = apiviewer.TreeUtil.getChild(node, "errors");
+ return (errorNode != null);
+}
+
+
+/**
+ * Creates the HTML showing the documentation errors of an item.
+ *
+ * @param node {Map} the doc node of the item.
+ * @param fromClassNode {Map} the doc node of the class the item was defined.
+ * @return {String} the HTML showing the documentation errors.
+ */
+qx.Proto._createErrorHtml = function(node, fromClassNode) {
+ var ClassViewer = apiviewer.ClassViewer;
+
+ var errorNode = apiviewer.TreeUtil.getChild(node, "errors");
+ if (errorNode) {
+ var html = ClassViewer.DIV_START_ERROR_HEADLINE + "Documentation errors:" + ClassViewer.DIV_END;
+ var errArr = errorNode.children;
+ for (var i = 0; i < errArr.length; i++) {
+ html += ClassViewer.DIV_START_DETAIL_TEXT + errArr[i].attributes.msg + " <br/>";
+ html += "("
+ if (fromClassNode && fromClassNode != this._currentClassDocNode) {
+ html += fromClassNode.attributes.fullName + "; ";
+ }
+ html += "Line: " + errArr[i].attributes.line + ", Column:" + errArr[i].attributes.column + ")" + ClassViewer.DIV_END;
+ }
+ return html;
+ } else {
+ return "";
+ }
+}
+
+
+/**
+ * Creates the HTML showing the type of a doc node.
+ *
+ * @param typeNode {Map} the doc node to show the type for.
+ * @param packageBaseClass {Map} the doc node of the class <code>typeNode</code>
+ * belongs to.
+ * @param defaultType {String} the type name to use if <code>typeNode</code> is
+ * <code>null</code> or defines no type.
+ * @param useShortName {Boolean,true} whether to use short class names
+ * (without package).
+ * @return {String} the HTML showing the type.
+ */
+qx.Proto._createTypeHtml = function(typeNode, packageBaseClass, defaultType, useShortName) {
+ if (useShortName == null) {
+ useShortName = true;
+ }
+
+ var types = [];
+ var typeHtml, typeDimensions, typeName, linkText, dims;
+
+ if (typeNode)
+ {
+ // read in children
+ if (typeNode.children && apiviewer.TreeUtil.getChild(typeNode, "types"))
+ {
+ for (var i=0, a=apiviewer.TreeUtil.getChild(typeNode, "types").children, l=a.length; i<l; i++)
+ {
+ if (a[i].type == "entry")
+ {
+ types.push(a[i].attributes);
+ }
+ }
+ }
+
+ // read from attributes (alternative)
+ if (types.length == 0 && typeNode.attributes)
+ {
+ typeName = typeNode.attributes.instance ? typeNode.attributes.instance : typeNode.attributes.type;
+
+ if (typeName != undefined)
+ {
+ dims = typeNode.attributes.dimensions;
+
+ if (typeof dims == "number" && dims > 0) {
+ types.push({ "type" : typeName, "dimensions" : dims });
+ } else {
+ types.push({ "type" : typeName });
+ }
+ }
+ }
+ }
+
+ if (types.length == 0)
+ {
+ typeHtml = defaultType;
+ }
+ else
+ {
+ typeHtml = "";
+
+ if (types.length > 1) {
+ typeHtml += "("
+ }
+
+ for (var j=0; j<types.length; j++)
+ {
+ if (j>0) {
+ typeHtml += " | ";
+ }
+
+ typeName = types[j].type;
+ typeDimensions = types[j].dimensions;
+
+ if (apiviewer.ClassViewer.PRIMITIVES[typeName])
+ {
+ typeHtml += typeName;
+ }
+ else
+ {
+ linkText = typeName;
+ if (useShortName)
+ {
+ var lastDot = typeName.lastIndexOf(".");
+ if (lastDot != -1) {
+ linkText += " " + typeName.substring(lastDot + 1);
+ }
+ }
+ typeHtml += this._createItemLinkHtml(linkText, packageBaseClass, false, true);
+ }
+
+ if (typeDimensions)
+ {
+ for (var i = 0; i < parseInt(typeDimensions); i++) {
+ typeHtml += "[]";
+ }
+ }
+ }
+
+ if (types.length > 1) {
+ typeHtml += ")"
+ }
+ }
+
+ return typeHtml;
+}
+
+
+/**
+ * Creates HTML that replaces all &#64;link-attributes with links.
+ *
+ * @param description {String} the description.
+ * @param packageBaseClass {Map,null} the doc node of the class to use for
+ * auto-adding packages.
+ */
+qx.Proto._createDescriptionHtml = function(description, packageBaseClass) {
+ var linkRegex = /\{@link([^\}]*)\}/mg;
+
+ var html = "";
+ var hit;
+ var lastPos = 0;
+ while ((hit = linkRegex.exec(description)) != null) {
+ // Add the text before the link
+ html += description.substring(lastPos, hit.index)
+ + this._createItemLinkHtml(hit[1], packageBaseClass);
+
+ lastPos = hit.index + hit[0].length;
+ }
+
+ // Add the text after the last hit
+ html += description.substring(lastPos, description.length);
+
+ return html;
+}
+
+
+/**
+ * Creates the HTML for a link to an item.
+ *
+ * @param linkText {String} the link text
+ * (e.g. "mypackage.MyClass#myMethod alt text")
+ * @param packageBaseClass {Map,null} the doc node of the class to use when
+ * auto-adding the package to a class name having no package specified.
+ * If null, no automatic package addition is done.
+ * @param useIcon {Boolean,true} whether to add an icon to the link.
+ * @param useShortName {Boolean,false} whether to use the short name.
+ */
+qx.Proto._createItemLinkHtml = function(linkText, packageBaseClass, useIcon,
+ useShortName)
+{
+ if (useIcon == null) {
+ useIcon = true;
+ }
+
+ linkText = qx.lang.String.trim(linkText);
+
+ if (linkText.charAt(0) == '"' || linkText.charAt(0) == '<') {
+ // This is a String or a link to a URL -> Just use it as it is
+ return linkText;
+ } else {
+ // This is a link to another class or method -> Create an item link
+
+ // Separate item name from label
+ var hit = apiviewer.ClassViewer.ITEM_SPEC_REGEX.exec(linkText);
+ if (hit == null) {
+ // Malformed item name
+ return linkText;
+ } else {
+ var className = hit[2];
+ var itemName = hit[3];
+ var label = hit[6];
+
+ // Make the item name absolute
+ if (className == null || className.length == 0) {
+ // This is a relative link to a method -> Add the current class
+ className = packageBaseClass.attributes.fullName;
+ } else if (packageBaseClass && className.indexOf(".") == -1) {
+ // The class name has no package -> Use the same package as the current class
+ var name = packageBaseClass.attributes.name;
+ var fullName = packageBaseClass.attributes.fullName;
+ var packageName = fullName.substring(0, fullName.length - name.length);
+ className = packageName + className;
+ }
+
+ // Get the node info
+ if (label == null || label.length == 0) {
+ // We have no label -> Use the item name as label
+ label = hit[1];
+ }
+
+ // Add the right icon
+ if (useIcon) {
+ var classNode = this._getClassDocNode(className);
+ if (classNode) {
+ var itemNode;
+ if (itemName) {
+ // The links points to a item of the class
+ var cleanItemName = itemName.substring(1);
+ var parenPos = cleanItemName.indexOf("(");
+ if (parenPos != -1) {
+ cleanItemName = qx.lang.String.trim(cleanItemName.substring(0, parenPos));
+ }
+ itemNode = apiviewer.TreeUtil.getItemDocNode(classNode, cleanItemName);
+ } else {
+ // The links points to the class
+ itemNode = classNode;
+ }
+ if (itemNode) {
+ var iconUrl = apiviewer.TreeUtil.getIconUrl(itemNode);
+ var iconCode = apiviewer.ClassViewer.createImageHtml(iconUrl);
+ }
+ }
+ }
+
+ // Create a real bookmarkable link
+ // NOTE: The onclick-handler must be added by HTML code. If it
+ // is added using the DOM element then the href is followed.
+ var fullItemName = className + (itemName ? itemName : "");
+ return '<span style="white-space: nowrap;">'
+ + (typeof iconCode != "undefined" ? iconCode : "")
+ + '<a href="' + window.location.protocol + '//' + window.location.pathname
+ + '#' + fullItemName + '" onclick="'
+ + 'document._detailViewer._selectItem(\'' + fullItemName + '\'); return false;"'
+ + ' title="' + fullItemName + '">' + label + '</a></span>';
+ }
+ }
+}
+
+
+/**
+ * Gets the node type for a doc node.
+ *
+ * @param itemNode {Map} the doc node of the item.
+ * @return {Integer} the item's node type.
+ */
+qx.Proto._getTypeForItemNode = function(itemNode) {
+ var ClassViewer = apiviewer.ClassViewer;
+
+ if (itemNode.type == "constant") {
+ return ClassViewer.NODE_TYPE_CONSTANT;
+ } else if (itemNode.type == "property") {
+ return ClassViewer.NODE_TYPE_PROPERTY;
+ } else if (itemNode.type == "event") {
+ return ClassViewer.NODE_TYPE_EVENT;
+ } else if (itemNode.type == "method") {
+ var name = itemNode.attributes.name;
+ if (name == null) {
+ return ClassViewer.NODE_TYPE_CONSTRUCTOR;
+ } else {
+ if (itemNode.attributes.isStatic) {
+ return ClassViewer.NODE_TYPE_METHOD_STATIC;
+ } else {
+ return ClassViewer.NODE_TYPE_METHOD;
+ }
+ }
+ }
+}
+
+
+// overridden
+qx.Proto.dispose = function() {
+ if (this.getDisposed()) {
+ return;
+ }
+
+ this._titleElem = null;
+ this._classDescElem = null;
+ this._markedElement = null;
+
+ for (var nodeType in this._infoPanelHash) {
+ this._infoPanelHash[nodeType].infoElem = null;
+ this._infoPanelHash[nodeType].infoTitleElem = null;
+ this._infoPanelHash[nodeType].infoBodyElem = null;
+ }
+
+ document._detailViewer = null;
+
+ return qx.ui.embed.HtmlEmbed.prototype.dispose.call(this);
+}
+
+
+/** {Map} The primitive types. These types will not be shown with links. */
+qx.Class.PRIMITIVES = { "var":true, "void":true, "undefined":true, "arguments":true,
+ "Boolean":true, "String":true, "Float":true, "Double":true,
+ "Number":true, "Integer":true, "Error":true,
+ "RegExp":true, "Array":true, "Map":true, "Date":true, "Element":true,
+ "Document":true, "Window":true, "Node":true, "Function":true, "Object":true,
+ "Event":true };
+
+/**
+ * {regexp} The regexp for parsing a item name
+ * (e.g. "mypackage.MyClass#MY_CONSTANT alternative text").
+ */
+qx.Class.ITEM_SPEC_REGEX = /^(([\w\.]+)?(#\w+(\([^\)]*\))?)?)(\s+(.*))?$/;
+
+/** {regexp} The regexp that finds the end of a sentence. */
+qx.Class.SENTENCE_END_REGEX = /[^\.].\.(\s|<)/;
+
+/** {int} The node type of a constructor. */
+qx.Class.NODE_TYPE_CONSTRUCTOR = 1;
+/** {int} The node type of an event. */
+qx.Class.NODE_TYPE_EVENT = 2;
+/** {int} The node type of a property. */
+qx.Class.NODE_TYPE_PROPERTY = 3;
+
+/** {int} The node type of a public method. */
+qx.Class.NODE_TYPE_METHOD = 4;
+/** {int} The node type of a static public method. */
+qx.Class.NODE_TYPE_METHOD_STATIC = 5;
+/** {int} The node type of a constant. */
+qx.Class.NODE_TYPE_CONSTANT = 6;
+
+/** {string} The start tag of a div. */
+qx.Class.DIV_START = '<div>';
+/** {string} The start tag of a div containing an item description. */
+qx.Class.DIV_START_DESC = '<div class="item-desc">';
+/** {string} The start tag of a div containing the headline of an item detail. */
+qx.Class.DIV_START_DETAIL_HEADLINE = '<div class="item-detail-headline">';
+/** {string} The start tag of a div containing the text of an item detail. */
+qx.Class.DIV_START_DETAIL_TEXT = '<div class="item-detail-text">';
+/** {string} The start tag of a div containing the headline of an item error. */
+qx.Class.DIV_START_ERROR_HEADLINE = '<div class="item-detail-error">';
+/** {string} The end tag of a div. */
+qx.Class.DIV_END = '</div>';
+
+/** {string} The start tag of a span containing an optional detail. */
+qx.Class.SPAN_START_OPTIONAL = '<span class="item-detail-optional">';
+/** {string} The start tag of a span containing a parameter name. */
+qx.Class.SPAN_START_PARAM_NAME = '<span class="item-detail-param-name">';
+/** {string} The end tag of a span. */
+qx.Class.SPAN_END = '</span>';
+
+
+/**
+ * Creates the HTML showing an image.
+ *
+ * @param imgUrl {var} the URL of the image. May be a string or an array of
+ * strings (for overlay images).
+ * @param tooltip {String} the tooltip to show.
+ * @param styleAttributes {String} the style attributes to add to the image.
+ */
+qx.Class.createImageHtml = function(imgUrl, tooltip, styleAttributes) {
+ if (typeof imgUrl == "string") {
+ return '<img src="' + qx.manager.object.AliasManager.getInstance().resolvePath(imgUrl) + '" class="img"'
+ + (styleAttributes ? ' style="' + styleAttributes + '"' : "") + '/>';
+ } else {
+ if (styleAttributes) {
+ styleAttributes += ";vertical-align:top";
+ } else {
+ styleAttributes = "vertical-align:top";
+ }
+ return apiviewer.ClassViewer.createOverlayImageHtml(18, 18, imgUrl, tooltip, styleAttributes);
+ }
+}
+
+
+/**
+ * Creates HTML that shows an overlay image (several images on top of each other).
+ * The resulting HTML will behave inline.
+ *
+ * @param width {Integer} the width of the images.
+ * @param height {Integer} the height of the images.
+ * @param imgUrlArr {String[]} the URLs of the images. The last image will be
+ * painted on top.
+ * @param toolTip {String,null} the tooltip of the icon.
+ * @param styleAttributes {String,null} custom CSS style attributes.
+ * @return {String} the HTML with the overlay image.
+ */
+qx.Class.createOverlayImageHtml
+ = function(width, height, imgUrlArr, toolTip, styleAttributes)
+{
+ var html = '<div style="position:relative;top:0;left:0;width:' + width + 'px;height:' + height + 'px'
+ + ((styleAttributes == null) ? '' : (';' + styleAttributes)) + '">';
+
+ for (var i = 0; i < imgUrlArr.length; i++) {
+ html += '<img';
+ if (toolTip != null) {
+ html += ' title="' + toolTip + '"';
+ }
+ html += ' style="position:absolute;top:0px;left:0px" src="' + qx.manager.object.AliasManager.getInstance().resolvePath(imgUrlArr[i]) + '"/>';
+ }
+
+ html += '</div>';
+
+ /*
+ // NOTE: See testOverlay.html
+ var html = '<table cellpadding="0" cellspacing="0" '
+ + 'style="display:inline;position:relative;border:1px solid blue'
+ + ((styleAttributes == null) ? '' : (';' + styleAttributes)) + '"><tr>'
+ + '<td style="width:' + width + 'px;height:' + height + 'px">';
+ for (var i = 0; i < imgUrlArr.length; i++) {
+ html += '<img';
+ if (toolTip != null) {
+ html += ' title="' + toolTip + '"';
+ }
+ html += ' style="position:absolute;top:0px;left:0px" src="' + imgUrlArr[i] + '"></img>';
+ }
+ html += '</td></tr></table>';
+ */
+
+ return html;
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/InfoViewer.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/InfoViewer.js
new file mode 100644
index 0000000000..01c13e43d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/InfoViewer.js
@@ -0,0 +1,59 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Til Schneider (til132)
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(apiviewer)
+
+************************************************************************ */
+
+/**
+ * Shows the class details.
+ */
+qx.OO.defineClass("apiviewer.InfoViewer", qx.ui.embed.HtmlEmbed,
+function() {
+ qx.ui.embed.HtmlEmbed.call(this);
+
+ this.setOverflow("auto");
+ this.setPadding(20);
+ this.setEdge(0);
+ this.setHtmlProperty("id", "InfoViewer");
+ this.setVisibility(false);
+
+ apiviewer.InfoViewer.instance = this;
+});
+
+qx.Proto.showInfo = function(classNode)
+{
+ var vHtml = "";
+
+ // Title
+ vHtml += '<h1>';
+ vHtml += '<div class="pkgtitle">package</div>';
+ vHtml += classNode.attributes.fullName;
+ vHtml += '</h1>';
+
+ // TODO: Overview of classes in this package
+
+ // Apply HTML
+ this.setHtml(vHtml);
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/TreeUtil.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/TreeUtil.js
new file mode 100755
index 0000000000..05f26a5597
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/TreeUtil.js
@@ -0,0 +1,382 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Til Schneider (til132)
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(apiviewer)
+#embed(apiviewer.image/*)
+
+************************************************************************ */
+
+/**
+ * A util class for handling the documentation tree.
+ */
+qx.OO.defineClass("apiviewer.TreeUtil", qx.core.Object,
+function () {
+ qx.core.Object.call(this);
+});
+
+
+/**
+ * Gets the child of a doc node having a certain type.
+ *
+ * @param docNode {Map} the doc node to get the child of.
+ * @param childType {String} the type of the child to get.
+ * @return {Map} the wanted child or <code>null</code> if <code>docNode</code>
+ * is <code>null</code> or has no such child.
+ */
+qx.Class.getChild = function(docNode, childType) {
+ if (docNode != null && docNode.children != null) {
+ for (var i = 0; i < docNode.children.length; i++) {
+ if (docNode.children[i].type == childType) {
+ return docNode.children[i];
+ }
+ }
+ }
+
+ return null;
+}
+
+
+/**
+ * Gets the child of a doc node having a certain attribute value.
+ *
+ * @param docNode {Map} the doc node to get the child of.
+ * @param attributeName {String} the name of the attribute the wanted child must have.
+ * @param attributeValue {String} the value of the attribute the wanted child must have.
+ * @return {Map} the wanted child or <code>code</code> if there is no such child.
+ */
+qx.Class.getChildByAttribute = function(docNode, attributeName, attributeValue) {
+ if (docNode.children != null) {
+ for (var i = 0; i < docNode.children.length; i++) {
+ var node = docNode.children[i];
+ if (node.attributes && node.attributes[attributeName] == attributeValue) {
+ return node;
+ }
+ }
+ }
+
+ return null;
+}
+
+
+/**
+ * Searches the doc node of a item. Only use this method if you don't know the
+ * type of the item.
+ *
+ * @param classNode {Map} the class node the item belongs to.
+ * @param itemName {String} the name of the item to search.
+ * @return {Map} the doc node of the item or <code>null</code> if the class has
+ * no such item.
+ */
+qx.Class.getItemDocNode = function(classNode, itemName) {
+ var TreeUtil = apiviewer.TreeUtil;
+
+ // Go through the item lists and check whether one contains the wanted item
+ for (var i = 0; i < TreeUtil.ITEM_LIST_ARR.length; i++) {
+ var listNode = TreeUtil.getChild(classNode, TreeUtil.ITEM_LIST_ARR[i]);
+ if (listNode) {
+ var itemNode = TreeUtil.getChildByAttribute(listNode, "name", itemName);
+ if (itemNode) {
+ return itemNode;
+ }
+ }
+ }
+
+ // Nothing found
+ return null;
+}
+
+
+/**
+ * Gets the doc node of a class.
+ *
+ * @param docTree {Map} the documentation tree.
+ * @param className {String} the name of the class.
+ * @return {Map} the doc node of the class.
+ */
+qx.Class.getClassDocNode = function(docTree, className) {
+ var splits = className.split(".");
+ var currNode = docTree;
+ for (var i = 0; i < splits.length && currNode != null; i++) {
+ if (i < splits.length - 1) {
+ // The current name is a package name
+ var packages = this.getChild(currNode, "packages");
+ currNode = packages ? this.getChildByAttribute(packages, "name", splits[i]) : null;
+ } else {
+ // The current name is a class name
+ var classes = this.getChild(currNode, "classes");
+ currNode = classes ? this.getChildByAttribute(classes, "name", splits[i]) : null;
+ }
+ }
+
+ return currNode;
+}
+
+
+/**
+ * Gets the icon URL of a doc node.
+ *
+ * @param node {Map} the node to get the icon for.
+ * @param inherited {Boolean,false} whether the node was inherited.
+ * @return {var} the URL of the icon. May be a string or an array of string
+ * (in case of an overlay icon).
+ */
+qx.Class.getIconUrl = function(node, inherited, context) {
+ var constName;
+ switch (node.type) {
+ case "package":
+ constName = "ICON_PACKAGE";
+ break;
+ case "class":
+ constName = "ICON_CLASS";
+
+ if (node.attributes.isStatic) {
+ constName += "_STATIC";
+ } else if (node.attributes.isAbstract) {
+ constName += "_ABSTRACT";
+ }
+
+ break;
+ case "property":
+ constName = "ICON_PROPERTY";
+ break;
+ case "event":
+ constName = "ICON_EVENT";
+ break;
+ case "method":
+ var isCtor = node.attributes.name == null;
+ var isPublic = isCtor || (node.attributes.name.charAt(0) != "_");
+
+ constName = "ICON_METHOD" + (isPublic ? "_PUB" : "_PROT");
+
+ if (isCtor) {
+ constName += "_CTOR";
+ } else if (node.attributes.isStatic) {
+ constName += "_STATIC";
+ } else if (node.attributes.isAbstract) {
+ constName += "_ABSTRACT";
+ }
+
+ break;
+ case "constant":
+ constName = "ICON_CONSTANT";
+ break;
+ default: throw new Error("Unknown node type: " + node.type);
+ }
+
+ if (inherited) {
+ constName += "_INHERITED";
+ } else if (node.attributes.overriddenFrom) {
+ constName += "_OVERRIDDEN";
+ }
+
+ if (node.attributes.hasError) {
+ constName += "_ERROR";
+ } else if (node.attributes.hasWarning) {
+ constName += "_WARN";
+ }
+
+ var iconUrl = apiviewer.TreeUtil[constName];
+ if (iconUrl == null) {
+ throw new Error("Unknown img constant: " + constName);
+ }
+
+ return iconUrl;
+}
+
+
+/** {string[]} The names of lists containing items. */
+qx.Class.ITEM_LIST_ARR = [ "constants", "properties", "methods-pub", "methods-pub",
+ "methods-static-prot", "methods-static-prot" ];
+
+
+/** {string} The URL of the overlay "abstract". */
+qx.Class.OVERLAY_ABSTRACT = "api/image/overlay_abstract18.gif";
+/** {string} The URL of the overlay "error". */
+qx.Class.OVERLAY_ERROR = "api/image/overlay_error18.gif";
+/** {string} The URL of the overlay "inherited". */
+qx.Class.OVERLAY_INHERITED = "api/image/overlay_inherited18.gif";
+/** {string} The URL of the overlay "overridden". */
+qx.Class.OVERLAY_OVERRIDDEN = "api/image/overlay_overridden18.gif";
+/** {string} The URL of the overlay "static". */
+qx.Class.OVERLAY_STATIC = "api/image/overlay_static18.gif";
+/** {string} The URL of the overlay "warning". */
+qx.Class.OVERLAY_WARN = "api/image/overlay_warning18.gif";
+
+
+/** {string} The icon URL of a package. */
+qx.Class.ICON_PACKAGE = "api/image/package18.gif";
+/** {string} The icon URL of a package with warning. */
+qx.Class.ICON_PACKAGE_WARN = "api/image/package_warning18.gif";
+
+
+/** {string} The icon URL of a class. */
+qx.Class.ICON_CLASS = "api/image/class18.gif";
+/** {string} The icon URL of a class with warning. */
+qx.Class.ICON_CLASS_WARN = "api/image/class_warning18.gif";
+/** {string} The icon URL of a class with error. */
+qx.Class.ICON_CLASS_ERROR = "api/image/class_warning18.gif";
+
+/** {string} The icon URL of a static class. */
+qx.Class.ICON_CLASS_STATIC = "api/image/class_static18.gif";
+/** {string} The icon URL of a static class with warning. */
+qx.Class.ICON_CLASS_STATIC_WARN = "api/image/class_static_warning18.gif";
+/** {string} The icon URL of a static class with error. */
+qx.Class.ICON_CLASS_STATIC_ERROR = "api/image/class_static_warning18.gif";
+
+/** {string} The icon URL of an abstract class. */
+qx.Class.ICON_CLASS_ABSTRACT = "api/image/class_abstract18.gif";
+/** {string} The icon URL of an abstract class with warning. */
+qx.Class.ICON_CLASS_ABSTRACT_WARN = "api/image/class_abstract_warning18.gif";
+/** {string} The icon URL of an abstract class with error. */
+qx.Class.ICON_CLASS_ABSTRACT_ERROR = "api/image/class_abstract_warning18.gif";
+
+
+/** {string} The icon URL of a property. */
+qx.Class.ICON_PROPERTY = "api/image/property18.gif";
+/** {string[]} The icon URL of a property with warning. */
+qx.Class.ICON_PROPERTY_WARN = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of a property with error. */
+qx.Class.ICON_PROPERTY_ERROR = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited property. */
+qx.Class.ICON_PROPERTY_INHERITED = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited property with warning. */
+qx.Class.ICON_PROPERTY_INHERITED_WARN = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited property with error. */
+qx.Class.ICON_PROPERTY_INHERITED_ERROR = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an overridden property. */
+qx.Class.ICON_PROPERTY_OVERRIDDEN = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_OVERRIDDEN ];
+/** {string[]} The icon URL of an overridden property with warning. */
+qx.Class.ICON_PROPERTY_OVERRIDDEN_WARN = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an overridden property with error. */
+qx.Class.ICON_PROPERTY_OVERRIDDEN_ERROR = [ qx.Class.ICON_PROPERTY, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_ERROR ];
+
+
+/** {string} The icon URL of an event. */
+qx.Class.ICON_EVENT = "api/image/event18.gif";
+
+/** {string[]} The icon URL of an inherited event. */
+qx.Class.ICON_EVENT_INHERITED = [ qx.Class.ICON_EVENT, qx.Class.OVERLAY_INHERITED ];
+
+
+/** {string} The icon URL of a public method. */
+qx.Class.ICON_METHOD_PUB = "api/image/method_public18.gif";
+/** {string[]} The icon URL of a public method with warning. */
+qx.Class.ICON_METHOD_PUB_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ERROR ];
+/** {string[]} The icon URL of a public method with error. */
+qx.Class.ICON_METHOD_PUB_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited public method. */
+qx.Class.ICON_METHOD_PUB_INHERITED = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited public method with warning. */
+qx.Class.ICON_METHOD_PUB_INHERITED_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited public method with error. */
+qx.Class.ICON_METHOD_PUB_INHERITED_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an overridden public method. */
+qx.Class.ICON_METHOD_PUB_OVERRIDDEN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_OVERRIDDEN ];
+/** {string[]} The icon URL of an overridden public method with warning. */
+qx.Class.ICON_METHOD_PUB_OVERRIDDEN_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an overridden public method with error. */
+qx.Class.ICON_METHOD_PUB_OVERRIDDEN_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of a public static method. */
+qx.Class.ICON_METHOD_PUB_STATIC = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_STATIC ];
+/** {string[]} The icon URL of a public static method with error. */
+qx.Class.ICON_METHOD_PUB_STATIC_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_STATIC, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of a public abstract method. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT ];
+/** {string[]} The icon URL of a public abstract method with warning. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of a public abstract method with error. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an overridden public abstract method. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_OVERRIDDEN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_OVERRIDDEN ];
+/** {string[]} The icon URL of an overridden public abstract method with warning. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_OVERRIDDEN_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an overridden public abstract method with error. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_OVERRIDDEN_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited public abstract method. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_INHERITED = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited public abstract method with warning. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_INHERITED_WARN = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited public abstract method with error. */
+qx.Class.ICON_METHOD_PUB_ABSTRACT_INHERITED_ERROR = [ qx.Class.ICON_METHOD_PUB, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+
+/** {string} The icon URL of a constructor. */
+qx.Class.ICON_METHOD_PUB_CTOR = "api/image/constructor18.gif";
+/** {string[]} The icon URL of a constructor with error. */
+qx.Class.ICON_METHOD_PUB_CTOR_ERROR = [ qx.Class.ICON_METHOD_PUB_CTOR, qx.Class.OVERLAY_ERROR ];
+
+
+/** {string} The icon URL of a protected method. */
+qx.Class.ICON_METHOD_PROT = "api/image/method_protected18.gif";
+/** {string[]} The icon URL of a protected method with warning. */
+qx.Class.ICON_METHOD_PROT_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ERROR ];
+/** {string[]} The icon URL of a protected method with error. */
+qx.Class.ICON_METHOD_PROT_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited protected method. */
+qx.Class.ICON_METHOD_PROT_INHERITED = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited protected method with warning. */
+qx.Class.ICON_METHOD_PROT_INHERITED_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited protected method with error. */
+qx.Class.ICON_METHOD_PROT_INHERITED_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an overridden protected method. */
+qx.Class.ICON_METHOD_PROT_OVERRIDDEN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_OVERRIDDEN ];
+/** {string[]} The icon URL of an overridden protected method with warning. */
+qx.Class.ICON_METHOD_PROT_OVERRIDDEN_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an overridden protected method with error. */
+qx.Class.ICON_METHOD_PROT_OVERRIDDEN_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_OVERRIDDEN, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of a protected static method. */
+qx.Class.ICON_METHOD_PROT_STATIC = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_STATIC ];
+/** {string[]} The icon URL of a protected static method with error. */
+qx.Class.ICON_METHOD_PROT_STATIC_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_STATIC, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an abstract protected method. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT ];
+/** {string[]} The icon URL of an abstract protected method with warning. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an abstract protected method with error. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_ERROR ];
+
+/** {string[]} The icon URL of an inherited abstract protected method. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_INHERITED = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED ];
+/** {string[]} The icon URL of an inherited abstract protected method with warning. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_INHERITED_WARN = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_WARN ];
+/** {string[]} The icon URL of an inherited abstract protected method with error. */
+qx.Class.ICON_METHOD_PROT_ABSTRACT_INHERITED_ERROR = [ qx.Class.ICON_METHOD_PROT, qx.Class.OVERLAY_ABSTRACT, qx.Class.OVERLAY_INHERITED, qx.Class.OVERLAY_ERROR ];
+
+
+/** {string} The icon URL of a constant. */
+qx.Class.ICON_CONSTANT = "api/image/constant18.gif";
+/** {string[]} The icon URL of a constant with error. */
+qx.Class.ICON_CONSTANT_ERROR = [ qx.Class.ICON_CONSTANT, qx.Class.OVERLAY_ERROR ];
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/Viewer.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/Viewer.js
new file mode 100755
index 0000000000..b2f81d4859
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/class/apiviewer/Viewer.js
@@ -0,0 +1,433 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Til Schneider (til132)
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#module(apiviewer)
+#resource(css:css)
+#resource(image:image)
+
+************************************************************************ */
+
+/**
+ * The API viewer. Shows the API documentation.
+ */
+qx.OO.defineClass("apiviewer.Viewer", qx.ui.layout.DockLayout,
+function () {
+ qx.ui.layout.DockLayout.call(this);
+
+ this.setEdge(0);
+
+ this._titlePrefix = this.getSetting("title") + " API Documentation";
+ document.title = this._titlePrefix;
+
+ // create header
+ var header = new qx.ui.embed.HtmlEmbed(
+ "<h1>" +
+ "<span>" + this.getSetting("title") + "</span>"+
+ " API Documentation"+
+ "</h1>" +
+ "<div id='qxversion'>qooxdoo " + qx.core.Version.toString() + "</div>"
+ );
+ header.setHtmlProperty("id", "header");
+ header.setStyleProperty("background", "#134275 url(" + qx.manager.object.AliasManager.getInstance().resolvePath("api/image/colorstrip.gif") + ") top left repeat-x");
+ header.setHeight(70);
+ this.addTop(header);
+
+ this._tree = new qx.ui.tree.Tree("API Documentation");
+ this._tree.set({
+ backgroundColor: "white",
+ overflow: "scroll",
+ width: "100%",
+ height: "100%",
+ border: qx.renderer.border.BorderPresets.getInstance().inset,
+ paddingLeft: 5,
+ paddingTop: 3
+ });
+ this._tree.getManager().addEventListener("changeSelection", this._onTreeSelectionChange, this);
+
+ this._detailFrame = new qx.ui.layout.CanvasLayout;
+ this._detailFrame.set({
+ width: "100%",
+ height: "100%",
+ backgroundColor: "white",
+ border: qx.renderer.border.BorderPresets.getInstance().inset
+ });
+ this._detailFrame.setHtmlProperty("id", "DetailFrame");
+
+ // create vertival splitter
+ var mainSplitPane = new qx.ui.splitpane.HorizontalSplitPane(250, "1*");
+ mainSplitPane.setLiveResize(true);
+ mainSplitPane.addLeft(this._tree);
+ mainSplitPane.addRight(this._detailFrame);
+ this.add(mainSplitPane);
+
+ this._detailLoader = new qx.ui.embed.HtmlEmbed('<h1><div class="please">please wait</div>Loading data...</h1>');
+ this._detailLoader.setHtmlProperty("id", "DetailLoader");
+ this._detailLoader.setMarginLeft(20);
+ this._detailLoader.setMarginTop(20);
+ this._detailFrame.add(this._detailLoader);
+
+ this._classViewer = new apiviewer.ClassViewer;
+ this._detailFrame.add(this._classViewer);
+
+ this._infoViewer = new apiviewer.InfoViewer;
+ this._detailFrame.add(this._infoViewer);
+
+ this._currentTreeType = apiviewer.Viewer.PACKAGE_TREE;
+
+ // Workaround: Since navigating in qx.ui.tree.Tree doesn't work, we've to
+ // maintain a hash that keeps the tree nodes for class names
+ this._classTreeNodeHash = {};
+ this._classTreeNodeHash[apiviewer.Viewer.PACKAGE_TREE] = {};
+ this._classTreeNodeHash[apiviewer.Viewer.INHERITENCE_TREE] = {};
+
+ apiviewer.Viewer.instance = this;
+
+ qx.client.History.getInstance().init();
+ qx.client.History.getInstance().addEventListener("request", this._onHistoryRequest, this);
+});
+
+
+/** The documentation tree to show. */
+qx.OO.addProperty({ name:"docTree", type:"object" });
+
+
+qx.Settings.setDefault("title", "qooxdoo");
+qx.Settings.setDefault("initialTreeDepth", 1);
+
+
+// property checker
+qx.Proto._modifyDocTree = function(propValue, propOldValue, propData) {
+ this._updateTree(propValue);
+ return true;
+}
+
+
+/**
+ * Loads the API doc tree from a URL. The URL must point to a JSON encoded
+ * doc tree.
+ *
+ * @param url {String} the URL.
+ */
+qx.Proto.load = function(url)
+{
+ var req = new qx.io.remote.Request(url);
+
+ req.setTimeout(180000);
+
+ req.addEventListener("completed", function(evt)
+ {
+ var content = evt.getData().getContent();
+ this.setDocTree(eval("(" + content + ")"));
+
+ qx.ui.core.Widget.flushGlobalQueues();
+
+ // Handle bookmarks
+ if (window.location.hash) {
+ var self = this;
+ window.setTimeout(function() {
+ self.selectItem(window.location.hash.substring(1));
+ }, 0);
+ }
+
+ this._detailLoader.setHtml('<h1><div class="please">' + this.getSetting("title") +
+ '</div>API Documentation</h1>');
+
+ }, this);
+
+ req.addEventListener("failed", function(evt)
+ {
+ this.error("Couldn't load file: " + url);
+ }, this);
+
+ req.send();
+}
+
+
+/**
+ * Updates the tree on the left.
+ *
+ * @param docTree {Map} the documentation tree to use for updating.
+ */
+qx.Proto._updateTree = function(docTree) {
+ var inheritenceNode = new qx.ui.tree.TreeFolder("Inheritence hierarchy");
+ var packagesNode = new qx.ui.tree.TreeFolder("Packages");
+
+ this._tree.removeAll();
+ this._tree.add(inheritenceNode, packagesNode);
+
+ // Fille the packages tree (and fill the _topLevelClassNodeArr)
+ this._topLevelClassNodeArr = [];
+ this._fillPackageNode(packagesNode, docTree, 0);
+
+ // Sort the _topLevelClassNodeArr
+ this._topLevelClassNodeArr.sort(function (node1, node2) {
+ return (node1.attributes.fullName < node2.attributes.fullName) ? -1 : 1;
+ });
+
+ // Fill the inheritence tree
+ for (var i = 0; i < this._topLevelClassNodeArr.length; i++) {
+ this._createInheritanceNode(inheritenceNode, this._topLevelClassNodeArr[i], docTree);
+ }
+
+ packagesNode.open();
+
+ if (this._wantedClassName) {
+ this.showClassByName(this._wantedClassName);
+ this._wantedClassName = null;
+ }
+}
+
+
+/**
+ * Fills a package tree node with tree nodes for the sub packages and classes.
+ *
+ * @param treeNode {qx.ui.tree.TreeFolder} the package tree node.
+ * @param docNode {Map} the documentation node of the package.
+ */
+qx.Proto._fillPackageNode = function(treeNode, docNode, depth) {
+ var ApiViewer = apiviewer.Viewer;
+ var TreeUtil = apiviewer.TreeUtil;
+
+ var packagesDocNode = TreeUtil.getChild(docNode, "packages");
+ if (packagesDocNode && packagesDocNode.children) {
+ for (var i = 0; i < packagesDocNode.children.length; i++) {
+ var packageDocNode = packagesDocNode.children[i];
+ var iconUrl = TreeUtil.getIconUrl(packageDocNode);
+ var packageTreeNode = new qx.ui.tree.TreeFolder(packageDocNode.attributes.name, iconUrl);
+ packageTreeNode.docNode = packageDocNode;
+ treeNode.add(packageTreeNode);
+
+ this._fillPackageNode(packageTreeNode, packageDocNode, depth+1);
+
+ // Open the package node if it has child packages
+ if (depth < this.getSetting("initialTreeDepth") && TreeUtil.getChild(packageDocNode, "packages")) {
+ packageTreeNode.open();
+ }
+
+ // Register the tree node
+ this._classTreeNodeHash[ApiViewer.PACKAGE_TREE][packageDocNode.attributes.fullName] = packageTreeNode;
+ }
+ }
+
+ var classesDocNode = TreeUtil.getChild(docNode, "classes");
+ if (classesDocNode && classesDocNode.children) {
+ for (var i = 0; i < classesDocNode.children.length; i++) {
+ var classDocNode = classesDocNode.children[i];
+ var iconUrl = TreeUtil.getIconUrl(classDocNode);
+ var classTreeNode = new qx.ui.tree.TreeFolder(classDocNode.attributes.name, iconUrl);
+ classTreeNode.docNode = classDocNode;
+ classTreeNode.treeType = ApiViewer.PACKAGE_TREE;
+ treeNode.add(classTreeNode);
+
+ // Register the tree node
+ this._classTreeNodeHash[ApiViewer.PACKAGE_TREE][classDocNode.attributes.fullName] = classTreeNode;
+
+ // Check whether this is a top-level-class
+ if (classDocNode.attributes.superClass == null) {
+ this._topLevelClassNodeArr.push(classDocNode);
+ }
+ }
+ }
+}
+
+
+/**
+ * Creates the tree node for a class containing class nodes for all its child
+ * classes.
+ *
+ * @param classDocNode {Map} the documentation node of the class.
+ * @param docTree {Map} the documentation tree.
+ */
+qx.Proto._createInheritanceNode = function(parentTreeNode, classDocNode, docTree) {
+ var ApiViewer = apiviewer.Viewer;
+ var TreeUtil = apiviewer.TreeUtil;
+
+ // Create the tree node
+ var iconUrl = TreeUtil.getIconUrl(classDocNode);
+ var classTreeNode = new qx.ui.tree.TreeFolder(classDocNode.attributes.fullName, iconUrl);
+ classTreeNode.docNode = classDocNode;
+ classTreeNode.treeType = ApiViewer.INHERITENCE_TREE;
+ parentTreeNode.add(classTreeNode);
+
+ // Register the tree node
+ this._classTreeNodeHash[ApiViewer.INHERITENCE_TREE][classDocNode.attributes.fullName] = classTreeNode;
+
+ // Add all child classes
+ var childClassNameCsv = classDocNode.attributes.childClasses;
+ if (childClassNameCsv) {
+ var childClassNameArr = childClassNameCsv.split(",");
+ for (var i = 0; i < childClassNameArr.length; i++) {
+ var childClassDocNode = TreeUtil.getClassDocNode(docTree, childClassNameArr[i]);
+ this._createInheritanceNode(classTreeNode, childClassDocNode, docTree);
+ }
+ }
+}
+
+
+/**
+ * Event handler. Called when the tree selection has changed.
+ *
+ * @param evt {Map} the event.
+ */
+qx.Proto._onTreeSelectionChange = function(evt)
+{
+ var treeNode = evt.getData()[0];
+
+ if (treeNode && treeNode.docNode)
+ {
+ var newTitle = this._titlePrefix + " - class " + treeNode.docNode.attributes.fullName;
+
+ qx.client.History.getInstance().addToHistory(treeNode.docNode.attributes.fullName, newTitle);
+
+ this._currentTreeType = treeNode.treeType;
+
+ this._selectTreeNode(treeNode);
+
+ window.location.hash = "#" + treeNode.docNode.attributes.fullName;
+ }
+}
+
+
+qx.Proto._onHistoryRequest = function(evt)
+{
+ this.showClassByName(evt.getData());
+}
+
+qx.Proto._selectTreeNode = function(vTreeNode)
+{
+ if (!(vTreeNode && vTreeNode.docNode)) {
+ this.error("Invalid tree node: " + vTreeNode);
+ }
+
+ var vDoc = vTreeNode.docNode;
+
+ this._detailLoader.setVisibility(false);
+
+ if (vDoc.type == "class")
+ {
+ this._infoViewer.setVisibility(false);
+ this._classViewer.showClass(vDoc);
+ this._classViewer.setVisibility(true);
+ }
+ else
+ {
+ this._classViewer.setVisibility(false);
+ this._infoViewer.showInfo(vDoc);
+ this._infoViewer.setVisibility(true);
+ }
+}
+
+
+/**
+ * Selects an item (class, property, method or constant).
+ *
+ * @param fullItemName {String} the full name of the item to select.
+ * (e.g. "qx.mypackage.MyClass" or "qx.mypackage.MyClass#myProperty")
+ */
+qx.Proto.selectItem = function(fullItemName) {
+ var className = fullItemName;
+ var itemName = null;
+ var hashPos = fullItemName.indexOf("#");
+ if (hashPos != -1) {
+ className = fullItemName.substring(0, hashPos);
+ itemName = fullItemName.substring(hashPos + 1);
+
+ var parenPos = itemName.indexOf("(");
+ if (parenPos != -1) {
+ itemName = qx.lang.String.trim(itemName.substring(0, parenPos));
+ }
+ }
+
+ this.showClassByName(className);
+ if (itemName) {
+ this._classViewer.showItem(itemName);
+ }
+}
+
+
+/**
+ * Shows a certain class.
+ *
+ * @param className {String} the name of the class to show.
+ */
+qx.Proto.showClassByName = function(className) {
+ var treeNode = this._classTreeNodeHash[this._currentTreeType][className];
+
+ if (treeNode) {
+ treeNode.setSelected(true);
+ } else if (this.getDocTree() == null) {
+ // The doc tree has not been loaded yet
+ // -> Remeber the wanted class and show when loading is done
+ this._wantedClassName = className;
+ } else {
+ this.error("Unknown class: " + className);
+ }
+}
+
+
+qx.Class.PACKAGE_TREE = 1;
+qx.Class.INHERITENCE_TREE = 2;
+
+
+
+qx.Proto.dispose = function()
+{
+ if (this.getDisposed()) {
+ return;
+ }
+
+ if (this._tree)
+ {
+ this._tree.dispose();
+ this._tree = null;
+ }
+
+ if (this._detailFrame)
+ {
+ this._detailFrame.dispose();
+ this._detailFrame = null;
+ }
+
+ if (this._detailLoader)
+ {
+ this._detailLoader.dispose();
+ this._detailLoader = null;
+ }
+
+ if (this._classViewer)
+ {
+ this._classViewer.dispose();
+ this._classViewer = null;
+ }
+
+ if (this._infoViewer)
+ {
+ this._infoViewer.dispose();
+ this._infoViewer = null;
+ }
+
+ this._classTreeNodeHash = null;
+
+ return qx.ui.layout.HorizontalBoxLayout.prototype.dispose.call(this);
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/index.html
new file mode 100755
index 0000000000..a40a79fb1b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/index.html
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>API Documentation</title>
+ <script type="text/javascript" src="script/apiviewer.js"></script>
+ </head>
+ <body>
+ <script type="text/javascript">
+ if (!qx.IS_SOURCE) {
+ qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_ERROR);
+ }
+ qx.core.Init.getInstance().setApplication(apiviewer.Application);
+ </script>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/css/apiviewer.css b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/css/apiviewer.css
new file mode 100755
index 0000000000..834608fafc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/css/apiviewer.css
@@ -0,0 +1,320 @@
+#header {
+ margin: 0px;
+ padding: 0px;
+ background-color: #134275;
+ font-family: "Trebuchet MS", "Lucida Grande", Verdana, sans-serif;
+}
+
+#header h1 {
+ font-size: 18px;
+ font-weight: bold;
+ color: #DEFF83;
+ position: absolute;
+ top: 30px;
+ left: 20px;
+ margin: 0;
+ padding: 0;
+}
+
+#qxversion {
+ font-size: 11px;
+ text-transform: lowercase;
+ color: #F3FFD1;
+ margin-top: -14px;
+ letter-spacing: 1px;
+ word-spacing: 4px;
+ position: absolute;
+ bottom: 20px;
+ right: 20px;
+ margin: 0;
+ padding: 0;
+}
+
+#DetailFrame,
+#DetailFrame td,
+#DetailFrame th{
+ font-family: Verdana, "Lucida Grande", "Bitstream Vera Sans", Tahoma, "Lucida Sans Unicode", Arial, sans-serif;
+ font-size: 11px;
+ line-height: 150%;
+}
+
+#DetailFrame h1,
+#DetailFrame h2,
+#DetailFrame h3,
+#DetailFrame h4,
+#DetailFrame h5,
+#DetailFrame h6{
+ font-family: "Trebuchet MS", "Lucida Grande", Verdana, sans-serif;
+ color: #134275;
+}
+
+#DetailFrame *{
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+
+#DetailFrame #ControlFrame{
+ position: absolute;
+ top: 20px;
+ right: 20px;
+ font-size: 10px;
+ background: #FBFFEF;
+ padding: 4px 6px;
+ border: 1px solid #ECECEC;
+}
+
+#DetailFrame h1 {
+ font-size: 24px;
+ margin-bottom: 20px;
+}
+
+#DetailFrame h2 {
+ font-size: 18px;
+ margin-bottom: 4px;
+}
+
+#DetailFrame h3 {
+ font-size: 14px;
+}
+
+#DetailFrame img {
+ border: 0 none;
+ vertical-align: middle;
+}
+
+#DetailFrame a:link,
+#DetailFrame a:visited{
+ color: #134275;
+}
+
+#DetailFrame a:hover,
+#DetailFrame a:active{
+ color: #134275;
+ text-decoration: underline;
+}
+
+#DetailFrame td{
+ vertical-align: top;
+ padding: 2px;
+}
+
+
+
+
+
+#DetailLoader div.please{
+ font-size: 14px;
+ font-weight: normal;
+ margin-bottom: 4px;
+}
+
+
+
+
+
+
+#InfoViewer div.pkgtitle{
+ font-size: 14px;
+ font-weight: normal;
+ margin-bottom: 4px;
+}
+
+
+
+
+
+
+
+
+#ClassViewer div.classDescription{
+ font-size: 12px;
+
+ background: #F3FFD1;
+ border: 1px solid #F3FFD1;
+
+ -moz-border-radius: 5px;
+ padding: 12px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+
+ width: 650px;
+ overflow: auto;
+}
+
+#ClassViewer div.classDescription p{
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+#ClassViewer div.packageName{
+ font-size: 14px;
+ font-weight: normal;
+ margin-bottom: 4px;
+}
+
+#ClassViewer span.typeInfo{
+ color: #83B300;
+ font-weight: normal;
+}
+
+
+
+
+
+
+#ClassViewer div.infoPanel {
+ margin-top: 30px;
+}
+
+#ClassViewer div.infoPanel h2{
+ cursor: default;
+}
+
+
+
+
+
+
+
+
+#ClassViewer table.info {
+ table-layout: fixed;
+}
+
+#ClassViewer table.info tr {
+ background: #FBFFEF;
+}
+
+#ClassViewer table.info tr.marked {
+ background: #DEFF83;
+}
+
+#ClassViewer table.info tr td,
+#ClassViewer div.empty-info-body {
+ border-top: 1px solid #ECECEC;
+}
+
+#ClassViewer table.info tr td{
+ overflow: hidden;
+}
+
+#ClassViewer table.info tr td td{
+ border-top: 0 none;
+ padding: 0;
+}
+
+#ClassViewer table.info td.icon{
+ text-align: center;
+ width: 20px;
+}
+
+#ClassViewer table.info td.type{
+ width: 100px;
+ font-size: 12px;
+ color: #83B300;
+ font-weight: bold;
+}
+
+#ClassViewer table.info td.toggle{
+ text-align: center;
+ width: 16px;
+ padding: 1px;
+}
+
+#ClassViewer table.info td.toggle img{
+ cursor: default;
+}
+
+#ClassViewer table.info td.text{
+ padding-right: 10px;
+}
+
+#ClassViewer table.info td.text h3{
+ cursor: default;
+}
+
+#ClassViewer table.info td.text table{
+ padding: 0;
+}
+
+#ClassViewer table.info td.text table td {
+ padding: 1px 3px;
+}
+
+#ClassViewer table.info td.text table th {
+ text-align: left;
+ color: #134275;
+ font-weight: normal;
+ padding: 1px 3px;
+}
+
+#ClassViewer span.methodSignature{
+ font-size: 12px;
+ color: #83B300;
+}
+
+#ClassViewer table.info td.type a,
+#ClassViewer span.methodSignature a{
+ color: #83B300 !important;
+}
+
+#ClassViewer span.methodSignature span.parameterType{
+ font-style: italic;
+}
+
+#ClassViewer span.methodSignature span.separator{
+ color: #134275;
+ font-weight: bold;
+}
+
+#ClassViewer span.methodSignature span.parenthesis{
+ color: #134275;
+ font-weight: bold;
+}
+
+
+
+
+
+#ClassViewer div.item-detail-headline {
+ font-weight: bold;
+ color: #1D65B3;
+}
+
+#ClassViewer div.item-detail-text {
+ padding-left: 12px;
+}
+
+#ClassViewer div.item-detail-text p{
+ display: inline;
+}
+
+#ClassViewer div.item-detail-error {
+ font-weight: bold;
+ color: #D61F1C;
+}
+
+#ClassViewer span.item-detail-optional {
+ font-style: italic;
+}
+
+#ClassViewer code,
+#ClassViewer pre,
+#ClassViewer span.item-detail-param-name {
+ font-family: Consolas, "Bitstream Vera Sans Mono", "Courier New", monospace;
+ background: #FFF;
+ padding: 1px;
+}
+
+#ClassViewer pre{
+ overflow: auto;
+ padding: 4px 8px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
+#ClassViewer span.caps{
+ color: #134275;
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class18.gif
new file mode 100755
index 0000000000..df8c9291c7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_abstract18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_abstract18.gif
new file mode 100755
index 0000000000..788abd7094
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_abstract18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_abstract_warning18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_abstract_warning18.gif
new file mode 100755
index 0000000000..135f68cffd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_abstract_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_static18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_static18.gif
new file mode 100755
index 0000000000..5eb75aea09
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_static18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_static_warning18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_static_warning18.gif
new file mode 100755
index 0000000000..75a6c72035
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_static_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_warning18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_warning18.gif
new file mode 100755
index 0000000000..95e7a327f9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/class_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/close.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/close.gif
new file mode 100755
index 0000000000..3377fb65de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/close.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/colorstrip.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/colorstrip.gif
new file mode 100644
index 0000000000..e19d1b4dfd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/colorstrip.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/constant18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/constant18.gif
new file mode 100755
index 0000000000..c3a5d0cedf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/constant18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/constructor18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/constructor18.gif
new file mode 100644
index 0000000000..b3645ac80a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/constructor18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/event18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/event18.gif
new file mode 100644
index 0000000000..d3555ff96d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/event18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/method_protected18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/method_protected18.gif
new file mode 100755
index 0000000000..be71bae519
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/method_protected18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/method_public18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/method_public18.gif
new file mode 100755
index 0000000000..67b1785dba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/method_public18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/nextlevel.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/nextlevel.gif
new file mode 100755
index 0000000000..48b81c80a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/nextlevel.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/open.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/open.gif
new file mode 100755
index 0000000000..30f815aa30
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/open.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_abstract18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_abstract18.gif
new file mode 100755
index 0000000000..16122bf4d6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_abstract18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_constructor18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_constructor18.gif
new file mode 100755
index 0000000000..d408fe8e57
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_constructor18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_error18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_error18.gif
new file mode 100755
index 0000000000..ffde061d69
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_error18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_inherited18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_inherited18.gif
new file mode 100755
index 0000000000..81e4906fe7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_inherited18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_overridden18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_overridden18.gif
new file mode 100755
index 0000000000..bca3e80c48
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_overridden18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_static18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_static18.gif
new file mode 100755
index 0000000000..4b1afa1a35
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_static18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_warning18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_warning18.gif
new file mode 100755
index 0000000000..ce74a2a0f2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/overlay_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/package18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/package18.gif
new file mode 100755
index 0000000000..907110110d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/package18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/package_warning18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/package_warning18.gif
new file mode 100755
index 0000000000..2cb875be2b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/package_warning18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/property18.gif b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/property18.gif
new file mode 100755
index 0000000000..ab4153d6d6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/resource/image/property18.gif
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/C.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/C.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/C.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/de.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/de.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/de.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/en.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/en.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/en.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/es.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/es.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/es.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/fr.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/fr.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/apiviewer/source/translation/fr.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/Makefile b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/Makefile
new file mode 100644
index 0000000000..25785cebc5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/Makefile
@@ -0,0 +1,104 @@
+################################################################################
+#
+# qooxdoo - the new era of web development
+#
+# http://qooxdoo.org
+#
+# Copyright:
+# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org
+#
+# License:
+# LGPL: http://www.gnu.org/licenses/lgpl.html
+# EPL: http://www.eclipse.org/org/documents/epl-v10.php
+# See the LICENSE file in the project's top-level directory for details.
+#
+# Authors:
+# * Sebastian Werner (wpbasti)
+# * Andreas Ecker (ecker)
+# * Fabian Jakobs (fjakobs)
+#
+################################################################################
+
+################################################################################
+# BASIC SETTINGS
+################################################################################
+
+#
+# Location of your qooxdoo distribution
+# Could be relative from this location or absolute
+#
+QOOXDOO_PATH = ../../..
+
+#
+# The same as above, but from the webserver point of view
+# Starting point is the application HTML file of the source folder.
+# In most cases just add a "/.." compared to above
+#
+QOOXDOO_URI = ../../../..
+
+#
+# Namespace of your application e.g. custom
+#
+APPLICATION_NAMESPACE = feedreader
+
+#
+# Titles used in your API viewer and during the build process
+#
+APPLICATION_MAKE_TITLE = FEEDREADER
+APPLICATION_API_TITLE = FeedReader
+
+#
+# Additional files (space separated list)
+#
+APPLICATION_FILES = index.html
+
+#
+# Locales to include
+#
+#APPLICATION_LOCALES = en de tr it es sv ru fr
+APPLICATION_LOCALES = de es en
+
+
+
+
+
+################################################################################
+# ADVANCED SETTINGS
+################################################################################
+
+#
+# Enable resource filtering in API viewer
+#
+APPLICATION_RESOURCE_FILTER = true
+
+#
+# We don't need the full source code
+#
+APPLICATION_COMPLETE_SOURCE = false
+
+#
+# Disable line breaks
+#
+APPLICATION_LINEBREAKS_BUILD = false
+APPLICATION_LINEBREAKS_SOURCE = true
+
+#
+# qooxdoo.org sync
+#
+APPLICATION_PUBLISH_PATH = root@qooxdoo.org:/var/www/qooxdoo/demo/$(FRAMEWORK_VERSION)/$(APPLICATION_NAMESPACE)
+
+
+
+
+
+################################################################################
+# INCLUDE CORE
+################################################################################
+
+ifneq ($(QOOXDOO_PATH),PLEASE_DEFINE_QOOXDOO_PATH)
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/targets.mk
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/application.mk
+endif
+
+error:
+ @echo " * Please configure QOOXDOO_PATH"
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/Application.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/Application.js
new file mode 100755
index 0000000000..aa76800f31
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/Application.js
@@ -0,0 +1,410 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#resource(feeds:feeds)
+#resource(css:css)
+#resource(proxy:proxy)
+#resource(images:images)
+#embed(feedreader.proxy/*)
+#embed(feedreader.feeds/*)
+#embed(feedreader.css/*)
+#embed(feedreader.images/*)
+#embed(qx.icontheme/16/actions/dialog-ok.png)
+#embed(qx.icontheme/16/actions/dialog-cancel.png)
+#embed(qx.icontheme/16/actions/help-about.png)
+#embed(qx.icontheme/16/actions/view-refresh.png)
+
+************************************************************************ */
+
+/**
+ * qooxdoo news reader Application class.
+ */
+qx.OO.defineClass("feedreader.Application", qx.component.AbstractApplication,
+function () {
+ qx.component.AbstractApplication.call(this);
+
+ qx.manager.object.ImageManager.getInstance().setIconTheme(qx.theme.icon.VistaInspirate.getInstance());
+ //this.fetchFeedDesc();
+ this.setFeeds([]);
+});
+
+qx.OO.addProperty({name: "feeds"});
+qx.OO.addProperty({name: "selectedFeed"});
+
+qx.Settings.setDefault("resourceUri", "./resource");
+
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+if (qx.core.Client.getInstance().getRunsLocally())
+{
+ qx.Class._feedDesc = [
+ {
+ url: "feedreader/feeds/qooxdoo-news.xml",
+ name: "qooxdoo-blog"
+ },
+ {
+ url: "feedreader/feeds/qooxdoo-blog.xml",
+ name: "qooxdoo-news"
+ },
+ {
+ url: "feedreader/feeds/ajaxian.xml",
+ name: "ajaxian"
+ },
+ {
+ url: "feedreader/feeds/safari.xml",
+ name: "Surfin' Safari"
+ }
+ ];
+}
+else
+{
+ qx.Class._feedDesc = [
+ {
+ url: "feedreader/proxy/proxy.php?proxy=" + encodeURIComponent("http://feeds.feedburner.com/qooxdoo/blog/content"),
+ name: "qooxdoo-blog"
+ },
+ {
+ url: "feedreader/proxy/proxy.php?proxy=" + encodeURIComponent("http://feeds.feedburner.com/qooxdoo/news/content"),
+ name: "qooxdoo-news"
+ },
+ {
+ url: "feedreader/proxy/proxy.php?proxy=" + encodeURIComponent("http://feeds.feedburner.com/ajaxian"),
+ name: "ajaxian"
+ },
+ {
+ url: "feedreader/proxy/proxy.php?proxy=" + encodeURIComponent("http://webkit.org/blog/?feed=rss2"),
+ name: "Surfin' Safari"
+ }
+ ];
+}
+
+qx.Proto.initialize = function(e)
+{
+ // Define alias for custom resource path
+ qx.manager.object.AliasManager.getInstance().add("feedreader", qx.Settings.getValueOfClass("feedreader.Application", "resourceUri"));
+
+ // Include CSS file
+ qx.html.StyleSheet.includeFile(qx.manager.object.AliasManager.getInstance().resolvePath("feedreader/css/reader.css"));
+};
+
+qx.Proto.main = function(e)
+{
+ // create main layout
+ var dockLayout = new qx.ui.layout.DockLayout();
+ dockLayout.set({
+ height: "100%",
+ width: "100%"
+ });
+
+ // create header
+ var header = new qx.ui.embed.HtmlEmbed("<h1><span>qooxdoo</span> reader</h1>");
+ header.setCssClassName("header");
+ header.setHeight(50);
+ dockLayout.addTop(header);
+
+ // define commands
+ var reload_cmd = new qx.client.Command("Control+R");
+ reload_cmd.addEventListener("execute", function(e) {
+ this.fetchFeeds();
+ this.debug(this.tr("reloading ...").toString());
+ }, this);
+
+ var about_cmd = new qx.client.Command("F1");
+ about_cmd.addEventListener("execute", function(e) {
+ alert(this.tr("qooxdoo feed reader."));
+ }, this);
+
+ // create toolbar
+ var toolBar = new qx.ui.toolbar.ToolBar();
+ toolBar.add(new qx.ui.toolbar.Button(this.trn("Add feed", "Add feeds", 2), "icon/16/actions/dialog-ok.png"));
+ toolBar.add(new qx.ui.toolbar.Button(this.tr("Remove feed"), "icon/16/actions/dialog-cancel.png"));
+ toolBar.add(new qx.ui.toolbar.Separator());
+
+ var reload_btn = new qx.ui.toolbar.Button(this.tr("Reload"), "icon/16/actions/view-refresh.png");
+ reload_btn.setCommand(reload_cmd);
+ reload_btn.setToolTip(new qx.ui.popup.ToolTip(this.tr("(%1) Reload the feeds.", reload_cmd.toString())));
+ toolBar.add(reload_btn);
+
+ toolBar.add(new qx.ui.basic.HorizontalSpacer());
+
+ // poulate languages menu and add it to the toolbar
+ var locales = {
+ en: this.tr("English"),
+ de: this.tr("German"),
+ en: this.tr("English"),
+ tr: this.tr("Turkish"),
+ it: this.tr("Italian"),
+ es: this.tr("Spanish"),
+ sv: this.tr("Swedish"),
+ ru: this.tr("Russian")
+ }
+ var availableLocales = qx.locale.Manager.getInstance().getAvailableLocales();
+ var locale = qx.locale.Manager.getInstance().getLocale();
+ var lang_menu = new qx.ui.menu.Menu();
+ var radioManager = new qx.manager.selection.RadioManager("lang");
+ for (var lang in locales) {
+ if (availableLocales.indexOf(lang) == -1) {
+ continue;
+ }
+ var menuButton = new qx.ui.menu.RadioButton(locales[lang], null, locale == lang);
+ menuButton.setUserData("locale", lang);
+ lang_menu.add(menuButton);
+ radioManager.add(menuButton);
+ }
+ radioManager.addEventListener("changeSelected", function(e) {
+ var lang = e.getData().getUserData("locale");
+ this.debug("lang:" + lang);
+ qx.locale.Manager.getInstance().setLocale(lang);
+ });
+ lang_menu.addToDocument();
+ toolBar.add(new qx.ui.toolbar.MenuButton("", lang_menu, "feedreader/images/locale.png"));
+
+ var about_btn = new qx.ui.toolbar.Button(this.tr("Help"), "icon/16/actions/help-about.png");
+ about_btn.setCommand(about_cmd);
+ about_btn.setToolTip(new qx.ui.popup.ToolTip("(" + about_cmd.toString() + ")"));
+ toolBar.add(about_btn);
+
+ dockLayout.addTop(toolBar);
+
+ // add tree
+ var tree = new qx.ui.tree.Tree(this.tr("News feeds"));
+ tree.set({height:"100%", width:"100%"});
+ tree.setOverflow("auto");
+ tree.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ tree.setBackgroundColor("#EEEEEE");
+
+ var feedDesc = feedreader.Application._feedDesc;
+ for (var i=0; i<feedDesc.length; i++) {
+ var folder = new qx.ui.tree.TreeFolder(feedDesc[i].name);
+ tree.getManager().addEventListener("changeSelection", function(e) {
+ if (e.getData()[0] .getParentFolder()) {
+ this.displayFeed(e.getData()[0].getLabel());
+ }
+ }, this);
+ tree.add(folder);
+ }
+
+ // create table model
+ this._tableModel = new qx.ui.table.SimpleTableModel();
+ this._tableModel.setColumnIds(["title", "author", "date"]);
+ this._tableModel.setColumnNamesById({
+ title: this.tr("Subject"),
+ author: this.tr("Sender"),
+ date: this.tr("Date")
+ });
+
+ // add table
+ var table = new qx.ui.table.Table(this._tableModel);
+ table.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ table.set({height:"100%", width:"100%"});
+ table.setStatusBarVisible(false);
+ table.getDataRowRenderer().setHighlightFocusRow(false);
+ table.getTableColumnModel().setColumnWidth(0, 350);
+ table.getTableColumnModel().setColumnWidth(1, 200);
+ table.getTableColumnModel().setColumnWidth(2, 200);
+ table.getSelectionModel().addEventListener("changeSelection", function(e) {
+ var selectedEntry = table.getSelectionModel().getAnchorSelectionIndex();
+ var item = this.getFeeds()[this.getSelectedFeed()].items[selectedEntry];
+ this.displayArticle(item);
+ }, this);
+
+ // hide row focus
+ var theme = qx.manager.object.AppearanceManager.getInstance().getAppearanceTheme();
+ theme.registerAppearance("table-focus-indicator", {
+ state : function(vTheme, vStates) {
+ return {
+ border: null
+ }
+ }
+ });
+ this._table = table;
+
+ // add blog entry
+ this._blogEntry = new feedreader.ArticleView();
+ this._blogEntry.set({height:"100%", width:"100%"});
+ this._blogEntry.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+
+ // create splitpane for the right hand content area
+ var contentSplitPane = new qx.ui.splitpane.VerticalSplitPane("1*", "2*");
+ contentSplitPane.set({height:"100%", width:"100%"});
+ contentSplitPane.setLiveResize(true);
+ contentSplitPane.addTop(table);
+ contentSplitPane.addBottom(this._blogEntry);
+
+ // create vertival splitter
+ var mainSplitPane = new qx.ui.splitpane.HorizontalSplitPane(200, "1*");
+ mainSplitPane.setLiveResize(true);
+ mainSplitPane.addLeft(tree);
+ mainSplitPane.addRight(contentSplitPane);
+
+ dockLayout.add(mainSplitPane);
+
+ dockLayout.addToDocument();
+
+ // load and display feed data
+ this.setSelectedFeed(feedDesc[0].name);
+ this.fetchFeeds();
+};
+
+
+qx.Proto.fetchFeedDesc = function() {
+ var req = new qx.io.remote.Request(qx.manager.object.AliasManager.getInstance().resolvePath("feedreader/feeds/febo-feeds.opml.xml"), "GET", qx.util.Mime.XML);
+ feedreader.Application._feedDesc = [];
+ req.addEventListener("completed", function(e) {
+ var xml = e.getData().getContent();
+ var eItems = xml.getElementsByTagName("outline");
+ for(var i=0; i<eItems.length; i++) {
+ var eDesc = eItems[i];
+ feedreader.Application._feedDesc.push({
+ name: eDesc.getAttribute("title"),
+ url: qx.manager.object.AliasManager.getInstance().resolvePath("feedreader/proxy/proxy.php") + "?proxy=" + encodeURIComponent(eDesc.getAttribute("xmlUrl"))
+ });
+ }
+ }, this);
+ req.setAsynchronous(false);
+ req.send();
+};
+
+
+qx.Proto.fetchFeeds = function() {
+ qx.io.remote.RequestQueue.getInstance().setMaxConcurrentRequests(2);
+ var feedDesc = feedreader.Application._feedDesc;
+ var that = this;
+ var getCallback = function(feedName) {
+ return function(e) {
+ that.debug("loading " + feedName + " complete!");
+ that.parseXmlFeed(feedName, e.getData().getContent());
+ }
+ }
+ for (var i=0; i<feedDesc.length; i++) {
+ var req = new qx.io.remote.Request(qx.manager.object.AliasManager.getInstance().resolvePath(feedDesc[i].url), "GET", qx.util.Mime.XML);
+ req.addEventListener("completed", getCallback(feedDesc[i].name));
+ req.send();
+ }
+};
+
+
+qx.Proto.parseXmlFeed = function(feedName, xml) {
+ var items = [];
+ if (xml.documentElement.tagName == "rss") {
+ items = this.parseRSSFeed(xml);
+ } else if (xml.documentElement.tagName == "feed") {
+ items = this.parseAtomFeed(xml);
+ }
+ this.getFeeds()[feedName] = {
+ selected: 0,
+ items: items
+ };
+ if (feedName == this.getSelectedFeed()) {
+ this.displayFeed(feedName);
+ }
+};
+
+
+qx.Proto.parseAtomFeed = function(xml) {
+ var eItems = xml.getElementsByTagName("entry");
+ var empty = xml.createElement("empty");
+ var items = [];
+ for (var i=0; i<eItems.length; i++) {
+ var eItem = eItems[i];
+ var item = {}
+ item.title = qx.dom.Element.getTextContent(eItem.getElementsByTagName("title")[0]);
+ if (eItem.getElementsByTagName("author").length > 0) {
+ item.author = qx.dom.Element.getTextContent(eItem.getElementsByTagName("author")[0].getElementsByTagName("name")[0]);
+ } else {
+ item.author = ""
+ }
+ item.date = qx.dom.Element.getTextContent(
+ eItem.getElementsByTagName("created")[0] ||
+ eItem.getElementsByTagName("published")[0] ||
+ eItem.getElementsByTagName("updated")[0] ||
+ empty
+ );
+ item.content = qx.dom.Element.getTextContent(eItem.getElementsByTagName("content")[0] || empty);
+ item.link = eItem.getElementsByTagName("link")[0].getAttribute("href");
+ items.push(item);
+ }
+ return items;
+}
+
+
+qx.Proto.parseRSSFeed = function(xml) {
+ var eItems = xml.getElementsByTagName("item");
+ var empty = xml.createElement("empty");
+ var items = [];
+ for (var i=0; i<eItems.length; i++) {
+ var eItem = eItems[i];
+ var item = {}
+ item.title = qx.dom.Element.getTextContent(eItem.getElementsByTagName("title")[0]);
+ item.author = qx.dom.Element.getTextContent(qx.xml.Element.getElementsByTagNameNS(eItem, qx.xml.Namespace.DC, "creator")[0] || empty);
+ item.date = qx.dom.Element.getTextContent(eItem.getElementsByTagName("pubDate")[0]);
+ item.content = qx.dom.Element.getTextContent(qx.xml.Element.getElementsByTagNameNS(eItem, qx.xml.Namespace.RSS1, "encoded")[0] || empty);
+ item.link = qx.dom.Element.getTextContent(eItem.getElementsByTagName("link")[0]);
+ items.push(item);
+ }
+ return items;
+};
+
+
+qx.Proto.displayFeed = function(feedName) {
+ if (this.getSelectedFeed() != feedName) {
+ this.getFeeds()[this.getSelectedFeed()].selected = this._table.getSelectionModel().getAnchorSelectionIndex();
+ }
+
+ this.setSelectedFeed(feedName);
+
+ if (this.getFeeds()[feedName]) {
+ var items = this.getFeeds()[feedName].items;
+ var selection = this.getFeeds()[feedName].selected;
+
+ this._tableModel.setDataAsMapArray(items);
+ this._table.getSelectionModel().setSelectionInterval(selection, selection);
+ this._table.setFocusedCell(0, selection, true);
+ this.displayArticle(items[selection]);
+ }
+};
+
+
+qx.Proto.displayArticle = function(item) {
+ this._blogEntry.setArticle(item);
+};
+
+
+qx.Proto.finalize = function(e)
+{
+};
+
+qx.Proto.close = function(e)
+{
+ // prompt user
+ // e.returnValue = "[qooxdoo application: Do you really want to close the application?]";
+};
+
+qx.Proto.terminate = function(e)
+{
+ // alert("terminated");
+};
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/ArticleView.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/ArticleView.js
new file mode 100644
index 0000000000..0e7e6509c6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/class/feedreader/ArticleView.js
@@ -0,0 +1,85 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+************************************************************************ */
+
+qx.OO.defineClass("feedreader.ArticleView", qx.ui.basic.Terminator,
+function(article) {
+ qx.ui.basic.Terminator.call(this);
+ this.setCssClassName("blogEntry");
+ this.setArticle(article);
+});
+
+qx.OO.addProperty({ name: "article"});
+
+
+qx.Proto._modifyArticle = function(propValue, propOldValue, propData) {
+ if (this._isCreated) {
+ this._applyElementData();
+ }
+
+ return true;
+};
+
+
+qx.Proto._applyElementData = function() {
+ var element = this.getElement();
+ element.innerHTML = this.getHtml();
+
+ var links = element.getElementsByTagName("a");
+ for (var i=0; i<links.length; i++) {
+ links[i].target = "_blank";
+ };
+};
+
+
+qx.Proto.getHtml = function() {
+ var item = this.getArticle();
+ if (!item) {
+ return "";
+ }
+
+ var html = new qx.util.StringBuilder();
+
+ html.add("<div id='_blogEntry'>");
+
+ html.add("<h1 class='blog'>");
+ html.add(item.title);
+ html.add("</h1>");
+
+ html.add("<div class='date'>");
+ html.add(item.date);
+ html.add("</div>");
+
+ html.add("<div class='description'>");
+ html.add(item.content);
+ html.add("</div>");
+
+ html.add("<a target='_blank' href='");
+ html.add(item.link);
+ html.add("'>");
+ html.add(this.tr("read more ..."));
+ html.add("</a>");
+
+ html.add("</div>");
+
+ return html;
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/index.html
new file mode 100755
index 0000000000..4f5bf3d13a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/index.html
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Feed Reader</title>
+ <script type="text/javascript" src="script/feedreader.js"></script>
+ </head>
+ <body>
+ <script type="text/javascript">
+ if (!qx.IS_SOURCE) {
+ qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_ERROR);
+ }
+ qx.core.Init.getInstance().setApplication(feedreader.Application);
+ </script>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/css/reader.css b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/css/reader.css
new file mode 100644
index 0000000000..e59f36b63e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/css/reader.css
@@ -0,0 +1,54 @@
+.header {
+ margin: 0px;
+ padding: 0px;
+ background-color: #134275;
+}
+
+.header h1 {
+ font-family: "Trebuchet MS", "Lucida Grande", Verdana, sans-serif;
+ font-size: 18px;
+ font-weight: bold;
+ color: #DEFF83;
+ padding: 12px 20px;
+ margin: 0px;
+}
+
+.blogEntry {
+ font-family: Verdana, "Lucida Grande", "Bitstream Vera Sans", Tahoma, "Lucida Sans Unicode", Arial, sans-serif;
+ font-size: 11px;
+ line-height: 150%;
+ padding: 5px;
+ background: #FBFFEF;
+}
+
+.blogEntry h1.blog {
+ font-family: "Trebuchet MS", "Lucida Grande", Verdana, sans-serif;
+ color: #134275;
+ line-height: 120%;
+}
+
+.blogEntry {
+ overflow: auto;
+}
+
+.blogEntry div.date {
+ font-weight: bold;
+ color: #1D65B3;
+ padding: 5px;
+}
+
+.blogEntry a:link,
+.blogEntry a:visited{
+ color: #134275;
+}
+
+.blogEntry a:hover,
+.blogEntry a:active{
+ color: #134275;
+ text-decoration: underline;
+}
+
+.blogEntry .description {
+ margin-top: 10px;
+ margin-bottom: 10px;
+} \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/ajaxian.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/ajaxian.xml
new file mode 100644
index 0000000000..68a2581df6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/ajaxian.xml
@@ -0,0 +1,789 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/1.5.2" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
+
+<channel>
+ <title>Ajaxian</title>
+ <link>http://ajaxian.com</link>
+ <description>Cleaning up the web with Ajax</description>
+ <pubDate>Tue, 28 Nov 2006 14:55:53 +0000</pubDate>
+ <generator>http://wordpress.org/?v=1.5.2</generator>
+ <language>en</language>
+
+ <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://ajaxian.com/index.xml" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
+ <title>Tasks added to Google Calendar by Milkers</title>
+ <link>http://ajaxian.com/archives/tasks-added-to-google-calendar-by-milkers</link>
+ <comments>http://ajaxian.com/archives/tasks-added-to-google-calendar-by-milkers#comments</comments>
+ <pubDate>Tue, 28 Nov 2006 14:55:53 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Showcase</category>
+ <category>Calendar</category>
+ <guid>http://ajaxian.com/archives/tasks-added-to-google-calendar-by-milkers</guid>
+ <description><![CDATA[ The Remember the Milk folks have added task management to Google Calendar (something many wish Google had added themselves).
+ We know that many of you are managing your tasks with Remember The Milk and your events with Google Calendar, and we thought it would be very cool if we could bring the two together. This new [...]]]></description>
+ <content:encoded><![CDATA[ <p>The Remember the Milk folks have added <a href="http://blog.rememberthemilk.com/2006/11/add-your-tasks-to-google-calendar.html">task management</a> to Google Calendar (something many wish Google had added themselves).</p>
+ <p>We know that many of you are managing your tasks with Remember The Milk and your events with Google Calendar, and we thought it would be very cool if we could bring the two together. This new feature adds a small task icon to the top of each day in Google Calendar &#8212; click on the icon to:</p>
+ <ul>
+ <li>Review your tasks for the day</li>
+ <li>Add new tasks and edit existing ones</li>
+ <li>Easily complete and postpone tasks</li>
+ <li>Review your overdue tasks</li>
+ <li>Optionally show tasks with no due date</li>
+ <li>See where your tasks are located on a map (Google Maps integration)</li>
+ </ul>
+ <p>This is really interesting. An outside group was able to add an important feature that we can not all use in a Google app itself.</p>
+ <p><a href="http://blog.rememberthemilk.com/2006/11/add-your-tasks-to-google-calendar.html"><img src="http://tech.cybernetnews.com/wp-content/uploads/2006/11/RememberMilkGC1.jpg" border="0" /></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=fbhz2iq1"><img src="http://feeds.feedburner.com/~f/ajaxian?i=fbhz2iq1" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=yMSQUquM"><img src="http://feeds.feedburner.com/~f/ajaxian?i=yMSQUquM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=eoFosWuU"><img src="http://feeds.feedburner.com/~f/ajaxian?i=eoFosWuU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=pYIIcHPu"><img src="http://feeds.feedburner.com/~f/ajaxian?i=pYIIcHPu" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/tasks-added-to-google-calendar-by-milkers/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>YUI Resizable Component</title>
+ <link>http://ajaxian.com/archives/yui-resizable-component</link>
+ <comments>http://ajaxian.com/archives/yui-resizable-component#comments</comments>
+ <pubDate>Tue, 28 Nov 2006 13:38:06 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Examples</category>
+ <category>Yahoo!</category>
+ <guid>http://ajaxian.com/archives/yui-resizable-component</guid>
+ <description><![CDATA[ Jack Slocum keeps 'em coming with his detailed post on a reusable component for resizing elements.
+ Jack's YAHOO.ext.Resizable component does what it says on the tin, and he shows you:
+
+ Basic Resizable div
+ Wrapped elements (e.g. text area inside)
+ Preserve Ration (e.g. image resizing)
+ Transparent Handles
+ Customizable Handles
+ Snapping to increments
+ Animated Transitions
+
+
+
+
+var animated = new YAHOO.ext.Resizable&#40;'animated', &#123;
+&#160; &#160; width: 200,
+&#160; &#160; height: [...]]]></description>
+ <content:encoded><![CDATA[ <p>Jack Slocum keeps 'em coming with his detailed post on <a href="http://www.jackslocum.com/blog/2006/11/24/resizable-reloaded/">a reusable component for resizing elements</a>.</p>
+ <p>Jack's YAHOO.ext.Resizable component does what it says on the tin, and he shows you:</p>
+ <ul>
+ <li>Basic Resizable div</li>
+ <li>Wrapped elements (e.g. text area inside)</li>
+ <li>Preserve Ration (e.g. image resizing)</li>
+ <li>Transparent Handles</li>
+ <li>Customizable Handles</li>
+ <li>Snapping to increments</li>
+ <li>Animated Transitions</li>
+ </ul>
+ <div class="syntax_hilite">
+<div id="javascript-2">
+ <div class="javascript">
+<span style="color: #003366; font-weight: bold;">var</span> animated = <span style="color: #003366; font-weight: bold;">new</span> YAHOO.<span style="color: #006600;">ext</span>.<span style="color: #006600;">Resizable</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'animated'</span>, <span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; width: <span style="color:#800000;">200</span>,<br />
+&nbsp; &nbsp; height: <span style="color:#800000;">100</span>,<br />
+&nbsp; &nbsp; minWidth:<span style="color:#800000;">100</span>,<br />
+&nbsp; &nbsp; minHeight:<span style="color:#800000;">50</span>,<br />
+&nbsp; &nbsp; animate:<span style="color: #003366; font-weight: bold;">true</span>,<br />
+&nbsp; &nbsp; easing: YAHOO.<span style="color: #006600;">util</span>.<span style="color: #006600;">Easing</span>.<span style="color: #006600;">backIn</span>,<br />
+&nbsp; &nbsp; duration:.<span style="color:#800000;">6</span><br />
+<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+&nbsp;</div>
+ </div>
+</div>
+ <p><a href="http://www.jackslocum.com/blog/2006/11/24/resizable-reloaded/"><img src="http://ajaxian.com/wp-content/images/yuiresizable.png" alt="YUI Resizable" border="0" width="208" height="108"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=JsRk5j9d"><img src="http://feeds.feedburner.com/~f/ajaxian?i=JsRk5j9d" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=8EjVkg8A"><img src="http://feeds.feedburner.com/~f/ajaxian?i=8EjVkg8A" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=h5DmJGoc"><img src="http://feeds.feedburner.com/~f/ajaxian?i=h5DmJGoc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=dGR1OTXo"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dGR1OTXo" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/yui-resizable-component/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Mootools Primer</title>
+ <link>http://ajaxian.com/archives/mootools-primer</link>
+ <comments>http://ajaxian.com/archives/mootools-primer#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 15:58:12 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Examples</category>
+ <guid>http://ajaxian.com/archives/mootools-primer</guid>
+ <description><![CDATA[ Aaron Newton has posted a Mootools Primer / Tutorial that includes "a how-to tutorial on the Mootools library. Most of the code examples will allow you execute them by clicking on the "execute this code" link above the example. Clicking this will echo out the code and the result in the Firebug debugging plugin for [...]]]></description>
+ <content:encoded><![CDATA[ <p>Aaron Newton has posted a <a href="http://clientside.cnet.com/examples/mootools-primer/">Mootools Primer / Tutorial</a> that includes "a how-to tutorial on the Mootools library. Most of the code examples will allow you execute them by clicking on the "execute this code" link above the example. Clicking this will echo out the code and the result in the Firebug debugging plugin for Firefox. You'll need that plugin installed to see any results of most of the code examples."</p>
+ <p>Currently the tabbed widget shows documentation for the core Moo.js, extensions of JavaScript objects and helpers, Addon libraries, and plugins.</p>
+ <p>It behaves a little weird for me with FF2 + Firebug 1.beta, but I can get to the meat of the matter.</p>
+ <p><a href="http://clientside.cnet.com/examples/mootools-primer/"><img src="http://ajaxian.com/wp-content/images/mootoolsprimer.png" alt="Mootools Primer" border="0" width="590" height="324"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=vfTLBHWH"><img src="http://feeds.feedburner.com/~f/ajaxian?i=vfTLBHWH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=RmZz7WHX"><img src="http://feeds.feedburner.com/~f/ajaxian?i=RmZz7WHX" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=nEOsta0N"><img src="http://feeds.feedburner.com/~f/ajaxian?i=nEOsta0N" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=zmZsFXoa"><img src="http://feeds.feedburner.com/~f/ajaxian?i=zmZsFXoa" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/mootools-primer/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Google Docs and Spreadsheets Team: Web native matters</title>
+ <link>http://ajaxian.com/archives/google-docs-and-spreadsheets-team-web-native-matters</link>
+ <comments>http://ajaxian.com/archives/google-docs-and-spreadsheets-team-web-native-matters#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 15:25:50 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Editorial</category>
+ <guid>http://ajaxian.com/archives/google-docs-and-spreadsheets-team-web-native-matters</guid>
+ <description><![CDATA[ Richard MacManus linked to a Gizbuzz interview of Jen Mazzon and Sam Schillace of the Google Docs and Spreadsheets team (both ex-Writely).
+ Nothing ground-breaking, but it is interesting to hear about their thoughts on Ajax:
+
+ Browser compatibility issues - like the early graphic Web
+ Next was a question about browser compatibility issues and how that affects D&#038;S - [...]]]></description>
+ <content:encoded><![CDATA[ <p>Richard MacManus <a href="http://www.readwriteweb.com/archives/google_docs_and_spreadsheets_interview.php">linked to</a> a <a href="http://gizbuzz.co.uk/2006/podcast-episode-3-google-docs-and-spreadsheets/">Gizbuzz interview of Jen Mazzon and Sam Schillace</a> of the Google Docs and Spreadsheets team (both ex-Writely).</p>
+ <p>Nothing ground-breaking, but it is interesting to hear about their thoughts on Ajax:</p>
+ <blockquote>
+ <h3>Browser compatibility issues - like the early graphic Web</h3>
+ <p>Next was a question about browser compatibility issues and how that affects D&#038;S - and indeed the future of rich web applications. Sam responded that "it is definitely an issue [...] these apps are all cutting edge - it kind of reminds me of the early days of the graphical web, when you couldn't count on the browsers to render tables correctly [...]".</p>
+ <p>But he thinks it's "just growing pains" and it'll take about a year to sort those issues out.</p>
+ <p>Also on the question of whether Ajax is better than Flash and Laszlo etc, Sam thinks that Ajax is currently more web native.</p>
+ <h3>It's about being Web native, not cloning desktop apps</h3>
+ <p>Later in the interview, Jen stresses that they're "not trying to clone desktop apps". They want to be familiar to people, "but we're trying to do something that's actually more native to the Internet, more usable on the Internet."</p>
+ <p>Sam says they've had a lot of feedback that people like the fact they're not trying to copy desktop apps. He said "copying the existing stuff just feels irrelevant to us - we're not trying to copy, we're trying to re-invent."</p>
+ <p>Both Jen and Sam re-affirmed that collaboration and sharing is their main focus with D&#038;S, as well as being web native - rather than trying to compete on features with desktop apps.
+</p></blockquote>
+ <p>If you were asked "why is Ajax a better fit for some apps than Flash?" what would you say? Do you agree? Does the open web matter? What if Adobe fully opened up their format?
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=NCLw33w0"><img src="http://feeds.feedburner.com/~f/ajaxian?i=NCLw33w0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=gjXowiT4"><img src="http://feeds.feedburner.com/~f/ajaxian?i=gjXowiT4" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=HeKJhsYv"><img src="http://feeds.feedburner.com/~f/ajaxian?i=HeKJhsYv" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=CWr8mgGL"><img src="http://feeds.feedburner.com/~f/ajaxian?i=CWr8mgGL" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/google-docs-and-spreadsheets-team-web-native-matters/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Review of ‘Pro Ajax and Java Frameworks’</title>
+ <link>http://ajaxian.com/archives/review-of-pro-ajax-and-java-frameworks</link>
+ <comments>http://ajaxian.com/archives/review-of-pro-ajax-and-java-frameworks#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 14:14:42 +0000</pubDate>
+ <dc:creator>Dietrich Kappe</dc:creator>
+
+ <category>Front Page</category>
+ <category>Book Reviews</category>
+ <guid>http://ajaxian.com/archives/review-of-pro-ajax-and-java-frameworks</guid>
+ <description><![CDATA[
+ This is a review of Pro Ajax and Java Frameworks by Nathaniel T. Schutta and Ryan Asleson. This book seeks to give the experienced developer of Java web applications the knowledge necessary to add Ajax to their webapps. This is another Ajax book that goes broad rather than deep. Instead of investigating one or two [...]]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://ajaxian.com/wp-content/images/bcm.gif"><img src="http://ajaxian.com/wp-content/images/bcm_tn.jpg" style="DISPLAY: inline; FLOAT: left; WIDTH: 125px; HEIGHT: 164px" title="bcm.gif" height="164" width="125" alt="bcm.gif" border="0" id="bcm.gif"/></a></p>
+ <p>This is a review of <em>Pro Ajax and Java Frameworks</em> by Nathaniel T. Schutta and Ryan Asleson. This book seeks to give the experienced developer of Java web applications the knowledge necessary to add Ajax to their webapps. This is another Ajax book that goes broad rather than deep. Instead of investigating one or two frameworks, it delves into more than a half dozen, both Javascript and Java.</p>
+ <p>Quick summary: Chapters 2, 3 and 5 are the strongest in the book with useful information on tools, Javascript libraries and enhancing Struts applications with Ajax. The other chapters are not as strong and spend too much time covering old ground.</p>
+ <p>The book is divided into two parts. Part 1 is an introduction to a variety of Javascript and Java Ajax libraries and frameworks. Part 2 shows how to integrate those libraries and frameworks into existing Java web frameworks such as Struts and JSF. One place that this book differs from other Ajax books is that it doesn't have a chapter introducing the reader to the browser technologies that comprise Ajax. It doesn't dwell on the basics of Javascript, DOM and CSS. It expects you to have already read the Apress books on those topics. Instead, chapter 1 covers what I would call best practices and patterns -- autocomplete, partial page update, draggable DOM.</p>
+ <p>Read more of the review <a href="http://blogs.pathf.com/agileajax/2006/11/review_of_pro_a.html">here</a>.</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=5FIDIG43"><img src="http://feeds.feedburner.com/~f/ajaxian?i=5FIDIG43" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=5aOiDdHp"><img src="http://feeds.feedburner.com/~f/ajaxian?i=5aOiDdHp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=hunPILOJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=hunPILOJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=GTSOXqVS"><img src="http://feeds.feedburner.com/~f/ajaxian?i=GTSOXqVS" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/review-of-pro-ajax-and-java-frameworks/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Minus(MO)R a.k.a. Let me write JavaScript but help me!</title>
+ <link>http://ajaxian.com/archives/minusmor-aka-let-me-write-javascript-but-help-me</link>
+ <comments>http://ajaxian.com/archives/minusmor-aka-let-me-write-javascript-but-help-me#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 14:03:41 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <category>Rails</category>
+ <guid>http://ajaxian.com/archives/minusmor-aka-let-me-write-javascript-but-help-me</guid>
+ <description><![CDATA[ Dan Webb has created two Rails plugins to make RJS even better. He has realised that although for some cases RJS is a great thing, you often do want to just use JavaScript, and it looks really ugly to do this:
+
+
+
+page &#38;lt;&#38;lt;'if (someClientSideVariable) {'
+page['a'].replace_html :partial =&#38;gt; 'thing'
+page &#38;lt;&#38;lt;'} else {'
+page['b'].replace_html :partial =&#38;gt; 'thong'
+page &#38;lt;&#38;lt;'}'
+
+
+
+ He first [...]]]></description>
+ <content:encoded><![CDATA[ <p>Dan Webb has created two Rails plugins to make RJS even better. He has realised that although for some cases RJS is a great thing, you often do want to just use JavaScript, and it looks really ugly to do this:</p>
+ <div class="syntax_hilite">
+<div id="ruby-5">
+ <div>
+page &amp;lt;&amp;lt;'if (someClientSideVariable) {'<br />
+page['a'].replace_html :partial =&amp;gt; 'thing'<br />
+page &amp;lt;&amp;lt;'} else {'<br />
+page['b'].replace_html :partial =&amp;gt; 'thong'<br />
+page &amp;lt;&amp;lt;'}'
+</div>
+ </div>
+</div>
+ <p>He first came out with <a href="http://svn.danwebb.net/external/rails/plugins/minus_r/trunk/">MinusR</a> which takes of your rjs files and lets you code in JS, but still call out to the ruby style. For example:</p>
+ <div class="syntax_hilite">
+<div id="javascript-6">
+ <div class="javascript">
+<span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>someClientSideVariable<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'a'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">update</span><span style="color:#006600; font-weight:bold;">&#40;</span>&amp;lt;%=js render<span style="color:#006600; font-weight:bold;">&#40;</span>:partial =&gt; <span style="color: #3366CC;">'thing'</span><span style="color:#006600; font-weight:bold;">&#41;</span> %&amp;gt;<span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+<span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'b'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">update</span><span style="color:#006600; font-weight:bold;">&#40;</span>&amp;lt;%=js render<span style="color:#006600; font-weight:bold;">&#40;</span>:partial =&gt; <span style="color: #3366CC;">'thong'</span><span style="color:#006600; font-weight:bold;">&#41;</span> %&amp;gt;<span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+<span style="color:#006600; font-weight:bold;">&#125;</span><br />
+&nbsp;</div>
+ </div>
+</div>
+ <blockquote><p>
+MinusR gives you the js helper that calls to_json on any value passed to it so you can drop nicely escaped and formatted data into your script as before. Everyone’s a winner. Well, not quite, I could be going out on a limb here but I really think this is the better way. Go on, give it a go. A bit of javaScript won’t hurt you….
+</p></blockquote>
+ <p>Then a bunch of people wanted this to be doable, but in a separate file, so Dan created <a href="http://www.danwebb.net/2006/11/24/minusmor-released">MinusMOR</a>, which let's you do the same thing in .ejs files.</p>
+ <p>It is great to be able to choice your poison, even on a case by case basis, and decide whether JS or Ruby is the ruler.
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=KzOPpBLk"><img src="http://feeds.feedburner.com/~f/ajaxian?i=KzOPpBLk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=tyZWuMpT"><img src="http://feeds.feedburner.com/~f/ajaxian?i=tyZWuMpT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=cYtOaSvj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=cYtOaSvj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=e2UryVSj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=e2UryVSj" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/minusmor-aka-let-me-write-javascript-but-help-me/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Zamzar: Online file conversion</title>
+ <link>http://ajaxian.com/archives/zamzar-online-file-conversion</link>
+ <comments>http://ajaxian.com/archives/zamzar-online-file-conversion#comments</comments>
+ <pubDate>Mon, 27 Nov 2006 13:23:12 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Showcase</category>
+ <guid>http://ajaxian.com/archives/zamzar-online-file-conversion</guid>
+ <description><![CDATA[ Zamzar is a simple, single page ajax application that lets you upload a file and convert it to something else. E.g.
+
+ Make your PDF documents editable by converting them to MS Word
+ Convert your ITunes (aac) files to mp3
+ Upload up to 5 files at a time to convert simultaneously
+ Take advantage of over 150 different conversion types
+
+
+
+]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://www.zamzar.com/">Zamzar</a> is a simple, single page ajax application that lets you upload a file and convert it to something else. E.g.</p>
+ <ul>
+ <li>Make your PDF documents editable by converting them to MS Word</li>
+ <li>Convert your ITunes (aac) files to mp3</li>
+ <li>Upload up to 5 files at a time to convert simultaneously</li>
+ <li>Take advantage of over 150 different conversion types</li>
+ </ul>
+ <p><a href="http://www.zamzar.com/"><img src="http://ajaxian.com/wp-content/images/zamzar.png" alt="ZamZar" border="0" width="778" height="549"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=2bVY3cIM"><img src="http://feeds.feedburner.com/~f/ajaxian?i=2bVY3cIM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=YNCLGcXg"><img src="http://feeds.feedburner.com/~f/ajaxian?i=YNCLGcXg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=qgnycv1k"><img src="http://feeds.feedburner.com/~f/ajaxian?i=qgnycv1k" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=wnoUHPGJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=wnoUHPGJ" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/zamzar-online-file-conversion/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>CSS Evolution</title>
+ <link>http://ajaxian.com/archives/css-evolution</link>
+ <comments>http://ajaxian.com/archives/css-evolution#comments</comments>
+ <pubDate>Sat, 25 Nov 2006 17:12:26 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Fun</category>
+ <category>CSS</category>
+ <guid>http://ajaxian.com/archives/css-evolution</guid>
+ <description><![CDATA[
+ Evolution of the web in real-time. I hope you are having a good weekend (a Thanksgiving one for the US folk).
+
+]]></description>
+ <content:encoded><![CDATA[ <p><img src="http://mboffin.com/stuff/designline-openair.gif" width="512" height="384" border="0" /></p>
+ <p>Evolution of the web in real-time. I hope you are having a good weekend (a Thanksgiving one for the US folk).
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=0Oe2jHNg"><img src="http://feeds.feedburner.com/~f/ajaxian?i=0Oe2jHNg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=dnGk0cRj"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dnGk0cRj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Tt4f4R3d"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Tt4f4R3d" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=G46q0PCO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=G46q0PCO" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/css-evolution/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Poly9’s Polyvalent Javascript URL Parser</title>
+ <link>http://ajaxian.com/archives/poly9s-polyvalent-javascript-url-parser</link>
+ <comments>http://ajaxian.com/archives/poly9s-polyvalent-javascript-url-parser#comments</comments>
+ <pubDate>Sat, 25 Nov 2006 15:00:34 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <guid>http://ajaxian.com/archives/poly9s-polyvalent-javascript-url-parser</guid>
+ <description><![CDATA[ Denis Laprise and the Poly9 Group needed a robust URL parser in JavaScript, so they created the Polyvalent Javascript URL Parser.
+
+
+
+var p = new Poly9.URLParser&#40;'http://user:password@poly9.com/pathname?arguments=1#fragment'&#41;;
+p.getHost&#40;&#41; == 'poly9.com';
+p.getProtocol&#40;&#41; == 'http';
+p.getPathname&#40;&#41; == '/pathname';
+p.getQuerystring&#40;&#41; == 'arguments=1';
+p.getFragment&#40;&#41; == 'fragment';
+p.getUsername&#40;&#41; == 'user';
+p.getPassword&#40;&#41; == 'password';
+ p.setURL&#40;'another.url.com'&#41;;
+p.getHost&#40;&#41; == 'another.url.com';
+p.getProtocol&#40;&#41; == '';
+ p.setURL&#40;'dsdsad'&#41;; // throws an exception
+&#160;
+
+
+ This smells like a Java group writing JavaScript to [...]]]></description>
+ <content:encoded><![CDATA[ <p>Denis Laprise and the Poly9 Group needed a robust URL parser in JavaScript, so they <a href="https://code.poly9.com/trac/wiki/URLParser">created the Polyvalent Javascript URL Parser</a>.</p>
+ <div class="syntax_hilite">
+<div id="javascript-8">
+ <div class="javascript">
+<span style="color: #003366; font-weight: bold;">var</span> p = <span style="color: #003366; font-weight: bold;">new</span> Poly9.<span style="color: #006600;">URLParser</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'http://user:password@poly9.com/pathname?arguments=1#fragment'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+p.<span style="color: #006600;">getHost</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'poly9.com'</span>;<br />
+p.<span style="color: #006600;">getProtocol</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'http'</span>;<br />
+p.<span style="color: #006600;">getPathname</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'/pathname'</span>;<br />
+p.<span style="color: #006600;">getQuerystring</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'arguments=1'</span>;<br />
+p.<span style="color: #006600;">getFragment</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'fragment'</span>;<br />
+p.<span style="color: #006600;">getUsername</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'user'</span>;<br />
+p.<span style="color: #006600;">getPassword</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'password'</span>;</p>
+ <p>p.<span style="color: #006600;">setURL</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'another.url.com'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+p.<span style="color: #006600;">getHost</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">'another.url.com'</span>;<br />
+p.<span style="color: #006600;">getProtocol</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> == <span style="color: #3366CC;">''</span>;</p>
+ <p>p.<span style="color: #006600;">setURL</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'dsdsad'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// throws an exception</span><br />
+&nbsp;</div>
+ </div>
+</div>
+ <p>This smells like a Java group writing JavaScript to me with the camelCase and thus p.getUsername() instead of p.username.</p>
+ <p>You can check out <a href="https://code.poly9.com/trac/browser/urlparser/urlparser.js?format=txt">the implementation</a> and the <a href="https://code.poly9.com/files/urlparser-0.1.zip">test suite (zip)</a>.
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=ZVMtMQRn"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ZVMtMQRn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=TTsAAACX"><img src="http://feeds.feedburner.com/~f/ajaxian?i=TTsAAACX" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=LDXEbvr2"><img src="http://feeds.feedburner.com/~f/ajaxian?i=LDXEbvr2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Uk6myWFs"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Uk6myWFs" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/poly9s-polyvalent-javascript-url-parser/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>DOMContentLoaded.Next</title>
+ <link>http://ajaxian.com/archives/domcontentloadednext</link>
+ <comments>http://ajaxian.com/archives/domcontentloadednext#comments</comments>
+ <pubDate>Sat, 25 Nov 2006 14:29:00 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Tip</category>
+ <guid>http://ajaxian.com/archives/domcontentloadednext</guid>
+ <description><![CDATA[ Andrea Giammarchi has taken the work of Dean Edwards, Mark Wubben, and Paul Sowden to create his DOMContentLoaded Final Solution.
+ The work comes with a test page for http and https, and is documented in this function:
+
+
+
+function onContent&#40;callback&#41;&#123; // (C) webreflection.blogspot.com
+&#160; &#160; // [please note that this code doesn't work]
+ &#160;// private scope variable
+ &#160;var IEStringToWrite =&#160; // [...]]]></description>
+ <content:encoded><![CDATA[ <p>Andrea Giammarchi has taken the work of <a href="http://dean.edwards.name/weblog/2005/09/busted/">Dean</a> <a href="http://dean.edwards.name/weblog/2006/06/again/">Edwards</a>, <a href="http://novemberborn.net/colophon">Mark Wubben</a>, and <a href="http://delete.me.uk/">Paul Sowden</a> to create <a href="http://www.3site.eu/jstests/onContent/final.html">his DOMContentLoaded Final Solution</a>.</p>
+ <p>The work comes with a test page for <a href="http://www.3site.eu/jstests/onContent/final.html">http</a> and <a href="https://server3.phpsoft.it:8111/antrea/">https</a>, and is documented in this function:</p>
+ <div class="syntax_hilite">
+<div id="javascript-10">
+ <div class="javascript">
+<span style="color: #003366; font-weight: bold;">function</span> onContent<span style="color:#006600; font-weight:bold;">&#40;</span>callback<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color: #009900; font-style: italic;">// (C) webreflection.blogspot.com</span><br />
+&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// [please note that this code doesn't work]</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// private scope variable</span></p>
+ <p>&nbsp;<span style="color: #003366; font-weight: bold;">var</span> IEStringToWrite =&nbsp; <span style="color: #009900; font-style: italic;">// this is IE dedicated string</span></p>
+ <p>&nbsp; <span style="color: #3366CC;">"&lt;script defer src='//:' onreadystatechange='<br />
+&nbsp; (function(element){<br />
+&nbsp; &nbsp;<br />
+&nbsp; &nbsp;// if readystate is complete<br />
+&nbsp; &nbsp;if(element.readyState === "</span>complete<span style="color: #3366CC;">")</p>
+ <p>&nbsp; &nbsp; // call the global variable<br />
+&nbsp; &nbsp; window.__onContent__();<br />
+&nbsp; })(this);<br />
+&nbsp; '&gt;&lt;/script&gt;"</span>;</p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// the above string is necessary to use onreadystatechange property</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// with an undefined page. In this way IE tell us the readyState</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// of the current document</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// to call callback function IE need a global scope variable</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// this variable could call one or more callback</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// then if it's already created we need to call the old callback</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// then this new callback</span><br />
+&nbsp;window.__onContent__ = <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>oldCallback<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; <br />
+&nbsp; <span style="color: #009900; font-style: italic;">// returns a function that will delete __onContent__</span><br />
+&nbsp; <span style="color: #009900; font-style: italic;">// to remove multiple callbacks with different </span><br />
+&nbsp; <span style="color: #009900; font-style: italic;">// events and different ways for each browser</span></p>
+ <p>&nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></p>
+ <p>&nbsp; &nbsp;<span style="color: #009900; font-style: italic;">// clear __onContent__ as generic function</span><br />
+&nbsp; &nbsp;window.__onContent__ = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp;<br />
+&nbsp; &nbsp;<br />
+&nbsp; &nbsp;<span style="color: #009900; font-style: italic;">// checks if oldCallback isn't null or undefined</span><br />
+&nbsp; &nbsp;<span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>oldCallback<span style="color:#006600; font-weight:bold;">&#41;</span><br />
+&nbsp; &nbsp; oldCallback<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// call them to preserve the right order</span></p>
+ <p>&nbsp; &nbsp;callback<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&nbsp; <span style="color: #009900; font-style: italic;">// call this scope callback function </span><br />
+&nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// (sent calling onContent)</span><br />
+&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
+&nbsp; <br />
+&nbsp;<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#40;</span>window.__onContent__<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// undefined if is the first time we use __onContent__</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// __onContent__ is my function to use as callback</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// I need to add this function as event</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// Opera 9 and FireFox both support DOMContentLoaded as well as </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// addEventListener document method</span><br />
+&nbsp;<span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>document.<span style="color: #006600;">addEventListener</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
+&nbsp; document.<span style="color: #006600;">addEventListener</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"DOMContentLoaded"</span>, __onContent__, <span style="color: #003366; font-weight: bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// if some browser supports addEventListener but doesn't support DOMContentLoaded </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// event I don't need to care about that because this event will never be fired</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// at the same time if Safari or KDE one day will support DOMContentLoaded </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// I prefere use this dedicated in-core</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// event instead of next trick that's quite horrible but works with Safari, </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// KDE as Opera 8.5 and lower too</span></p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// that's why I don't use an else if but an if ... because the first time </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// event will be fired __onContent__ </span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// became an empty function ... then calling them twice is not a problem</span></p>
+ <p>&nbsp;<span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span><br />
+&nbsp; <span style="color: #009900; font-style: italic;">// Safari and KDE</span><br />
+&nbsp; <span style="color: #0066FF;">/WebKit|Khtml/i</span>.<span style="color: #006600;">test</span><span style="color:#006600; font-weight:bold;">&#40;</span>navigator.<span style="color: #006600;">userAgent</span><span style="color:#006600; font-weight:bold;">&#41;</span> ||</p>
+ <p>&nbsp; <span style="color: #009900; font-style: italic;">// Opera less than 9</span><br />
+&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span>window.<span style="color: #006600;">opera</span> &amp;&amp; parseInt<span style="color:#006600; font-weight:bold;">&#40;</span>window.<span style="color: #006600;">opera</span>.<span style="color: #006600;">version</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>&amp;lt;<span style="color:#800000;">9</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
+&nbsp;<span style="color:#006600; font-weight:bold;">&#41;</span><br />
+&nbsp; <span style="color: #009900; font-style: italic;">// runtime anonymous function</span><br />
+&nbsp; <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span></p>
+ <p>&nbsp; &nbsp;<span style="color: #009900; font-style: italic;">// checks if document.readyState is loaded or complete</span><br />
+&nbsp; &nbsp;<span style="color: #0066FF;">/loaded|complete/</span>.<span style="color: #006600;">test</span><span style="color:#006600; font-weight:bold;">&#40;</span>document.<span style="color: #006600;">readyState</span><span style="color:#006600; font-weight:bold;">&#41;</span> ?</p>
+ <p>&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// then call __onContent__ , stopping internal loop</span><br />
+&nbsp; &nbsp; window.__onContent__<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> :</p>
+ <p>&nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// or loops itself with the faster timeout</span><br />
+&nbsp; &nbsp; setTimeout<span style="color:#006600; font-weight:bold;">&#40;</span>arguments.<span style="color: #006600;">callee</span>, <span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <br />
+&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</p>
+ <p>&nbsp;<span style="color: #009900; font-style: italic;">// at this point I've setted the DOMContentLoaded event for every browser</span><br />
+&nbsp;<span style="color: #009900; font-style: italic;">// but not for Inernet Explorer.</span><br />
+&nbsp;<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #0066FF;">/MSIE/i</span>.<span style="color: #006600;">test</span><span style="color:#006600; font-weight:bold;">&#40;</span>navigator.<span style="color: #006600;">userAgent</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span></p>
+ <p>&nbsp; <span style="color: #009900; font-style: italic;">// I can write dedicated string</span><br />
+&nbsp; document.<span style="color: #006600;">write</span><span style="color:#006600; font-weight:bold;">&#40;</span>IEStringToWrite<span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+<span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp;</div>
+ </div>
+</div>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=luo1Gwyw"><img src="http://feeds.feedburner.com/~f/ajaxian?i=luo1Gwyw" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=aQvBKJJ3"><img src="http://feeds.feedburner.com/~f/ajaxian?i=aQvBKJJ3" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=TJtOXhwL"><img src="http://feeds.feedburner.com/~f/ajaxian?i=TJtOXhwL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=LNNtLH7H"><img src="http://feeds.feedburner.com/~f/ajaxian?i=LNNtLH7H" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/domcontentloadednext/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Using the Eclipse AJAX Toolkit Framework (ATF) Webinar</title>
+ <link>http://ajaxian.com/archives/using-the-eclipse-ajax-toolkit-framework-atf-webinar</link>
+ <comments>http://ajaxian.com/archives/using-the-eclipse-ajax-toolkit-framework-atf-webinar#comments</comments>
+ <pubDate>Sat, 25 Nov 2006 04:04:00 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Presentation</category>
+ <guid>http://ajaxian.com/archives/using-the-eclipse-ajax-toolkit-framework-atf-webinar</guid>
+ <description><![CDATA[ We don't normally post webinars, but thought "what the hell it's Friday".
+ On November 30, the Eclipse foundation will be hosting a 1 hour webinar titled Using the Eclipse Ajax Toolkit Framework (ATF).
+ Eclipse ATF provides exemplary tools for creating and debugging Ajax applications. These tools include enhanced JavaScript editing features such as edit-time syntax checking, [...]]]></description>
+ <content:encoded><![CDATA[ <p>We don't normally post webinars, but thought "what the hell it's Friday".</p>
+ <p>On November 30, the Eclipse foundation will be hosting a 1 hour webinar titled <a href="http://www.eclipse.org/community/webinars2006.php">Using the Eclipse Ajax Toolkit Framework (ATF)</a>.</p>
+ <p>Eclipse ATF provides exemplary tools for creating and debugging Ajax applications. These tools include enhanced JavaScript editing features such as edit-time syntax checking, an embedded DOM browser, CSS Tools, JavaScript debugger, a JavaScript console, and an embedded Mozilla web browser. This webinar will demonstrate how to use ATF to create, debug, and deploy an Ajax application on both Apache and J2EE servers.</p>
+ <p>Register by emailing <a href="mailto:webinar-atf@eclipse.org">webinar-atf@eclipse.org</a></p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=Qh1EpBSt"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Qh1EpBSt" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=SHKUMbcJ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=SHKUMbcJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=xZxME2vY"><img src="http://feeds.feedburner.com/~f/ajaxian?i=xZxME2vY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ZLlrYLtO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ZLlrYLtO" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/using-the-eclipse-ajax-toolkit-framework-atf-webinar/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Another trick to allow Array subclasses</title>
+ <link>http://ajaxian.com/archives/another-trick-to-allow-array-subclasses</link>
+ <comments>http://ajaxian.com/archives/another-trick-to-allow-array-subclasses#comments</comments>
+ <pubDate>Fri, 24 Nov 2006 15:59:15 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Tip</category>
+ <guid>http://ajaxian.com/archives/another-trick-to-allow-array-subclasses</guid>
+ <description><![CDATA[ Dean Edwards talked about his hack that got us the ability to subclass the Array object in JavaScript.
+ Hedger Wang has a new hack that uses window.createPopup instead of an iframe to for IE to fix some issues.
+ If you take a view source to see what is in there, you get the gem:
+
+
+
+;&#40;function&#40;&#41;&#123;
+&#160; &#160; &#160; &#160; [...]]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://dean.edwards.name/weblog/2006/11/hooray/">Dean Edwards</a> talked about his hack that got us the ability to subclass the Array object in JavaScript.</p>
+ <p><a href="http://www.hedgerwow.com/360/dhtml/js-array2.html">Hedger Wang has a new hack</a> that uses <a href="http://msdn.microsoft.com/workshop/author/dhtml/reference/methods/createpopup.asp">window.createPopup</a> instead of an iframe to for IE to fix some issues.</p>
+ <p>If you take a view source to see what is in there, you get the gem:</p>
+ <div class="syntax_hilite">
+<div id="javascript-12">
+ <div class="javascript">
+;<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span><span style="color:#006600; font-weight:bold;">&#40;</span>!window.<span style="color: #006600;">createPopup</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #000066; font-weight: bold;">return</span><span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> fs = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066FF;">/==/</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> Array2 = parent.<span style="color: #006600;">Array2</span> ;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> p1 = Array.<span style="color: #006600;">prototype</span> ;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> p2 = Array2.<span style="color: #006600;">prototype</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">for</span><span style="color:#006600; font-weight:bold;">&#40;</span>i <span style="color: #000066; font-weight: bold;">in</span> p2 <span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; p1<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> = p2<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parent.<span style="color: #006600;">Array2</span> = Array;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parent.<span style="color: #006600;">document</span>.<span style="color: #006600;">title</span> = <span style="color: #3366CC;">'Array2 is ready'</span>;<span style="color: #009900; font-style: italic;">/*debug msg*/</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066FF;">/==/</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+&nbsp; &nbsp; &nbsp; &nbsp; document.<span style="color: #006600;">title</span> = <span style="color: #3366CC;">'Prepare Array2'</span>;<span style="color: #009900; font-style: italic;">/*debug msg*/</span></p>
+ <p>&nbsp; &nbsp; &nbsp; &nbsp; fs = <span style="color:#006600; font-weight:bold;">&#40;</span>fs + <span style="color: #3366CC;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">split</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'/==/'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; window.<span style="color: #006600;">createPopup</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">document</span>.<span style="color: #006600;">body</span>.<span style="color: #006600;">innerHTML</span> = <span style="color: #3366CC;">'&lt;img src=&quot;null&quot; onerror=&quot;'</span> +&nbsp; fs + <span style="color: #3366CC;">'&quot; /&gt;'</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; <br />
+<span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</p>
+ <p><span style="color: #003366; font-weight: bold;">var</span> Array2 = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; Array2.<span style="color: #006600;">prototype</span> = <span style="color: #003366; font-weight: bold;">new</span> Array;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; Array2.<span style="color: #006600;">prototype</span>.<span style="color: #006600;">bar</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">alert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"this.bar() --&gt; This.Length="</span> + <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">length</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
+&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><br />
+&nbsp;</div>
+ </div>
+</div>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=SCY03YAX"><img src="http://feeds.feedburner.com/~f/ajaxian?i=SCY03YAX" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=sBDwsM9P"><img src="http://feeds.feedburner.com/~f/ajaxian?i=sBDwsM9P" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=dlKtpJWr"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dlKtpJWr" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=HXHKOiMI"><img src="http://feeds.feedburner.com/~f/ajaxian?i=HXHKOiMI" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/another-trick-to-allow-array-subclasses/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Dropboks: File Storage on One Page</title>
+ <link>http://ajaxian.com/archives/dropboks-file-storage-on-one-page</link>
+ <comments>http://ajaxian.com/archives/dropboks-file-storage-on-one-page#comments</comments>
+ <pubDate>Fri, 24 Nov 2006 15:51:41 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Prototype</category>
+ <category>Showcase</category>
+ <guid>http://ajaxian.com/archives/dropboks-file-storage-on-one-page</guid>
+ <description><![CDATA[ Dropboks is a single page application build on Prototype and friends, that allows you to simply upload files for safe keeping.
+ The application is ad free, and survives on user donations. They do a good job at letting you use it pre-signup, and giving good info via tooltips.
+
+
+]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://www.dropboks.com/">Dropboks</a> is a single page application build on Prototype and friends, that allows you to simply upload files for safe keeping.</p>
+ <p>The application is ad free, and survives on user donations. They do a good job at letting you use it pre-signup, and giving good info via tooltips.</p>
+ <p><a href="http://www.dropboks.com/"><img src="http://ajaxian.com/wp-content/images/dropboks.png" alt="Dropboks" border="0" width="491" height="447"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=7bnp189c"><img src="http://feeds.feedburner.com/~f/ajaxian?i=7bnp189c" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=IvtaWoMQ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=IvtaWoMQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=b96Y4b2A"><img src="http://feeds.feedburner.com/~f/ajaxian?i=b96Y4b2A" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=ZVgVpc8A"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ZVgVpc8A" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/dropboks-file-storage-on-one-page/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Spelling Cow: JS Spell Checker</title>
+ <link>http://ajaxian.com/archives/spelling-cow-js-spell-checker</link>
+ <comments>http://ajaxian.com/archives/spelling-cow-js-spell-checker#comments</comments>
+ <pubDate>Fri, 24 Nov 2006 15:46:11 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <guid>http://ajaxian.com/archives/spelling-cow-js-spell-checker</guid>
+ <description><![CDATA[ Spelling Cow allows you add a script tag, and spell check is enabled on your website. There are also some variables you can tweak too if advanced features are needed.
+ This means that you can add spell checking to your applications, but as the latest browsers have added inline spell check, is there use to it?
+
+
+]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://www.spellingcow.com/">Spelling Cow</a> allows you add a script tag, and spell check is enabled on your website. There are also some variables you can tweak too if advanced features are needed.</p>
+ <p>This means that you can add spell checking to your applications, but as the latest browsers have added inline spell check, is there use to it?</p>
+ <p><a href="http://www.spellingcow.com/"><img src="http://ajaxian.com/wp-content/images/spellingcow.png" alt="Spelling Cow" border="0" width="438" height="213"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=dBmR5JBn"><img src="http://feeds.feedburner.com/~f/ajaxian?i=dBmR5JBn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=GL67PTiz"><img src="http://feeds.feedburner.com/~f/ajaxian?i=GL67PTiz" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=PM8SsmlP"><img src="http://feeds.feedburner.com/~f/ajaxian?i=PM8SsmlP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=038oiFok"><img src="http://feeds.feedburner.com/~f/ajaxian?i=038oiFok" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/spelling-cow-js-spell-checker/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>CSS Tab Designer</title>
+ <link>http://ajaxian.com/archives/css-tab-designer</link>
+ <comments>http://ajaxian.com/archives/css-tab-designer#comments</comments>
+ <pubDate>Fri, 24 Nov 2006 15:40:05 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>CSS</category>
+ <guid>http://ajaxian.com/archives/css-tab-designer</guid>
+ <description><![CDATA[ Now we are getting niche. A tool that lets you design CSS tabs:
+ With the CSS Tab Designer, you can:
+
+ Quickly design your list visually.
+ Choose from a variety of styles/colors (60+ different designs/colors supported).
+ Generate strict xhtml compliant code.
+
+
+
+]]></description>
+ <content:encoded><![CDATA[ <p>Now we are getting niche. A tool that lets you <a href="http://www.highdots.com/css-tab-designer/">design CSS tabs</a>:</p>
+ <p>With the CSS Tab Designer, you can: </p>
+ <ul>
+ <li>Quickly design your list visually.</li>
+ <li>Choose from a variety of styles/colors (60+ different designs/colors supported).</li>
+ <li>Generate strict xhtml compliant code.</li>
+ </ul>
+ <p><a href="http://www.highdots.com/css-tab-designer/"><img src="http://www.highdots.com/static/css-list/images/vertical-tabs.png" border="0" /></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=J8dJMlWf"><img src="http://feeds.feedburner.com/~f/ajaxian?i=J8dJMlWf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=3ahtUcPZ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=3ahtUcPZ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=rLuj7mAO"><img src="http://feeds.feedburner.com/~f/ajaxian?i=rLuj7mAO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=S5YYTws3"><img src="http://feeds.feedburner.com/~f/ajaxian?i=S5YYTws3" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/css-tab-designer/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Open-jACOB Draw2D</title>
+ <link>http://ajaxian.com/archives/open-jacob-draw2d</link>
+ <comments>http://ajaxian.com/archives/open-jacob-draw2d#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 16:44:35 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <category>Showcase</category>
+ <guid>http://ajaxian.com/archives/open-jacob-draw2d</guid>
+ <description><![CDATA[ Open-jACOB Draw2D is a JavaScript library that allows you to create drawings and diagrams.
+ The User interface allows interactive drawing by using your standard browser.
+No additional software; no third party plug ins. Just run it and use it.
+ Open-jACOB Draw2D is the graph component of the Open-jACOB online
+Workflow editor. The purpose of this experiment is to see [...]]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://www.openjacob.org/draw2d.html">Open-jACOB Draw2D</a> is a JavaScript library that allows you to create drawings and diagrams.</p>
+ <p>The User interface allows interactive drawing by using your standard browser.<br />
+No additional software; no third party plug ins. Just run it and use it.</p>
+ <p>Open-jACOB Draw2D is the graph component of the Open-jACOB online<br />
+Workflow editor. The purpose of this experiment is to see if a Visio-type workflow<br />
+editor tool could be developed in a web browser - It is possible.</p>
+ <p>Check out an <a href="http://www.openjacob.org/draw2d/simple_interactive/index.html">interactive demo</a>.</p>
+ <p><a href="http://www.openjacob.org/draw2d.html"><img src="http://www.openjacob.org/images/draw2d/screen1.png" border="0" width="414" height="215" /></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=Yd5t6AMQ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Yd5t6AMQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=2P9Evaik"><img src="http://feeds.feedburner.com/~f/ajaxian?i=2P9Evaik" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=GexsRwE8"><img src="http://feeds.feedburner.com/~f/ajaxian?i=GexsRwE8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=IySCRpjz"><img src="http://feeds.feedburner.com/~f/ajaxian?i=IySCRpjz" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/open-jacob-draw2d/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Google Pages Adds Nice Image Editing</title>
+ <link>http://ajaxian.com/archives/google-pages-adds-nice-image-editing</link>
+ <comments>http://ajaxian.com/archives/google-pages-adds-nice-image-editing#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 16:15:04 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Showcase</category>
+ <category>Google</category>
+ <category>UI</category>
+ <guid>http://ajaxian.com/archives/google-pages-adds-nice-image-editing</guid>
+ <description><![CDATA[ When I heard about JotSpot heading to the Googleplex I was excited to know that Abe Fettig (Jot) would be teaming up with the brains at Google Pages, and I can't wait to see what happens in the world of WYSIWYG editing tools.
+ Google Pages just released a few features, and one of them is an [...]]]></description>
+ <content:encoded><![CDATA[ <p>When I heard about JotSpot heading to the Googleplex I was excited to know that Abe Fettig (Jot) would be teaming up with the brains at Google Pages, and I can't wait to see what happens in the world of WYSIWYG editing tools.</p>
+ <p><a href="http://pages.google.com/">Google Pages</a> just released a few features, and one of them is an improved process for working with images.</p>
+ <p>Firstly, the way you get photos up is simple and clean, but when when you have an image, you can click on it and you are shown a bunch of tools that allow you to manipulate the image inline, right there on the page.</p>
+ <p><a href="http://pages.google.com/"><img src="http://ajaxian.com/wp-content/images/googlepagesimageedit.png" alt="Google Pages Image Editing" border="0" width="428" height="418"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=ixQAR1Dv"><img src="http://feeds.feedburner.com/~f/ajaxian?i=ixQAR1Dv" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=i8aOiI8S"><img src="http://feeds.feedburner.com/~f/ajaxian?i=i8aOiI8S" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=P5vv2xOQ"><img src="http://feeds.feedburner.com/~f/ajaxian?i=P5vv2xOQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=L0n3Kku6"><img src="http://feeds.feedburner.com/~f/ajaxian?i=L0n3Kku6" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/google-pages-adds-nice-image-editing/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>qooxdoo 0.6.2 Released</title>
+ <link>http://ajaxian.com/archives/qooxdoo-062-released</link>
+ <comments>http://ajaxian.com/archives/qooxdoo-062-released#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 15:39:07 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <guid>http://ajaxian.com/archives/qooxdoo-062-released</guid>
+ <description><![CDATA[ qooxdoo has a new release that adds support for Webkit.
+
+As mentioned above and already announced in our developer blog, qooxdoo now includes support for WebKit. We expect to fully support the next major version Safari 3.0 which will be based on the current development of WebKit. There is only limited support for Safari in its [...]]]></description>
+ <content:encoded><![CDATA[ <p><a href="http://news.qooxdoo.org/qooxdoo-062-released">qooxdoo has a new release that adds support for Webkit</a>.</p>
+ <blockquote><p>
+As mentioned above and already announced in our developer blog, qooxdoo now includes support for WebKit. We expect to fully support the next major version Safari 3.0 which will be based on the current development of WebKit. There is only limited support for Safari in its current version 2.0.4, though. Reason is, that Safari 2.0 still has many bugs that can hardly be worked around. Luckily, many of those bugs are already fixed in the nightly builds of WebKit. Besides the various bugs, Safari 2.0's JavaScript engine and its execution speed is not competitive with respect to the latest versions of the other major browsers (Firefox 2.0, IE7, Opera 9). Good news is, that the current builds of WebKit are tremendeously faster than Safari 2.0, approximately by a factor of 7-8 for a typical qooxdoo demo.
+</p></blockquote>
+ <p>Check out the <a href="http://qooxdoo.org/about/release_notes">release notes</a> for full details on changes in this release.</p>
+ <p>Some of them are:</p>
+ <ul>
+ <li>Made qooxdoo completely XHTML compatible. Replaced all uppercase tag names with their lowercase variant. </li>
+ <li>Improved NativeWindow to support the querying of the load state. Added events for “load” and “close”.</li>
+ <li>Modified XmlHttpRequest and related APIs to <a href="http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx">respect the latest suggestions from Microsoft.</a></li>
+ <li>Added IframeManager to manage visible iframes in order to protect the application events of the “surrounding” document from getting interrupted while switching document context (particularly drag &#038; drop over embedded iframes)</li>
+ <li>Added Resizer widget to allow of customization regarding the dimensions of any widget by the user.</li>
+ </ul>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=tfn0qIAh"><img src="http://feeds.feedburner.com/~f/ajaxian?i=tfn0qIAh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=QJRQS3cR"><img src="http://feeds.feedburner.com/~f/ajaxian?i=QJRQS3cR" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=HSSmg2P1"><img src="http://feeds.feedburner.com/~f/ajaxian?i=HSSmg2P1" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=uSZsJs68"><img src="http://feeds.feedburner.com/~f/ajaxian?i=uSZsJs68" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/qooxdoo-062-released/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Lollygag: Latest non-Atlas .NET Framework</title>
+ <link>http://ajaxian.com/archives/lollygag-latest-non-atlas-net-framework</link>
+ <comments>http://ajaxian.com/archives/lollygag-latest-non-atlas-net-framework#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 14:00:50 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>JavaScript</category>
+ <category>Library</category>
+ <category>Toolkit</category>
+ <category>.NET</category>
+ <guid>http://ajaxian.com/archives/lollygag-latest-non-atlas-net-framework</guid>
+ <description><![CDATA[ The Lollygag framework is a new Ajax framework for .NET.
+ As Steve the author put it:
+
+We attended the first Ajax Experience conference in San Francisco and we got super excited about the potential for building Ajax applications. Since we have a Microsoft .NET background, we planned to start building Ajax applications using Microsoft’s Atlas framework. However, [...]]]></description>
+ <content:encoded><![CDATA[ <p>The <a href="http://lollygagframework.com/">Lollygag framework</a> is a new Ajax framework for .NET.</p>
+ <p>As Steve the author put it:</p>
+ <blockquote><p>
+We attended the first Ajax Experience conference in San Francisco and we got super excited about the potential for building Ajax applications. Since we have a Microsoft .NET background, we planned to start building Ajax applications using Microsoft’s Atlas framework. However, we quickly encountered several serious issues with Atlas. Doing simple things in Atlas, such as database access and form validation, turned out to be really difficult. We were also disappointed to discover that Microsoft has no plans to support its client-side Atlas framework in the immediate future.</p>
+ <p>We built the Lollygag framework in order to build true Ajax applications in the .NET environment. We wanted to build single page Web applications that never perform postbacks. All updates are performed through Ajax calls to the web server.
+</p></blockquote>
+ <p><b>Features</b></p>
+ <ul>
+ <li>Powerful Widget Framework: The Lollygag framework includes a rich set of client-side widgets that you can use to display database data, perform form validation, and create rich animations. You declare widgets in a page in exactly the same way as you declare HTML tags.</li>
+ <li>Autocomplete Support: When you declare Lollygag widgets in a page, you get full autocomplete support while you type. To get autocomplete support, you must use an XML aware development environment such as Microsoft Visual Studio .NET.</li>
+ <li>Declarative Database Access: Accessing database data with the Lollygag framework is easy. You can bind client-side widgets directly to data exposed by a database or you can bind widgets to data exposed by a business object.</li>
+ <li>Secure Form Validation: When taking advantage of the Lollygag framework, you specify how a form field is validated only once. The validation is automatically applied on both the server and the client. Unlike other frameworks that only provide validation on the client, the Lollygag framework prevents malicious users from bypassing client-side validation and submitting data directly to the server.</li>
+ <li>Rich Animation Framework: Lollygag includes an entire animation framework. You can take advantage of animations to create different effects such as fades and wipes.</li>
+ <li>Cross-Browser Support: The full Lollygag framework works on the latest versions of Internet Explorer, Firefox, Safari, and Opera.</li>
+ <li>Automatic JavaScript Compression: The Lollygag framework compresses all JavaScript sent to the browser automatically. Any custom JavaScript code that you write as a developer is also compressed automatically.</li>
+ <li>Powered by .NET: The server-side portion of Lollygag is built on the Microsoft .NET 2.0 Framework. You can build server-side business objects using standard .NET languages such as C# and VB.NET. Lollygag client-side widgets can consume data exposed through server-side objects.</li>
+ </ul>
+ <p><b>Hello World</b></p>
+ <div class="syntax_hilite">
+<div id="xml-14">
+ <div class="xml">
+<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span>?xml <span style="color: #000066;">version</span>=<span style="color: #ff0000;">"1.0"</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">"utf-8"</span> ?<span style="font-weight: bold; color: black;">&gt;</span></span><br />
+<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;</span>?xml-stylesheet <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/xsl"</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">"/lollygagSite/lollygagframework/0_1/lollygag.xsl"</span>?<span style="font-weight: bold; color: black;">&gt;</span></span><br />
+<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;lolly</span> :application <span style="color: #000066;">title</span>=<span style="color: #ff0000;">"Hello World"</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">"http://www.w3.org/1999/xhtml"</span> xmlns:<span style="color: #000066;">lolly</span>=<span style="color: #ff0000;">"http://lollygagframework.com/core"</span><span style="font-weight: bold; color: black;">&gt;</span></span><br />
+&nbsp; <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;lolly</span> :button <span style="color: #000066;">id</span>=<span style="color: #ff0000;">"btnSumit"</span> <span style="color: #000066;">label</span>=<span style="color: #ff0000;">"Click Here!"</span> <span style="color: #000066;">onClick</span>=<span style="color: #ff0000;">"alert('Hello!')"</span> <span style="font-weight: bold; color: black;">/&gt;</span></span><br />
+<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/lolly<span style="font-weight: bold; color: black;">&gt;</span></span></span><br />
+&nbsp;</div>
+ </div>
+</div>
+ <p><b>Resources</b></p>
+ <p>How does it compare to Atlas? <a href="http://lollygagframework.com/Articles/LollygagVersusAtlas/Default.htm">Read their thoughts on the matter</a>.</p>
+ <p><a href="http://lollygagframework.com/Demos/default.htm">Demos</a></p>
+ <p><a href="http://lollygagframework.com/SampleApplications/Forums/forums.xml">Sample Application</a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=2QC8qukU"><img src="http://feeds.feedburner.com/~f/ajaxian?i=2QC8qukU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=lsoztS0a"><img src="http://feeds.feedburner.com/~f/ajaxian?i=lsoztS0a" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=WuuxjGjM"><img src="http://feeds.feedburner.com/~f/ajaxian?i=WuuxjGjM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=M7Gaypk4"><img src="http://feeds.feedburner.com/~f/ajaxian?i=M7Gaypk4" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/lollygag-latest-non-atlas-net-framework/feed/</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Google Book Search gets an Ajax upgrade</title>
+ <link>http://ajaxian.com/archives/google-book-search-gets-an-ajax-upgrade</link>
+ <comments>http://ajaxian.com/archives/google-book-search-gets-an-ajax-upgrade#comments</comments>
+ <pubDate>Thu, 23 Nov 2006 00:03:44 +0000</pubDate>
+ <dc:creator>Dion Almaer</dc:creator>
+
+ <category>Front Page</category>
+ <category>Showcase</category>
+ <category>Google</category>
+ <guid>http://ajaxian.com/archives/google-book-search-gets-an-ajax-upgrade</guid>
+ <description><![CDATA[ Nathan Naze and his team at Google have upgraded Google Books:
+
+
+Zoom in on text and images. Here's a cool full-page sketch of a ship from an 1898 book on steam navigation. Looking for something less dated? Perhaps this colorful page of a room from a book on interior design. Want a better look? You can [...]]]></description>
+ <content:encoded><![CDATA[ <p>Nathan Naze and his team at Google have upgraded <a href="http://books.google.com/">Google Books</a>:</p>
+ <blockquote>
+ <ul>
+<li><strong>Zoom in on text and images.</strong> Here's <a href="http://books.google.com/books?vid=HARVARD:32044020180790&#038;id=7X-I9105PAkC&#038;pg=PA109#PRA2-PA109,M1">a cool full-page sketch of a ship</a> from an 1898 book on <a href="http://books.google.com/books?vid=HARVARD:32044020180790&amp;id=7X-I9105PAkC">steam navigation</a>. Looking for something less dated? Perhaps this <a href="http://books.google.com/books?vid=ISBN1564969584&#038;id=F68COamQRH0C&#038;pg=PA25&#038;lpg=PA25&#038;sig=8k-utjCZ5wwUmWMPlMLIaDjJ4Ig#PPA25,M1">colorful page of a room</a> from <a href="http://books.google.com/books?vid=ISBN1564969584&#038;id=F68COamQRH0C">a book on interior design</a>. Want a better look? You can now zoom in and out &#8212; just click on the <img src="http://photos1.blogger.com/blogger/2855/3883/1600/plus.gif" style="padding: 0px; border: 0px" alt="zoom in" border="0" height="14" width="14"/> and <img alt="zoom out" src="http://photos1.blogger.com/blogger/2855/3883/1600/minus.gif" style="padding: 0px; border: 0px" border="0" height="14" width="14"/> buttons. Play with it until you find a size you like.</li>
+
+<li><strong>One book, one web page.</strong> No more reloads! In one-page mode (just click the <img alt="one page" src="http://photos1.blogger.com/blogger/2855/3883/1600/onepage.gif" style="padding: 0px; border: 0px" border="0" height="14" width="9"/> button), pages appear one below the other, like a scroll of paper. For <a href="http://books.google.com/googlebooks/screenshots.html#fullview">full-view</a> books, there's also a two-page mode (<img alt="two page button" src="http://photos1.blogger.com/blogger/2855/3883/1600/twopage2.gif" style="padding: 0px; border: 0px" border="0" height="14" width="19"/>) in which pages appear side by side, just like in a physical book (perfect for <a href="http://books.google.com/books?vid=ISBN9064503125&#038;id=NkST-eA7uicC&#038;pg=RA12-PA110&#038;lpg=RA12-PA110&#038;sig=oP4PLDRpPGpbo6jBg1qpzOoksjc#PPA51,M2">two-page images</a>). In both modes, you'll be able to use <img src="http://books.google.com/googlebooks/page_nav_previous.gif" style="padding: 0px; border: 0px" alt="previous page button" border="0" height="19" width="19"/> and <img src="http://books.google.com/googlebooks/page_nav_next.gif" style="padding: 0px; border: 0px" alt="next page button" border="0" height="19" width="19"/> to turn pages.</li>
+
+<li><strong>Scroll, scroll, scroll your book&#8230;</strong> using the scrollbar or your mouse wheel, or by dragging (in most browsers, you'll see a <img src="http://photos1.blogger.com/blogger/2855/3883/1600/hand2.gif" style="padding: 0px; border: 0px" border="0" height="16" width="17" alt="hand"/>). You can also use the keyboard (try the spacebar, page up, page down, and the arrow keys). Or you can click on a link in the table of contents or your search results to jump right to that page (like <a href="http://books.google.com/books?vid=OCLC01581436&amp;id=EM6nHWWQ3TIC&amp;pg=PP10">this photo</a> from the 1906 book <a href="http://books.google.com/books?vid=OCLC01581436&amp;id=EM6nHWWQ3TIC"><em>Geronimo's Story of His Life</em></a>).</li>
+
+<li><strong>This page was made for reading.</strong> We've tried to tidy up the clutter to leave as much room as possible for what's important &#8212; the book. We've put all the information about the book in a scrollable side menu. Still not enough room? You can put the screen in fullscreen mode with <img src="http://books.google.com/googlebooks/images/fullscreen.gif" style="padding: 0px; border: 0px" alt="fullscreen button" border="0" height="15" width="17"/>, so you can use the whole window for browsing. Try it with a nice illustrated book of <a href="http://books.google.com/books?vid=NYPL:33433068198005&#038;id=MPDMpD2w_2gC&#038;pg=PA65#PPP18,M2">Celtic fairy tales</a> or, for some lighter reading, <a href="http://books.google.com/books?vid=ISBN3540212663&amp;id=5FZBS0JH9lkC&amp;pg=PP1&amp;lpg=PP1&amp;ots=uNqKSoMhkt&amp;&amp;sig=MjS0J55JV4LYrKN7z_RvUf-sEx4#PPA49,M1">electromagnetic wave theory</a>.</li>
+ </ul>
+ </blockquote>
+ <p>There are keystrokes here too, such as hitting space to scroll down (moving down smoothly). It is nice to see more and more unification to Google apps these days. When you use Reader it feels like Mail, etc.</p>
+ <p>One question is, where are the GWT apps? :)</p>
+ <p><a href="http://books.google.com/"><img src="http://ajaxian.com/wp-content/images/googlebooksearch.png" alt="Google Book Search" border="0" width="580" height="391"/></a>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/ajaxian?a=kpBF2m8t"><img src="http://feeds.feedburner.com/~f/ajaxian?i=kpBF2m8t" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=KWMuT6ZN"><img src="http://feeds.feedburner.com/~f/ajaxian?i=KWMuT6ZN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=5HzTTFHS"><img src="http://feeds.feedburner.com/~f/ajaxian?i=5HzTTFHS" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=eLs8y2a1"><img src="http://feeds.feedburner.com/~f/ajaxian?i=eLs8y2a1" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRSS>http://ajaxian.com/archives/google-book-search-gets-an-ajax-upgrade/feed/</wfw:commentRSS>
+ </item>
+ </channel>
+</rss>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/febo-feeds.opml.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/febo-feeds.opml.xml
new file mode 100644
index 0000000000..633e184282
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/febo-feeds.opml.xml
@@ -0,0 +1,29 @@
+<opml version="1.0">
+ <head>
+ <title>Thunderbird OPML-Export</title>
+ <dateCreated>Fri, 08 Dec 2006 12:00:29 GMT</dateCreated>
+ </head>
+ <body>
+ <outline title="AJAX Matters Blog" text="AJAX Matters Blog" type="rss" version="RSS" xmlUrl="http://www.ajaxmatters.com/blog/feed/atom/" htmlUrl="http://www.ajaxmatters.com/blog"/>
+ <outline title="Ajaxian" text="Ajaxian" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/ajaxian" htmlUrl="http://ajaxian.com"/>
+ <outline title="Coding In Paradise" text="Coding In Paradise" type="rss" version="RSS" xmlUrl="http://www.codinginparadise.org/weblog/atom.xml" htmlUrl="http://codinginparadise.org/weblog/"/>
+ <outline title="dojo.foo" text="dojo.foo" type="rss" version="RSS" xmlUrl="http://blog.dojotoolkit.org/feed" htmlUrl="http://blog.dojotoolkit.org"/>
+ <outline title="Firebug" text="Firebug" type="rss" version="RSS" xmlUrl="http://www.getfirebug.com/blog/?feed=rss2" htmlUrl="http://www.getfirebug.com/blog"/>
+ <outline title="from __future__ import *" text="from __future__ import *" type="rss" version="RSS" xmlUrl="http://bob.pythonmac.org/feed/atom/" htmlUrl="http://bob.pythonmac.org"/>
+ <outline title="Google Web Toolkit Blog" text="Google Web Toolkit Blog" type="rss" version="RSS" xmlUrl="http://googlewebtoolkit.blogspot.com/atom.xml" htmlUrl="http://googlewebtoolkit.blogspot.com"/>
+ <outline title="Jack Slocum's Blog" text="Jack Slocum's Blog" type="rss" version="RSS" xmlUrl="http://www.jackslocum.com/blog/feed/" htmlUrl="http://www.jackslocum.com/blog"/>
+ <outline title="JSR 168, WSRP, Portlets &amp; Enterprise Portal" text="JSR 168, WSRP, Portlets &amp; Enterprise Portal" type="rss" version="RSS" xmlUrl="http://portlets.blogspot.com/atom.xml" htmlUrl="http://portlets.blogspot.com"/>
+ <outline title="Monologue" text="Monologue" type="rss" version="RSS" xmlUrl="http://www.go-mono.com/monologue/index.rss" htmlUrl="http://www.go-mono.com/monologue/"/>
+ <outline title="OSNews" text="OSNews" type="rss" version="RSS" xmlUrl="http://osnews.com/files/recent.rdf" htmlUrl="http://www.osnews.com/"/>
+ <outline title="qooxdoo" text="qooxdoo" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/qooxdoo/blog/content" htmlUrl="http://blog.qooxdoo.org"/>
+ <outline title="qooxdoo" text="qooxdoo" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/qooxdoo/news/content" htmlUrl="http://news.qooxdoo.org"/>
+ <outline title="subbu.org" text="subbu.org" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/SubbuDotOrg" htmlUrl="http://www.subbu.org/"/>
+ <outline title="Surfin' Safari" text="Surfin' Safari" type="rss" version="RSS" xmlUrl="http://webkit.org/blog/?feed=rss2" htmlUrl="http://webkit.org/blog"/>
+ <outline title="Thomas Much's Weblog" text="Thomas Much's Weblog" type="rss" version="RSS" xmlUrl="http://www.snailshell.de/blog/rss.xml" htmlUrl="http://www.snailshell.de/blog/index.html"/>
+ <outline title="UXmatters" text="UXmatters" type="rss" version="RSS" xmlUrl="http://www.uxmatters.com/atom.xml" htmlUrl="http://dev.uxmatters.com/"/>
+ <outline title="WebKit" text="WebKit" type="rss" version="RSS" xmlUrl="http://cia.navi.cx/stats/project/WebKit/.rss" htmlUrl="http://webkit.org"/>
+ <outline title="webmagics" text="webmagics" type="rss" version="RSS" xmlUrl="http://feeds.feedburner.com/webmagics" htmlUrl="http://journal.webmagics.net/"/>
+ <outline title="Yahoo! User Interface Blog" text="Yahoo! User Interface Blog" type="rss" version="RSS" xmlUrl="http://feeds.yuiblog.com/YahooUserInterfaceBlog" htmlUrl="http://yuiblog.com/blog"/>
+ <outline title="Zimbra - Blog" text="Zimbra - Blog" type="rss" version="RSS" xmlUrl="http://www.zimbra.com/blog/atom.xml" htmlUrl="http://www.zimbra.com/blog/"/>
+ </body>
+</opml> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-blog.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-blog.xml
new file mode 100644
index 0000000000..241d450954
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-blog.xml
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.0.5" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
+
+<channel>
+ <title>qooxdoo Blog</title>
+ <link>http://blog.qooxdoo.org</link>
+ <description>The blog of the qooxdoo developers</description>
+ <pubDate>Sun, 26 Nov 2006 15:53:14 +0000</pubDate>
+ <generator>http://wordpress.org/?v=2.0.5</generator>
+ <language>en</language>
+ <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/qooxdoo/blog/content" type="application/rss+xml" /><feedburner:emailServiceId>384287</feedburner:emailServiceId><item>
+ <title>Safari support for qooxdoo coming</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/48836959/safari-support-for-qooxdoo-coming</link>
+ <comments>http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming#comments</comments>
+ <pubDate>Mon, 13 Nov 2006 14:46:19 +0000</pubDate>
+ <dc:creator>Fabian Jakobs</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Safari</category>
+
+ <category>Technical</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming</guid>
+ <description><![CDATA[Safari support for qooxdoo is coming along nicely. qooxdoo support for the nightly build of WebKit is near to complete. Most demos and examples are working, including the API viewer . The screenshot shows the &#8220;At a Glance&#8221; example running in WebKit. Safari 2.0.4 shipped with the current OS X 10.4 is usable but still [...]]]></description>
+ <content:encoded><![CDATA[<p>Safari support for qooxdoo is coming along nicely. qooxdoo support for the nightly build of <a href="http://nightly.webkit.org" title="WebKit">WebKit</a> is near to complete. Most demos and examples are working, including the <a href="http://api.qooxdoo.org/">API viewer</a> . The screenshot shows the &ldquo;<a href="http://demo.qooxdoo.org/html/at-a-glance/index.html">At a Glance</a>&rdquo; example running in WebKit. Safari 2.0.4 shipped with the current OS X 10.4 is usable but still has some rendering issues.</p>
+<div><a href="http://blog.qooxdoo.org/wp-content/uploads/2006/11/webkit-at_a_glance.jpg" title="WebKit - &quot;At a Glance&quot; example"><img src="http://blog.qooxdoo.org/wp-content/uploads/2006/11/webkit-at_a_glance.thumbnail.jpg" alt="WebKit - &quot;At a Glance&quot; example" /></a> <a href="http://blog.qooxdoo.org/wp-content/uploads/2006/11/webkit-api_viewer.jpg" title="WebKit - API viewer"><img src="http://blog.qooxdoo.org/wp-content/uploads/2006/11/webkit-api_viewer.thumbnail.jpg" alt="WebKit - API viewer" /></a></div>
+<p>For the next qooxdoo release we plan to fully support WebKit, which hopefully builds the basis for the next major release of Safari shipped with the upcoming OS X 10.5. We decided to target WebKit because of its improved standard support and its dramatically faster JavaScript engine. Some qooxdoo examples are up to seven times faster using WebKit compared to Safari 2. Even if we would fully support Safari 2, it will never be a good platform for big JavaScript applications.</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=rgDIT7iC"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=rgDIT7iC" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=jZaVEgHu"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=jZaVEgHu" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Kni66m1x"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Kni66m1x" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=OdCjYPt3"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=OdCjYPt3" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=zlqmlozO"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=zlqmlozO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=3F9MjAuf"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=3F9MjAuf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=LPVxsJLI"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=LPVxsJLI" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=wCgbZ6gf"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=wCgbZ6gf" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming</feedburner:origLink></item>
+ <item>
+ <title>Tamarin Follow-ups</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/46350978/tamarin-follow-ups</link>
+ <comments>http://blog.qooxdoo.org/tamarin-follow-ups#comments</comments>
+ <pubDate>Tue, 07 Nov 2006 21:53:17 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Firefox</category>
+
+ <category>Performance</category>
+
+ <category>Adobe</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/tamarin-follow-ups</guid>
+ <description><![CDATA[
+I have just found some more interesting stuff regarding our Tamarin post today:&#160;
+
+Inside Tamarin - Adobe&#8217;s Open Source Flash VM
+JD on EP
+Adobe press release
+Mozilla press release
+Digg frontpage
+
+
+
+]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>I have just found some more interesting stuff regarding our Tamarin post today:&nbsp;</p>
+<ul>
+<li><a href="http://www.satine.org/archives/2006/11/06/inside-tamarin-adobes-open-source-flash-vm/">Inside Tamarin - Adobe&rsquo;s Open Source Flash VM</a></li>
+<li><a href="http://weblogs.macromedia.com/jd/archives/2006/11/tamarin_project.cfm">JD on EP</a> </li>
+<li><a href="http://www.mozilla.com/en-US/press/mozilla-2006-11-07.html">Adobe press release</a></li>
+<li><a href="http://www.mozilla.com/en-US/press/mozilla-2006-11-07.html">Mozilla press release</a> </li>
+<li><a href="http://digg.com/tech_news/Adobe_and_Mozilla_Foundation_to_Open_Source_Flash_Player_Scripting_Engine">Digg frontpage</a></li>
+</ul>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=q9EAMSac"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=q9EAMSac" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=wzDEJbB5"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=wzDEJbB5" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=yiNGdYRa"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=yiNGdYRa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=OhkFuOKM"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=OhkFuOKM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=B6t2zevO"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=B6t2zevO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Q0RQVLHL"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Q0RQVLHL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=FPcP7kjS"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=FPcP7kjS" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=ysJCQQQ4"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=ysJCQQQ4" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/tamarin-follow-ups/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/tamarin-follow-ups</feedburner:origLink></item>
+ <item>
+ <title>Project Tamarin to boost JavaScript</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/46219737/project-tamarin-to-boost-javascript</link>
+ <comments>http://blog.qooxdoo.org/project-tamarin-to-boost-javascript#comments</comments>
+ <pubDate>Tue, 07 Nov 2006 12:55:22 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Firefox</category>
+
+ <category>Performance</category>
+
+ <category>Adobe</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/project-tamarin-to-boost-javascript</guid>
+ <description><![CDATA[
+Good news, everyone!&#160;
+Recently we have been puzzled by some statements of Brendan Eich, the creator of the JavaScript programming language.
+In Brendan&#39;s blog he wrote &#34;For Mozilla 2, we will have a JIT-oriented JavaScript VM (details soon) that supports the forthcoming ECMAScript Edition 4 (&#34;JS2&#34;) language&#34; (October 13, 2006). [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Good news, everyone!&nbsp;</p>
+<p>Recently we have been puzzled by some statements of Brendan Eich, the creator of the JavaScript programming language.</p>
+<p>In Brendan&#39;s blog he wrote &quot;For Mozilla 2, we will have a JIT-oriented JavaScript VM (details soon) that supports the forthcoming ECMAScript Edition 4 (&quot;JS2&quot;) language&quot; (<a href="http://weblogs.mozillazine.org/roadmap/archives/2006/10/mozilla_2.html">October 13, 2006</a>). Well, could hardly wait for any details. Another statement that made us curious was at The Ajax Experience this fall. In his slides about JavaScript 2.0 he mentioned&nbsp; &quot;Open source optimizing VMs coming soon. Look for an announcement in a few weeks&quot; (<a href="http://ajaxian.com/downloads/presentations/eich-ajax-experience-boston/">October 25, 2006</a>). Interestingly, this mysterious announcement was in a section he called &quot;JavaScript Fun Facts&quot;.</p>
+<p>Well done Brendan, you are our Master of Suspense! Finally, as a revelation today came <a href="http://blog.qooxdoo.org/adobe-improves-javascript-performance">the announcement that is going to boost JavaScript</a>. Congratulations to Adobe for their decision of contributing the ActionScript Virtual Machine (AVM) as open source to the Mozilla project. And a warm open-source welcome to all the developers of the AVM! The code has <a href="http://weblogs.mozillazine.org/roadmap/archives/2006/11/project_tamarin.html">just been committed</a> into the Mozilla repository.</p>
+<p>This is great news for qooxdoo being a client-side JavaScript framework. Performance has always been one of our major concerns, and we think we have pushed the limit for JavaScript based web applications, e.g. for qooxdoo&#39;s powerful browser-independent layout engine. Can&#39;t wait to tweak the last bit of performance out of any new Mozilla browser backed by the new JavaScript VM. This is going to change the future of browser-based applications. Cheers!</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=USVMighM"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=USVMighM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=w54mM05O"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=w54mM05O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=l0FOLc3Z"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=l0FOLc3Z" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=UjEK9OXh"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=UjEK9OXh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=hSi2ujP0"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=hSi2ujP0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=huRmnKOf"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=huRmnKOf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=aLB65Efe"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=aLB65Efe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=RfSxRPZF"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=RfSxRPZF" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/project-tamarin-to-boost-javascript/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/project-tamarin-to-boost-javascript</feedburner:origLink></item>
+ <item>
+ <title>Adobe improves JavaScript performance</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/46178140/adobe-improves-javascript-performance</link>
+ <comments>http://blog.qooxdoo.org/adobe-improves-javascript-performance#comments</comments>
+ <pubDate>Tue, 07 Nov 2006 12:01:29 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Firefox</category>
+
+ <category>Flash</category>
+
+ <category>Adobe</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/adobe-improves-javascript-performance</guid>
+ <description><![CDATA[
+In my opinion there was never a reason why JavaScript should be slower than other typical script languages e.g. Python, Perl, Ruby, &#8230; With the newest committment from Abobe to Mozilla we could reach a new level of performance in web applications.&#160;
+As news.com reports &#34;Adobe will provide the [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>In my opinion there was never a reason why JavaScript should be slower than other typical script languages e.g. Python, Perl, Ruby, &#8230; With the newest committment from Abobe to Mozilla we could reach a new level of performance in web applications.&nbsp;</p>
+<p>As news.com reports &quot;Adobe will provide the same software, called the ActionScript Virtual Machine, which it uses to run script code in the <a href="http://news.com.com/Adobe+updates+Flash+Player%2C+Flex+tool/2100-1012_3-6088705.html?tag=nl" title="Adobe updates Flash Player, Flex tool -- Tuesday, Jun 27, 2006">Adobe Flash Player 9</a>. This virtual machine is expected to be built into future versions of the Firefox browser by the first half of 2008, said <a href="http://www.hecker.org/info/bio?tag=nl">Frank Hecker</a>, the executive director of the <a href="http://www.mozilla.org/foundation/?tag=nl">Mozilla Foundation</a>.&quot; </p>
+<p>Via <a href="http://news.com.com/2100-7344_3-6133052.html">news.com</a></p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=bVlh8s4Z"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=bVlh8s4Z" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=T4rDBMyi"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=T4rDBMyi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=IjP7zAmO"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=IjP7zAmO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=JuQT2l0H"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=JuQT2l0H" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=SDqAETvO"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=SDqAETvO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=HCWVQRJl"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=HCWVQRJl" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=bHmzAB8O"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=bHmzAB8O" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=iApj6TU3"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=iApj6TU3" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/adobe-improves-javascript-performance/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/adobe-improves-javascript-performance</feedburner:origLink></item>
+ <item>
+ <title>Keep yourself up-to-date</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/37261107/keep-yourself-up-to-date</link>
+ <comments>http://blog.qooxdoo.org/keep-yourself-up-to-date#comments</comments>
+ <pubDate>Sat, 14 Oct 2006 21:41:08 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Development</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/keep-yourself-up-to-date</guid>
+ <description><![CDATA[ There is a new feed available on our homepage. You can now easily follow the development in our SVN repository. Hope you like this. Especially interesting for users who want to be up-to-date. Also a nice alternative to our qooxdoo-commit mailing list.
+
+]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>There is a <a href="http://feeds.feedburner.com/qooxdoo/svn/commits">new feed</a> available on <a href="http://qooxdoo.org">our homepage</a>. You can now easily follow the development in our SVN repository. Hope you like this. Especially interesting for users who want to be up-to-date. Also a nice alternative to our <a href="http://lists.sourceforge.net/mailman/listinfo/qooxdoo-commit">qooxdoo-commit mailing list</a>. </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=ufmev5Dk"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=ufmev5Dk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=4EgKz1gp"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=4EgKz1gp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=SKoJto7H"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=SKoJto7H" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=WTdFl3yy"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=WTdFl3yy" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=ZPm4BqBx"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=ZPm4BqBx" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=7dz9P0xU"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=7dz9P0xU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=qABtQjRx"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=qABtQjRx" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=3FQ8FBbL"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=3FQ8FBbL" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/keep-yourself-up-to-date/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/keep-yourself-up-to-date</feedburner:origLink></item>
+ <item>
+ <title>Only five days to IE7</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/36678532/5-days-to-ie7</link>
+ <comments>http://blog.qooxdoo.org/5-days-to-ie7#comments</comments>
+ <pubDate>Fri, 13 Oct 2006 08:42:36 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Internet Explorer</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/5-days-to-ie7</guid>
+ <description><![CDATA[ Following a report of Microsoft Higher Education - Mid-Atlantic it seems that IE7 will be released on the 18th this month. In just 5 days. The most changes are only interesting for typical web developers (e.g. CSS fixes) while the latest improvements to the JavaScript engine [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>Following <a href="http://blogs.msdn.com/hied_mid-atlantic/archive/2006/10/10/Internet-Explorer-7-is-coming-this-month-_2E002E002E00_-Are-you-ready_3F00_.aspx">a report</a> of <a href="http://blogs.msdn.com/hied_mid-atlantic/default.aspx">Microsoft Higher Education - Mid-Atlantic</a> it seems that <a href="http://blogs.msdn.com/hied_mid-atlantic/archive/2006/10/10/Internet-Explorer-7-is-coming-this-month-_2E002E002E00_-Are-you-ready_3F00_.aspx">IE7 will be released on the 18th this month</a>. In just 5 days. The most changes are only interesting for typical web developers (e.g. CSS fixes) while the <a href="http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance">latest improvements to the JavaScript engine</a> are also an interesting point for us and other big JavaScript frameworks. I hope we will see a market share of 50 percent after the first six months. </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=6KCHC8Qt"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=6KCHC8Qt" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=znn30SWW"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=znn30SWW" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=iDMgk0h2"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=iDMgk0h2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=tH88lPZg"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=tH88lPZg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=0u2q8HcY"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=0u2q8HcY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=C8h6ZyP0"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=C8h6ZyP0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=p7GgwlgK"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=p7GgwlgK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=8AEwoRbb"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=8AEwoRbb" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/5-days-to-ie7/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/5-days-to-ie7</feedburner:origLink></item>
+ <item>
+ <title>IE7 CSS changes</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/32468983/ie7-css-changes</link>
+ <comments>http://blog.qooxdoo.org/ie7-css-changes#comments</comments>
+ <pubDate>Wed, 04 Oct 2006 20:04:27 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Bookmark</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/ie7-css-changes</guid>
+ <description><![CDATA[ An interesting read for all web developers: Cascading Style Sheet Compatibility in Internet Explorer 7.
+
+]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> An interesting read for all web developers: <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/IETechCol/cols/dnexpie/ie7_css_compat.asp?frame=true">Cascading Style Sheet Compatibility in Internet Explorer 7.</a><br /> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=l0NmonZB"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=l0NmonZB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=R0iSOfdT"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=R0iSOfdT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=oEqiKUKM"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=oEqiKUKM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=1VRsHJUp"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=1VRsHJUp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=6TsnDDrP"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=6TsnDDrP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=3JFLZ0Cf"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=3JFLZ0Cf" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=QuSZgCNp"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=QuSZgCNp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Y8oWww1z"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Y8oWww1z" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/ie7-css-changes/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/ie7-css-changes</feedburner:origLink></item>
+ <item>
+ <title>Support for compression of local variables added</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/32241766/support-for-compression-of-local-variables-added</link>
+ <comments>http://blog.qooxdoo.org/support-for-compression-of-local-variables-added#comments</comments>
+ <pubDate>Wed, 04 Oct 2006 11:06:46 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Development</category>
+
+ <category>Technical</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/support-for-compression-of-local-variables-added</guid>
+ <description><![CDATA[
+A few hours ago I&#39;ve committed a change which adds a variable name optimizer into the qooxdoo trunk. This optimizer replaces the names of local variables with shorter ones. The result is a size reduction of the compiled JavaScript file by 10%. This new behavior is enabled per [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>A few hours ago I&#39;ve committed a change which adds a variable name optimizer into the qooxdoo trunk. This optimizer replaces the names of local variables with shorter ones. The result is a size reduction of the compiled JavaScript file by 10%. This new behavior is enabled per default for all the included Makefiles. So after an SVN update you can build your (again) better optimized version of qooxdoo.</p>
+<p>This can also been seen as a next step in bringing support for obfuscation another step forward. I have also updated the <a href="http://demo.qooxdoo.org">online demos</a> and the <a href="http://api.qooxdoo.org">API viewer</a> to use this new feature. I would like to invite you to give me feedback as soon as possible. Maybe you also find some bugs. If so, please report them immediately. Thank you.</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=tppbJ4bc"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=tppbJ4bc" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=dbe1sxCT"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=dbe1sxCT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=kuoqNS00"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=kuoqNS00" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=HlJ6f0Ls"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=HlJ6f0Ls" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=xbjmDWoL"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=xbjmDWoL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=V2cWssXw"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=V2cWssXw" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=C10aMNYQ"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=C10aMNYQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=F2ic6JR6"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=F2ic6JR6" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/support-for-compression-of-local-variables-added/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/support-for-compression-of-local-variables-added</feedburner:origLink></item>
+ <item>
+ <title>AJAX framework survey</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/26565493/ajax-framework-poll</link>
+ <comments>http://blog.qooxdoo.org/ajax-framework-poll#comments</comments>
+ <pubDate>Sun, 24 Sep 2006 09:04:41 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Discussion</category>
+
+ <category>Survey</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/ajax-framework-poll</guid>
+ <description><![CDATA[
+The guys at ajaxian.com have reported about a current survey regarding the popularity of common AJAX frameworks. It is quite clear why prototype is the winner. It&#39;s well-known, small and easily embedable into existing pages. However I think it is interesting that Mochikit is less widely used, because [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>The guys at <a href="http://ajaxian.com">ajaxian.com</a> have reported about a current <a href="http://ajaxian.com/archives/ajaxiancom-2006-survey-results">survey regarding the popularity of common AJAX frameworks</a>. It is quite clear why prototype is the winner. It&#39;s well-known, small and easily embedable into existing pages. However I think it is interesting that Mochikit is less widely used, because the targets of these libraries are comparable in my opinion. And Mochikit does not depends on extensions of native objects (especially Object.prototype) which makes it the better choice.</p>
+<p>I should mention that in my opinion the whole survey is quite problematic because of their comparison of different levels of so named &quot;AJAX frameworks&quot;. For a next survey I would suggest to divide the list into these groups:</p>
+<p>AJAX wrappers &amp; DOM utilities:</p>
+<ul>
+<li>Prototype &amp; Scriptaclous &amp; Rico</li>
+<li>Moo.fx</li>
+<li>jQuery </li>
+<li>Yahoo UI</li>
+<li>Mochikit</li>
+<li>XAJAX</li>
+<li>DWR (includes backend code, too) </li>
+</ul>
+<p>Framework &amp; Toolkits:</p>
+<ul>
+<li>Dojo</li>
+<li>Atlas</li>
+<li>GWT</li>
+<li>qooxdoo (seems to be missing <img src='http://blog.qooxdoo.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )&nbsp;</li>
+</ul>
+<p>I&#39;ve grouped together Scriptaclous and Rico because they both depend on Prototype which means they are more or less an extension of this library and not a real separate solution.</p>
+<p>What do you think?&nbsp;</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=zVG9wfIU"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=zVG9wfIU" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=FyUymhC2"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=FyUymhC2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=SCV0WhJ4"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=SCV0WhJ4" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=BYHTg0aH"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=BYHTg0aH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=sYMapwTd"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=sYMapwTd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=r7Dt6YTk"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=r7Dt6YTk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=fWqhBoBV"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=fWqhBoBV" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=bOeZDScE"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=bOeZDScE" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/ajax-framework-poll/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/ajax-framework-poll</feedburner:origLink></item>
+ <item>
+ <title>Dramatically improved IE7 JavaScript performance</title>
+ <link>http://feeds.feedburner.com/~r/qooxdoo/blog/content/~3/21793941/dramatically-improved-ie7-javascript-performance</link>
+ <comments>http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance#comments</comments>
+ <pubDate>Wed, 13 Sep 2006 11:35:53 +0000</pubDate>
+ <dc:creator>Sebastian Werner</dc:creator>
+
+ <category>Internet Explorer</category>
+
+ <category>Technical</category>
+
+ <category>Performance</category>
+
+ <guid isPermaLink="false">http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance</guid>
+ <description><![CDATA[
+Really good news. My vocabulary may to be too limited to tell you how great the latest changes in IE7 RC1 are. Microsoft announced that they have &#34;recently made some great fixes to our engine to improve the garbage collection routine and to reduce unbounded memory growth.&#34; and [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Really good news. My vocabulary may to be too limited to tell you how great the latest changes in <a href="http://www.microsoft.com/windows/ie/default.mspx">IE7 RC1</a> are. <a href="http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx">Microsoft announced</a> that they have &quot;recently made some great fixes to our engine to improve the garbage collection routine and to reduce unbounded memory growth.&quot; and that one &quot;should see noticeable improvements on AJAX sites in the Release Candidate we shipped last week&quot;. Yes indeed, we do see tremendeous improvements. <img src='http://blog.qooxdoo.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
+<p>In fact <a href="http://qooxdoo.org/demo">many demos</a> of <a href="http://qooxdoo.org">qooxdoo</a> run much faster now in IE7 compared to IE6. And they are even faster than in <a href="http://www.mozilla.com/firefox/">Firefox</a> 1.5 in many cases. This is a huge jump in performance. Microsoft did not tell about their exact modifications, of course. Anyway, they have fixed <em>the</em> major problem of large JavaScript-based web applications. This problem, despite having a catchy name, was mentioned many times before like <a href="http://demo.qooxdoo.org/html/performance/GlobalObject_2.html">here</a>, <a href="http://alex.dojotoolkit.org/?p=536">here</a> and <a href="http://groups.google.com/group/microsoft.public.inetsdk.programming.scripting.jscript/browse_thread/thread/d758f148f03cd2ed/cc6143cd1b0d1e38?lnk=st&amp;q=jscript+slow+performance+ie+firefox&amp;rnum=2#cc6143cd1b0d1e3">there</a>: If you have many objects created, which are simply accessible in the current scope, all methods and features of JavaScript slow down dramatically. Yeah, right, the entire execution speed drops significantly. No other browser besides IE shows such a strange behavior. It is quite interesting that IE6 really gets slower the larger the total number of (accessible) objects. Sure, it is logical that more instanciated objects need more memory, but it is not logical that at the same time this will dramatically reduce the performance of any code (that is not even accessing this data).</p>
+<p>With the release candidate RC1 of their new browser version IE7, it seems that they have finally fixed this issue. You can test it yourself in <a href="http://demo.qooxdoo.org/html/performance/GlobalObject_2.html">this test case</a>, which has been available in <a href="http://qooxdoo.org">qooxdoo</a> for several months to analyze and measure the IE performance problems. Please look at status bar of your browser (maybe you need to enable the status bar in the IE7 security settings). It will display the execution time of each loop while a large number of objects exists. On my machine the IE6 needs ~1400ms, while IE7 needs ~30ms, which is roughly the time Firefox 1.5 needs. Definitely incredible! Bright future for modern web applications. <img src='http://blog.qooxdoo.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=27qjvIjz"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=27qjvIjz" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=0pcpSBXq"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=0pcpSBXq" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Z4mzepLM"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Z4mzepLM" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=Cko7rv3A"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=Cko7rv3A" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=F2xJwTjG"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=F2xJwTjG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=xrRqiV8e"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=xrRqiV8e" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=nLBUMGef"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=nLBUMGef" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/blog/content?a=hUPfCg1N"><img src="http://feeds.feedburner.com/~f/qooxdoo/blog/content?i=hUPfCg1N" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance/feed/</wfw:commentRss>
+ <feedburner:origLink>http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance</feedburner:origLink></item>
+ </channel>
+</rss><!-- Dynamic Page Served (once) in 0.666 seconds --><!-- Cached page served by WP-Cache -->
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-news.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-news.xml
new file mode 100644
index 0000000000..3b17a19c73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/qooxdoo-news.xml
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><!-- generator="wordpress/2.0.5" --><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
+
+<channel>
+ <title>qooxdoo News</title>
+ <link>http://news.qooxdoo.org</link>
+ <description>The qooxdoo news section</description>
+ <pubDate>Sun, 26 Nov 2006 15:52:09 +0000</pubDate>
+ <generator>http://wordpress.org/?v=2.0.5</generator>
+ <language>en</language>
+ <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/qooxdoo/news/content" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">390072</feedburner:emailServiceId><item>
+ <title>qooxdoo 0.6.2 released</title>
+ <link>http://news.qooxdoo.org/qooxdoo-062-released</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-062-released#comments</comments>
+ <pubDate>Wed, 22 Nov 2006 14:13:38 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/qooxdoo-062-released</guid>
+ <description><![CDATA[Good news, everyone!
+Despite of the minor change in version number, this release is again a major step in strengthening qooxdoo&#39;s position of being one of the most comprehensive and innovative AJAX frameworks. It now even includes support for WebKit and future versions of Safari!
+It came as quite a surprise how many fixes, changes and additions [...]]]></description>
+ <content:encoded><![CDATA[<p>Good news, everyone!</p>
+<p>Despite of the minor change in version number, this release is again a major step in strengthening qooxdoo&#39;s position of being one of the most comprehensive and innovative AJAX frameworks. It now even includes support for WebKit and future versions of Safari!</p>
+<p>It came as quite a surprise how many fixes, changes and additions we were actually able to include in this fine little package. During the eight weeks after release 0.6.1, many people have made contributions. Thanks to all qooxdoo users, contributors, patch monsters and supporters for helping to make the framework more mature and feature-complete!</p>
+<p>Targeted as a maintenance release it includes many bugfixes and only minor changes in functionality or API. We recommend to upgrade any applications based on qooxdoo 0.6.1. Of course, there is migration support available, even if it is hardly needed this time.</p>
+<p>As mentioned above and already announced in our <a href="http://blog.qooxdoo.org/safari-support-for-qooxdoo-coming">developer blog</a>, qooxdoo now includes support for WebKit. We expect to fully support the next major version Safari 3.0 which will be based on the current development of WebKit. There is only limited support for Safari in its current version 2.0.4, though. Reason is, that Safari 2.0 still has many bugs that can hardly be worked around. Luckily, many of those bugs are already fixed in the <a href="http://nightly.webkit.org/">nightly builds of WebKit</a>. Besides the various bugs, Safari 2.0&#39;s JavaScript engine and its execution speed is not competitive with respect to the latest versions of the other major browsers (Firefox 2.0, IE7, Opera 9). Good news is, that the current builds of WebKit are tremendeously faster than Safari 2.0, approximately by a factor of 7-8 for a typical qooxdoo demo.</p>
+<p>We think it is worth to either use WebKit for now or wait for Safari 3.0 due in early 2007. There is probably not much sense in devoting more time and effort for Safari 2.0 specific problems. There are still some known issues concerning WebKit support (particularly for widgets that use scrollbars). It would be great if Mac users could give qooxdoo 0.6.2 a try and report any problem in bugzilla. Please use the most recent nightly build of WebKit and include its version information in any bug report.</p>
+<p>For more detailed information about qooxdoo 0.6.2 please consult the corresponding <a href="http://qooxdoo.org/about/release_notes">release notes</a>.</p>
+<p>Enjoy!</p>
+<ul>
+<li><a href="http://qooxdoo.org/download">Download qooxdoo</a></li>
+<li><a href="http://freshmeat.net/rate/53996/">Rate qooxdoo</a> </li>
+</ul>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=rUMX2pdG"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=rUMX2pdG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=QSWyYmHE"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=QSWyYmHE" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=46nCAceV"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=46nCAceV" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=C67hJdDt"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=C67hJdDt" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Xl7ySFg7"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Xl7ySFg7" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=CERoEiZ0"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=CERoEiZ0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=L5wV176y"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=L5wV176y" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=LcQsQi8c"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=LcQsQi8c" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-062-released/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>IE7 released, finally</title>
+ <link>http://news.qooxdoo.org/ie7-released-finally</link>
+ <comments>http://news.qooxdoo.org/ie7-released-finally#comments</comments>
+ <pubDate>Thu, 19 Oct 2006 12:26:18 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/ie7-released-finally</guid>
+ <description><![CDATA[
+Good news to every developer of modern web applications. After more than 5 years (IE6 was released in August 2001) we all hope to see IE7 fix some of the most severe problems and bugs of IE6. All qooxdoo-based applications are expected to benefit from IE7, particularly due [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Good news to every developer of modern web applications. After more than 5 years (IE6 was released in August 2001) we all hope to see <a href="http://www.microsoft.com/ie">IE7</a> fix some of the most severe problems and bugs of IE6. All qooxdoo-based applications are expected to benefit from IE7, particularly due to the <a href="http://blog.qooxdoo.org/dramatically-improved-ie7-javascript-performance">dramatic JavaScript performance improvements</a> that we reported earlier.</p>
+<p>qooxdoo fully supports IE7. It would be great if qooxdoo users and developers could continue to test and double-check their applications for IE7 compatibility. Please <a href="http://bugzilla.qooxdoo.org/enter_bug.cgi?product=frontend&amp;op_sys=Windows&amp;rep_platform=IE%207">report any IE7 issues in bugzilla</a> as soon as possible.</p>
+<p>Enjoy &#8230; and good luck!&nbsp;</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=s9WxPv0V"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=s9WxPv0V" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=SjIKFZaP"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=SjIKFZaP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bCMFN18x"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bCMFN18x" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=mLQg7sg8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=mLQg7sg8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=vKYNENWZ"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=vKYNENWZ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=UVocqnql"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=UVocqnql" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=FurwESp0"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=FurwESp0" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Xz06SbFC"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Xz06SbFC" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/ie7-released-finally/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>qooxdoo 0.6.1 released</title>
+ <link>http://news.qooxdoo.org/qooxdoo-061-released</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-061-released#comments</comments>
+ <pubDate>Wed, 20 Sep 2006 18:49:16 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/qooxdoo-061-released</guid>
+ <description><![CDATA[
+After only two weeks since the ground-breaking release of qooxdoo 0.6 quite a lot of progress has been made. We have received many contributions and bugfixes from the community. These patches as well as our own&#160; modifications have been integrated into the code base in the ongoing [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>After only two weeks since the ground-breaking release of <a href="http://news.qooxdoo.org/qooxdoo-06-released">qooxdoo 0.6</a> quite a lot of progress has been made. We have received many contributions and bugfixes from the community. These patches as well as our own&nbsp; modifications have been integrated into the code base in the ongoing effort to raise qooxdoo&#39;s stability.</p>
+<p>As has been previously announced, we try to release often, now that some of the most challenging reconstructions like namespaces have been mastered. While API changes for this minor release are negligible, <a href="http://qooxdoo.org/documentation/user_manual/migration_support">migration scripts</a> are available to upgrade existing applications, of course. </p>
+<p>Preliminary browser support for Safari has been introduced. It would be great if Safari users could help in identifying, analyzing and fixing the various layout problems. It is still not recommended to use qooxdoo applications in Safari-based production environments.</p>
+<p>Besides bugfixes and stability improvements there are some interesting additions as well. Tabs may optionally include close buttons, the tree widget TreeFullControl now supports multiple root nodes. Iframes containing external documents now have built-in blocking support to not interrupt user actions like drag &amp; drop.</p>
+<p>Application development is even faster than before: the easy-to-use make shell commands that generate optimized and <a href="http://qooxdoo.org/documentation/user_manual/custom_builds">tailor-made custom applications</a> run much faster. Users get a jump-start for their application development by using the <a href="http://qooxdoo.org/documentation/user_manual/skeleton">skeletons</a> included in the qooxdoo SDK.</p>
+<p>We would like to thank all people involved in qooxdoo development for their help and contribution. Every user&#39;s <a href="http://qooxdoo.org/community/mailing_lists">feedback</a> is important to continuously improve qooxdoo as one of the most amazing JavaScript frameworks around. Enjoy!</p>
+<ul>
+<li><a href="http://qooxdoo.org/about/release_notes">Release Notes</a></li>
+<li><a href="http://qooxdoo.org/download">Downloads of SDK or pre-build package</a></li>
+</ul>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Zk55ooUa"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Zk55ooUa" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=BLxW0cEj"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=BLxW0cEj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=iaVRLUq8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=iaVRLUq8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=OFRBiERh"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=OFRBiERh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=qAiaGiVy"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=qAiaGiVy" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=kmVzh0Er"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=kmVzh0Er" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bgbKIHHd"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bgbKIHHd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=wAtcF7sW"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=wAtcF7sW" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-061-released/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>qooxdoo 0.6 released</title>
+ <link>http://news.qooxdoo.org/qooxdoo-06-released</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-06-released#comments</comments>
+ <pubDate>Thu, 07 Sep 2006 17:49:13 +0000</pubDate>
+ <dc:creator>Sebastian</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/qooxdoo-06-released</guid>
+ <description><![CDATA[
+Here comes the most advanced qooxdoo version ever! qooxdoo 0.6 introduces namespaces as the most noticeable change. This step has been combined with a long thought-out and at the end well-structured directory layout.
+Integrated is one of the most advanced build systems. This new system allows you to generate [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Here comes the most advanced qooxdoo version ever! qooxdoo 0.6 introduces namespaces as the most noticeable change. This step has been combined with a long thought-out and at the end well-structured directory layout.</p>
+<p>Integrated is one of the most advanced build systems. This new system allows you to generate tailor-made user applications linked against the qooxdoo framework. You can even include your own project classes and optimize them along with qooxdoo. Using this new build system you can generate blazingly fast and highly optimized qooxdoo builds.</p>
+<p>A new ground-breaking qooxdoo-based API viewer was added to make software development with qooxdoo easier than ever before. Supposed to become every qooxdoo users&#39; number one resource, it shows all available packages, classes, properties and methods. All related information is connected by hyperlinks which gives you a highly convenient way to access the relevant information.</p>
+<p>Of course there are also new widgets. A new advanced table widget has been introduced which is a virtual list view component that allows to handle many thousands of entries. Its features also make it possible to dynamically load the data from a remote server (using RPC for example). A splitpane - one of the long-awaited widgets - is now included. Full-blown logging capabilities featuring various appenders are available as well.</p>
+<p>There are a lot more changes and enhancements. For details please take a look at <a href="http://qooxdoo.org/about/release_notes">the release notes</a>. Migration support simplifies the switch from the last qooxdoo release 0.5.3. <a href="http://qooxdoo.org/download">qooxdoo 0.6</a> is the perfect framework to build highly-interactive web applications. Why don&#39;t you start now? <a href="http://qooxdoo.org/download">Just download qooxdoo today!</a></p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=onwQzIon"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=onwQzIon" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=jYfYN2gj"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=jYfYN2gj" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=0psukVw3"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=0psukVw3" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=eXdvErgL"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=eXdvErgL" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=KM4zclIk"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=KM4zclIk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=hfgM1jFS"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=hfgM1jFS" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=LGUxEmi5"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=LGUxEmi5" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=qz5zRqV5"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=qz5zRqV5" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-06-released/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>Introduce new tree compiler</title>
+ <link>http://news.qooxdoo.org/introduce-new-tree-compiler</link>
+ <comments>http://news.qooxdoo.org/introduce-new-tree-compiler#comments</comments>
+ <pubDate>Thu, 31 Aug 2006 16:02:27 +0000</pubDate>
+ <dc:creator>Sebastian</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Development</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/introduce-new-tree-compiler</guid>
+ <description><![CDATA[
+Another step forward to highly optimized applications based on qooxdoo: I would like to introduce the tree &#34;compiler&#34;. The tree compiler is able to &#34;compile&#34; a syntax tree (generated by treegenerator.py which uses the tokenizer.py) back to optimized JavaScript code. Its feature set is comparable to the old [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Another step forward to highly optimized applications based on qooxdoo: I would like to introduce the tree &quot;compiler&quot;. The tree compiler is able to &quot;compile&quot; a syntax tree (generated by treegenerator.py which uses the tokenizer.py) back to optimized JavaScript code. Its feature set is comparable to the old compiler, which was directly based on the result of the tokenizer.py script. It completely removes comments, whitespaces and other optional stuff from the original JavaScript code. </p>
+<p>This tree compiler is an important step, because it will allow us to do the following awesome things in the future:</p>
+<ul>
+<li>Remove complete methods (debug statements, &#8230;)</li>
+<li>Remove cross-browser constructions and generate a version for each browser/engine.</li>
+<li>Compress variable names</li>
+<li>Lay out strings and reduce usage of simple constants (like &quot;auto&quot;, &quot;100%&quot;, &#8230;) for considerable IE performance improvements</li>
+<li>Obfuscate the whole application (variable, function and class names)</li>
+</ul>
+<p>etc.</p>
+<p>Now the interesting part: The tree compiler is the default from now on. It is already available in SVN and will be in the final release of qooxdoo 0.6. The tree compiler was tested against qooxdoo and another big internal project so we think it&#39;s quite stable already. It may not be free of bugs however, but I&#39;m happy to fix bugs as fast as you can report them <img src='http://news.qooxdoo.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
+<p>If you have problems with this new compiler, you can use the old one using the &quot;&#8211;use-token-compiler&quot; argument (generator.py). Each Makefile which is included in qooxdoo, has a new variable (OLDCOMPILER) in the first lines of the file which lets you select the compiler (simply set it to &quot;true&quot;).</p>
+<p>I hope you enjoy this new era of JavaScript optimization. Kudos to Til - without the treegenerator.py developed by him, qooxdoo would maybe not have seen such a tree-based optimizer.</p>
+<p>You can immediately test the new compiler. Its results can also been seen online in <a href="http://qooxdoo.org/demo">the online demos</a> and <a href="http://api.qooxdoo.org">the API viewer</a>.</p>
+<p>For all SDK/source version users: Please make sure to delete the directory &quot;.cache&quot;. A simple &quot;make distclean&quot; will do this for you.</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=IY1PzpQT"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=IY1PzpQT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bQM4qh6n"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bQM4qh6n" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=xNREhjUN"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=xNREhjUN" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=WRp5C951"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=WRp5C951" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=1jl7qoQY"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=1jl7qoQY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=PSL1b5Rt"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=PSL1b5Rt" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=mGL5WaXu"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=mGL5WaXu" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=e3rRUVoh"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=e3rRUVoh" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/introduce-new-tree-compiler/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>qooxdoo 0.6 (Release Candidate 1) available</title>
+ <link>http://news.qooxdoo.org/qooxdoo-06-release-candidate-1-available</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-06-release-candidate-1-available#comments</comments>
+ <pubDate>Sat, 19 Aug 2006 02:31:26 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/qooxdoo-06-release-candidate-1-available</guid>
+ <description><![CDATA[
+Many aspects of qooxdoo have been improved to make it an even more professional and complete JavaScript framework.
+A lot of issues, that have been brought up and discussed on the mailing list before, have been addressed. Some of the most noticable additions include a qooxdoo-based viewer for the [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>Many aspects of qooxdoo have been improved to make it an even more professional and complete JavaScript framework.</p>
+<p>A lot of issues, that have been brought up and discussed on the mailing list before, have been addressed. Some of the most <a href="http://qooxdoo.org/documentation/improvements_for_qooxdoo_0.6">noticable additions</a> include a qooxdoo-based viewer for the auto-generated API documentation, a more powerful virtual list view and a smart build process that makes optimizing, compressing, linking and deployment of custom applications a snap.</p>
+<p>A Release Candidate 1 is now available for <a href="http://qooxdoo.org/download">easy download</a>. That way people can immediately start to get themselves familiar with the most important improvements. </p>
+<p>We would like to thank all users, contributors and fellow developers for their ongoing help and support. Keep up the good work!</p>
+<p><a href="http://demo.qooxdoo.org">Try online demos</a></p>
+<p><a href="http://digg.com/software/qooxdoo_0_6_Release_Candidate_1_available">Digg this</a>&nbsp;</p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=jvtn1dh2"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=jvtn1dh2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=9WhvLamK"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=9WhvLamK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=FpMP6QAZ"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=FpMP6QAZ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=HjpVjKW8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=HjpVjKW8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=vPJyRCRJ"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=vPJyRCRJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=5pCaV3g8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=5pCaV3g8" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=R1Pi8XSF"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=R1Pi8XSF" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=s9FAqx6S"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=s9FAqx6S" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-06-release-candidate-1-available/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>Branch “namespaces” discontinued</title>
+ <link>http://news.qooxdoo.org/branch-namespaces-discontinued</link>
+ <comments>http://news.qooxdoo.org/branch-namespaces-discontinued#comments</comments>
+ <pubDate>Wed, 16 Aug 2006 21:38:12 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/use-trunk-instead-of-namespaces-branch</guid>
+ <description><![CDATA[
+IMPORTANT: Until recently the major development work towards the next release 0.6 has been done in a development branch named &#34;namespaces&#34;. This branch is now discontinued. Its content has been transfered into the SVN trunk.
+Future development of qooxdoo will concentrate on changes made in the trunk. Anyone interested [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>IMPORTANT: Until recently the major development work towards the next release 0.6 has been done in a development branch named &quot;namespaces&quot;. This branch is now discontinued. Its content has been transfered into the SVN trunk.</p>
+<p>Future development of qooxdoo will concentrate on changes made in the trunk. Anyone interested in an up-to-date version of the framework should simply <a href="http://qooxdoo.org/documentation/user/checkout_from_svn">checkout the latest revision of the SVN trunk</a> . Clearly, these snapshots are not expected to be stable enough for production use. They are not even supposed to be functional at all. It may happen that the trunk is broken for not only hours (delibaretely) but even days (rather by accident). Think of the trunk as a permanent work-in-progress that after potentially unstable phases finally leads to the next official release.</p>
+<p>The content of the previous SVN trunk has been moved to a branch named &quot;legacy_0_5_x&quot;. This branch may see some changes, particularly bugfixes and backports of modifications made in the trunk. Please do not expect many substantial improvements in this 0.5 line of qooxdoo, though. There may be a release 0.5.4 sometime, but this clearly depends on user contribution for this now &quot;old&quot; line of qooxdoo.</p>
+<p>Please note, that the existing documentation has still to be updated to reflect the switch from the &quot;namespaces&quot; branch to the trunk. Information formerly specific to the &quot;namespaces&quot; branch should now be valid for the trunk.</p>
+<p>We are getting closer to qooxdoo 0.6&nbsp; <img src='http://news.qooxdoo.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=c2oS4gbi"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=c2oS4gbi" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Didl6LAR"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Didl6LAR" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=DiHnHveW"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=DiHnHveW" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=AUWodtyY"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=AUWodtyY" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Aw6D7Zyp"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Aw6D7Zyp" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=kUraOsvP"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=kUraOsvP" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=7H4Jc2VJ"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=7H4Jc2VJ" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bWYU5yHV"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bWYU5yHV" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/branch-namespaces-discontinued/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>Planned Improvements for qooxdoo 0.6</title>
+ <link>http://news.qooxdoo.org/planned-improvements-for-qooxdoo-06</link>
+ <comments>http://news.qooxdoo.org/planned-improvements-for-qooxdoo-06#comments</comments>
+ <pubDate>Thu, 10 Aug 2006 09:05:40 +0000</pubDate>
+ <dc:creator>Andreas Ecker</dc:creator>
+
+ <category>Announcements</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/planned-improvements-for-qooxdoo-06</guid>
+ <description><![CDATA[
+There is an extended update of an older post with respect to new features and modifications that are currently being implemented.
+All interested qooxdoo users are welcome to bring themselves up-to-date and are invited to get involved in qooxdoo development. It takes not more than checking-out qooxdoo from [...]]]></description>
+ <content:encoded><![CDATA[<p><?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body>
+<p>There is an <a href="http://qooxdoo.org/documentation/improvements_for_qooxdoo_0.6">extended update</a> of an older post with respect to new features and modifications that are currently being implemented.</p>
+<p>All interested qooxdoo users are welcome to bring themselves up-to-date and are invited to get involved in qooxdoo development. It takes not more than checking-out qooxdoo from a subversion repository and doing a &quot;make&quot; on your shell afterwards. </p>
+<p>A couple of significant differences that are being addressed are:</p>
+<ul>
+<li>Namespaces</li>
+<li>Documentation</li>
+<li>Building and Deployment</li>
+<li>Table</li>
+<li>Remote Procedure Calls&nbsp;</li>
+</ul>
+<p> </body> </html>
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=5v7NltR5"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=5v7NltR5" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=28Nxb6gr"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=28Nxb6gr" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=au1dDM3I"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=au1dDM3I" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=Qh1RG75B"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=Qh1RG75B" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=is6ZeKJd"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=is6ZeKJd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=IEWlxTSe"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=IEWlxTSe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=MZTcg2Kn"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=MZTcg2Kn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=0hWzprwr"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=0hWzprwr" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/planned-improvements-for-qooxdoo-06/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>qooxdoo 0.5.3 released</title>
+ <link>http://news.qooxdoo.org/qooxdoo-053-released</link>
+ <comments>http://news.qooxdoo.org/qooxdoo-053-released#comments</comments>
+ <pubDate>Wed, 12 Jul 2006 09:09:27 +0000</pubDate>
+ <dc:creator>Sebastian</dc:creator>
+
+ <category>Announcements</category>
+
+ <category>Release</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/announcements/qooxdoo-053-released</guid>
+ <description><![CDATA[This is just a small release with some bugfixes for the users of any previous 0.5.x release. Also take a look at the release notes. Download the new version here at sourceforge.
+
+]]></description>
+ <content:encoded><![CDATA[<p>This is just a small release with some bugfixes for the users of any previous 0.5.x release. Also take a look at the <a href="http://qooxdoo.org/documentation/user/release_notes">release notes</a>. Download the new version <a href="http://sourceforge.net/project/showfiles.php?group_id=129854&#038;package_id=151847">here at sourceforge</a>.
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=ou9mifFX"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=ou9mifFX" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=8ZEMUWxe"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=8ZEMUWxe" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=JSsN4MH7"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=JSsN4MH7" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=MIoFJanB"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=MIoFJanB" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=ObKHscCV"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=ObKHscCV" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=UbVce4qb"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=UbVce4qb" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=zAeLNyw2"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=zAeLNyw2" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=k50Tl2Qd"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=k50Tl2Qd" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/qooxdoo-053-released/feed/</wfw:commentRss>
+ </item>
+ <item>
+ <title>Bugzilla mailing list</title>
+ <link>http://news.qooxdoo.org/bugzilla-mailing-list</link>
+ <comments>http://news.qooxdoo.org/bugzilla-mailing-list#comments</comments>
+ <pubDate>Mon, 19 Jun 2006 09:24:26 +0000</pubDate>
+ <dc:creator>Sebastian</dc:creator>
+
+ <category>Bugs</category>
+
+ <category>Mailing lists</category>
+
+ <guid isPermaLink="false">http://news.qooxdoo.org/uncategorized/bugzilla-mailing-list</guid>
+ <description><![CDATA[I&#8217;ve just registered and configured a new mailing list, which is used to monitor the bug activity. Bugs in qooxdoo are also used to manage feature additions and enhancement wishes.
+You can register yourself to always stay up-to-date with the further development of qooxdoo.
+
+]]></description>
+ <content:encoded><![CDATA[<p>I&#8217;ve just registered and configured a new <a href="http://lists.sourceforge.net/lists/listinfo/qooxdoo-bugs">mailing list</a>, which is used to monitor the bug activity. Bugs in <a href="http://qooxdoo.org">qooxdoo</a> are also used to manage feature additions and enhancement wishes.</p>
+<p>You can <a href="http://lists.sourceforge.net/lists/listinfo/qooxdoo-bugs">register yourself</a> to always stay up-to-date with the further development of qooxdoo.
+</p>
+
+<div class="feedflare"><a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=K0Py8qhO"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=K0Py8qhO" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=jS2WTLmd"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=jS2WTLmd" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=bEAB9eQG"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=bEAB9eQG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=RnriB89x"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=RnriB89x" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=XRTQ94fT"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=XRTQ94fT" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=TzV4EYJn"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=TzV4EYJn" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=e6upeVfr"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=e6upeVfr" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/qooxdoo/news/content?a=kU4viCW8"><img src="http://feeds.feedburner.com/~f/qooxdoo/news/content?i=kU4viCW8" border="0"></img></a></div>]]></content:encoded>
+ <wfw:commentRss>http://news.qooxdoo.org/bugzilla-mailing-list/feed/</wfw:commentRss>
+ </item>
+ </channel>
+</rss><!-- Dynamic Page Served (once) in 0.658 seconds -->
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/safari.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/safari.xml
new file mode 100644
index 0000000000..9fc3180811
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/safari.xml
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- generator="wordpress/1.5.1.2" -->
+<rss version="2.0"
+ xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ xmlns:wfw="http://wellformedweb.org/CommentAPI/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+>
+
+<channel>
+ <title>Surfin' Safari</title>
+ <link>http://webkit.org/blog</link>
+ <description>All about WebKit development</description>
+ <pubDate>Sat, 18 Nov 2006 22:18:02 +0000</pubDate>
+ <generator>http://wordpress.org/?v=1.5.1.2</generator>
+ <language>en</language>
+
+ <item>
+ <title>Rob Buis is a WebKit Reviewer</title>
+ <link>http://webkit.org/blog/?p=82</link>
+ <comments>http://webkit.org/blog/?p=82#comments</comments>
+ <pubDate>Sat, 18 Nov 2006 22:17:52 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=82</guid>
+ <description><![CDATA[ Rob Buis is now a qualified WebKit reviewer. Rob was one of the main driving forces behind ksvg2 and kcanvas, along with Nikolas Zimmerman. The code from these libraries has been integrated into WebKit to provide fully integrated HTML/SVG support. Since then, Rob has submitted many WebKit patches for SVG and in many other areas, [...]]]></description>
+ <content:encoded><![CDATA[ <p>Rob Buis is now a qualified WebKit reviewer. Rob was one of the main driving forces behind ksvg2 and kcanvas, along with Nikolas Zimmerman. The code from these libraries has been integrated into WebKit to provide fully integrated HTML/SVG support. Since then, Rob has submitted many WebKit patches for SVG and in many other areas, including DOM, CSS, graphics support and general refactoring.</p>
+ <p>Please join me in congratulating Rob.
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=82</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Google Web Toolkit 1.2 Uses WebKit</title>
+ <link>http://webkit.org/blog/?p=81</link>
+ <comments>http://webkit.org/blog/?p=81#comments</comments>
+ <pubDate>Sat, 18 Nov 2006 08:59:10 +0000</pubDate>
+ <dc:creator>aroben</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=81</guid>
+ <description><![CDATA[ Google has just released version 1.2 of the Google Web Toolkit (GWT) with full Mac OS X support provided by WebKit. GWT allows web developers to create shiny AJAX web applications entirely in Java, which GWT compiles to JavaScript. While Mac users were able to use the GWT compiler in previous versions, they couldn&#8217;t use [...]]]></description>
+ <content:encoded><![CDATA[ <p>Google has just <a href="http://googlewebtoolkit.blogspot.com/2006/11/its-official-gwt-12-released.html" title="It's official: GWT 1.2 released">released version 1.2</a> of the <a href="http://code.google.com/webtoolkit/" title="Google Web Toolkit">Google Web Toolkit</a> (GWT) with full Mac OS X support provided by WebKit. GWT allows web developers to create shiny AJAX web applications entirely in Java, which GWT compiles to JavaScript. While Mac users were able to use the GWT compiler in previous versions, they couldn&#8217;t use GWT&#8217;s hosted browser to debug their web apps. WebKit has made it possible for Google to bring these development tools to the Mac, and, as a surprise Mac-only bonus, web developers using GWT get to use the <a href="http://webkit.org/blog/?p=41" title="Introducing the Web Inspector">Web Inspector</a>, too!
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=81</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Zack Rusin is a WebKit Reviewer for the Qt Port</title>
+ <link>http://webkit.org/blog/?p=79</link>
+ <comments>http://webkit.org/blog/?p=79#comments</comments>
+ <pubDate>Thu, 16 Nov 2006 02:32:07 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=79</guid>
+ <description><![CDATA[ Zack Rusin is now a qualified reviewer for Qt platform code in WebKit. Although he has not yet submitted many patches to WebKit as such, he has a long history working with KHTML and did much of the Unity porting work originally. As such, he is likely one of the best reviewers for Qt platform [...]]]></description>
+ <content:encoded><![CDATA[ <p>Zack Rusin is now a qualified reviewer for Qt platform code in WebKit. Although he has not yet submitted many patches to WebKit as such, he has a long history working with KHTML and did much of the Unity porting work originally. As such, he is likely one of the best reviewers for Qt platform code. Congrats, Zack, and thank you.
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=79</wfw:commentRSS>
+ </item>
+ <item>
+ <title>The Safari Team&#8217;s Favorite Websites</title>
+ <link>http://webkit.org/blog/?p=77</link>
+ <comments>http://webkit.org/blog/?p=77#comments</comments>
+ <pubDate>Tue, 07 Nov 2006 03:00:46 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=77</guid>
+ <description><![CDATA[ Usually this blog has serious content about WebKit. But one of the great things about the web is that it&#8217;s actually lots of fun.
+To give you a bit of the flavor of the Safari/WebKit Team&#8217;s personality, here are a few of our favorite websites.
+Please post some of your favorite websites in the comments.
+ Apple Stuff
+
+ Daring Fireball [...]]]></description>
+ <content:encoded><![CDATA[ <p>Usually this blog has serious content about WebKit. But one of the great things about the web is that it&#8217;s actually lots of fun.<br />
+To give you a bit of the flavor of the Safari/WebKit Team&#8217;s personality, here are a few of our favorite websites.<br />
+Please post some of <em>your</em> favorite websites in the comments.</p>
+ <h4>Apple Stuff</h4>
+ <ul>
+ <li><a href="http://daringfireball.net/">Daring Fireball &lt;http://daringfireball.net/&gt;</a></li>
+ <li><a href="http://crazyapplerumors.com/">Crazy Apple Rumors &lt;http://crazyapplerumors.com/&gt;</a></li>
+ </ul>
+ <h4>News &#038; Information</h4>
+ <ul>
+ <li><a href="http://digg.com/">Digg &lt;http://digg.com/&gt;</a></li>
+ <li><a href="http://wikipedia.org/">Wikipedia &lt;http://wikipedia.org/&gt;</a></li>
+ <li><a href="http://valleywag.com/">Valleywag &lt;http://www.valleywag.com/&gt;</a></li>
+ <li><a href="http://slate.com/">Slate &lt;http://slate.com/&gt;</a></li>
+ </ul>
+ <h4>Media &#038; Celebrities</h4>
+ <ul>
+ <li><a href="http://televisionwithoutpity.com/">Television Without Pity &lt;http://televisionwithoutpity.com/&gt;</a></li>
+ <li><a href="http://aintitcool.com/">Ain&#8217;t it Cool News &lt;http://aintitcool.com/&gt;</a></li>
+ <li><a href="http://imdb.com/">The Internet Movie Database &lt;http://imdb.com/&gt;</a></li>
+ <li><a href="http://thesuperficial.com/">The Superficial &lt;http://thesuperficial.com/&gt;</a></li>
+ <li><a href="http://www.apple.com/trailers/">Apple Movie Trailers &lt;http://www.apple.com/trailers/&gt;</a></li>
+ </ul>
+ <h4>Amusement</h4>
+ <ul>
+ <li><a href="http://cuteoverload.com/">Cute Overload! &lt;http://cuteoverload.com/&gt;</a></li>
+ <li><a href="http://www.theonion.com/">The Onion &lt;http://www.theonion.com/&gt;</a></li>
+ <li><a href="http://youtube.com/">YouTube &lt;http://youtube.com/&gt;</a></li>
+ <li><a href="http://xfm.co.uk/article.asp?id=3673">Ricky Gervais Podcast &lt;http://xfm.co.uk/article.asp?id=3673&gt;</a></li>
+ <li><a href="http://homestarrunner.com/">Homestar Runner &lt;http://homestarrunner.com/&gt;</a></li>
+ <li><a href="http://spamusement.com/">Spamusement &lt;http://spamusement.com/&gt;</a></li>
+ </ul>
+ <h4>Communication</h4>
+ <ul>
+ <li><a href="http://www.facebook.com/">The Facebook &lt;http://www.facebook.com/&gt;</a></li>
+ <li><a href="http://mail.google.com/">GMail &lt;http://mail.google.com/&gt;</a></li>
+ </ul>
+ <h4>Shameless Nerdery</h4>
+ <ul>
+ <li><a href="http://xkcd.com/">xkcd &lt;http://xkcd.com/&gt;</a></li>
+ <li><a href="http://worldofwarcraft.com/">World of Warcraft Community Site &lt;http://worldofwarcraft.com/&gt;</a></li>
+ <li><a href="http://build.webkit.org/">WebKit Buildbot &lt;http://build.webkit.org/&gt;</a> - but only when it&#8217;s green </li>
+ </ul>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=77</wfw:commentRSS>
+ </item>
+ <item>
+ <title>ADC Article about Apple Nightly Builds</title>
+ <link>http://webkit.org/blog/?p=78</link>
+ <comments>http://webkit.org/blog/?p=78#comments</comments>
+ <pubDate>Sat, 04 Nov 2006 02:33:23 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=78</guid>
+ <description><![CDATA[ Apple Developer Connection has posted an article on using nightly builds. Most of this content won&#8217;t be news to people who are already using nightlies. But it might be of interest to web developers and application developers who have not tried nightlies yet. There is also some interesting info about canvas changes.
+
+]]></description>
+ <content:encoded><![CDATA[ <p>Apple Developer Connection has posted an article on <a href="http://developer.apple.com/opensource/internet/nightlywebkit.html">using nightly builds</a>. Most of this content won&#8217;t be news to people who are already using <a href="http://nightly.webkit.org">nightlies</a>. But it might be of interest to web developers and application developers who have not tried nightlies yet. There is also some interesting info about canvas changes.
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=78</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Sam Weinig is a WebKit Reviewer</title>
+ <link>http://webkit.org/blog/?p=76</link>
+ <comments>http://webkit.org/blog/?p=76#comments</comments>
+ <pubDate>Wed, 01 Nov 2006 01:00:05 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=76</guid>
+ <description><![CDATA[ Sam Weinig is now a qualified WebKit reviewer. Sam has done a lot of coding in different areas of WebKit, including large refactoring changes and coding style cleanup, as well as large projects like autogenerating the Objective-C DOM bindings. At this point, he probably knows the coding style guidelines better than most of the existing [...]]]></description>
+ <content:encoded><![CDATA[ <p>Sam Weinig is now a qualified WebKit reviewer. Sam has done a lot of coding in different areas of WebKit, including large refactoring changes and coding style cleanup, as well as large projects like autogenerating the Objective-C DOM bindings. At this point, he probably knows the coding style guidelines better than most of the existing reviewers. And now you get to bug him to review your patches.</p>
+ <p>Please join me in congratulating Sam.</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=76</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Optimizing Page Load Time (and a little about the Debug menu)</title>
+ <link>http://webkit.org/blog/?p=75</link>
+ <comments>http://webkit.org/blog/?p=75#comments</comments>
+ <pubDate>Tue, 31 Oct 2006 06:28:04 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=75</guid>
+ <description><![CDATA[ We don&#8217;t usually just repost content from other blogs here. But a lot of web developers seem to read this site, and those of us who work on WebKit are totally into loading web pages as fast as possible. With that in mind, here&#8217;s a great article on Optimizing Page Load Time. I recommend reading [...]]]></description>
+ <content:encoded><![CDATA[ <p>We don&#8217;t usually just repost content from other blogs here. But a lot of web developers seem to read this site, and those of us who work on WebKit are totally into loading web pages as fast as possible. With that in mind, here&#8217;s a great article on <a href="http://www.die.net/musings/page_load_time/">Optimizing Page Load Time</a>. I recommend reading and applying much of the advice here. However, I&#8217;ll note that we have experimented with using HTTP pipelining for Safari in the past, too many major servers gave garbage results in the face of it. While we may periodically re-evaluate this, we are not holding back on it out of spite or anything.</p>
+ <p>Another tip you might find handy as a web developer is the &#8220;Show Page Load Test Window&#8221; option in the Safari Debug menu. You can turn on the Debug menu by typing <code>defaults write com.apple.Safari IncludeDebugMenu YES</code> at a shell prompt, and then restarting Safari. This menu includes a number of rough debugging tools that we created mainly for browser testing, but you may find some of them handy for web development. The page load test in particular is interesting because it measures page load time in a more precise way than either onload timing or just using a stopwatch. If you change the &#8220;Suite&#8221; pop-up menu to &#8220;URL&#8221;, you can type the URL of your choice and get a fairly precise time for loading it. If you empty the cache first, you can get an uncached time.</p>
+ <p>I recommend trying this a couple of times as you test your site. We&#8217;ve found that it&#8217;s a lot easier to improve performance when you have a precise way to measure it.</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=75</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Adobe Apollo Uses WebKit</title>
+ <link>http://webkit.org/blog/?p=74</link>
+ <comments>http://webkit.org/blog/?p=74#comments</comments>
+ <pubDate>Mon, 30 Oct 2006 10:11:55 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=74</guid>
+ <description><![CDATA[ A few months ago, Adobe announced Apollo, a tool that lets you build desktop applications based on Flash and web technologies like HTML and JavaScript. A bunch of blog posts have features whizzy screenshots. This is pretty cool stuff, you can use all your web development skills to make slick looking desktop apps.
+ Even more exciting, [...]]]></description>
+ <content:encoded><![CDATA[ <p>A few months ago, Adobe announced <a href="http://labs.adobe.com/wiki/index.php/Apollo">Apollo</a>, a tool that lets you build desktop applications based on Flash and web technologies like HTML and JavaScript. A bunch of blog posts have features <a href="http://blog.digitalbackcountry.com/?p=75">whizzy screenshots</a>. This is pretty cool stuff, you can use all your web development skills to make slick looking desktop apps.</p>
+ <p>Even more exciting, Adobe has announced that Apollo <a href="http://casario.blogs.com/mmworld/2006/10/apollo_will_use.html">will use WebKit</a> as its HTML layout engine. Welcome to the world of WebKit, Adobe.</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=74</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Color Spaces</title>
+ <link>http://webkit.org/blog/?p=73</link>
+ <comments>http://webkit.org/blog/?p=73#comments</comments>
+ <pubDate>Sun, 22 Oct 2006 11:37:48 +0000</pubDate>
+ <dc:creator>hyatt</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=73</guid>
+ <description><![CDATA[ I was pointed to this article about color spaces in Web browsers. The ultimate point of the article, that it would be good for a Web browser to be &#8220;Color Smart&#8221;, i.e., to support not only embedded color profiles in images but also to correct unprofiled images to sRGB is a sound one. [...]]]></description>
+ <content:encoded><![CDATA[ <p>I was pointed to this article about <a href="http://regex.info/blog/photo-tech/color-spaces-page3">color spaces in Web browsers</a>. The ultimate point of the article, that it would be good for a Web browser to be &#8220;Color Smart&#8221;, i.e., to support not only embedded color profiles in images but also to correct unprofiled images to sRGB is a sound one. However, the author takes a few potshots at Web browsers on the Mac, and I thought I&#8217;d respond to make it clear what the technical hurdles are with this problem.</p>
+ <p>First of all, if you correct unprofiled images to sRGB, you have to correct all drawing to sRGB. This includes everything drawn by CSS (borders, backgrounds, text). This is not difficult to do under the hood, although it is difficult to do it with no performance regression in our benchmarks at all. In fact we even tried this during the Tiger development cycle (just correcting everything drawn to sRGB), but it slowed us down.</p>
+ <p>The big hurdle that we ran into, though, was with the drawing we did not control, namely the Flash plug-in. The problem is that designers specify colors in Flash and colors in CSS in the Web page, and they expect those colors to match. Because Flash&#8217;s drawing isn&#8217;t correcting to sRGB, if we did it in Safari, there would be color mismatches all over the place. These mismatches look far worse than if we just don&#8217;t correct at all.</p>
+ <p>(This mismatch with plug-ins is presumably the reason that this feature was not enabled by default in Mac IE.)</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=73</wfw:commentRSS>
+ </item>
+ <item>
+ <title>Safari Market Share Continues to Increase</title>
+ <link>http://webkit.org/blog/?p=71</link>
+ <comments>http://webkit.org/blog/?p=71#comments</comments>
+ <pubDate>Tue, 10 Oct 2006 20:23:16 +0000</pubDate>
+ <dc:creator>maciej</dc:creator>
+
+ <category>Uncategorized</category>
+ <guid>http://webkit.org/blog/?p=71</guid>
+ <description><![CDATA[ According to recent reports, Safari market share is still increasing. According to one survey, it&#8217;s up to 3.56%. The total including other WebKit-based browsers could be even higher, it&#8217;s hard to tell from the somewhat thin stats. It&#8217;s cool to see WebKit getting more and more users in any case.
+
+]]></description>
+ <content:encoded><![CDATA[ <p>According to recent reports, <a href="http://www.macnewsworld.com/rsstory/53528.html">Safari market share is still increasing.</a> According to one survey, it&#8217;s up to 3.56%. The total including other WebKit-based browsers could be even higher, it&#8217;s hard to tell from the somewhat thin stats. It&#8217;s cool to see WebKit getting more and more users in any case.
+</p>
+]]></content:encoded>
+ <wfw:commentRSS>http://webkit.org/blog/?feed=rss2&amp;p=71</wfw:commentRSS>
+ </item>
+ </channel>
+</rss>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/zimbra-atom.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/zimbra-atom.xml
new file mode 100644
index 0000000000..2a09b9118d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/feeds/zimbra-atom.xml
@@ -0,0 +1,699 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
+<title>Zimbra - Blog</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/" />
+<modified>2006-11-15T04:46:36Z</modified>
+<tagline>All things Zimbra</tagline>
+<id>tag:www.zimbra.com,2006:/blog//1</id>
+<generator url="http://www.movabletype.org/" version="3.2">Movable Type</generator>
+<copyright>Copyright (c) 2006, Kevin</copyright>
+<entry>
+<title>What&apos;s new in ZCS 4.5 Beta 1</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/11/whats_new_in_zc.html" />
+<modified>2006-11-15T04:46:36Z</modified>
+<issued>2006-11-15T04:12:42Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.129</id>
+<created>2006-11-15T04:12:42Z</created>
+<summary type="text/plain">We posted the first beta of Zimbra 4.5 this past Friday. Major new features of 4.5 include complex password enforcement, identities, personal distro lists&apos;s, server performance improvements, backup/restore in the admin console, a search builder in the admin console, user-set...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>We <a href="http://www.zimbra.com/forums/showthread.php?t=5380">posted</a> the first beta of Zimbra 4.5 this past Friday.</p>
+
+<p>Major new features of 4.5 include complex password enforcement, identities, personal distro lists's, server performance improvements, backup/restore in the admin console, a search builder in the admin console, user-set default fonts for HTML compose, an upgrade to use MySQL 5.0, and a Lotus Domino migration wizard. More details can be found in the <a href="http://www.zimbra.com/pdf/Zimbra%20OS%204.5%20Beta%201%20Release%20Notes.pdf">beta release notes</a>.</p>]]>
+
+</content>
+</entry>
+<entry>
+<title>How much data does Zimbra Mobile use?</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/11/how_much_data_does_zimbra_mobile_use.html" />
+<modified>2006-11-15T04:11:35Z</modified>
+<issued>2006-11-15T03:49:42Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.128</id>
+<created>2006-11-15T03:49:42Z</created>
+<summary type="text/plain">Lots of people have asked how much data Zimbra Mobile uses over the wire. Just got my Cingular bill so thought I&apos;d post a screen shot to help explain. ...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Lots of people have asked how much data <a href="http://www.zimbra.com/products/zimbra_mobile.html">Zimbra Mobile</a> uses over the wire. Just got my Cingular bill so thought I'd post a screen shot to help explain. </p>]]>
+<![CDATA[<p>This is just a snapshot of one day Nov 7th and the total is for the previous 30days. My Nokia E61 is configured to sync every 15min from 8am -> 8pm 7days a week and then every 4hrs overnight (8pm->8am) On avg each check for mail, calendar, and contacts consumes ~20KB which turns out to be about 1.3MB per day or ~40MB per month. Cingular has a $19.99 Media Max plan that gives you unlimited data and 200 txt msgs so it works out pretty well.</p>
+
+<p><img alt="Zimbra Mobile Data Usage" src="http://www.zimbra.com/blog/archives/images/Picture%209.png" width="671" height="796" /><br />
+</p>]]>
+</content>
+</entry>
+<entry>
+<title>Taking Zimbra Offline</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/11/taking_zimbra_offline.html" />
+<modified>2006-11-09T19:43:13Z</modified>
+<issued>2006-11-09T17:32:10Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.127</id>
+<created>2006-11-09T17:32:10Z</created>
+<summary type="text/plain">Zimbra users have been asking for how they can take the Zimbra AJAX UI offline. Today at Web 2.0 we demo&apos;d this for the first time. ...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Zimbra users have been asking for how they can take the Zimbra AJAX UI offline. Today at Web 2.0 we demo'd this for the first time. </p>]]>
+<![CDATA[<p> The design goal is to have the same user experience with Zimbra both online and offline. Technically the Zimbra Offline client is the same AJAX client UI but now connecting to a local sync'd cache of the data and more importantly the ability to search, tag, organize, etc without network access. The two way sync of mail, calendar, contacts, and documents will allow Zimbra user's to take their collaboration data together with the Zimbra AJAX experience with them on the road or in places without a network connection and when they come back online - all of the changes made while offline (like composing, deleting, moving, creating messages, contacts, events or folders) are sync'd back to the cloud. Just like traditional offline mail clients - messages pending to be sent are stored in an Outbox where you can edit and view them until re-connected. You'll notice in the screenshots that both POP accounts and RSS feed folders are sync'd when in offline mode just as when online. RSS folders have been part of Zimbra for a while. POP aggregation will be part of our next major release and IMAP will be added shortly after that. Mail identities allows you to respond with the FROM and REPLY-TO addresses that the mail come with - responding to mail POP'd from gmail; Zimbra will automatically set the FROM address to your @gmail.com account. This feature is also useful for people who would like to respond as support@company.com when responding on behalf of a support team mail list for example. Mail identities will also be part of Zimbra's next major release. Watch this space for more on the architecture of the offline sync cache - meanwhile below are some screenshots. The beta version of the offline client for email and contacts will be available in Q4. </p>
+
+<p><img alt="Zimbra Outbox" src="http://www.zimbra.com/blog/archives/images/Picture%201.png" width="356" height="244" /><br/></p>
+
+<p><img alt="Zimbra Offline Compose" src="http://www.zimbra.com/blog/archives/images/Picture%202.png" width="713" height="450" /><br/></p>
+
+<p><img alt="Zimbra Offline POP accounts" src="http://www.zimbra.com/blog/archives/images/Picture%203.png" width="511" height="462" /><br/></p>
+
+<p><img alt="Zimbra Offline Sync" src="http://www.zimbra.com/blog/archives/images/Picture%204.png" width="427" height="252" /><br/></p>
+
+<p><img alt="Zimbra Mail Identities" src="http://www.zimbra.com/blog/archives/images/Picture%205.png" width="666" height="482" /></p>
+
+<p></p>
+
+<p></p>]]>
+</content>
+</entry>
+<entry>
+<title>Busy week @ Zimbra</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/11/busy_week_zimbra.html" />
+<modified>2006-11-07T00:08:50Z</modified>
+<issued>2006-11-06T23:53:34Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.126</id>
+<created>2006-11-06T23:53:34Z</created>
+<summary type="text/plain">Several events going on this week. Satish, John and Greg will be at VMWorld where Satish will take part in tomorrow&apos;s keynote. Later this week at ISPCon I&apos;ll be on a panel - What the Web 2.0?. Last but not...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Several events going on this week. Satish, John and Greg will be at <a href="http://www.vmware.com/vmworld/">VMWorld</a> where Satish will take part in <a href="https://www.vmware.com/vmworld/agenda_keynotes.html">tomorrow's keynote</a>. Later this week at <a href="http://www.ispcon.com/">ISPCon</a> I'll be on a panel - <a href="http://www.ispcon.com/conference/sessionsbyday.php#E6">What the Web 2.0?</a>. Last but not least <a href="http://www.web2con.com/cs/web2006/view/e_spkr/2441">Satish</a> will be back on the main stage at <a href="http://www.web2con.com/">Web 2.0</a>. For those who missed it last year; <a href="http://blogsearch.google.com/blogsearch?hl=en&q=zimbra+web+2.0&ie=UTF-8&as_maxm=11&as_miny=2005&as_maxy=2005&as_minm=10&as_mind=1&as_maxd=1&as_drrb=b&ctz=480&c1cr=10%2F1%2F2005&c2cr=11%2F1%2F2005&btnD=Go">Zimbra launched at Web 2.0</a>.</p>]]>
+
+</content>
+</entry>
+<entry>
+<title>The Ajax Experience, Oct 23-25, Boston, MA</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/the_ajax_experi.html" />
+<modified>2006-11-02T20:10:26Z</modified>
+<issued>2006-10-29T19:08:04Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.125</id>
+<created>2006-10-29T19:08:04Z</created>
+<summary type="text/plain">Below are random thoughts on three days in Boston at The Ajax Experience. I gave a talk titled Ajax in the Enterprise....</summary>
+<author>
+<name>Conrad</name>
+<email>cdamon@zimbra.com</email></author>
+<dc:subject>Conrad Damon</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Below are random thoughts on three days in Boston at <br />
+<a href="http://www.theajaxexperience.com">The Ajax Experience</a>. I gave a talk titled <a href="http://www.theajaxexperience.com/s/show/59/slides/Conrad_Damon/Ajax_in_the_Enterprise.pdf">Ajax in the Enterprise</a>.</p>]]>
+<![CDATA[<p>... AOL was giving away T-shirts by the hundreds, in solid, bright colors with <br />
+words like "Geek" or "2.0" on them. Some conferencegoers walked away with <br />
+several, which wasn't discouraged - there seemed to be an endless supply. Every <br />
+time I walked by the booth I wanted ("want" isn't the right word, it's more the <br />
+primal lust for free stuff) to grab a shirt or two, when the last thing in the <br />
+world I need is more T-shirts. Eight years ago when I moved I gave 99 shirts, <br />
+most of them unworn, to the Salvation Army. These were garish and ugly, and <br />
+trying in AOL's typically disingenuous way to plug into geek culture. Plus, <br />
+there's the associated guilt of all those unopened CDs taking up landfill space. <br />
+Hence the little cartoon angel on my right shoulder. Of course, the little <br />
+cartoon devil on my left shoulder made himself heard: "Dude, it's FREE! Don't be <br />
+such a Herb! If you don't take one, someone else will get it. You've earned it. <br />
+And dude: it's FREE!" So it went, and every walk past the AOL booth became an <br />
+exercise in self-denial of something I didn't actually want at all, and the <br />
+thimbleful of pride I felt on passing by empty-handed made me feel like some sort of <br />
+lame modern-day ascetic.</p>
+
+<p>... speaking of AOL (I don't mean to pick on AOL, even the newly warm and fuzzy <br />
+AOL, but they make it really easy), one of their minions gave a keynote during <br />
+which he screened a movie where they went up to people on the street or in the <br />
+grocery store and asked them what they thought "Ajax" was. And OH MY GAWD (the <br />
+voice here should be Dr Cox from Scrubs), they thought it was a cleanser! What a <br />
+bunch of losers!</p>
+
+<p>Crikey.</p>
+
+<p>... really regret my get-out-of-Dodge trip planning, which made me miss Brendan <br />
+Eich's closing keynote on Javascript 2.</p>
+
+<p>... "stack" is the new "solution".</p>
+
+<p>... <a href="http://www.openqa.org/selenium/">Selenium</a>, a product for doing functional client <br />
+testing in an Ajax environment, got a lot of buzz. Our QA team is looking into it. They've had to <br />
+pound on Mercury's QTP pretty hard to get it to work with our client, and I'm hoping <br />
+Selenium will be way more straightforward.</p>
+
+<p>... the booths from some of the sponsors such as Google, Sun, and Ask were more<br />
+focused on recruiting than on demos, always a sign of a technology on its way up.</p>
+
+<p>... after the experts' panel on Monday night, I headed to the hotel bar and met <br />
+up with the Netflix crew. As a longtime Netflix member, I couldn't resist rattling on <br />
+about what I liked and disliked about their site and service. Not only did they <br />
+listen - brave souls - they bought me beer. The more beer I had in me, the more <br />
+clever and insightful I became, and I think they caught on to that.</p>
+
+<p>The Netflix UI makes for a great case study in how going from HTML to Ajax <br />
+can improve the user experience.</p>
+
+<p>... there is a bewildering array of Ajax toolkits out there, and at least two of <br />
+the presentations were overviews of frameworks. The space has exploded, and <br />
+sooner rather than later, it will contract. Documentation, often overlooked, <br />
+will be key to adoption. It's hard to bet against <br />
+<a href="http://www.dojotoolkit.org/">Dojo</a>, with its breadth, careful design, and technical impressiveness. <br />
+I heard good things about <a href="http://jquery.com/">jQuery</a>, and <a href="http://developer.yahoo.com/yui/">YUI</a> looks clean. For all-Java shops there's <br />
+<a href="http://code.google.com/webtoolkit/">GWT</a>, and possibly <a ref="http://getahead.ltd.uk/dwr">DWR</a>.</p>
+
+<p>... My ad hoc plan of attack, and reviews, in order of attendance:</p>
+
+<p>Leveraging Ajax for Enterprise Application Development - mostly good <br />
+content, somewhat awkwardly delivered. Best part was practical tips for shops <br />
+coming up to speed on Ajax.</p>
+
+<p>Javascript Exposed: There's a Real Programming Language in There (Pt 1), by <br />
+Glenn Vanderburg - had intended to go to Mahemoff's talk on design patterns, but <br />
+he didn't make it to the conference. Glenn's an engaging presenter, which eased <br />
+the fact that it was mostly a tutorial of what you'd find in the O'Reilly book. <br />
+Glenn did a good job of focusing on important bits of the language that are <br />
+often glossed, and I really liked his lists of what he believes the language <br />
+designers got right and wrong.</p>
+
+<p>Ruining the User Experience, by Aaron Gustafson - the scope of this presentation <br />
+was smaller than I had hoped. From the summary, I thought it would cover UI <br />
+idioms that have been made possible by Ajax but which don't improve the user <br />
+experience, but it was almost all about what to do when Javascript is<br />
+disabled.</p>
+
+<p>Frameworks Guide, by Nathaniel Schutta - came to this one as a refugee from a <br />
+TIBCO-centric talk on building desktop-like apps in Ajax. It was good to get an <br />
+overview, delivered capably and neutrally, since having developed our own <br />
+toolkit I'm not familiar with others.</p>
+
+<p>Intro to Dojo / Dojo in Depth, by Alex Russell - Dojo looks pretty awesome, and <br />
+Alex is super-smart. Dojo obviously goes beyond Ajax, and even within Ajax it <br />
+offers much more than widgets and neat effects. Their event system, the new <br />
+SVG/VML support, and XhrIframeRequest were highlights. I'll be looking soon into <br />
+using its package system to leverage deferred loading of ZCS components.</p>
+
+<p>IE7: From Ajax to RSS and More: How to Take Full Advantage, by Chris Wilson - <br />
+acutally: quite: interesting. IE7 will make app developers very happy, and app <br />
+maintainers very unhappy. It's really frightening to think of the untold numbers <br />
+of websites out there that rely on the many ways in which IE6 is broken (insert <br />
+truism about reaping what you sow). As much grief as they deservedly get, MS <br />
+appears to be committing to standards as far as its browser goes (thank you, <br />
+market forces). Best news for me is that they fixed the garbage collector, so <br />
+memory no longer leaks at the drop of a hat. They also fixed the SELECT <br />
+element's behavior with regard to z-index, the gzip caching problem, and untold <br />
+CSS bugs.</p>
+
+<p>JSON: The X in Ajax, by Douglas Crockford - the case for JSON is a strong one, <br />
+as XML is often overkill for shuttling data around. I love its simplicity and <br />
+compactness. Of particular interest: JSONRequest and a proposed MODULE tag to <br />
+address cross-domain security issues. Near the end there was an odd moment when <br />
+John Resig (jQuery) posed a reasonable-sounding question about whether JSON <br />
+performance scales well across large datasets when compared with XML, and the <br />
+immediate response was "Next question." Not sure what to conclude from that.</p>
+
+<p>Designing for Ajax, by Bill Scott - bailed on a performance talk that turned out <br />
+to be Gomez-centric and came here. Great presentation. Bill used Yahoo as well <br />
+as other sites to point out good and bad Ajax-enabled interaction patterns. <br />
+Makes me want to check out the Yahoo design patterns library.</p>
+
+<p>Case Study: Building Great UI, the Netflix Way, by Sean Kane - everyone loves <br />
+Hypnotoad, I mean Netflix. What was interesting here (aside from the obvious <br />
+fascination with the service) was how extensively they test in UI labs with <br />
+regular folks before rolling out changes, often trying out several possible <br />
+versions of a UI feature. It would be nice if we could eventually get real-world <br />
+data like that.</p>]]>
+</content>
+</entry>
+<entry>
+<title>Firefox 2 vs IE 7</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/firefox_2_vs_ie_1.html" />
+<modified>2006-10-25T23:56:26Z</modified>
+<issued>2006-10-25T21:33:29Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.124</id>
+<created>2006-10-25T21:33:29Z</created>
+<summary type="text/plain">Last week I posted an entry comparing IE 7 with Firefox 1.5 and the venerable IE 6. Lot&apos;s of folks have since asked for Firefox 2 to be added to the mix. The reason we didn&apos;t initially include Firefox 2...</summary>
+<author>
+<name>Ross</name>
+<email>ross@zimbra.com</email></author>
+<dc:subject>Ross Dargahi</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Last week I posted an <a href='http://www.zimbra.com/blog/archives/2006/10/ie_7_a_better_b.html'>entry</a> comparing IE 7 with Firefox 1.5 and the venerable IE 6. Lot's of folks have since asked for Firefox 2 to be added to the mix. The reason we didn't initially include Firefox 2 is because it was not at the time officially released and so we felt it unfair for it to be included. </p>]]>
+<![CDATA[<p>The graph below shows the cumulative time it took for IE 7 and Firefox 2 to execute the Zimbra Web Client (ZWC) peformance tests at various dates leading up to the final release of each browser. As can be seen, both IE and Firefox showed improvement in their final release, and so we think leaving Firefox 2 out of last week's tests was indeed the fair thing to do. </p>
+
+<p><a target='_new' href="http://www.zimbra.com/blog/archives/images/trend.jpg"><br />
+<img alt="trend.jpg" src="http://www.zimbra.com/blog/archives/images/trend.jpg" width="344" height="169" /></a></p>
+
+<p>So now that Firefox 2 has been officially released, how does if fare against IE 7? </p>
+
+<p>We ran each browser over a common set of Zimbra Web Client (ZWC) operations such as logging in, viewing messages, navigating around various folders, changing options, viewing contacts, and performing various calendar operations. As the graph below shows, Firefox 2 beat out IE 7 in just about every operation - sometimes by significant margins. </p>
+
+<p><a target="_new" href="http://www.zimbra.com/blog/archives/images/FF2vsIE7.jpg"><br />
+<img alt="FF2vsIE7.jpg" src="http://www.zimbra.com/blog/archives/images/FF2vsIE7.jpg" width="638" height="144" /></a></p>
+
+<p>We also tested Firefox 2 vs Firefox 1.5. As seen below, Firefox 2 has not made substantial performance improvements over Firefox 1.5, and has certainly not shown the same order of gain as IE 7 has over IE6.</p>
+
+<p><a target="_new" href="http://www.zimbra.com/blog/archives/images/FF2vsFF15.jpg" ><br />
+<img alt="FF2vsFF15.jpg" src="http://www.zimbra.com/blog/archives/images/FF2vsFF15.jpg" width="603" height="157" /></a></p>
+
+<p>I think the net result is that for highly JavaScript intensive AJAX applications such as the ZWC, Firefox is still the winner by quite a wide margin. Of course your mileage will vary depending on the type and footprint of your client.</p>
+
+<p>I would like to end by saying that we are able to present this data thanks to lots of hard work by Raja Rao of the Zimbra QA department who has spent many long hours building our AJAX client testing framework, and executing the performance tests against the various browsers.</p>]]>
+</content>
+</entry>
+<entry>
+<title>IE 7 vs IE 6</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/ie_7_a_better_b.html" />
+<modified>2006-10-19T18:12:50Z</modified>
+<issued>2006-10-19T18:13:00Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.123</id>
+<created>2006-10-19T18:13:00Z</created>
+<summary type="text/plain">Back in April I wrote an entry complaining about IE&apos;s performance as a Web 2.0 platform: &quot;From a Web 2.0 application developers perspective (developers who use a lot of JavaScript and DOM manipulation), IE 6 is plagued by a number...</summary>
+<author>
+<name>Ross</name>
+<email>ross@zimbra.com</email></author>
+<dc:subject>Ross Dargahi</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Back in April I wrote an <a href="http://www.zimbra.com/blog/archives/2006/04/post.html">entry</a> complaining about IE's performance as a Web 2.0 platform:</p>
+
+<p><i>"From a Web 2.0 application developers perspective (developers who use a lot of JavaScript and DOM manipulation), IE 6 is plagued by a number of well known problems such as its ability to readily leak memory. Regrettably, Microsoft's next release of Internet Explorer, IE 7, does little to resolve these issues."</i></p>
+
+<p>I am happy to say that I was wrong. </p>]]>
+<![CDATA[<p>Microsoft's IE team has clearly been hard at work on improving their browser's memory management and JavaScript performance. IE 7 has made some significant leaps forward based on some initial in house testing here at Zimbra. We are in general observing about a 2x performance improvement with IE 7 vs IE 6 when using the Zimbra Web Client (ZWC).</p>
+
+<p>As is well documented, IE 6 is notoriously bad at leaking memory, particularly due to circular references that include COM objects. The good news is that our tests indicate that this problem has been solved in IE 7. While in our test profile, it appears to consume more memory than Firefox, IE 7 seems to have solved the horrendous memory leaks exhibited in IE 6.</p>
+
+<p>We also looked at the performance of Firefox, IE 6, and IE 7 over a set of common ZWC operations such as logging in, viewing messages, navigating around various folders, viewing contacts, and performing various calendar operations. The graph below shows the relative performance of each browser against the other:</p>
+
+<p><a href="http://www.zimbra.com/blog/archives/images/browserperf.jpg" target="_new"><img alt="browserperf.jpg" src="http://www.zimbra.com/blog/archives/images/browserperf.jpg" width="499" height="130" /></a></p>
+
+<p>Again we see that across just about every operation, IE 7 performs better than IE 6; however, for the most part Firefox still beats out IE 7. When we looked at the sum total time it takes for all operations to be performed (admittedly a coarse grained metric), we noticed that IE 7 was about twice as fast as IE 6; however, Firefox was more than twice as fast as IE 7 and about four times faster than IE 6.</p>
+
+<p>In conclusion, IE 7 has made some quite significant improvements over IE 6, both in terms of performance and memory management; however, there is still room to improve - particularly against Firefox, a challenge I hope the IE team will be taking up.</p>]]>
+</content>
+</entry>
+<entry>
+<title>Zimbra Collaboration Suite 4.0.3 Released</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/zimbra_403_released.html" />
+<modified>2006-10-17T23:09:27Z</modified>
+<issued>2006-10-17T23:09:23Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.122</id>
+<created>2006-10-17T23:09:23Z</created>
+<summary type="text/plain">ZCS 4.0.3 includes fixes for 55 bugs and enhancements. It has significant improvements in calendar behavior and fixes a bug in Trash folder viewing that was troubling many folks. It also includes upgrade speed improvements. This allows the upgrade to...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>ZCS 4.0.3 includes fixes for 55 bugs and enhancements. It has significant improvements in calendar behavior and fixes a bug in Trash folder viewing that was troubling many folks. It also includes upgrade speed improvements. This allows the upgrade to take much better advantage of installs that have multiple disks available to MySQL.</p>
+
+<p><a title="Zimbra - Forums - Zimbra Collaboration Suite 4.0.3 Released" href="http://www.zimbra.com/forums/showthread.php?p=27503">Zimbra - Forums - Zimbra Collaboration Suite 4.0.3 Released</a></p>
+
+<p></p>]]>
+
+</content>
+</entry>
+<entry>
+<title>Thoughts on Office 2.0 (Reprise)</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/preliminary_tho.html" />
+<modified>2006-10-21T20:01:05Z</modified>
+<issued>2006-10-17T11:43:14Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.121</id>
+<created>2006-10-17T11:43:14Z</created>
+<summary type="text/plain">(FYI: I&apos;ve made some enhancements/corrections based on Zimbra&apos;s participation at the Office 2.0 Conference; pointer below. May or may not be worth a quick reread.) Yes, the &quot;2.0&quot; hype is getting out of hand. However, just as with Web 2.0,...</summary>
+<author>
+<name>Scott</name>
+<url>www.zimbra.com</url><email>scott.dietzen@zimbra.com</email></author>
+<dc:subject>Scott Dietzen</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>(FYI: I've made some enhancements/corrections based on Zimbra's participation at the Office 2.0 Conference; pointer below. May or may not be worth a quick reread.)</p>
+
+<p>Yes, the "2.0" hype is getting out of hand. However, just as with <a href="http://www.zimbra.com/blog/archives/2006/06/defining_web_20.html">Web 2.0</a>, the technology evolution we are participating in is sufficent to at least justify the discussion. So while I am still dubious about the Office 2.0 moniker, there is no doubt that the Web authoring, sharing, and collaboration technologies under the Web 2.0 umbrella are allowing us to do many of the things we used to do within proprietary Office 1.0 desktop applications, and to do so from any browser on the net. So before you dismiss Office 2.0 as yet another buzz word <em>du jour</em>, please consider some (modest) over-generalizations: </p>]]>
+<![CDATA[<p><strong>Office 1.0 Users: </strong>Power users (information workers/professionals) <br />
+<strong>Office 2.0 Users: </strong>"All hands" (most everyone who browses) </p>
+
+<p><strong>1.0 Model:</strong> Client-centric (desktop applications) <br />
+<strong>2.0 Model:</strong> Network-centric (web applications)</p>
+
+<p><strong>1.0 Sharing (in the small):</strong> Pass by value <em>(Email)</em>, pass by reference <em>(Public folders)</em><br />
+<strong>2.0 Sharing (in the large):</strong> Adds the ability to use the Internet to pass by value <em>(Email, VoIP, IM, ...) </em> and (effectively) by reference <em>(XHTML pages/hyperlinks, Wiki, Blogs, iCalendar/CalDAV, iTasks, WebDAV, ...)</em>, all with access control</p>
+
+<p><strong>1.0 Navigation (sans meta-data):</strong> <em>Folders </em><br />
+<strong>2.0 Navigation (with meta-data):</strong> <em>Hyperlinks, indexing & search, tagging, mash-ups …</em></p>
+
+<p><strong>1.0 Editing:</strong> <em>Via proprietary desktop applications; WYSIWYG with change tracking</em><br />
+<strong>2.0 Editing:</strong> <em>From any browser; WYSIWYG (via Ajax authoring) with versioning and history</em></p>
+
+<p><strong>1.0 Data types:</strong> Proprietary<br />
+<strong>2.0 Data types:</strong> Open <em>(XHMTL, ODF, microformats, XML such as via Service-Oriented Architecture/SOA, REST, SOAP, etc.)</em></p>
+
+<p><strong>1.0 Content:</strong> Relatively static, with intra-desktop dynamic components<br />
+<strong>2.0 Content:</strong> More dynamic <em>(including web application-generated content, SOA mash-ups, …)</em></p>
+
+<p><strong>1.0 Multi-document:</strong> <em>Object Linking & Embedding (OLE), Bonobo, …</em> <br />
+<strong>2.0 Multi-document:</strong> <em>Hyperlinks, <a href="http://www.zimbra.com/blog/archives/2006/04/zimbra_ale-ajax_linking_and_embedding.html">Ajax Linking & Embedding (ALE)</a>, mash-ups, ...</em></p>
+
+<p>(No doubt the above takes a rather expansive view of Office 2.0, but then again Office 1.0 arguably covered most all computer-assisted authoring of content. Please also note: The above content would have proved substantially more compelling in an HTML table authored, say, with a WYSIWYG Ajax editor, like that included within the Zimbra Documents applications.)</p>
+
+<p>All this is not to say that Office 2.0 can or should supercede Office 1.0---Zimbra spreadsheets, for example, will not support pivot tables any time soon. I believe our goal should <strong>not</strong> be to reproduce Office 1.0 functionality on a Web 2.0 platform, but rather to realize an easier to use (<em>a.k.a.</em> less complex) collaborative authoring and sharing model that scales with the Internet. Office 2.0 users should be able to (1) author content from anywhere; (2) appropriately reuse and adapt (mash up) content (both static and dynamic) already published on the Internet; and (3) securely collaborate with others in whatever <em>ad hoc</em> fashion best meets their needs. The fun with "Office 2.0" is that thanks to the maturing of the underlying <a href="http://www.zimbra.com/blog/archives/2006/06/defining_web_20.html">Web 2.0 technologies</a> and near universal success of the Internet, this vision is close to realization.</p>
+
+<p>One thing I'm not yet happy with is that the above description does not draw a very compelling line between Web 2.0 and Office 2.0. Some technologies are more obvious: for example, Ajax, RSS, and SOA/XML fit under Web 2.0, while Ajax authoring and ALE arguably fit more naturally under Office 2.0. Given the emphesis on collaboration and authoring inherent in the Web 2.0 definition, I think these two potential categories are going to be tough to keep separate. After all, both Office 1.0 and Web 2.0 are about authoring rich content---the difference is that the former is focused on the desktop and "sharing in the small", while the latter is targeting the network and "sharing in the large". Office 2.0 then may merely mean leveraging Web 2.0 technologies to do many/most (?) of the things we used to do in Office 1.0. </p>
+
+<p>(Some of this thinking came out our <a href="http://www.eu.socialtext.net/office20/index.cgi?apis_and_feeds_for_office_2_0">our panel session</a> at the <a href="http://www.office20con.com/conference.html">Office 2.0 Conference</a> in San Francisco, and our <a href="http://wanderingstan.com/2006-08-21/web_2_0_kongress_in_germany">Web 2.0 Kongress</a> session in Germany the day before. Just doing our bit to keep the airlines in the black :-).)</p>]]>
+</content>
+</entry>
+<entry>
+<title>Zimbra Collaboration Suite 4.0 Webinar</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/10/zimbra_40_webinar.html" />
+<modified>2006-10-05T02:35:45Z</modified>
+<issued>2006-10-01T23:07:51Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.120</id>
+<created>2006-10-01T23:07:51Z</created>
+<summary type="text/plain">Zimbra Collaboration Suite 4.0 Webinar When: Thurs, October 5th at 10am PST. Length: 60 minutes. Subject: Modern Collaboration with Zimbra Collaboration Suite (ZCS) 4.0 Overview: Fueled by demand for better productivity, the web is exploding as the primary communication medium...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p><a href="http://www.zimbra.com/about/webinars.html">Zimbra Collaboration Suite 4.0 Webinar</a><br />
+When:</p>
+
+<p>Thurs, October 5th at 10am PST. Length: 60 minutes.</p>
+
+<p>Subject: Modern Collaboration with Zimbra Collaboration Suite (ZCS) 4.0</p>
+
+<p>Overview:<br />
+Fueled by demand for better productivity, the web is exploding as the primary communication medium for the modern organization.</p>
+
+<p>ZCS leads the way, providing powerful next-generation messaging and collaboration.</p>
+
+<p>Join our CTO Scott Dietzen for this free live webinar to see:</p>
+
+<p> * How ZCS 4.0 is the right solution for today's collaboration demands<br />
+ * Discuss and demo features such as Zimbra Documents, Admin UI, Zimlets, Mobile device sync, Active Directory integration and more…<br />
+ * Why ZCS 4.0 enables organizations to realize the true benefits of an innovative and cost-effective collaboration solution.<br />
+ * Plus live Q & A</p>
+
+<p>Sign up:</p>
+
+<p>Please <a href="http://breeze58226024.breezecentral.com/e78552532/event/registration.html">register</a>; space is limited!</p>]]>
+
+</content>
+</entry>
+<entry>
+<title>Zimbra 4.0.2 released, Ubuntu preview release</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/09/zimbra_ubuntu_preview_release.html" />
+<modified>2006-09-26T06:11:30Z</modified>
+<issued>2006-09-26T05:48:24Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.119</id>
+<created>2006-09-26T05:48:24Z</created>
+<summary type="text/plain">We released Zimbra 4.0.2 today and there were a few extras that came along for the ride. First off the Fedora Core 5 build is now GA. We also added a new developer/preview release on Ubuntu. This has been a...</summary>
+<author>
+<name>Kevin</name>
+<url>www.zimbra.com</url><email>kevinh@zimbra.com</email></author>
+<dc:subject>Kevin Henrikson</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>We released Zimbra 4.0.2 today and there were a few extras that came along for the ride. First off the Fedora Core 5 build is now GA. We also added a new <a href="http://www.zimbra.com/community/downloads.html">developer/preview release</a> on <a href="http://www.ubuntu.com/">Ubuntu</a>. This has been a popular <a href="http://www.zimbra.com/forums/showthread.php?t=1644">hack</a> in our forums for sometime.</p>
+
+<p>Here's a sample of some of the other changes/fixes in 4.0.2:</p>
+
+<p>- perf improvements for IMAP (new MySQL indexes)<br />
+- > 2GB support in the Zimbra Outlook Connector<br />
+- i18n and some l10n for the Zimbra Outlook Connector<br />
+- disabling AS/AV causes mail deferral<br />
+- cursor fails to appear in Firefox<br />
+- mailbox quota page does not contain any entries<br />
+- several all day event and timezone bugs fixed</p>]]>
+
+</content>
+</entry>
+<entry>
+<title>Look Ma, No Mouse: Keyboard Navigation and Shortcuts in the Zimbra Collaboration Suite and The Kabuki Ajax Toolkit</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/09/look_ma_no_mous.html" />
+<modified>2006-09-13T07:28:26Z</modified>
+<issued>2006-09-13T07:25:00Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.118</id>
+<created>2006-09-13T07:25:00Z</created>
+<summary type="text/plain">Keyboard shortcuts and navigation are indispensable time savers for an application&apos;s frequent and power users. Who among us has not quickly learned the keyboard shortcuts for performing common tasks within an application that we use regularly? Unfortunately, one of the...</summary>
+<author>
+<name>Ross</name>
+<email>ross@zimbra.com</email></author>
+<dc:subject>Ross Dargahi</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>Keyboard shortcuts and navigation are indispensable time savers for an application's frequent and power users. Who among us has not quickly learned the keyboard shortcuts for performing common tasks within an application that we use regularly? </p>
+
+<p>Unfortunately, one of the more common complaints against web-based applications is that they are, in many instances, lacking when it comes to supporting keyboard shortcuts and navigation. Frankly, the lack of keyboard support (both shortcuts and navigation) is something that has annoyed me about the Zimbra Collaboration Suite (ZCS), and it is something that I have been wanting to add to both Kabuki (the Zimbra Ajax Toolkit) and the ZCS; however, I didn't want to just stuff in some basic keyboard shortcuts and call it a day. Instead, I wanted to have a go at implementing the same level of keyboard support that most traditional UI toolkits and desktop applications support. This actually turned out to involve quite a bit of work - for example, since only input elements may have focus (in most browsers) we needed to simulate and track focus for toolkit components which frequently have no native input element associated with them - but at the end of the day, I think it was worth the effort.</p>]]>
+<![CDATA[<p>So the good news is that Kabuki now provides a pretty rich keyboard model that in many ways approximates the level of support found in more traditional UI toolkits. Specifically, this includes support for a canonical focus model, customizable key bindings in UI widgets (not all of them just yet), as well as full support for tab group hierarchies for navigating native and toolkit visual components in an orderly fashion via the tab and arrow keys. Conrad (one of Zimbra's lead Ajax architects), took this work to the next level by implementing keyboard navigation and shortcuts throughout the ZCS and by improving the framework itself. As a result the ZCS now has significant keyboard support in version 4.0, about 80% coverage at the moment, and we are working towards making that even higher. Future work also includes normalized mappings among browsers (very high on our list), I18N support, and supporting custom user-defined bindings.</p>
+
+<p>The bottom line is that the ZCS now supports some pretty spiffy keyboard actions (over 100 of them) including:<br />
+<ul><li>Navigating among the various ZCS apps<br />
+<li>Navigation and selection within a list of items<br />
+<li>Composing and sending an email message<br />
+<li>Creating calendar appointments<br />
+<li>Switching among calendar views<br />
+<li>Creating new tags, folders, calendars, etc<br />
+<li>Popping up the Zimbra Assistant<br />
+<li>Changing views<br />
+<li>Popping up, interacting with, and dismissing context menus<br />
+</ul></p>
+
+<p>You can find a more complete list of supported keyboard events on the <a href="http://wiki.zimbra.com/index.php?title=Zimbra_Web_Client_Keyboard_Shortcuts ">Zimbra Wiki</a></p>
+
+<p>Now onto some of the more technical details on Zimbra's keyboard support. </p>
+
+<p>The keyboard management infrastructure is implemented in the DHTML Widget Toolkit (DWT), which is the Kabuki Ajax toolkit's UI framework. DWT consists of a component model, numerous widgets, an event model, drag and drop infrastructure, and now a keyboard shortcut and navigation model. DWT is loosely modeled after SWT. There are several elements that compose DWT's keyboard management framework:</p>
+
+<h4>Key Maps</h4><p>
+A key map is a set of key bindings. A key binding maps a key sequence to an action. For example, I may decide that "Ctrl+U" marks an email message as unread, or I may decide that a multi-key sequence such as "Ctrl+N" followed by the letter "M" will create a new mail message (Note that by default, there is a 750ms timeout between keys for a multiple-key sequence, though this is configurable via the DwtKeyboardMgr class described later).
+
+<p>DwtKeyMap is the base class for key maps and provides bindings for DWT widgets. Below is a snippet from DwtKeyMap's constructor showing the key bindings for some of the widgets. Note how key sequences bind to the symbolic constants representing keyboard actions:</p>
+
+<pre>
+function DwtKeyMap() {
+ [snip...]
+ this._map["DwtDialog"] = {
+ "Enter": DwtKeyMap.ENTER,
+ "Esc": DwtKeyMap.CANCEL
+ };
+ this._map["DwtButton"] = {
+ "Enter": DwtKeyMap.SELECT_CURRENT,
+ "ArrowDown": DwtKeyMap.SELECT_SUBMENU
+ };
+ this._map["DwtListView"] = {
+ "Space": DwtKeyMap.SELECT_CURRENT,
+ "Ctrl+Space": DwtKeyMap.ADD_SELECT_CURRENT,
+ "Ctrl+`": DwtKeyMap.ADD_SELECT_CURRENT, // Mac FF
+ "ArrowDown": DwtKeyMap.SELECT_NEXT,
+ "Shift+ArrowDown": DwtKeyMap.ADD_SELECT_NEXT,
+ "Ctrl+ArrowDown": DwtKeyMap.NEXT,
+ "ArrowUp": DwtKeyMap.SELECT_PREV,
+ "Shift+ArrowUp": DwtKeyMap.ADD_SELECT_PREV,
+ "Ctrl+ArrowUp": DwtKeyMap.PREV,
+ "Ctrl+A": DwtKeyMap.SELECT_ALL,
+ "Home": DwtKeyMap.SELECT_FIRST,
+ "End": DwtKeyMap.SELECT_LAST,
+ "Enter": DwtKeyMap.DBLCLICK,
+ "Comma": DwtKeyMap.ACTION,
+ "Shift+Comma": DwtKeyMap.ACTION,
+ "Ctrl+Enter": DwtKeyMap.ACTION,
+ "Ctrl+M": DwtKeyMap.ACTION // Mac FF
+ };
+ this._map["DwtMenu"] = {
+ "Esc": DwtKeyMap.CANCEL,
+ "Enter": DwtKeyMap.SELECT_CURRENT,
+ "ArrowDown": DwtKeyMap.SELECT_NEXT,
+ "ArrowUp": DwtKeyMap.SELECT_PREV,
+ "ArrowLeft": DwtKeyMap.SELECT_PARENTMENU,
+ "ArrowRight": DwtKeyMap.SELECT_SUBMENU
+ };
+ [snip...]
+};
+</pre>
+
+<p>Applications may inherit from the above class and add their own maps or override existing ones (for example when subclassing widgets). Note that component and application authors don't need to worry about key sequences, rather they just need to implement the actions that their components support. The keyboard management framework takes care of handling the mapping from key sequences to actions. Once a key sequence has been mapped to an action, the action is passed to the handleKeyAction() method defined by the component (See the sections of DwtKeyboardMgr and DwtControl below for more details). </p>
+
+<p>Decoupling key bindings and actions makes it easy to change the key binding for a given action, or to allow multiple key bindings for that action. Key maps may inherit (including multiply) from other key maps. This allows for extensions as well as application-wide (or default) key maps.</p>
+
+<p>The sample code below shows a portion of the ZCS's key map. Notice how the ZmMailListController inherits from the Global key map.</p>
+
+<pre>
+function ZmKeyMap() {
+ this._map["Global"] = {
+ "`": ZmKeyMap.ASSISTANT,
+ "Shift+`": ZmKeyMap.ASSISTANT,
+ [snip...]
+ }
+ this._map["ZmMailListController"] = {
+ "INHERIT": "Global",
+ "R": ZmKeyMap.REPLY,
+ "A": ZmKeyMap.REPLY_ALL,
+ "R,S": ZmKeyMap.REPLY,
+ "R,A": ZmKeyMap.REPLY_ALL,
+ [snip...]
+ }
+ [snip...]
+}
+</pre>
+
+<p>Key map entries may consist of:</p>
+
+<ul><li>Single keys e.g. "Enter" or "M"
+<li>Single keys plus one or more modifiers e.g. "Ctrl+M" or "Ctrl+Shift+M"
+<li>Multiple key sequences e.g "M,U" or "M,U,A"
+<li>Multiple key sequences plus modifiers e.g. "Shift+M, U" or "Shift+M, Shift+U, A"
+</ul>
+
+<p>We are currently working on a serialization/deserialization interface so that key maps may be serialized to and deserialized from a textual representation. This will help in with localizations and custom/user defined keymaps, and will do away with the need for the hash tables shown above.</p>
+
+<h4>Tab Groups</h4><p>
+
+<p>Tab groups permit the definition of a hierarchical keyboard navigation model. A tab group is a tree structure where the intermediate nodes in the tree are other tab groups and the leaf nodes are focusable components i.e. DWT widgets and/or focusable native HTML elements such as input fields. Tab groups represent the order in which components that the user sees on the screen are traversed via the keyboard. The tab group hierarchy (or tree) is traversed "in order" by the user pressing the tab key, or in reverse order when the user typically presses the shift key plus the tab key.</p>
+
+<p>There is a special tab group called the root tab group. A root tab group has no parent and represents the keyboard navigation order for the components in a given application view. There can be multiple root tab groups within an application, e.g. an email message list view tag group, a calendar new appointment tab group, or a dialog tab group; however, only one root tab group may be active at any given time.</p>
+
+<p>As will be described in the section on DwtKeyboardMgr, tab groups may be "pushed to" and "popped from" the tab group stack. For example, when a dialog is popped up, its corresponding tab group is pushed onto the tab group stack and becomes the active tab group while that dialog is activated. When the dialog is popped down, its tab group is also popped off the tab group stack bringing the underlying tab group (i.e. the one for the active view) back into play, so that the component that had focus prior to the dialog being activated will once again have focus.</p>
+
+<p>Tab groups are implemented by the DwtTabGroup class. That class provides the API for manipulating tab groups. Here are some of the member methods:</p>
+
+<ul><li>addMember(index) - Adds a member to the tab group at index position, or at end if index is omitted
+<li>addMemberBefore(member) - Adds a member to the tab group positioned before another member
+<li>addMemberAfter(member) - Adds a member to the tab group positioned after another member
+<li>blockDefaultHandling(block) - Blocks the default handler from being invoked for this tab group
+<li>contains(member) - Checks to see if an item is a member of this tab group
+<li>removeMember(member) - Removes a member
+<li>replaceMember(old, new) - Replaces a member with another one
+<li>newParent(newParent) - Sets a new parent for this tab group
+<li>getFocusMember() - Gets the current focus member
+<li>setFocusMember(member) - Sets the current focus member
+<li>getNextFocusMember() - Gets the next focus member
+<li>getPrevFocusMember() - Gets the previous focus member
+<li>resetFocusMember() - Resets the focus member to the first available member
+</ul>
+
+<h4>DwtKeyboardMgr</h4><p>
+
+<p>DwtKeyboardMgr is the engine that drives the keyboard management framework. It is responsible for intercepting key events generated by the browser, mapping them to actions (via the registered keymaps), and then dispatching the action to the correct component. In addition, DwtKeyboardMgr is responsible for enforcing the tab order specified by the currently active tab group. Finally, this class also has the machinery that handles multi-key keymap entires by utilizing a timeout mechanism for resolving such sequences.</p>
+
+<p>When dispatching actions, DwtKeyboardMgr will first try and resolve a key sequence with the component that has focus (be it a DWT widget or a native component such as an HTML input element). If the component does not have an action binding for a key sequence (an entry in its key map for the current key sequence), then DwtKeyboardMgr checks to see if a default handler has been pushed on its default handler stack (via the pushDefaultHandler method). If one has been pushed, then DwtKeyboardMgr will query it for the name of the keymap that should be used to resolve the key sequence to an action code. If an action code exists in the key map for the key sequence, then DwtKeyboardMgr will dispatch it to the default handler.</p>
+
+<p>A default handler is analogous to the root tab group. It provides a context for key bindings that are not tied to a specific widget. In a way, the default handler can be thought of as providing a global context. For example, if a button has focus when the character Esc is typed, DwtKeyboardMgr will first give the button a chance to handle the event. If the button does not handle Esc (which is the case), then DwtKeyboardMgr hands the event to the current default handler. So far, there are only two default handlers used within ZCS: an application-level default handler and a dialog-level default handler.</p>
+
+<p>A default handler must implement the following interface:</p>
+
+<ul><li>getKeymapNameToUse() - This method is called by DwtKeyboardMgr to get the name of the key map that should be used for resolving a key sequence. Of course this is application-specific and may change as the user navigates an application. For example, in the case of the ZCS, a different key map may in play for the calendar application as opposed to the email application.
+<li>handleKeyAction(action) - Where the action formal parameter is the action constant bound to the key sequence in the key map. This method is where the real work gets done. Its implementation will perform the work necessary to complete the action. It will return true if it handled the action, or false if it did not.
+</ul>
+
+<p>As previously mentioned, DwtKeyboardMgr is also responsible for enforcing the component tab ordering specified by the currently active root tab group - i.e. the one that is on top of the tab group stack. The way this works is that upon intercepting the tab key, DwtKeyboardMgr will call the DwtTabGroup's getNextFocusMember() method. This method returns the next focusable component in the tab group hierarchy (be it a DWT widget or a native HTML input field). DwtKeyboardMgr will then call the blur() method on the previously focused component, followed by calling the focus() method on the component returned by getNextFocusMember(). Note that I intentionally paralleled the native HTML input element focus() and blur() methods within DWT so there is a canonical way of managing the focus state of any UI component (native or DWT). The combination of DwtKeyboardMgr and DwtTabGroup handles all corner cases such as skipping over components that are not enabled (i.e. grayed out), as well as dealing with scenarios such as the currently focused component becoming disabled.</p>
+
+<p>The following lists some of the more commonly used methods provided by DwtKeyboardMgr:</p>
+
+<ul><li>enable(enable) - Enables or disables keyboard event handling
+<li>isEnabled() - Returns true if keyboard event handling is enabled, else returns false
+<li>grabFocus(element) - Causes element to grab focus - where element is a DWT widget or an HTML input element
+<li>pushDefaultHandler(hdlr) - Pushes a default handler onto the handler stack
+<li>popDefaultHandler()- Pops the default handler off the top of the handler stack
+<li>pushTabGroup(tabGroup) - Pushes a tab group onto the tab group stack and makes it the active tab group
+<li>popTabGroup() - Pops the tab group that is on top of the tab group stack
+<li>registerKeyMap(keyMap) - Registers a key map
+<li>setKeyTimeout(timeout) - Sets the maximum time to allow between key presses for a multi-key key sequence
+<li>setTabGroup(tabGroup) - Replaces the current tab group with the one provided
+</ul>
+
+<h4>DwtControl</h4><p>
+
+<p>DwtControl is the base DWT class from which all widgets ultimately inherit behaviour. DwtControl has a number of responsibilities including hooking into the drag and drop system, basic mouse event handling, and integration with the keyboard shortcut and navigation model.</p>
+
+<p>DwtControl exports public focus() and blur() methods that parallel the native HTML input elements so that there is a canonical set of methods for setting and blurring focus across native and DWT elements. DwtControl also declares four methods that widget authors must implement in order to support keyboard management:</p>
+
+<ul><li>_focus() - This method is called when a control receives focus. Its implementation should provide visual feedback that the control has gained focus (e.g. by drawing a border around the component)
+<li>_blur() - This method is called when a control loses focus. Its implementation should provide the visual feedback that the control has lost focus (e.g. by hiding the border around a control)
+<li>handleKeyAction(actionCode) - This method is responsible for implementing supported actions. The keyboard framework passes in the actionCode associated with a key sequence in the control's keymap. This method returns true if the control handled the actionCode, else it returns false
+</ul>
+
+<h4>Using The Keyboard Framework in an Application</h4><p>
+
+<p>An application programmer wanting to use the keyboard management frameworks typically needs to perform the following steps:</p>
+
+<ol><li>Create a key map class for the application that inherits from DwtKeyMap. Define any application and/or custom widget key maps in this class.
+<li>Implement one or more default handlers for the application should they be required. Recall that the default handler is called when a visual component does not have a action code binding for a key sequence. Depending on the complexity of the application, multiple handlers may be pushed and popped as the user interacts with the application.
+<li>Create any tab group(s) that may be required. Note that tab groups may be created and manipulated during the application lifecycle.
+<li>Instantiate DwtKeyboardMgr.
+<li>Register the application's key map with DwtKeyboardMgr via the registerKeyMap() method.
+<li>Push the currently applicable default handler via DwtKeyboardMgr's pushDefaultHdlr() method.
+<li>Push or set the current tab group via the pushTabGroup() or setTabGroup() method.
+</ol>]]>
+</content>
+</entry>
+<entry>
+<title>Securing Ajax</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/09/securing_ajax.html" />
+<modified>2006-09-11T15:22:42Z</modified>
+<issued>2006-09-09T18:45:46Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.117</id>
+<created>2006-09-09T18:45:46Z</created>
+<summary type="text/plain">To continue the Zimbra blog series on Ajax (recent entries include Ajax innovation is about the server, Ajax optimization techniques (presented at OSCON), OpenAjax update, and Ajax&apos;s impact on scaling), we wanted to offer some general thoughts on securing Ajax...</summary>
+<author>
+<name>Scott</name>
+<url>www.zimbra.com</url><email>scott.dietzen@zimbra.com</email></author>
+<dc:subject>Scott Dietzen</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>To continue the Zimbra blog series on Ajax (recent entries include <a href="http://www.zimbra.com/blog/archives/2006/08/ajax_innovation.html">Ajax innovation is about the server</a>, <a href="http://www.zimbra.com/blog/archives/2006/07/oscon_ajax_slid.html">Ajax optimization techniques (presented at OSCON)</a>, <a href="http://www.zimbra.com/blog/archives/2006/05/openajax_update.html">OpenAjax update</a>, and <a href="http://www.zimbra.com/blog/archives/2006/04/ajax_impact_on.html">Ajax's impact on scaling</a>), we wanted to offer some general thoughts on securing Ajax applications gleaned, of course, from our Zimbra experience. </p>]]>
+<![CDATA[<p><strong>Ajax security advantages. </strong> Less often discussed than Ajax security <em>concerns</em> are inherent security <em>advantages</em> of Ajax clients:<br />
+• Dynamic Ajax client download – Ajax client code is downloaded on demand from the trusted server after a particular user logs-in, automatically ensuring client and server versions are in-sync (for public computers, a shift re-load is better in that it overwrites any Ajax code from that website leftover in the browser cache). <br />
+• No persistent client caching – An exposure with traditional web clients is that they cache HTML pages that can include user/application data on the client disk during normal operation. This can be a security vulnerability for access from public kiosks or other shared computers. Ajax applications like the Zimbra client cache no user data on disk. <br />
+• Server-side control of intranet and Internet mash-ups – Zimlets and other Ajax mash-ups are precluded from accessing arbitrary services on the Internet (unless they open a new iFrame, which can be determined at server deployment time), and must instead (like Java applets) make all invocations back to the originating server (in our case, the Zimbra server). This means the Ajax server can act as a secure, proxy gateway for accessing intranet applications, and can govern which external web services (if any) are accessible for mash-up within the Ajax client. </p>
+
+<p><strong>Ajax security considerations. </strong> Subject to the additional precautions enumerated below, Ajax applications can be made as highly-secure as the web technologies upon which the Ajax model is based. </p>
+
+<p>The most obvious security issue for Ajax applications is that the associated source code is inherently downloaded to the browser for interpretation. This is a concern for any application logic that contains intellectual property that the author does not want to share with the world: while obviscation and minimization (white space removal, shortening identifier) can certainly render JavaScript much harder to read (and debug), developers should consider Ajax applications to be like HTML in that others will be able to examine the fruits of your labor. The only real alternative is to either (1) limit log-in to the application to trusted users/partners (in this way only licensed/authorized users get to download the Ajax application logic); or else (2) keep closely-held algorithms on the server-side, and simply invoke them via web services from the Ajax client. All this is not an issue for the Zimbra Ajax Client, since it is, after all, open source. </p>
+
+<p>Zimbra provides the following additional guarantees to further secure Zimbra deployments over even public networks, techniques that we beileve are broadly relevant for securing Ajax applications:<br />
+• Use SSL/TLS (i.e., HTTPS) – In addition to protecting the privacy/integrity XML/JSON HTTP communications to/from the Ajax client, SSL/TLS encryption limits access to the Ajax source code itself to only those that have legitimate log-ins (as per above), since no-one snooping on the network can see the app. logic. Moreover, SSL/TLS protects the Ajax application (JavaScript, CSS, etc.) from potential security attacks while it is in route to the user's browser. <br />
+• No server-side interpretation of JavaScript or other client-submitted code – Zimbra receives vanilla XML requests from the browser client that are validated and then processed by Zimbra server-side Java code. No JavaScript flows from client to server, and there is no server-side interpretation of any application data (e.g., message bodies). In fact, there is no JavaScript execution on the server period. This ensures that there is no way for even a hostile Ajax client with an authentication credentials to inject malicious code for execution on the server-side. <br />
+• Limited or no client-side interpretation of JavaScript within user data – The Zimbra Ajax client is, of course, an Email application that runs within the confines of the web browser. There is an additional risk, then, to displaying the contents of rich HTML messages that themselves contain JavaScript, in that JavaScript within the message might somehow be able to make malicious calls to the Zimbra server (it is generally precluded from making invocations to other sites). Zimbra blocks any “risky” HTML, first on the server and then again (for extra protection) on the client. When a rich HTML message contains any suspect JavaScript, simply better to err on the side of caution. For most Ajax applications, simply maintaining a strict separation of code from data (and never interpretting JavaScript that is included within user data) protects against such attacks.<br />
+• Benign URLs – All Zimbra’s GET-based REST and URL-based APIs are read-only and do not modify data. This ensures that a user (with pre-validated security credentials) cannot be fooled into clicking on a malicious link (that someone sends he or she in an email or posts on his/her external website) that would have harmful side-effects on that user's data. Again, this is broadly relevant for Ajax applications that potentially display clickable URLs in application data. <br />
+• Mash-ups/Zimlet validation – Zimbra's mash-up architecture does provide the opportunity to introduce server-side Java code (most Zimlets run only on the client side), but the introduction of Zimlets requires server administration privileges. Zimbra recommends only deploying Zimlets that have been certified by Zimbra or else which have been vetted by your security architects internally. The key is to ensure that only trustworthy mash-ups can be deployed with your Ajax application, mash-ups that do not expose additional attack points for malicious users. </p>
+
+<p>The end result is that while an attacker with appropriate security credentials (such as a user's password) could certainly damage that user's server-side data, there is no way for them to compromise other user's data or the server in general. (And, of course, that user could have any damged mailbox state restored to the point before the attack by a Zimbra administrator.) </p>
+
+<p>Stronger network security can be afforded by additional technologies (such as VPNs, Smartcards, etc.), but that's our recipe in general for leveraging the benefits of Ajax without giving up the security your customers, partners, and business depend on. More detail on the Zimbra-specific approach can be found in the newly updated Zimbra Architecture Overivew (linked within our <a href="http://www.zimbra.com/community/documentation.html">Community</a> and <a href="http://www.zimbra.com/products/documentation.html">Product</a> Documentation). </p>
+
+<p>As always, thanks for listening (particularly to my verbose posts).</p>]]>
+</content>
+</entry>
+<entry>
+<title>Some thoughts on Mobility and Web 2.0</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/08/some_thoughts_o.html" />
+<modified>2006-08-29T22:45:39Z</modified>
+<issued>2006-08-29T19:50:57Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.116</id>
+<created>2006-08-29T19:50:57Z</created>
+<summary type="text/plain">I had the pleasure of joining Motorola, SugarCRM, and Funambol on a panel at LinuxWorld regarding the future of mobility. The depressing bit was that we panelists admitted that we could have made almost identical points three years ago: (1)...</summary>
+<author>
+<name>Scott</name>
+<url>www.zimbra.com</url><email>scott.dietzen@zimbra.com</email></author>
+<dc:subject>Scott Dietzen</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>I had the pleasure of joining Motorola, SugarCRM, and <a href="http://www.funambol.com/blog/capo/">Funambol</a> on a panel at LinuxWorld regarding the future of mobility. The depressing bit was that we panelists admitted that we could have made almost identical points three years ago: (1) the Web (1.0 more than 2.0) is coming soon to mobile devices, but the experience isn't entirely there yet; and (2) the challenge to extending applications for mobile devices continues to be exacerbated by innovation in device profiles (more on that below). However, the good news is (1) that a "smart phone" profile is converging---a profile that is likely the right target for non-consumer mobile applications; and (2) that "over the air" sync to the native Personal Information Management (PIM) software on mobile devices has gotten dramatically easier/cheaper, and provides exciting new opportunities for mobile application extension.</p>]]>
+<![CDATA[<p>As an old Web hand, I'm no doubt biased, but I think the Web is a generally the right model for business application extension to mobile devices, simply because the Web does not require any <em>a priori</em> installation of client-side software. After all, if the Web is already the dominant model for B2C and B2B applications on PCs, then it is arguably an even better architectural fit for lower horsepower (CPU, memory) mobile devices. <a href="http://www.zimbra.com/blog/archives/2006/06/defining_web_20.html">Web 2.0/Ajax clients</a> seem like a natural fit too---Ajax is a zero client install and its client/server interaction model is actually a better fit for higher latency networks like those of the wireless carriers. The challenge is that rich Ajax applications (ones with mouse-overs, drag 'n drop, etc.) consume enough laptop CPU that they are still out of the computational reach of most smart phones/PDAs, let alone basic telephones. </p>
+
+<p>The alternative application model to the Web (I include WML/HTTP under the Web architecture) is of course more traditional fat client applications---such as those programmed for J2ME, Windows Mobile, Symbian, Palm, or mobile Linux. Fat client app's are ideal for PIM (email, SMS, calendaring, contacts, tasks), games, and other code that handset manufactures or the carriers are willing to preinstall, but a tougher sell for non-expert business and consumer end-user installation. </p>
+
+<p>However, there is yet another approach that we proposed. It is particularly relevant for applications that can be surfaced via PIM software, such as your customer contacts from your CRM system, your travel itinerary from your procurement application, an urgent notification (via SMS), or even an email request to visit a particular URL. Such items can be submitted to a server like the Zimbra Collaboration Suite (ZCS), and then delivered to the mobile device via "over the air" sync. <a href="http://www.zimbra.com/products/zimbra_mobile.html">Zimbra Mobile</a>, for example, can sync contacts, appointments, and messages to Nokia, Motorola, Samsung, Treo, and Blackberry smart phones, and both intranet and Internet applications can securely export to Zimbra over open/standard protocols. Putting the two together allows Web-enabled applications to deliver PIM-oriented data all the way to the mobile device. </p>
+
+<p>So for applications that can be naturally surfaced via the native mobile PIM, there are now easier/cheaper options for mobile extension. For those business applications that have no such easy fit with PIM, I'm afraid you must still weigh the classic Web versus fat client architectural trade-off. In either case, I think that choosing the smart phone/PDA as the target profile makes more sense because of their relative consistency (screen size, scroll-to-click, J2ME vs. Windows Mobile platform), at least when compared with targeting the continuing stream of ever more compact, ever more personalized mobile phones. </p>]]>
+</content>
+</entry>
+<entry>
+<title>Open source and IP ownership</title>
+<link rel="alternate" type="text/html" href="http://www.zimbra.com/blog/archives/2006/08/open_source_and_2.html" />
+<modified>2006-08-16T15:29:47Z</modified>
+<issued>2006-08-15T16:58:03Z</issued>
+<id>tag:www.zimbra.com,2006:/blog//1.114</id>
+<created>2006-08-15T16:58:03Z</created>
+<summary type="text/plain">I got myself in a small bit of trouble recently talking about open source IP ownership when I should have been talking about the cool new collaboration and mobile features in the 4.0 release of the Zimbra Collaboration Suite. (Nothing...</summary>
+<author>
+<name>Scott</name>
+<url>www.zimbra.com</url><email>scott.dietzen@zimbra.com</email></author>
+<dc:subject>Scott Dietzen</dc:subject><content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.zimbra.com/blog/">
+<![CDATA[<p>I got myself in a small bit of trouble recently talking about open source IP ownership when I should have been talking about the cool new collaboration and mobile features in the <a href="http://www.zimbra.com/products/countdown.html">4.0 release of the Zimbra Collaboration Suite</a>. (Nothing like a developer coming by your cube and saying "You said what?") While I didn't do such a good job at the time, the underlying point is an important one, so I'm going to give it another shot ...</p>]]>
+<![CDATA[<p>It is increasingly common practice in open source communities to insist upon a single organization owning the IP rights for a particular project. For example, the Apache and Free Software Foundations do this as well as private firms like Zimbra. The primary goal of IP ownership is to better guarantee "squeaky clean" IP (that is, that all contributed code is unencumbered by any hidden IP rights) for the benefit of the community as well as for customers. This also ensures that open source licensing upgrade decisions can be made for future releases of the open source license itself---without an organizational owner, projects can effectively get locked to a particular version of a license because there is no easy way to get all of the IP owners together to make a decision about upgrading. </p>
+
+<p>The grief came in particular from my drawing parallels between Zimbra---a for-profit company---with more altruistic non-profit organizations like Apache and FSF regarding IP ownership. No doubt there are clear differences between for-profits and non-profits that the prospective community members have every right to consider, but I think in terms of IP ownership there is more in common than different. </p>
+
+<p>For a potential community member, the most important thing is the long-term guarantee of their freedoms: (1) Open source rights (granted under the open source software license) to use the product in perpetuity for free, to produce and redistribute any derivative works thereof for free, and so on; and (2) rights to do whatever they may see fit in perpetuity for any of their own contributions that they made in good faith to the project. (The good contribution agreements grant contributors back all of their rights <strong>except </strong> those that could interfere with the community, such as the right to withdraw their contribution in the future, the right to charge the community patent royalties down the road, etc. For example, Zimbra's Contributor Agreement can be found <a href="http://www.zimbra.com/community/contribute.html">here</a>. For another take, check out <a href="http://dojotoolkit.org/foundation/">Dojo</a>, one of our <a href="http://www.zimbra.com/partners/open_ajax_partners.html">Open Ajax Alliance</a> partners. ) This practice seems to me to strike the right balance between preserving individual freedoms without sacrificing the freedoms of the community as a whole. </p>
+
+<p>Both non-profit and for-profit open source organizations equally guarantee these freedoms to their communities, the difference being that the for-profit ones (like Zimbra) also strive to sell <strong>optional </strong>value-added services on the side, much of the proceeds of which then funds the further development of the open source software. </p>]]>
+</content>
+</entry>
+</feed> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/images/locale.png b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/images/locale.png
new file mode 100644
index 0000000000..0dfece4d3f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/images/locale.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/proxy/proxy.php b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/proxy/proxy.php
new file mode 100644
index 0000000000..71853e9b86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/resource/proxy/proxy.php
@@ -0,0 +1,60 @@
+<?php
+
+$ALLOWED_URL_PREFIXES = array(
+ "http://feeds.feedburner.com",
+ "http://blog.dojotoolkit.org/feed",
+ "http://www.jackslocum.com/blog/feed/",
+ "http://portlets.blogspot.com",
+ "http://www.go-mono.com/monologue/index.rss",
+ "http://feeds.yuiblog.com/YahooUserInterfaceBlog",
+);
+
+$ALLOWED_URL_SUFFIXES = array(
+ ".rdf",
+ ".rss",
+ "atom.xml",
+ "rss2",
+ "rss.xml",
+ "feed/atom/",
+);
+
+$proxy_url = isset($_GET['proxy']) ? $_GET['proxy'] : false;
+
+if (!$proxy_url) {
+ header("HTTP/1.0 400 Bad Request");
+ echo "proxy.php failed because proxy parameter is missing";
+ exit();
+}
+
+$is_url_valid = false;
+foreach ($ALLOWED_URL_PREFIXES as $prefix) {
+ if (strpos($proxy_url, $prefix) === 0) {
+ $is_url_valid = true;
+ break;
+ }
+}
+
+foreach ($ALLOWED_URL_SUFFIXES as $suffix) {
+ if (strpos($proxy_url, $suffix) === strlen($proxy_url)-strlen($suffix)) {
+ $is_url_valid = true;
+ break;
+ }
+}
+
+if (!$is_url_valid) {
+ header("HTTP/1.0 400 Bad Request");
+ echo "Address is not allowed!";
+ exit();
+}
+
+$session = curl_init($proxy_url);
+
+curl_setopt($session, CURLOPT_HEADER, false);
+curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
+
+header("Content-Type: application/xml");
+echo(curl_exec($session));
+
+curl_close($session);
+
+?> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/C.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/C.po
new file mode 100644
index 0000000000..fc408105a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/C.po
@@ -0,0 +1,93 @@
+# Default translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:52+0100\n"
+"PO-Revision-Date: 2006-12-19 16:54+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/feedreader/Application.js:133
+msgid "reloading ..."
+msgstr ""
+
+#: source/class/feedreader/Application.js:138
+msgid "qooxdoo feed reader."
+msgstr ""
+
+#: source/class/feedreader/Application.js:143
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: source/class/feedreader/Application.js:144
+msgid "Remove feed"
+msgstr ""
+
+#: source/class/feedreader/Application.js:147
+msgid "Reload"
+msgstr ""
+
+#: source/class/feedreader/Application.js:149
+msgid "(%1) Reload the feeds."
+msgstr ""
+
+#: source/class/feedreader/Application.js:156
+#: source/class/feedreader/Application.js:158
+msgid "English"
+msgstr ""
+
+#: source/class/feedreader/Application.js:157
+msgid "German"
+msgstr ""
+
+#: source/class/feedreader/Application.js:159
+msgid "Turkish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:160
+msgid "Italian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:161
+msgid "Spanish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:162
+msgid "Swedish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:163
+msgid "Russian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:186
+msgid "Help"
+msgstr ""
+
+#: source/class/feedreader/Application.js:194
+msgid "News feeds"
+msgstr ""
+
+#: source/class/feedreader/Application.js:215
+msgid "Subject"
+msgstr ""
+
+#: source/class/feedreader/Application.js:216
+msgid "Sender"
+msgstr ""
+
+#: source/class/feedreader/Application.js:217
+msgid "Date"
+msgstr ""
+
+#: source/class/feedreader/ArticleView.js:79
+msgid "read more ..."
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/de.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/de.po
new file mode 100644
index 0000000000..099f9855d4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/de.po
@@ -0,0 +1,95 @@
+# German translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:52+0100\n"
+"PO-Revision-Date: 2006-12-22 09:59+0100\n"
+"Last-Translator: Fabian Jakobs <fabian dot jakobs at 1und1 dot de>\n"
+"Language-Team: <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: source/class/feedreader/Application.js:133
+#, fuzzy
+msgid "reloading ..."
+msgstr "aktualisieren ..."
+
+#: source/class/feedreader/Application.js:138
+msgid "qooxdoo feed reader."
+msgstr "\"qooxdoo\" feed reader"
+
+#: source/class/feedreader/Application.js:143
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Feed hinzufügen"
+msgstr[1] "Feeds hinzufügen"
+
+#: source/class/feedreader/Application.js:144
+msgid "Remove feed"
+msgstr "Feed löschen"
+
+#: source/class/feedreader/Application.js:147
+msgid "Reload"
+msgstr "Aktualisieren"
+
+#: source/class/feedreader/Application.js:149
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Feeds aktualisieren."
+
+#: source/class/feedreader/Application.js:156
+#: source/class/feedreader/Application.js:158
+msgid "English"
+msgstr "Englisch"
+
+#: source/class/feedreader/Application.js:157
+msgid "German"
+msgstr "Deutsch"
+
+#: source/class/feedreader/Application.js:159
+msgid "Turkish"
+msgstr "Türkisch"
+
+#: source/class/feedreader/Application.js:160
+msgid "Italian"
+msgstr "Italienisch"
+
+#: source/class/feedreader/Application.js:161
+msgid "Spanish"
+msgstr "Spanisch"
+
+#: source/class/feedreader/Application.js:162
+msgid "Swedish"
+msgstr "Schwedisch"
+
+#: source/class/feedreader/Application.js:163
+msgid "Russian"
+msgstr "Russisch"
+
+#: source/class/feedreader/Application.js:186
+msgid "Help"
+msgstr "Hilfe"
+
+#: source/class/feedreader/Application.js:194
+msgid "News feeds"
+msgstr "Nachrichtenkanäle"
+
+#: source/class/feedreader/Application.js:215
+msgid "Subject"
+msgstr "Betreff"
+
+#: source/class/feedreader/Application.js:216
+msgid "Sender"
+msgstr "Absender"
+
+#: source/class/feedreader/Application.js:217
+msgid "Date"
+msgstr "Datum"
+
+#: source/class/feedreader/ArticleView.js:79
+msgid "read more ..."
+msgstr "weitere Informationen ..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/en.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/en.po
new file mode 100644
index 0000000000..e24d30878b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/en.po
@@ -0,0 +1,93 @@
+# English translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:52+0100\n"
+"PO-Revision-Date: 2006-12-21 10:17+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/feedreader/Application.js:133
+msgid "reloading ..."
+msgstr "reloading ..."
+
+#: source/class/feedreader/Application.js:138
+msgid "qooxdoo feed reader."
+msgstr "qooxdoo feed reader."
+
+#: source/class/feedreader/Application.js:143
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Add feed"
+msgstr[1] "Add feeds"
+
+#: source/class/feedreader/Application.js:144
+msgid "Remove feed"
+msgstr "Remove feed"
+
+#: source/class/feedreader/Application.js:147
+msgid "Reload"
+msgstr "Reload"
+
+#: source/class/feedreader/Application.js:149
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Reload the feeds."
+
+#: source/class/feedreader/Application.js:156
+#: source/class/feedreader/Application.js:158
+msgid "English"
+msgstr "English"
+
+#: source/class/feedreader/Application.js:157
+msgid "German"
+msgstr "German"
+
+#: source/class/feedreader/Application.js:159
+msgid "Turkish"
+msgstr "Turkish"
+
+#: source/class/feedreader/Application.js:160
+msgid "Italian"
+msgstr "Italian"
+
+#: source/class/feedreader/Application.js:161
+msgid "Spanish"
+msgstr "Spanish"
+
+#: source/class/feedreader/Application.js:162
+msgid "Swedish"
+msgstr "Swedish"
+
+#: source/class/feedreader/Application.js:163
+msgid "Russian"
+msgstr "Russian"
+
+#: source/class/feedreader/Application.js:186
+msgid "Help"
+msgstr "Help"
+
+#: source/class/feedreader/Application.js:194
+msgid "News feeds"
+msgstr "News feeds"
+
+#: source/class/feedreader/Application.js:215
+msgid "Subject"
+msgstr "Subject"
+
+#: source/class/feedreader/Application.js:216
+msgid "Sender"
+msgstr "Sender"
+
+#: source/class/feedreader/Application.js:217
+msgid "Date"
+msgstr "Date"
+
+#: source/class/feedreader/ArticleView.js:79
+msgid "read more ..."
+msgstr "read more ..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/es.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/es.po
new file mode 100644
index 0000000000..cb1e02ccb0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/es.po
@@ -0,0 +1,94 @@
+# Spanish translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:52+0100\n"
+"PO-Revision-Date: 2007-01-24 20:54+0100\n"
+"Last-Translator: Carsten Rammoser <carsten@rammoser.com>\n"
+"Language-Team: <camilo.aguilar@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Spanish\n"
+"X-Poedit-Country: COLOMBIA\n"
+
+#: source/class/feedreader/Application.js:133
+msgid "reloading ..."
+msgstr "actualizando ..."
+
+#: source/class/feedreader/Application.js:138
+msgid "qooxdoo feed reader."
+msgstr "lector de feeds qooxdoo."
+
+#: source/class/feedreader/Application.js:143
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Agregar feed"
+msgstr[1] "Agregar feeds"
+
+#: source/class/feedreader/Application.js:144
+msgid "Remove feed"
+msgstr "Eliminar feed"
+
+#: source/class/feedreader/Application.js:147
+msgid "Reload"
+msgstr "Actualizar"
+
+#: source/class/feedreader/Application.js:149
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Actualizar los feeds."
+
+#: source/class/feedreader/Application.js:156
+#: source/class/feedreader/Application.js:158
+msgid "English"
+msgstr "Inglés"
+
+#: source/class/feedreader/Application.js:157
+msgid "German"
+msgstr "Alemán"
+
+#: source/class/feedreader/Application.js:159
+msgid "Turkish"
+msgstr "Turco"
+
+#: source/class/feedreader/Application.js:160
+msgid "Italian"
+msgstr "Italiano"
+
+#: source/class/feedreader/Application.js:161
+msgid "Spanish"
+msgstr "Español"
+
+#: source/class/feedreader/Application.js:162
+msgid "Swedish"
+msgstr "Sueco"
+
+#: source/class/feedreader/Application.js:163
+msgid "Russian"
+msgstr "Ruso"
+
+#: source/class/feedreader/Application.js:186
+msgid "Help"
+msgstr "Ayuda"
+
+#: source/class/feedreader/Application.js:194
+msgid "News feeds"
+msgstr "Feeds de noticias"
+
+#: source/class/feedreader/Application.js:215
+msgid "Subject"
+msgstr "Asunto"
+
+#: source/class/feedreader/Application.js:216
+msgid "Sender"
+msgstr "Remitente"
+
+#: source/class/feedreader/Application.js:217
+msgid "Date"
+msgstr "Fecha"
+
+#: source/class/feedreader/ArticleView.js:79
+msgid "read more ..."
+msgstr "leer más ..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/it.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/it.po
new file mode 100644
index 0000000000..1431458283
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/it.po
@@ -0,0 +1,94 @@
+# Italian translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-23 17:57+0100\n"
+"PO-Revision-Date: 2006-12-21 22:55+0100\n"
+"Last-Translator: Alessandro Sala <alessandro.sala@mclink.net>\n"
+"Language-Team: Italiano <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: source/class/feedreader/Application.js:130
+msgid "reloading ..."
+msgstr "ricarico..."
+
+#: source/class/feedreader/Application.js:135
+msgid "qooxdoo feed reader."
+msgstr "lettore di feed di qooxdoo"
+
+#: source/class/feedreader/Application.js:140
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Aggiungi un feed"
+msgstr[1] "Aggiungi dei feed"
+
+#: source/class/feedreader/Application.js:141
+msgid "Remove feed"
+msgstr "Rimuovi un feed"
+
+#: source/class/feedreader/Application.js:144
+msgid "Reload"
+msgstr "Ricarica"
+
+#: source/class/feedreader/Application.js:146
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Ricarica i feed"
+
+#: source/class/feedreader/Application.js:153
+#: source/class/feedreader/Application.js:155
+msgid "English"
+msgstr "Inglese"
+
+#: source/class/feedreader/Application.js:154
+msgid "German"
+msgstr "Tedesco"
+
+#: source/class/feedreader/Application.js:156
+msgid "Turkish"
+msgstr "Turco"
+
+#: source/class/feedreader/Application.js:157
+msgid "Italian"
+msgstr "Italiano"
+
+#: source/class/feedreader/Application.js:158
+msgid "Spanish"
+msgstr "Spagnolo"
+
+#: source/class/feedreader/Application.js:159
+msgid "Swedish"
+msgstr "Svedese"
+
+#: source/class/feedreader/Application.js:160
+msgid "Russian"
+msgstr "Russo"
+
+#: source/class/feedreader/Application.js:183
+msgid "Help"
+msgstr "Aiuto"
+
+#: source/class/feedreader/Application.js:191
+msgid "News feeds"
+msgstr "Feed di notizie"
+
+#: source/class/feedreader/Application.js:212
+msgid "Subject"
+msgstr "Oggetto"
+
+#: source/class/feedreader/Application.js:213
+msgid "Sender"
+msgstr "Mittente"
+
+#: source/class/feedreader/Application.js:214
+msgid "Date"
+msgstr "Data"
+
+#: source/class/feedreader/ArticleView.js:77
+msgid "read more ..."
+msgstr "continua..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/ru.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/ru.po
new file mode 100644
index 0000000000..b728919dbf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/ru.po
@@ -0,0 +1,94 @@
+# Russian translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-23 17:57+0100\n"
+"PO-Revision-Date: 2006-12-20 23:22+0200\n"
+"Last-Translator: <zindel@gammacenter.com>\n"
+"Language-Team: <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: source/class/feedreader/Application.js:130
+msgid "reloading ..."
+msgstr "загрузка..."
+
+#: source/class/feedreader/Application.js:135
+msgid "qooxdoo feed reader."
+msgstr "qooxdoo RSS reader"
+
+#: source/class/feedreader/Application.js:140
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Добавить канал"
+msgstr[1] "Добавить каналы"
+
+#: source/class/feedreader/Application.js:141
+msgid "Remove feed"
+msgstr "Удалить канал"
+
+#: source/class/feedreader/Application.js:144
+msgid "Reload"
+msgstr "Перечитать"
+
+#: source/class/feedreader/Application.js:146
+msgid "(%1) Reload the feeds."
+msgstr "{%1) Перечитать все каналы."
+
+#: source/class/feedreader/Application.js:153
+#: source/class/feedreader/Application.js:155
+msgid "English"
+msgstr "Английский"
+
+#: source/class/feedreader/Application.js:154
+msgid "German"
+msgstr "Немецкий"
+
+#: source/class/feedreader/Application.js:156
+msgid "Turkish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:157
+msgid "Italian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:158
+msgid "Spanish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:159
+msgid "Swedish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:160
+msgid "Russian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:183
+msgid "Help"
+msgstr "Помощь"
+
+#: source/class/feedreader/Application.js:191
+msgid "News feeds"
+msgstr "Новостные каналы"
+
+#: source/class/feedreader/Application.js:212
+msgid "Subject"
+msgstr "Тема"
+
+#: source/class/feedreader/Application.js:213
+msgid "Sender"
+msgstr "Отправитель"
+
+#: source/class/feedreader/Application.js:214
+msgid "Date"
+msgstr "Дата"
+
+#: source/class/feedreader/ArticleView.js:77
+msgid "read more ..."
+msgstr "далее..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/sv.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/sv.po
new file mode 100644
index 0000000000..f1a03b3b52
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/sv.po
@@ -0,0 +1,93 @@
+# Swedish translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-23 17:57+0100\n"
+"PO-Revision-Date: 2006-12-19 11:10+0100\n"
+"Last-Translator: Henric Johansson <henric.johansson@mindset.se>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: source/class/feedreader/Application.js:130
+msgid "reloading ..."
+msgstr "uppdaterar..."
+
+#: source/class/feedreader/Application.js:135
+msgid "qooxdoo feed reader."
+msgstr "qooxdoo feed läsare."
+
+#: source/class/feedreader/Application.js:140
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Lägg till feed"
+msgstr[1] "Lägg till feeds"
+
+#: source/class/feedreader/Application.js:141
+msgid "Remove feed"
+msgstr "Ta bort feed"
+
+#: source/class/feedreader/Application.js:144
+msgid "Reload"
+msgstr "Uppdatera"
+
+#: source/class/feedreader/Application.js:146
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Uppdatera feedsen."
+
+#: source/class/feedreader/Application.js:153
+#: source/class/feedreader/Application.js:155
+msgid "English"
+msgstr "Engelska"
+
+#: source/class/feedreader/Application.js:154
+msgid "German"
+msgstr "Tyska"
+
+#: source/class/feedreader/Application.js:156
+msgid "Turkish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:157
+msgid "Italian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:158
+msgid "Spanish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:159
+msgid "Swedish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:160
+msgid "Russian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:183
+msgid "Help"
+msgstr "Hjälp"
+
+#: source/class/feedreader/Application.js:191
+msgid "News feeds"
+msgstr "Nyhetsfeed"
+
+#: source/class/feedreader/Application.js:212
+msgid "Subject"
+msgstr "Ämne"
+
+#: source/class/feedreader/Application.js:213
+msgid "Sender"
+msgstr "Avsändare"
+
+#: source/class/feedreader/Application.js:214
+msgid "Date"
+msgstr "Datum"
+
+#: source/class/feedreader/ArticleView.js:77
+msgid "read more ..."
+msgstr "läs mer..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/tr.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/tr.po
new file mode 100644
index 0000000000..f3ccc949b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/feedreader/source/translation/tr.po
@@ -0,0 +1,95 @@
+# Turkish translation
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo feedreader\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-23 17:57+0100\n"
+"PO-Revision-Date: 2006-12-18 21:51+0200\n"
+"Last-Translator: Fatih Tolga Ata <fatih@diyezon.com>\n"
+"Language-Team: <fatih@tullab.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Turkish\n"
+"X-Poedit-Country: Turkey\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: source/class/feedreader/Application.js:130
+msgid "reloading ..."
+msgstr "yenileniyor ..."
+
+#: source/class/feedreader/Application.js:135
+msgid "qooxdoo feed reader."
+msgstr "qooxdoo besleme okuyucu."
+
+#: source/class/feedreader/Application.js:140
+msgid "Add feed"
+msgid_plural "Add feeds"
+msgstr[0] "Besleme ekle"
+msgstr[1] "Beslemeler ekle"
+
+#: source/class/feedreader/Application.js:141
+msgid "Remove feed"
+msgstr "Besleme sil"
+
+#: source/class/feedreader/Application.js:144
+msgid "Reload"
+msgstr "Yenile"
+
+#: source/class/feedreader/Application.js:146
+msgid "(%1) Reload the feeds."
+msgstr "(%1) Beslemesini yenile."
+
+#: source/class/feedreader/Application.js:153
+#: source/class/feedreader/Application.js:155
+msgid "English"
+msgstr "İngilizce"
+
+#: source/class/feedreader/Application.js:154
+msgid "German"
+msgstr "Almanca"
+
+#: source/class/feedreader/Application.js:156
+msgid "Turkish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:157
+msgid "Italian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:158
+msgid "Spanish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:159
+msgid "Swedish"
+msgstr ""
+
+#: source/class/feedreader/Application.js:160
+msgid "Russian"
+msgstr ""
+
+#: source/class/feedreader/Application.js:183
+msgid "Help"
+msgstr "Yardım"
+
+#: source/class/feedreader/Application.js:191
+msgid "News feeds"
+msgstr "Haber beslemeleri"
+
+#: source/class/feedreader/Application.js:212
+msgid "Subject"
+msgstr "Konu"
+
+#: source/class/feedreader/Application.js:213
+msgid "Sender"
+msgstr "Gönderen"
+
+#: source/class/feedreader/Application.js:214
+msgid "Date"
+msgstr "Tarih"
+
+#: source/class/feedreader/ArticleView.js:77
+msgid "read more ..."
+msgstr "daha fazla ..."
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/index.html
new file mode 100644
index 0000000000..139e50cabc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/index.html
@@ -0,0 +1,183 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <style type="text/css">
+*{
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+body{
+ font-size: 12px;
+ font-family: Arial, "Bitstream Vera Sans", Verdana, sans-serif;
+ margin: 0;
+ padding: 0;
+}
+
+p{
+ margin: 6px 0;
+}
+
+.hide, .build {
+ display: none;
+}
+
+#demoHead,
+#demoFoot{
+ position: absolute;
+ left: 0px;
+ right: 0px;
+ width: 100%;
+ background: #134275;
+ padding: 5px 8px;
+ color: #DEFF83;
+ font-weight: bold;
+ overflow: hidden;
+ z-index: 1000000000;
+}
+
+#demoHead{
+ top: 0px;
+}
+
+#demoHead span{
+ font-weight: normal;
+ color: white;
+}
+
+img{
+ box-sizing: content-box;
+ -moz-box-sizing: content-box;
+}
+
+#content{
+ margin: 40px 20px 0;
+ width: 400px;
+}
+
+h1{
+ font-size: 22px;
+ margin-bottom: 20px;
+ color: #134275;
+}
+
+h2{
+ font-size: 16px;
+ color: #134275;
+ margin-bottom: 10px;
+}
+
+h3{
+ font-size: 14px;
+ color: #1D65B3;
+}
+
+a{
+ color: #335EA8;
+}
+
+li{
+ margin-left: 16px;
+ list-style: square;
+ margin-bottom: 20px;
+}
+
+p{
+ font-size: 12px;
+}
+
+ul ul{
+ margin-top: 20px;
+}
+
+p.note{
+ padding: 10px;
+ background: #F3FFD1;
+ color: #444444;
+ margin: 20px 0;
+}
+ </style>
+ <script type="text/javascript">
+ function launch(url, w, h) {
+ var w = w || 800;
+ var h = h || 600;
+ var sw = 100;
+ var sh = 100;
+
+ sw = getCenteredCoord(w, screen.availWidth);
+ sh = getCenteredCoord(h, screen.availHeight);
+
+ var win = window.open(url, "qx", "width=" + w + ",height=" + h + ",left=" + sw + ",top=" + sh + ",status=no,resizable=no");
+ }
+
+ function getCenteredCoord(windowDim, screenDim) {
+ return (screenDim / 2) - (windowDim / 2);
+ }
+ </script>
+</head>
+<body>
+ <div id="demoHead">qooxdoo: <span>The new era of web interface development</span></div>
+
+ <div id="content" style="position:absolute;top:0px;left:0px">
+
+ <h1>Demo</h1>
+
+ <p class="note">The source version is only available in SVN and SDK archives.</p>
+
+ <h2>Applications</h2>
+
+ <ul>
+ <li>
+ <h3>Showcase</h3>
+ <p>A good example for qooxdoo's versatility.</p>
+ <span class="source"><a href="showcase/build/index.html"><b>Build</b></a> | <a href="showcase/source/index.html">Source (Developer)</a></span>
+ <span class="build"><a href="showcase/index.html"><b>Start Showcase</b></a></span>
+ </li>
+ <li>
+ <h3>Feed Reader</h3>
+ <p>qooxdoo RSS feed reader using dummy RSS feed data.</p>
+ <span class="source"><a href="feedreader/build/index.html"><b>Build</b></a> | <a href="feedreader/source/index.html">Source (Developer)</a></span>
+ <span class="build"><a href="feedreader/index.html"><b>Open Feed Reader</b></a></span>
+ </li>
+ <li>
+ <h3>Web Mail</h3>
+ <p>Complex application-like interface using multiple qooxdoo widgets.</p>
+ <span class="source"><a href="#" onclick="launch('webmail/build/index.html')"><b>Build</b></a> | <a href="#" onclick="launch('webmail/source/index.html')">Source (Developer)</a></span>
+ <span class="build"><a href="#" onclick="launch('webmail/index.html')"><b>Open Web Mail</b></a></span>
+ </li>
+ <li>
+ <h3>API Viewer</h3>
+ <p>qooxdoo based API viewer.</p>
+ <span class="source"><a href="apiviewer/build/index.html"><b>Build</b></a> | <a href="apiviewer/source/index.html">Source (Developer)</a></span>
+ <span class="build"><a href="apiviewer/index.html"><b>Open API viewer</b></a></span>
+ </li>
+ <li>
+ <h3>Samples</h3>
+ <ul>
+ <li>
+ <h4>Example</h4>
+ <p>Easily to understand examples. The basic features of each qooxdoo widget is demonstrated in a separate example. This section is probably the one you are looking for!</p>
+ <span class="source"><a href="sample/build/html/example/index.html"><b>Build</b></a> | <a href="sample/source/html/example/index.html">Source (Developer)</a></span>
+ <span class="build"><a href="sample/html/example/index.html"><b>Show Example</b></a></span>
+ </li>
+ <li>
+ <h4>Test</h4>
+ <p>These tests demonstrate internal functionality of qooxdoo. Not really useful for the typical qooxdoo user, but needed for developers to test some complex layout stuff, performance related problems and more. The tests may not always be up-to-date and functioning!</p>
+ <span class="source"><a href="sample/build/html/test/index.html"><b>Build</b></a> | <a href="sample/source/html/test/index.html">Source (Developer)</a></span>
+ <span class="build"><a href="sample/html/test/index.html"><b>Show Test</b></a></span>
+ </li>
+ <li>
+ <h4>Performance</h4>
+ <p>These tests are used to test performance of different javascript/qooxdoo rountines and allows them to compare them with each other</p>
+ <span class="source"><a href="sample/build/html/performance/index.html"><b>Build</b></a> | <a href="sample/source/html/performance/index.html">Source (Developer)</a></span>
+ <span class="build"><a href="sample/html/performance/index.html"><b>Show Performance</b></a></span>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/Makefile b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/Makefile
new file mode 100644
index 0000000000..ec67480fc1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/Makefile
@@ -0,0 +1,122 @@
+################################################################################
+#
+# qooxdoo - the new era of web development
+#
+# http://qooxdoo.org
+#
+# Copyright:
+# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org
+#
+# License:
+# LGPL: http://www.gnu.org/licenses/lgpl.html
+# EPL: http://www.eclipse.org/org/documents/epl-v10.php
+# See the LICENSE file in the project's top-level directory for details.
+#
+# Authors:
+# * Sebastian Werner (wpbasti)
+# * Andreas Ecker (ecker)
+# * Fabian Jakobs (fjakobs)
+#
+################################################################################
+
+################################################################################
+# BASIC SETTINGS
+################################################################################
+
+#
+# Location of your qooxdoo distribution
+# Could be relative from this location or absolute
+#
+QOOXDOO_PATH = ../../..
+
+#
+# The same as above, but from the webserver point of view
+# Starting point is the application HTML file of the source folder.
+# In most cases just add a "/.." compared to above
+#
+QOOXDOO_URI = ../../../../../..
+
+#
+# Namespace of your application e.g. custom
+#
+APPLICATION_NAMESPACE = sample
+
+#
+# Titles used in your API viewer and during the build process
+#
+APPLICATION_MAKE_TITLE = SAMPLE
+APPLICATION_API_TITLE = Sample
+
+#
+# Additional files (space separated list)
+#
+APPLICATION_FILES = index.html html css
+
+
+
+################################################################################
+# ADVANCED SETTINGS
+################################################################################
+
+#
+# Disable line breaks
+#
+APPLICATION_LINEBREAKS_BUILD = false
+APPLICATION_LINEBREAKS_SOURCE = false
+
+#
+# qooxdoo.org sync
+#
+APPLICATION_PUBLISH_PATH = root@qooxdoo.org:/var/www/qooxdoo/demo/$(FRAMEWORK_VERSION)/$(APPLICATION_NAMESPACE)
+
+#
+# Build/Integrate all features
+#
+APPLICATION_COMPLETE_BUILD = true
+
+#
+# Relation from HTML file to the top level directory (source or build).
+#
+APPLICATION_PAGE_TO_TOPLEVEL = ../..
+
+
+
+
+
+
+################################################################################
+# INCLUDE CORE
+################################################################################
+
+ifneq ($(QOOXDOO_PATH),PLEASE_DEFINE_QOOXDOO_PATH)
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/targets.mk
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/application.mk
+endif
+
+error:
+ @echo " * Please configure QOOXDOO_PATH"
+
+
+
+
+
+################################################################################
+# EXTENSIONS
+################################################################################
+
+layout-source:
+ @echo
+ @echo " GENERATION OF SAMPLE LAYOUT"
+ @$(CMD_LINE)
+ @echo " * Generating source/script/layout.js..."
+ @python tool/layout.py source/script/layout.js source/html
+
+layout-build:
+ @echo
+ @echo " GENERATION OF SAMPLE LAYOUT"
+ @$(CMD_LINE)
+ @echo " * Generating build/script/layout.js..."
+ @python tool/layout.py build/script/layout.js build/html
+
+build: layout-build
+source: layout-source
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/css/layout.css b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/css/layout.css
new file mode 100644
index 0000000000..e2c1d55ade
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/css/layout.css
@@ -0,0 +1,173 @@
+body{
+ font-size: 11px;
+ font-family: Arial, "Bitstream Vera Sans", Verdana, sans-serif;
+ margin: 0;
+ padding: 0;
+}
+
+p{
+ margin: 6px 0;
+}
+
+#demoHead,
+#demoFoot{
+ position: absolute;
+ left: 0px;
+ right: 0px;
+ width: 100%;
+ background: #134275;
+ padding: 3px 8px;
+ height: 20px;
+ color: white;
+ font-weight: bold;
+ overflow: hidden;
+ z-index: 1000000000;
+}
+
+#demoHead{
+ top: 0px;
+}
+
+#demoHead span{
+ font-weight: normal;
+}
+
+#demoFoot{
+ bottom: 0px;
+}
+
+#demoFoot a{
+ color: white;
+}
+
+#demoFrame{
+ position: absolute;
+ top: 20px;
+ bottom: 20px;
+ right: 0;
+ width: 280px;
+ background: #fff;
+ border-left: 10px solid #134275;
+ z-index: 1000000000;
+}
+
+#demoFiles{
+ font-size: 11px;
+ font-family: Tahoma, Verdana, sans-serif;
+
+ position: absolute;
+ top: 24px;
+ right: 50px;
+ width: 215px;
+ z-index: 1000000002;
+}
+
+#demoFiles optgroup{
+ background: #ececed;
+ font-size: 14px;
+ text-transform: capitalize;
+}
+
+#demoFiles optgroup option{
+ font-size: 11px;
+ background: #fff;
+}
+
+#demoJump{
+ position: absolute;
+ top: 24px;
+ right: 4px;
+ width: 45px;
+ text-align: right;
+ z-index: 1000000002;
+}
+
+#demoDescription{
+ position: absolute;
+ top: 44px;
+ height : 120px;
+ width: 266px;
+ right: 4px;
+ z-index: 1000000002;
+ overflow: auto;
+ border-bottom: 10px solid #134275;
+ padding: 0px 6px 0px 4px;
+}
+
+#demoDescription p{
+ margin: 4px 0;
+}
+
+#demoDescription h1{
+ font-size: 12px;
+ margin: 8px 0 4px;
+}
+
+#demoDebug{
+ position: absolute;
+ top: 160px;
+ bottom: 24px;
+ right: 4px;
+ width: 266px;
+ font-size: 10px;
+ font-family: "Bitstream Vera Sans Mono", "Courier New", "Courier", monospace;
+ z-index: 1000000102;
+}
+
+#demoDebug .log-body{
+ overflow: auto;
+ position: absolute;
+ top: 30px;
+ bottom: 0px;
+ width: 266px;
+ padding: 4px;
+}
+
+#demoDebug .log-debug{
+ color: gray;
+ padding-left: 6px;
+}
+
+#demoDebug .log-info{
+ background: #DFEBFD;
+ padding-left: 6px;
+}
+
+#demoDebug .log-warn{
+ background: #F5FAAD;
+ padding-left: 6px;
+}
+
+#demoDebug .log-error{
+ background: #D2623E;
+ color: black;
+ padding-left: 6px;
+}
+
+#demoDebug .log-group{
+ margin-top: 4px;
+ margin-bottom: 1px;
+ text-decoration: underline;
+}
+
+#demoDebug .log-head{
+ padding: 8px 2px 4px;
+}
+
+#demoJump button,
+#demoDebug .log-head button{
+ border: 1px solid #335EA8;
+ margin: 0 2px;
+ font-size: 11px;
+ background: #EBE9ED;
+ font-family: Tahoma, Verdana, sans-serif;
+}
+
+#demoDebug .log-head button{
+ visibility: visible;
+}
+
+#demoJump button{
+ width: 16px;
+ -moz-appearance: none !important;
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/css/layout_ie.css b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/css/layout_ie.css
new file mode 100644
index 0000000000..70de91b69e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/css/layout_ie.css
@@ -0,0 +1,11 @@
+#demoFrame{
+ height: expression(document.body.offsetHeight - 40);
+}
+
+#demoDebug{
+ height: expression(document.body.offsetHeight - 184);
+}
+
+#demoDebug .log-body{
+ height: expression(document.body.offsetHeight - 214);
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_1.html
new file mode 100644
index 0000000000..3a8078e1bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_1.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.basic.Atom is the parent class for buttons, menu entries, icons, checkboxes. While you can do,
+ you usually don't have to instantiate qx.ui.basic.Atom directly.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // test no1
+ var nl1 = new qx.ui.basic.Atom("Test #1", "icon/16/actions/view-refresh.png", 16, 16);
+ nl1.setTop(48);
+ nl1.setLeft(20);
+ nl1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ nl1.setBackgroundColor(new qx.renderer.color.Color("white"));
+ nl1.setPadding(4);
+ d.add(nl1);
+
+ // test no2
+ var nl2 = new qx.ui.basic.Atom("Test #2");
+ nl2.setTop(48);
+ nl2.setLeft(120);
+ nl2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ nl2.setBackgroundColor(new qx.renderer.color.Color("white"));
+ nl2.setPadding(4);
+ d.add(nl2);
+
+ // test no3
+ var nl3 = new qx.ui.basic.Atom(null, "icon/16/actions/view-refresh.png");
+ nl3.setTop(48);
+ nl3.setLeft(200);
+ nl3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ nl3.setBackgroundColor(new qx.renderer.color.Color("white"));
+ nl3.setPadding(4);
+ d.add(nl3);
+
+ // test no4
+ var nl4 = new qx.ui.basic.Atom("<span style='font-size:14px'>Some great HTML</span><br/>for <b>you</b>", "icon/32/actions/view-refresh.png");
+ nl4.setTop(48);
+ nl4.setLeft(250);
+ nl4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ nl4.setBackgroundColor(new qx.renderer.color.Color("white"));
+ nl4.setPadding(4);
+ d.add(nl4);
+
+ // test no5
+ var nl5 = new qx.ui.basic.Atom(qx.html.Textile.textilize("*File Information*:\nJPEG-Photo\nCreated: 01/03/05"), "icon/48/apps/preferences-desktop-theme.png");
+ with(nl5)
+ {
+ setTop(200);
+ setLeft(20);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setPadding(3, 6);
+ };
+ d.add(nl5);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_2.html
new file mode 100644
index 0000000000..dcbf546b4d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_2.html
@@ -0,0 +1,172 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some more complex tests for qx.ui.basic.Atom.</p>
+ <p>You can change all the properties before "really creating" the object or any time after this was done.</p>
+ </div>
+
+ <div style="display:none" id="control">
+ <p>
+ Width:
+ <a href="javascript://" onclick="void(at1.setWidth(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setWidth('auto'))">auto</a> |
+ <a href="javascript://" onclick="void(at1.setWidth(25))">25</a> |
+ <a href="javascript://" onclick="void(at1.setWidth(50))">50</a> |
+ <a href="javascript://" onclick="void(at1.setWidth(100))">100</a> |
+ <a href="javascript://" onclick="void(at1.setWidth(200))">200</a>
+ </p>
+ <p>
+ Height:
+ <a href="javascript://" onclick="void(at1.setHeight(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setHeight('auto'))">auto</a> |
+ <a href="javascript://" onclick="void(at1.setHeight(25))">25</a> |
+ <a href="javascript://" onclick="void(at1.setHeight(50))">50</a> |
+ <a href="javascript://" onclick="void(at1.setHeight(100))">100</a> |
+ <a href="javascript://" onclick="void(at1.setHeight(200))">200</a>
+ </p>
+ <hr/>
+ <p>
+ Label Size:
+ <a href="javascript://" onclick="void(at1.setLabel(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('short'))">short</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('some cool label'))">medium</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('ultra long label description'))">long</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('<b>hello <i>world</i></b>'))">html</a> |
+ <a href="javascript://" onclick="void(at1.setLabel('<p>Hello tester.</p><ul><li>cool</li><li><b>test</b></li><li>file</li></ul>'))">complex</a>
+ </p>
+ <p>
+ Icon Size:
+ <a href="javascript://" onclick="void(at1.setIcon(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setIcon('icon/16/apps/accessories-date.png'))">16px</a> |
+ <a href="javascript://" onclick="void(at1.setIcon('icon/32/actions/format-color.png'))">32px</a> |
+ <a href="javascript://" onclick="void(at1.setIcon('icon/48/devices/media-flash.png'))">48px</a>
+ </p>
+ <p>
+ Icon Position:
+ <a href="javascript://" onclick="void(at1.setIconPosition('top'))">top</a> |
+ <a href="javascript://" onclick="void(at1.setIconPosition('right'))">right</a> |
+ <a href="javascript://" onclick="void(at1.setIconPosition('bottom'))">bottom</a> |
+ <a href="javascript://" onclick="void(at1.setIconPosition('left'))">left</a>
+ </p>
+ <p>
+ Spacing:
+ <a href="javascript://" onclick="void(at1.setSpacing(0))">0</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(2))">2</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(4))">4</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(6))">6</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(8))">8</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(10))">10</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(25))">25</a> |
+ <a href="javascript://" onclick="void(at1.setSpacing(50))">50</a>
+ </p>
+ <hr/>
+ <p>
+ Show:
+ <a href="javascript://" onclick="void(at1.setShow('none'))">None</a> |
+ <a href="javascript://" onclick="void(at1.setShow('label'))">Label</a> |
+ <a href="javascript://" onclick="void(at1.setShow('icon'))">Icon</a> |
+ <a href="javascript://" onclick="void(at1.setShow('both'))">Both</a>
+ </p>
+ <hr/>
+ <p>
+ Horizontal Children Align:
+ <a href="javascript://" onclick="void(at1.setHorizontalChildrenAlign('left'))">left</a> |
+ <a href="javascript://" onclick="void(at1.setHorizontalChildrenAlign('center'))">center</a> |
+ <a href="javascript://" onclick="void(at1.setHorizontalChildrenAlign('right'))">right</a>
+ </p>
+ <p>
+ Vertical Children Align:
+ <a href="javascript://" onclick="void(at1.setVerticalChildrenAlign('top'))">top</a> |
+ <a href="javascript://" onclick="void(at1.setVerticalChildrenAlign('middle'))">middle</a> |
+ <a href="javascript://" onclick="void(at1.setVerticalChildrenAlign('bottom'))">bottom</a>
+ </p>
+ <hr/>
+ <p>
+ Padding:
+ <a href="javascript://" onclick="void(at1.setPadding(null))">None</a> |
+ <a href="javascript://" onclick="void(at1.setPadding(2, 4))">2, 4</a> |
+ <a href="javascript://" onclick="void(at1.setPadding(4, 8))">4, 8</a> |
+ <a href="javascript://" onclick="void(at1.setPadding(16))">16</a>
+ </p>
+ <p>
+ Border:
+ <a href="javascript://" onclick="void(at1.setBorder(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(new qx.renderer.border.Border(1, 'solid', 'black')))">1</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(new qx.renderer.border.Border(5, 'solid', 'black')))">5</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(new qx.renderer.border.Border(10, 'solid', 'black')))">10</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(new qx.renderer.border.Border(25, 'solid', 'black')))">25</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset))">outset</a> |
+ <a href="javascript://" onclick="void(at1.setBorder(qx.renderer.border.BorderPresets.getInstance().inset))">inset</a>
+ </p>
+ <hr/>
+ <p>
+ Opacity:
+ <a href="javascript://" onclick="void(at1.setOpacity(null))">null</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(0))">0</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(0.25))">0.25</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(0.5))">0.5</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(0.75))">0.75</a> |
+ <a href="javascript://" onclick="void(at1.setOpacity(1))">1</a>
+ </p>
+ <p>
+ Enabled:
+ <a href="javascript://" onclick="void(at1.setEnabled(false))">false</a> |
+ <a href="javascript://" onclick="void(at1.setEnabled(true))">true</a>
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ var at1;
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ at1 = new qx.ui.basic.Atom("My first qx.ui.basic.Atom", "icon/32/actions/format-color.png");
+
+ with(at1)
+ {
+ setTop(48);
+ setLeft(20);
+
+ setIconPosition("right");
+
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setBackgroundColor(new qx.renderer.color.Color("white"));
+ setPadding(2, 4);
+ };
+
+ var ct1 = new qx.ui.basic.Label(document.getElementById("control").innerHTML);
+
+ with(ct1)
+ {
+ setWidth(300);
+ setRight(335);
+
+ setHeight(null);
+ setTop(48);
+ setBottom(48);
+
+ setOverflow("auto");
+
+ setBackgroundColor(new qx.renderer.color.Color("white"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ setPadding(10);
+ };
+
+ d.add(at1, ct1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_3.html
new file mode 100644
index 0000000000..675988a65a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Atom_3.html
@@ -0,0 +1,39 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the new flash support for qx.ui.basic.Atom</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var a;
+
+ for (var i=1; i<11; i++)
+ {
+ var a = new qx.ui.basic.Atom("Flash Atom #" + i, "icon/16/actions/view-refresh.png", 16, 16, "./image/flash/color/file" + i + ".swf");
+
+ a.setTop(48 + ((i-1)*30));
+ a.setLeft(20);
+ a.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ a.setBackgroundColor(new qx.renderer.color.Color("white"));
+ a.setPadding(4);
+
+ d.add(a);
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ButtonView_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ButtonView_1.html
new file mode 100644
index 0000000000..f491ac2cba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ButtonView_1.html
@@ -0,0 +1,89 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.pageview.buttonview.ButtonView implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var bs = new qx.ui.pageview.buttonview.ButtonView;
+
+ bs.setLocation(20, 48);
+ bs.setRight(335);
+ bs.setBottom(48);
+
+ var bsb1 = new qx.ui.pageview.buttonview.Button("Display", "icon/32/devices/video-display.png");
+ var bsb2 = new qx.ui.pageview.buttonview.Button("Bug", "icon/32/apps/graphics-snapshot.png");
+ var bsb3 = new qx.ui.pageview.buttonview.Button("Colors", "icon/32/actions/format-color.png");
+ var bsb4 = new qx.ui.pageview.buttonview.Button("Icons", "icon/32/apps/preferences-desktop-theme.png");
+ var bsb5 = new qx.ui.pageview.buttonview.Button("Paint", "icon/32/apps/graphics-image-viewer.png");
+ var bsb6 = new qx.ui.pageview.buttonview.Button("Applications", "icon/32/actions/system-run.png");
+ var bsb7 = new qx.ui.pageview.buttonview.Button("System", "icon/32/apps/system-software-update.png");
+
+ bsb1.setChecked(true);
+
+ bs.getBar().add(bsb1, bsb2, bsb3, bsb4, bsb5, bsb6, bsb7);
+
+ var p1 = new qx.ui.pageview.buttonview.Page(bsb1);
+ var p2 = new qx.ui.pageview.buttonview.Page(bsb2);
+ var p3 = new qx.ui.pageview.buttonview.Page(bsb3);
+ var p4 = new qx.ui.pageview.buttonview.Page(bsb4);
+ var p5 = new qx.ui.pageview.buttonview.Page(bsb5);
+ var p6 = new qx.ui.pageview.buttonview.Page(bsb6);
+ var p7 = new qx.ui.pageview.buttonview.Page(bsb7);
+
+ bs.getPane().add(p1, p2, p3, p4, p5, p6, p7);
+
+ var f1 = new qx.ui.form.TextField("Display Input");
+ var f2 = new qx.ui.form.TextField("Penguin Input");
+ var f3 = new qx.ui.form.TextField("Colorize Input");
+ var f4 = new qx.ui.form.TextField("Icons Input");
+ var f5 = new qx.ui.form.TextField("Paint Input");
+ var f6 = new qx.ui.form.TextField("Applications Input");
+ var f7 = new qx.ui.form.TextField("System Input");
+
+ p1.add(f1);
+ p2.add(f2);
+ p3.add(f3);
+ p4.add(f4);
+ p5.add(f5);
+ p6.add(f6);
+ p7.add(f7);
+
+ var r1 = new qx.ui.form.RadioButton("Top", "top", null, true);
+ var r2 = new qx.ui.form.RadioButton("Right", "right");
+ var r3 = new qx.ui.form.RadioButton("Bottom", "bottom");
+ var r4 = new qx.ui.form.RadioButton("Left", "left");
+
+ r1.setTop(50);
+ r2.setTop(70);
+ r3.setTop(90);
+ r4.setTop(110);
+
+ p1.add(r1, r2, r3, r4);
+
+ var rm = new qx.manager.selection.RadioManager(null, [r1, r2, r3, r4]);
+
+ rm.addEventListener("changeSelected", function(e) {
+ bs.setBarPosition(e.getData().getValue());
+ });
+
+ d.add(bs);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ButtonView_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ButtonView_2.html
new file mode 100644
index 0000000000..86d6c14d3e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ButtonView_2.html
@@ -0,0 +1,98 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Yet Another qx.ui.pageview.buttonview.ButtonView Example</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var bs = new qx.ui.pageview.buttonview.ButtonView;
+ bs.set({ left: 20, top: 48, right: 335, bottom: 48 });
+ bs.setBarPosition("left");
+
+ var bsb1 = new qx.ui.pageview.buttonview.Button("Display", "icon/16/devices/video-display.png");
+ var bsb2 = new qx.ui.pageview.buttonview.Button("Organizer", "icon/16/apps/office-organizer.png");
+ var bsb3 = new qx.ui.pageview.buttonview.Button("Colorize", "icon/16/actions/format-color.png");
+ var bsb4 = new qx.ui.pageview.buttonview.Button("Icons", "icon/16/apps/preferences-desktop-theme.png");
+ var bsb5 = new qx.ui.pageview.buttonview.Button("Paint", "icon/16/apps/graphics-image-viewer.png");
+ var bsb6 = new qx.ui.pageview.buttonview.Button("Applications", "icon/16/actions/system-run.png");
+ var bsb7 = new qx.ui.pageview.buttonview.Button("System", "icon/16/apps/system-software-update.png");
+
+ bsb1.setChecked(true);
+
+ bsb1.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb2.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb3.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb4.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb5.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb6.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb7.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+
+ bs.getBar().add(bsb1, bsb2, bsb3, bsb4, bsb5, bsb6, bsb7);
+
+ bs.getBar().setHorizontalChildrenAlign("center");
+ bs.getBar().setVerticalChildrenAlign("bottom");
+
+ var p1 = new qx.ui.pageview.buttonview.Page(bsb1);
+ var p2 = new qx.ui.pageview.buttonview.Page(bsb2);
+ var p3 = new qx.ui.pageview.buttonview.Page(bsb3);
+ var p4 = new qx.ui.pageview.buttonview.Page(bsb4);
+ var p5 = new qx.ui.pageview.buttonview.Page(bsb5);
+ var p6 = new qx.ui.pageview.buttonview.Page(bsb6);
+ var p7 = new qx.ui.pageview.buttonview.Page(bsb7);
+
+ bs.getPane().add(p1, p2, p3, p4, p5, p6, p7);
+
+ var f1 = new qx.ui.form.TextField("Display Input");
+ var f2 = new qx.ui.form.TextField("Sunshine Input");
+ var f3 = new qx.ui.form.TextField("Paint Input");
+ var f4 = new qx.ui.form.TextField("Icons Input");
+ var f5 = new qx.ui.form.TextField("Images Input");
+ var f6 = new qx.ui.form.TextField("Applications Input");
+ var f7 = new qx.ui.form.TextField("System Input");
+
+ p1.add(f1);
+ p2.add(f2);
+ p3.add(f3);
+ p4.add(f4);
+ p5.add(f5);
+ p6.add(f6);
+ p7.add(f7);
+
+ var r1 = new qx.ui.form.RadioButton("Top", "top");
+ var r2 = new qx.ui.form.RadioButton("Right", "right");
+ var r3 = new qx.ui.form.RadioButton("Bottom", "bottom");
+ var r4 = new qx.ui.form.RadioButton("Left", "left", null, true);
+
+ r1.setTop(50);
+ r2.setTop(70);
+ r3.setTop(90);
+ r4.setTop(110);
+
+ p1.add(r1, r2, r3, r4);
+
+ var rm = new qx.manager.selection.RadioManager(null, [r1, r2, r3, r4]);
+
+ rm.addEventListener("changeSelected", function(e) {
+ bs.setBarPosition(e.getData().getValue());
+ });
+
+ d.add(bs);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Button_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Button_1.html
new file mode 100644
index 0000000000..35f6c8f336
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Button_1.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the qx.ui.form.Button constructor. qx.ui.form.Button is based on qx.ui.basic.Atom.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function buttonExecute() { this.debug("Executed: " + this.getLabel()); };
+
+ var btn1 = new qx.ui.form.Button("Button No #1");
+ with(btn1)
+ {
+ setTop(48);
+ setLeft(20);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn1);
+
+
+
+ var btn2 = new qx.ui.form.Button("Button No #2");
+ with(btn2)
+ {
+ setTop(48);
+ setLeft(120);
+ addEventListener("execute", buttonExecute);
+ setEnabled(false);
+ };
+
+ d.add(btn2);
+
+
+
+ var btn3 = new qx.ui.form.Button("Button No #3");
+ with(btn3)
+ {
+ setTop(48);
+ setLeft(220);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn3);
+
+
+ var btn4 = new qx.ui.form.Button("Button No #4", "icon/16/actions/go-next.png");
+ with(btn4)
+ {
+ setTop(48);
+ setLeft(320);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/CheckBox_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/CheckBox_1.html
new file mode 100644
index 0000000000..f9b205bc3a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/CheckBox_1.html
@@ -0,0 +1,104 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.ui.form.CheckBox. qx.ui.form.CheckBox extends qx.ui.basic.Atom and so it inherits all the options and properties defined there.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.CheckBox("Send Data to Server", "c1checked", "c1");
+ with(c1)
+ {
+ setTop(48);
+ setLeft(20);
+ };
+ d.add(c1);
+
+ var c2 = new qx.ui.form.CheckBox("Delete all Data on Server", "c2checked", "c2");
+ with(c2)
+ {
+ setTop(78);
+ setLeft(20);
+ };
+ d.add(c2);
+ c2.setChecked(true);
+
+
+ var c3 = new qx.ui.form.CheckBox("Top Checkbox", "c3checked", "c3");
+ with(c3)
+ {
+ setTop(120);
+ setLeft(20);
+ setIconPosition("top");
+ };
+ d.add(c3);
+
+ var c4 = new qx.ui.form.CheckBox("Bottom Checkbox", "c4checked", "c4");
+ with(c4)
+ {
+ setTop(120);
+ setLeft(140);
+ setIconPosition("bottom");
+ };
+ d.add(c4);
+
+
+ var c5 = new qx.ui.form.CheckBox("Left Checkbox", "c5checked", "c5");
+ with(c5)
+ {
+ setTop(180);
+ setLeft(20);
+ setIconPosition("left");
+ };
+ d.add(c5);
+
+ var c6 = new qx.ui.form.CheckBox("Right Checkbox", "c6checked", "c6");
+ with(c6)
+ {
+ setTop(180);
+ setLeft(140);
+ setIconPosition("right");
+ };
+ d.add(c6);
+
+ var c7 = new qx.ui.form.CheckBox(null, "c7checked", "c7");
+ with(c7)
+ {
+ setTop(250);
+ setLeft(20);
+ };
+ d.add(c7);
+
+ var c8 = new qx.ui.form.CheckBox(null, "c7checked", "c7");
+ with(c8)
+ {
+ setTop(300);
+ setLeft(20);
+ setLabel("Label pure");
+ setShow("label");
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setBackgroundColor(new qx.renderer.color.Color("red"));
+ };
+ d.add(c8);
+
+ c8.addEventListener("changeChecked", function(e) {
+ this.setBackgroundColor(new qx.renderer.color.Color(this.getChecked() ? "green" : "red"));
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorPopup_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorPopup_1.html
new file mode 100644
index 0000000000..94aa182cf9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorPopup_1.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.component.ColorPopup.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var mybtn = new qx.ui.form.Button("Open Popup");
+ mybtn.setLocation(20, 48);
+ mybtn.addEventListener("execute", function() {
+ mypop.setTop(qx.html.Location.getPageBoxBottom(this.getElement()));
+ mypop.setLeft(qx.html.Location.getPageBoxLeft(this.getElement()));
+ mypop.show();
+ });
+
+ var myview = new qx.ui.basic.Label("Selected Color");
+ myview.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ myview.setLocation(100, 48);
+ myview.setPadding(3, 6);
+ myview.setBackgroundImage("core/dotted_white.gif");
+ myview.addToDocument();
+
+ var mytables =
+ {
+ core : {
+ label : "Basic Colors",
+ values : [ "#000", "#333", "#666", "#999", "#CCC", "#FFF", "red", "green", "blue", "yellow", "teal", "maroon" ]
+ },
+
+ template : {
+ label : "Template Colors",
+ values : [ "#B07B30", "#B07BC9", "#E3AEC9", "#7A2A53" ]
+ },
+
+ recent : {
+ label : "Recent Colors",
+
+ // In this case we need named colors or rgb-value-strings, hex is not allowed currently
+ values : [ "rgb(122,195,134)", "orange" ]
+ }
+ }
+
+ var mypop = new qx.ui.component.ColorPopup(mytables);
+ mypop.setLocation(100, 100);
+ mypop.setValue(new qx.renderer.color.Color("#23F3C1"));
+
+ mybtn.addToDocument();
+ mypop.addToDocument();
+
+ mypop.addEventListener("changeValue", function(e) {
+ this.debug("Value Listener: " + e.getData());
+ myview.setBackgroundColor(e.getData());
+ myview.setBackgroundImage(e.getData() ? null : "core/dotted_white.gif");
+ });
+
+ mypop.addEventListener("changeRed", function(e) {
+ this.debug("Red Listener: " + e.getData());
+ });
+
+ mypop.addEventListener("changeGreen", function(e) {
+ this.debug("Green Listener: " + e.getData());
+ });
+
+ mypop.addEventListener("changeBlue", function(e) {
+ this.debug("Blue Listener: " + e.getData());
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorSelector_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorSelector_1.html
new file mode 100644
index 0000000000..2a4a39a728
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorSelector_1.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.component.ColorSelector.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var mycolor = new qx.ui.component.ColorSelector;
+
+ mycolor.setLocation(50, 50);
+
+ qx.ui.core.ClientDocument.getInstance().add(mycolor);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorSelector_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorSelector_2.html
new file mode 100644
index 0000000000..e43a1e9434
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ColorSelector_2.html
@@ -0,0 +1,30 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.component.ColorSelector.</p>
+ <p>Adding a default/previous/old color value to compare it with the new selection.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var mycolor = new qx.ui.component.ColorSelector(130, 180, 100);
+
+ mycolor.setLocation(50, 50);
+
+ qx.ui.core.ClientDocument.getInstance().add(mycolor);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ComboBoxEx_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ComboBoxEx_1.html
new file mode 100644
index 0000000000..956fd1c391
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ComboBoxEx_1.html
@@ -0,0 +1,230 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+ <script type="text/javascript">
+
+function getTestData() {
+ var testData = [
+ [ '1', 'One' ],
+ [ '2', 'Two' ],
+ [ '3', 'Three' ],
+ [ '4', 'Four' ],
+ [ '5', 'Five' ],
+ [ '6', 'Six' ],
+ [ '7', 'Seven' ],
+ [ '8', 'Eight' ],
+ [ '9', 'Nine' ],
+ [ '10', 'Ten' ],
+ [ '11', 'Eleven' ],
+ [ '12', 'Twelve' ],
+ [ '13', 'Thirteen' ],
+ [ '14', 'Fourteen' ],
+ [ '15', 'Fiveteen' ],
+ [ '16', 'Sixteen' ],
+ [ '17', 'Seventeen' ],
+ // Test of a long string
+ [ '1921', 'One thousand nine hundred twenty one' ]
+ ];
+ for (var i = 0; i < testData.length; i++) {
+ testData[i].push('widget/arrows/'+(i % 2 ? 'up':'down')+'_small.gif');
+ testData[i].push('Extra data '+i);
+ }
+ return testData;
+}
+
+qx.OO.defineClass('Box', qx.ui.layout.BoxLayout, function() {
+ qx.ui.layout.BoxLayout.apply(this, arguments);
+ this.auto();
+});
+
+qx.OO.defineClass('GroupBox', qx.ui.groupbox.GroupBox, function() {
+ qx.ui.groupbox.GroupBox.apply(this, arguments);
+ this.auto();
+});
+
+qx.core.Init.getInstance().defineMain(function() {
+ // Shortcuts
+ var form = qx.ui.form;
+ Label = qx.ui.basic.Label;
+ var testData = getTestData();
+
+ //###1st row: combo
+
+ combo = new form.ComboBoxEx;
+ var butSize = new form.Button('Size text field to content');
+ butSize.addEventListener('execute', function() {
+ combo.sizeTextFieldToContent();
+ });
+
+ var boxCombo2 = new Box;
+ with (boxCombo2) {
+ setSpacing(10);
+ add(combo, butSize);
+ }
+ var boxCombo = new GroupBox('This is the ComboBoxEx under test');
+ boxCombo.add(boxCombo2);
+
+ //###2nd row: Test of simple properties
+ var cEd = new form.CheckBox('Editable');
+ cEd.setChecked(combo.getEditable());
+ cEd.addEventListener('changeChecked', function() {
+ combo.setEditable(cEd.isChecked());
+ });
+
+ var cEnsure = new form.CheckBox('Ensure something selected');
+ cEnsure.setChecked(combo.getEnsureSomethingSelected());
+ cEnsure.addEventListener('changeChecked', function() {
+ combo.setEnsureSomethingSelected(cEnsure.isChecked());
+ });
+
+ var cAllowSearch = new form.CheckBox('Allow searching');
+ cAllowSearch.setChecked(combo.getAllowSearch());
+ cAllowSearch.addEventListener('changeChecked', function() {
+ combo.setAllowSearch(cAllowSearch.isChecked());
+ });
+
+ var cIdCol = new form.CheckBox('ID column visible');
+ cIdCol.setChecked(combo.isIdColumnVisible());
+ cIdCol.addEventListener('changeChecked', function() {
+ combo.setIdColumnVisible(cIdCol.isChecked());
+ });
+
+ var fieldItems = new form.Spinner(0, 0, testData.length);
+ fieldItems._manager.addEventListener('changeValue', function() {
+ var sel = [], count = fieldItems.getValue();
+ for (var i = 0; i < count; i++) {
+ sel.push(testData[i]);
+ }
+ combo.setSelection(sel);
+ });
+ fieldItems.setValue(15);
+
+ var boxProp2 = new Box;
+ with (boxProp2) {
+ setSpacing(10);
+ add(cEd, cEnsure, cAllowSearch, cIdCol, new Label('Number of items in list'), fieldItems);
+ }
+ var boxProp = new GroupBox('Test of simple properties');
+ boxProp.add(boxProp2);
+
+ //###Test of headers
+ var allHeaders = [ 'ID', 'Description', 'Img', 'Extra info' ];
+ var rb1 = new form.RadioButton('1', '1');
+ var rb2 = new form.RadioButton('2', '2');
+ rb2.setChecked(true);
+ var rb3 = new form.RadioButton('3', '3');
+ var rb4 = new form.RadioButton('4', '4');
+
+ var fieldHeaders = new qx.manager.selection.RadioManager('headers', [ rb1, rb2, rb3, rb4 ]);
+ fieldHeaders.addEventListener("changeSelected", function(e) {
+ var headers = [], count = Number(e.getData().getValue());
+ for (var i = 0; i < count; i++) {
+ headers.push(allHeaders[i]);
+ }
+ combo.setColumnHeaders(headers);
+ });
+
+ var butChangeHeaders = new form.Button('Add * to headers');
+ // This tests changing the headers, but not the number of columns
+ butChangeHeaders.addEventListener('execute', function() {
+ var headers = combo.getColumnHeaders();
+ for (var i = 0; i < headers.length; i++) {
+ headers[i] += '*';
+ }
+ combo.setColumnHeaders(headers);
+ });
+
+ var boxHeaders2 = new Box;
+ with (boxHeaders2) {
+ setSpacing(10);
+ add(new Label('# of headers'), rb1, rb2, rb3, rb4, butChangeHeaders);
+ }
+ var boxHeaders = new GroupBox('Test headers');
+ boxHeaders.add(boxHeaders2);
+
+ var fieldMaxRows = new form.Spinner(2, combo.getMaxVisibleRows(), 20);
+ fieldMaxRows._manager.addEventListener('changeValue', function() {
+ combo.setMaxVisibleRows(fieldMaxRows.getValue());
+ });
+ var boxMaxRows = new GroupBox('Max. number of visible rows');
+ boxMaxRows.add(fieldMaxRows);
+
+ var boxRow3 = new Box;
+ boxRow3.add(boxHeaders, boxMaxRows);
+
+ //###Test of showOnTextField
+ var rbDesc = new form.RadioButton('Description', 'description');
+ rbDesc.setChecked(true);
+ var rbIdAndDesc = new form.RadioButton('ID and description', 'idAndDescription');
+ var fieldShowOn = new qx.manager.selection.RadioManager("showOnTextField", [ rbDesc, rbIdAndDesc ]);
+ fieldShowOn.addEventListener("changeSelected", function(e) {
+ combo.setShowOnTextField(e.getData().getValue());
+ });
+
+ var fieldSeparator = new form.TextField;
+ fieldSeparator.setValue(combo.getIdDescriptionSeparator());
+ fieldSeparator.setWidth(50);
+ fieldSeparator.addEventListener('changeValue', function() {
+ combo.setIdDescriptionSeparator(fieldSeparator.getValue());
+ });
+ var boxShowOn2 = new Box;
+ with (boxShowOn2) {
+ setSpacing(10);
+ add(new Label('Show on text field:'), rbDesc, rbIdAndDesc, new Label('Separator between ID and description:'), fieldSeparator);
+ }
+ var boxShowOn = new GroupBox('Test showOnTextField property');
+ boxShowOn.add(boxShowOn2);
+
+ //###Test of get/setValue
+ var fieldValue = new form.TextField;
+ var butSetValue = new form.Button('Set');
+ butSetValue.addEventListener('execute', function() {
+ combo.setValue(fieldValue.getValue());
+ });
+ var butGetValue = new form.Button('Get');
+ butGetValue.addEventListener('execute', function() {
+ fieldValue.setValue(combo.getValue());
+ });
+ var boxVal2 = new Box;
+ with (boxVal2) {
+ setSpacing(10);
+ add(fieldValue, butSetValue, butGetValue);
+ }
+ var boxVal = new GroupBox('Test value property');
+ boxVal.add(boxVal2);
+
+ //###Main box
+ var vbox = new Box('vertical');
+ with (vbox) {
+ setSpacing(10);
+ setTop(50);
+ setLeft(30);
+ add(boxCombo, boxProp, boxRow3, boxShowOn, boxVal);
+ addToDocument();
+ }
+ combo.focus();
+});
+ </script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+ <script type="text/javascript">
+if (console.debug) {
+ with (qx.log.Logger.ROOT_LOGGER) {
+ removeAllAppenders();
+ addAppender(new qx.log.FireBugAppender);
+ setMinLevel(qx.log.Logger.LEVEL_WARN);
+ }
+}
+ </script>
+ <div id="demoDescription">
+ <p>ComboBoxEx is an enhanced version of ComboBox</p>
+ </div>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ComboBox_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ComboBox_1.html
new file mode 100644
index 0000000000..bf3f297be9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ComboBox_1.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing ComboBox implementation.</p>
+ <p>The elements of the popup will be created on the first open of the qx.ui.form.ComboBox.</p>
+ </div>
+
+ <select style="position:absolute; left:300px; top:48px; width: 120px;">
+ <option>Item No 1</option>
+ <option>Item No 2</option>
+ <option>Item No 3</option>
+ <option>Item No 4</option>
+ <option>Item No 5</option>
+ <option>Item No 6</option>
+ <option>Item No 7</option>
+ <option>Item No 8</option>
+ <option>Item No 9</option>
+ <option disabled="true">Item No 10</option>
+ <option>Item No 11</option>
+ <option>Item No 12</option>
+ <option>Item No 13</option>
+ <option>Item No 14</option>
+ <option>Item No 15</option>
+ <option>Item No 16</option>
+ <option>Item No 17</option>
+ <option>Item No 18</option>
+ <option>Item No 19</option>
+ <option disabled="true">Item No 20</option>
+ <option>Item No 21</option>
+ <option>Item No 22</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 25</option>
+ <option>Item No 26</option>
+ <option>Item No 27</option>
+ <option>Item No 28</option>
+ <option>Item No 29</option>
+ <option disabled="true">Item No 30</option>
+ </select>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.set({ top: 48, left: 20 });
+
+
+
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ c1.add(item);
+ };
+
+
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 50, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+
+ d.add(c1, b1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Command_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Command_1.html
new file mode 100644
index 0000000000..14472f33f7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Command_1.html
@@ -0,0 +1,141 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>An example showing global shortcut commands in action. The commands are linked with menu-items, but
+ could also be executed with the corresponding shortcut.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ /* comamnds */
+ var undo_cmd = new qx.client.Command("Ctrl+Z");
+ undo_cmd.addEventListener("execute", function(){ this.debug("undo Command executed"); }, this);
+
+ var redo_cmd = new qx.client.Command("Ctrl+Y");
+ redo_cmd.addEventListener("execute", function(){ this.debug("redo Command executed"); }, this);
+
+ var cut_cmd = new qx.client.Command("Ctrl+X");
+ cut_cmd.addEventListener("execute", function(){ this.debug("cut Command executed"); }, this);
+
+ var copy_cmd = new qx.client.Command("Ctrl+C");
+ copy_cmd.addEventListener("execute", function(){ this.debug("copy Command executed"); }, this);
+
+ var paste_cmd = new qx.client.Command("Ctrl+V");
+ paste_cmd.addEventListener("execute", function(){ this.debug("paste Command executed"); }, this);
+
+ var delete_cmd = new qx.client.Command("Del");
+ delete_cmd.addEventListener("execute", function(){ this.debug("delete Command executed"); }, this);
+
+ var select_all_cmd = new qx.client.Command("Ctrl+A");
+ select_all_cmd.addEventListener("execute", function(){ this.debug("select all Command executed"); }, this);
+
+ var search_cmd = new qx.client.Command("Ctrl+F");
+ search_cmd.addEventListener("execute", function(){ this.debug("search Command executed"); }, this);
+
+ var search_again_cmd = new qx.client.Command("F3");
+ search_again_cmd.addEventListener("execute", function(){ this.debug("search again Command executed"); }, this);
+
+ /* building the menu */
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists");
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting");
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font");
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo", null, undo_cmd);
+ var mb1_06 = new qx.ui.menu.Button("Redo", null, redo_cmd);
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png", cut_cmd);
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png", copy_cmd);
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png", paste_cmd);
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png", delete_cmd);
+ var mb1_11 = new qx.ui.menu.Button("Select All", null, select_all_cmd);
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search", null, search_cmd);
+ var mb1_13 = new qx.ui.menu.Button("Search Again", null, search_again_cmd);
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+
+
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.html.Location.getPageBoxLeft(el));
+ m1.setTop(qx.html.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ d.add(w1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Command_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Command_2.html
new file mode 100644
index 0000000000..2fdeb1cb3c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Command_2.html
@@ -0,0 +1,186 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>An example showing global shortcut commands in action. The commands are linked with menu-items, but
+ could also be executed with the corresponding shortcut.</p>
+ <p>An objectmanager is used to disable/enable a specific command (del-Key) to make available for text-editing
+ in the textfield of the window. When the window is closed the command gets re-enabled.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ /* comamnds */
+ var undo_cmd = new qx.client.Command("Ctrl+Z");
+ undo_cmd.addEventListener("execute", function(){ this.debug("undo Command executed"); }, this);
+
+ var redo_cmd = new qx.client.Command("Ctrl+Y");
+ redo_cmd.addEventListener("execute", function(){ this.debug("redo Command executed"); }, this);
+
+ var cut_cmd = new qx.client.Command("Ctrl+X");
+ cut_cmd.addEventListener("execute", function(){ this.debug("cut Command executed"); }, this);
+
+ var copy_cmd = new qx.client.Command("Ctrl+C");
+ copy_cmd.addEventListener("execute", function(){ this.debug("copy Command executed"); }, this);
+
+ var paste_cmd = new qx.client.Command("Ctrl+V");
+ paste_cmd.addEventListener("execute", function(){ this.debug("paste Command executed"); }, this);
+
+ var delete_cmd = new qx.client.Command("Del");
+ delete_cmd.addEventListener("execute", function(){ this.debug("delete Command executed"); }, this);
+
+ var select_all_cmd = new qx.client.Command("Ctrl+A");
+ select_all_cmd.addEventListener("execute", function(){ this.debug("select all Command executed"); }, this);
+
+ var search_cmd = new qx.client.Command("Ctrl+F");
+ search_cmd.addEventListener("execute", function(){ this.debug("search Command executed"); }, this);
+
+ var search_again_cmd = new qx.client.Command("F3");
+ search_again_cmd.addEventListener("execute", function(){ this.debug("search again Command executed"); }, this);
+
+
+ /* objectmanager for all commands which should be disabled when opening the window */
+ var cmd_manager = new qx.manager.object.ObjectManager;
+ cmd_manager.add(delete_cmd);
+
+
+ /* building the menu */
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists");
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting");
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font");
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo", null, undo_cmd);
+ var mb1_06 = new qx.ui.menu.Button("Redo", null, redo_cmd);
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png", cut_cmd);
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png", copy_cmd);
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png", paste_cmd);
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png", delete_cmd);
+ var mb1_11 = new qx.ui.menu.Button("Select All", null, select_all_cmd);
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search", null, search_cmd);
+ var mb1_13 = new qx.ui.menu.Button("Search Again", null, search_again_cmd);
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+
+
+ /* button to open menu */
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.html.Location.getPageBoxLeft(el));
+ m1.setTop(qx.html.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ /* window */
+ var window1 = new qx.ui.window.Window("Test");
+ window1.set({ top: 100, left: 100, width: 300, height: 200, allowMaximize: false, allowMinimize: false });
+
+ window1.addEventListener("beforeAppear", function(e){
+ textField.setValue("");
+ });
+
+ window1.addEventListener("beforeDisappear", function(e){
+ cmd_manager.enableAll();
+ });
+
+ /* label */
+ var label1 = new qx.ui.basic.Label("Please enter your Name");
+ label1.setTop(20);
+ label1.setLeft(8);
+
+ /* textfield */
+ var textField = new qx.ui.form.TextField;
+ textField.setTop(20);
+ textField.setLeft(140);
+
+ window1.add(label1, textField);
+
+
+ /* button to open window */
+ var w2 = new qx.ui.form.Button("Open Window");
+ w2.setTop(48);
+ w2.setLeft(100);
+
+ w2.addEventListener("execute", function(e){
+ cmd_manager.disableAll();
+ window1.open();
+ });
+
+
+ d.add(w1, window1, w2);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/DateChooser_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/DateChooser_1.html
new file mode 100644
index 0000000000..ffa537ecfa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/DateChooser_1.html
@@ -0,0 +1,31 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>The DateChooser shows calendar and allows choosing a date.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var chooser = new qx.ui.component.DateChooser;
+ chooser.setLocation(10, 50);
+ chooser.setWidth("auto");
+ chooser.setHeight("auto");
+ d.add(chooser);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Drag_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Drag_1.html
new file mode 100644
index 0000000000..415bfb7c35
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Drag_1.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Show one way to drag a widget around the screen.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var a1 = new qx.ui.basic.Atom("Drag Me");
+ a1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove });
+ a1.setPadding(10);
+ a1.setLocation(20, 48);
+ d.add(a1);
+
+
+ a1.addEventListener("mousedown", handleMouseDown);
+ a1.addEventListener("mousemove", handleMouseMove);
+ a1.addEventListener("mouseup", handleMouseUp);
+
+ function handleMouseDown(e)
+ {
+ this.setCapture(true);
+ a1._offsetX = e.getPageX() - a1.getLeft();
+ a1._offsetY = e.getPageY() - a1.getTop();
+ }
+
+ function handleMouseMove(e)
+ {
+ if (this.getCapture())
+ {
+ a1.setLeft(e.getPageX() - a1._offsetX);
+ a1.setTop(e.getPageY() - a1._offsetY);
+ }
+ }
+
+ function handleMouseUp(e)
+ {
+ this.setCapture(false);
+ }
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fields_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fields_1.html
new file mode 100644
index 0000000000..fe002cc516
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fields_1.html
@@ -0,0 +1,107 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests for some of the most used properties of qx.ui.core.Widget (coordinates, dimensions, backgroundColor, opacity, ...).</p>
+ <p>Also here are the first test of some widgets which extend qx.ui.core.Widget: qx.ui.form.TextField and qx.ui.form.PasswordField. These extended
+ widgets also interacts like the basic QxWidgets with the qx.event.handler.FocusHandler.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function textChange(e) {
+ this.debug("Text changed: " + e.getData());
+ }
+
+ var t1 = new qx.ui.form.TextField;
+ t1.setValue("textfield");
+ t1.setTop(48);
+ t1.setLeft(20);
+
+ t1.addEventListener("changeValue", textChange);
+ t1.addEventListener("input", function(e) {
+ this.debug("Input: " + e.getData());
+ });
+
+ d.add(t1);
+
+
+
+
+ var t2 = new qx.ui.form.PasswordField;
+ t2.setValue("passwordfield");
+ t2.setTop(80);
+ t2.setLeft(20);
+
+ t2.addEventListener("changeValue", textChange);
+
+ d.add(t2);
+
+
+ var t3 = new qx.ui.form.TextArea;
+ t3.setValue("textarea");
+ t3.setTop(110);
+ t3.setLeft(20);
+ t3.setWidth(300);
+ t3.setHeight(60);
+
+ t3.addEventListener("changeValue", textChange);
+
+ d.add(t3);
+
+
+ var t4 = new qx.ui.form.TextField;
+ t4.setValue("textfield");
+ t4.setTop(200);
+ t4.setLeft(20);
+ t4.setWidth(200);
+ t4.setMaxLength(100);
+ t4.setReadOnly(true);
+
+ t4.addEventListener("changeValue", textChange);
+
+ d.add(t4);
+
+
+ var t5 = new qx.ui.form.TextField;
+ t5.setValue("You are foo!");
+ t5.setTop(240);
+ t5.setLeft(20);
+
+ t5.addEventListener("changeValue", textChange);
+
+ d.add(t5);
+
+
+
+ var t6 = new qx.ui.form.TextField;
+ t6.setTop(270);
+ t6.setLeft(20);
+
+ t6.addEventListener("changeText", textChange);
+ t6.addEventListener("input", function(e) {
+ this.debug("Input: " + e.getData());
+ });
+
+ t6.addEventListener("keydown", function(e) {
+ this.debug("Keypress: " + e.getKeyIdentifier());
+ });
+
+ d.add(t6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Flash_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Flash_1.html
new file mode 100644
index 0000000000..12cb67fcab
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Flash_1.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qx.ui.embed.Flash.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // Try no version required
+ var fo1 = new qx.ui.embed.Flash("./image/flash/fo_tester.swf");
+
+ // Try version 7 required
+ // var fo1 = new qx.ui.embed.Flash("image/flash/fo_tester.swf", "7");
+
+ // Try version 9 required
+ // var fo1 = new qx.ui.embed.Flash("image/flash/fo_tester.swf", "9");
+
+ // Error handling methods:
+ // #1: Enable Express Install: Available in Flash Players >= 6.0.65
+ // fo1.setEnableExpressInstall(true);
+ // #2: Enable Redirect URL: Jump to an installer page
+ // fo1.setRedirectUrl("http://www.google.de");
+
+ fo1.setVariable("flashVarText", "this is passed in via FlashVars");
+ fo1.setScale("noscale");
+
+ fo1.setLeft(20);
+ fo1.setRight(335);
+ fo1.setTop(48);
+ fo1.setBottom(48);
+
+ fo1.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ fo1.setBackgroundColor("#FF6600");
+
+ d.add(fo1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1.html
new file mode 100644
index 0000000000..40de61ea86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>
+ Simple test of a finite state machine. This is a sufficiently simple
+ application that using a finite state machine really doesn't make sense,
+ but it is illustrative of how to use it. This FSM has two states.
+ </p>
+ </div>
+
+ <script type="text/javascript" src="Fsm_1/main.js"></script>
+ <script type="text/javascript" src="Fsm_1/fsm.js"></script>
+ <script type="text/javascript" src="Fsm_1/gui.js"></script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/fsm.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/fsm.js
new file mode 100644
index 0000000000..50cdc25ccb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/fsm.js
@@ -0,0 +1,297 @@
+/*
+ * Initialize the finite state machine.
+ *
+ * This finite state machine has two states: Idle and AwaitRpcResult.
+ *
+ * In the Idle state, the Send button is enabled, the Abort button is
+ * disabled, and the three color bars are blue. In the AwaitRpcResult state,
+ * the Send button is disabled, the Abort button is enabled, and three color
+ * bars are red. All of these changes occur via automatic, table-driven
+ * function calls in autoActionsXXX() objects, not via explicit code. This
+ * demonstrates how groups of objects can all be manipulated together without
+ * having to write lots of code to do so. Just as these color blocks change
+ * color, numerous widgets could be disabled/hidden/etc., without writing code
+ * to futz with all of them.
+ */
+function initFsm()
+{
+ // Create a new finite state machine
+ var fsm = new qx.util.fsm.FiniteStateMachine("Fsm_1");
+
+ // For this simple example application, show all debug messages.
+ qx.Settings.setCustomOfClass(
+ "qx.util.fsm.FiniteStateMachine",
+ "debugFlags",
+ (qx.util.fsm.FiniteStateMachine.DebugFlags.EVENTS |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.TRANSITIONS |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.FUNCTION_DETAIL |
+ qx.util.fsm.FiniteStateMachine.DebugFlags.OBJECT_NOT_FOUND));
+
+ /*
+ * State: Idle
+ *
+ * Actions upon entry:
+ * button_send.setEnabled(true);
+ * button_abort.setEnabled(false);
+ * change background of objects in group "group_color_change" to blue
+ *
+ * Transition on:
+ * "execute" on button_send
+ */
+ var state = new qx.util.fsm.State(
+ "State_Idle",
+ {
+ "autoActionsBeforeOnentry" :
+ {
+ // The name of a function.
+ "setEnabled" :
+ [
+ {
+ // We want to enable the 'send' button
+ "parameters" : [ true ],
+
+ // Call this.getObject("button_send").setEnabled(true)
+ "objects" : [ "button_send" ]
+ },
+
+ {
+ // We want to disable the 'abort' button
+ "parameters" : [ false ],
+
+ // Call this.getObject("button_abort").setEnabled(false)
+ "objects" : [ "button_abort" ]
+ }
+ ],
+
+ // The name of a function.
+ "setBackgroundColor" :
+ [
+ {
+ // We want to change the atoms' background color to blue
+ "parameters" :
+ [
+ // We want the color oject created when needed, not "now"
+ // Providing a function as a parameter allows the value to be
+ // determined later.
+ function (fsm) { return new qx.renderer.color.Color("blue"); }
+ ],
+
+ // Call this.getObject(<object>).seBackgroundcolor("blue") on
+ // state entry, for each <object> in the group called
+ // "group_color_change".
+ "groups" : [ "group_color_change" ]
+ }
+ ]
+ },
+
+ "events" :
+ {
+ // If the send button is pressed, go to new state state where we
+ // will await the RPC result
+ "execute" :
+ {
+ "button_send" :
+ "Transition_Idle_to_AwaitRpcResult_via_button_send"
+ }
+ }
+ });
+ fsm.addState(state);
+
+ /*
+ * Transition: Idle to AwaitRpcResult
+ *
+ * Cause: "execute" on button_send
+ *
+ * Action:
+ * Issue RPC request with coalesced failure events
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_Idle_to_AwaitRpcResult_via_button_send",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var rpc = fsm.getObject("rpc");
+
+ rpc.setUrl(fsm.getObject("text_url").getValue());
+ rpc.setServiceName(fsm.getObject("text_service").getValue());
+
+ var request =
+ rpc.callAsyncListeners(true, // coalesce failure events
+ fsm.getObject("text_method").getValue(),
+ fsm.getObject("text_message").getValue());
+ fsm.addObject("request", request);
+ }
+ });
+ state.addTransition(trans);
+
+
+ /*
+ * State: AwaitRpcResult
+ *
+ * Actions upon entry:
+ * button_send.setEnabled(false);
+ * button_abort.setEnabled(true);
+ * change background of objects in group "group_color_change" to red
+ *
+ * Transition on:
+ * "completed" (on RPC)
+ * "failed" (on RPC)
+ * "execute on button_abort
+ */
+ var state = new qx.util.fsm.State(
+ "State_AwaitRpcResult",
+ {
+ "autoActionsBeforeOnentry" :
+ {
+ // The name of a function.
+ "setEnabled" :
+ [
+ {
+ // We want to disable the 'send' button
+ "parameters" : [ false ],
+
+ // Call this.getObject("send").setEnabled(false)
+ "objects" : [ "button_send" ]
+ },
+
+ {
+ // We want to enable the 'abort' button
+ "parameters" : [ true ],
+
+ // Call this.getObject("abort").setEnabled(true)
+ "objects" : [ "button_abort" ]
+ }
+ ],
+
+ // The name of a function.
+ "setBackgroundColor" :
+ [
+ {
+ // We want to change the atoms' background color to red
+ "parameters" :
+ [
+ // We want the color oject created when needed, not "now"
+ // Providing a function as a parameter allows the value to be
+ // determined later.
+ function (fsm) { return new qx.renderer.color.Color("red"); }
+ ],
+
+ // Call this.getObject(<object>).seBackgroundcolor("red"), for
+ // each <object> in the group called "group_color_change".
+ "groups" : [ "group_color_change" ]
+ }
+ ]
+ },
+
+ "events" :
+ {
+ "execute" :
+ {
+ "button_abort" :
+ "Transition_AwaitRpcResult_to_AwaitRpcResult_via_button_abort"
+ },
+
+ "completed" :
+ "Transition_AwaitRpcResult_to_Idle_via_complete",
+
+ "failed" :
+ "Transition_AwaitRpcResult_to_Idle_via_failed"
+ },
+
+ "onentry" :
+ function(fsm, state)
+ {
+ var message = fsm.getObject("text_result");
+ message.setValue("");
+ }
+
+ });
+ fsm.addState(state);
+
+ /*
+ * Transition: AwaitRpcResult to AwaitRpcResult
+ *
+ * Cause: "execute" on button_abort
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_AwaitRpcResult_via_button_abort",
+ {
+ "nextState" :
+ "State_AwaitRpcResult",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ // Get the request object
+ var request = fsm.getObject("request");
+
+ // Issue an abort for the pending request
+ request.abort();
+
+ var message = fsm.getObject("text_result");
+ message.setValue("Abort requested...");
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: AwaitRpcResult to Idle
+ *
+ * Cause: "complete" (on RPC)
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_Idle_via_complete",
+ {
+ "nextState" :
+ "State_Idle",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var message = fsm.getObject("text_result");
+ message.setValue("Got result: " + event.getData());
+
+ // The request has completed, so remove the object reference
+ fsm.removeObject("request");
+ }
+ });
+ state.addTransition(trans);
+
+ /*
+ * Transition: AwaitRpcResult to Idle
+ *
+ * Cause: "failed" (on RPC)
+ */
+ var trans = new qx.util.fsm.Transition(
+ "Transition_AwaitRpcResult_to_Idle_via_failed",
+ {
+ "nextState" :
+ "State_Idle",
+
+ "ontransition" :
+ function(fsm, event)
+ {
+ var message = fsm.getObject("text_result");
+ message.setValue("Got failure: " + event.getData());
+
+ // The request has completed, so remove the object reference
+ fsm.removeObject("request");
+ }
+ });
+ state.addTransition(trans);
+
+ // Allocate an RPC object
+ o = new qx.io.remote.Rpc();
+ o.setTimeout(10000);
+ o.addEventListener("completed", fsm.eventListener, fsm);
+ o.addEventListener("failed", fsm.eventListener, fsm);
+ o.addEventListener("timeout", fsm.eventListener, fsm);
+ o.addEventListener("aborted", fsm.eventListener, fsm);
+ fsm.addObject("rpc", o);
+
+ return fsm;
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/gui.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/gui.js
new file mode 100644
index 0000000000..0ba443a629
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/gui.js
@@ -0,0 +1,95 @@
+function initGui(fsm)
+{
+ var o;
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var vLayout = new qx.ui.layout.VerticalBoxLayout();
+ vLayout.setTop(40);
+ vLayout.setLeft(20);
+ vLayout.setSpacing(4);
+
+ vLayout.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null)
+ {
+ defaultURL = "/services/";
+ }
+ o = new qx.ui.form.TextField(defaultURL);
+ vLayout.add(o);
+ fsm.addObject("text_url", o);
+
+ vLayout.add(new qx.ui.basic.Label("Service:"));
+ o = new qx.ui.form.TextField("qooxdoo.test");
+ vLayout.add(o);
+ fsm.addObject("text_service", o);
+
+ vLayout.add(new qx.ui.basic.Label("Method:"));
+ o = new qx.ui.form.TextField("sleep");
+ vLayout.add(o);
+ fsm.addObject("text_method", o);
+
+ var hLayout = new qx.ui.layout.HorizontalBoxLayout();
+ hLayout.setHeight("auto");
+ hLayout.setVerticalChildrenAlign("middle");
+ hLayout.setSpacing(4);
+
+ o = new qx.ui.form.TextField("2");
+ o.setWidth(200);
+ hLayout.add(o);
+ fsm.addObject("text_message", o);
+
+ o = new qx.ui.form.Button("Send to server");
+ o.addEventListener("execute", fsm.eventListener, fsm);
+ hLayout.add(o);
+ fsm.addObject("button_send", o);
+
+ o = new qx.ui.form.Button("Abort");
+ o.setEnabled(false);
+ o.addEventListener("execute", fsm.eventListener, fsm);
+ hLayout.add(o);
+ fsm.addObject("button_abort", o);
+
+ vLayout.add(hLayout);
+
+ vLayout.add(new qx.ui.basic.Label("Result:"));
+ o = new qx.ui.form.TextField("");
+ o.setWidth(600);
+ vLayout.add(o);
+ fsm.addObject("text_result", o);
+
+ var hLayout = new qx.ui.layout.HorizontalBoxLayout();
+ hLayout.setHeight("auto");
+ hLayout.setVerticalChildrenAlign("middle");
+ hLayout.setSpacing(4);
+
+ var o = new qx.ui.basic.Atom("Idle=blue, RPC=red");
+ o.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ o.setColor(new qx.renderer.color.Color("white"));
+ o.setWidth(200);
+ o.setHeight(30);
+ o.setPadding(4);
+ hLayout.add(o);
+ fsm.addObject("atom_1", o, "group_color_change");
+
+ var o = new qx.ui.basic.Atom("Idle=blue, RPC=red");
+ o.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ o.setColor(new qx.renderer.color.Color("white"));
+ o.setWidth(200);
+ o.setHeight(30);
+ o.setPadding(4);
+ hLayout.add(o);
+ fsm.addObject("atom_2", o, "group_color_change");
+
+ var o = new qx.ui.basic.Atom("Idle=blue, RPC=red");
+ o.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ o.setColor(new qx.renderer.color.Color("white"));
+ o.setWidth(200);
+ o.setHeight(30);
+ o.setPadding(4);
+ hLayout.add(o);
+ fsm.addObject("atom_3", o, "group_color_change");
+
+ vLayout.add(hLayout);
+
+ d.add(vLayout);
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/main.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/main.js
new file mode 100644
index 0000000000..56a53ac484
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Fsm_1/main.js
@@ -0,0 +1,11 @@
+qx.core.Init.getInstance().defineMain(function()
+{
+ // Initialize the finite state machine
+ fsm = initFsm();
+
+ // Initialize the GUI
+ initGui(fsm);
+
+ // Start the finite state machine
+ fsm.start();
+});
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GalleryList_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GalleryList_1.html
new file mode 100644
index 0000000000..1122ffb702
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GalleryList_1.html
@@ -0,0 +1,129 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+
+ <style type="text/css">
+.qx_ui_embed_GalleryList{
+ position: absolute;
+ visibility: visible;
+}
+
+.qx_ui_embed_GalleryList .galleryFrame{
+ padding: 2px;
+}
+
+.qx_ui_embed_GalleryList .galleryCell{
+ margin: 2px;
+ padding-bottom: 2px;
+ border: 1px solid #EEE;
+
+ background: #fff;
+ overflow: hidden;
+ white-space: normal;
+
+ font-family: Tahoma, Verdana, sans-serif;
+ font-size: 12px;
+
+ cursor: default;
+
+ -moz-user-select: none;
+ user-select: none;
+
+ position: relative;
+}
+
+.qx_ui_embed_GalleryList .galleryCell img{
+ vertical-align: bottom;
+ display: block;
+}
+
+.qx_ui_embed_GalleryList .galleryNumber{
+ width: 45px;
+ padding: 4px;
+
+ position: absolute;
+ top: 0px;
+ left: 0px;
+}
+
+.qx_ui_embed_GalleryList .galleryImageContainer{
+ position: absolute;
+ top: 0px;
+ left: 50px;
+}
+
+.qx_ui_embed_GalleryList .galleryText{
+ padding: 4px;
+ position: absolute;
+ top: 0px;
+ left: 130px;
+}
+
+.qx_ui_embed_GalleryList .galleryNumber,
+.qx_ui_embed_GalleryList .galleryText h3{
+ font-weight: bold;
+ font-size: 11px;
+}
+
+.qx_ui_embed_GalleryList .galleryText p{
+ font-size: 10px;
+}
+
+.qx_ui_embed_GalleryList .galleryCell-Selected{
+ background: #9BBCFF;
+ border-color: #3B7CFF;
+}
+ </style>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>ListSort implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var imgPath = qx.manager.object.AliasManager.getInstance().resolvePath("icon/48/apps/graphics-snapshot.png");
+
+ var galleryData = [];
+
+ for (var i=0; i<100; i++)
+ {
+ galleryData.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 48,
+ thumbHeight : 48,
+ title : "gohome.png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment sadas asd dsa asdas dasd asd asdas dasdasdasd sadasdas dsds as",
+ id : "7686191121780974-10682",
+ src : imgPath,
+ number : "#" + i
+ });
+ };
+
+ var galleryList = new qx.ui.embed.GalleryList(galleryData);
+
+ galleryList.setWidth(400);
+ galleryList.setTop(48);
+ galleryList.setBottom(48);
+ galleryList.setLeft(250);
+
+ galleryList.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ galleryList.setBackgroundColor("white");
+
+ qx.ui.core.ClientDocument.getInstance().add(galleryList);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Gallery_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Gallery_1.html
new file mode 100644
index 0000000000..a7965f0f13
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Gallery_1.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+
+ <style type="text/css">
+.qx_ui_embed_Gallery .galleryFrame{
+ padding: 2px;
+}
+
+.qx_ui_embed_Gallery .galleryCell{
+ border: 1px solid #444;
+ background: #fff;
+ margin: 2px;
+ float: left;
+ overflow: hidden;
+
+ font-family: Tahoma, Verdana, sans-serif;
+ font-size: 10px;
+
+ cursor: default;
+
+ -moz-user-select: none;
+ user-select: none;
+}
+
+.qx_ui_embed_Gallery .galleryCell img{
+ vertical-align: bottom;
+ display: block;
+}
+
+.qx_ui_embed_Gallery .galleryCell .galleryTitle,
+.qx_ui_embed_Gallery .galleryCell .galleryComment{
+ background: #eee;
+ padding: 3px 6px;
+ text-align: center;
+ cursor: default;
+ overflow: hidden;
+ white-space: nowrap;
+}
+
+.qx_ui_embed_Gallery .galleryCell .galleryTitle{
+ border-bottom: 1px solid #aaa;
+}
+
+.qx_ui_embed_Gallery .galleryCell .galleryComment{
+ border-top: 1px solid #aaa;
+}
+
+.qx_ui_embed_Gallery .galleryCell-Selected{
+ background: #DCE8F6;
+ border: 1px solid #2760A1;
+}
+
+.qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle,
+.qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ background: #9BBFE7;
+}
+
+.qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle{
+ border-bottom: 1px dotted #2760A1;
+}
+
+.qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ border-top: 1px dotted #2760A1;
+}
+ </style>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test file for qx.ui.embed.Gallery</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var imgPath = qx.manager.object.AliasManager.getInstance().resolvePath("icon/64/apps/office-organizer.png");
+
+ var galleryList = [];
+
+ for (var i=0; i<100; i++)
+ {
+ galleryList.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 64,
+ thumbHeight : 64,
+ title : "gohome.png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment",
+ id : "7686191121780974-10682",
+ src : imgPath
+ });
+ };
+
+ var gallery = new qx.ui.embed.Gallery(galleryList);
+
+ gallery.setLeft(20);
+ gallery.setRight(335);
+ gallery.setTop(48);
+ gallery.setBottom(48);
+ gallery.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+
+ qx.ui.core.ClientDocument.getInstance().add(gallery);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_1.html
new file mode 100644
index 0000000000..079291d36a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_1.html
@@ -0,0 +1,107 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introducing qx.ui.groupbox.GroupBox.</p>
+ </div>
+
+ <fieldset style="position:absolute; top:48px; left:400px; width:200px; height:100px"><legend>builtin</legend>content content content content content content content content content content content content content content content</fieldset>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fs = new qx.ui.groupbox.GroupBox("My first Fieldset");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(48);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth(250);
+ };
+
+
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setTop(3);
+ setLeft(0);
+ setWidth("35%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i1 = new qx.ui.form.TextField();
+ with(i1)
+ {
+ setTop(0);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(a1, i1);
+
+
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/apps/preferences-desktop-wallpaper.png");
+ with(a2)
+ {
+ setTop(33);
+ setLeft(0);
+ setWidth("35%");
+ setHorizontalChildrenAlign("left");
+ };
+ fs.add(a2);
+
+ var i2 = new qx.ui.form.TextField();
+ with(i2)
+ {
+ setTop(30);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(i2);
+
+
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setTop(63);
+ setLeft(0);
+ setWidth("35%");
+ setHorizontalChildrenAlign("left");
+ };
+ fs.add(a3);
+
+ var i3 = new qx.ui.form.TextField();
+ with(i3)
+ {
+ setTop(60);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(i3);
+
+
+
+ d.add(fs);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_2.html
new file mode 100644
index 0000000000..06456bd71d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_2.html
@@ -0,0 +1,153 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.groupbox.CheckGroupBox</p>
+ </div>
+
+ <fieldset style="position:absolute; top:48px; left:400px; width:200px; height:100px"><legend>builtin</legend>content content content content content content content content content content content content content content content</fieldset>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fs = new qx.ui.groupbox.CheckGroupBox("CheckBox FieldSet");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(48);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth("auto");
+ };
+
+ d.add(fs);
+
+
+
+
+ var fsl = new qx.ui.layout.VerticalBoxLayout;
+ fsl.setLeft(0);
+ fsl.setRight(0);
+ fsl.setHeight("auto");
+ fsl.setSpacing(4);
+ fs.add(fsl);
+
+
+
+
+ var r1 = new qx.ui.layout.HorizontalBoxLayout;
+ r1.setLeft(0);
+ r1.setWidth("100%");
+ r1.setHeight("auto");
+ r1.setVerticalChildrenAlign("middle");
+ fsl.add(r1);
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i1 = new qx.ui.form.TextField;
+ with(i1)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r1.add(a1, i1);
+
+
+
+
+
+ var r2 = new qx.ui.layout.HorizontalBoxLayout;
+ r2.setLeft(0);
+ r2.setWidth("100%");
+ r2.setHeight("auto");
+ r2.setVerticalChildrenAlign("middle");
+ fsl.add(r2);
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/apps/preferences-desktop-wallpaper.png");
+ with(a2)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i2 = new qx.ui.form.TextField;
+ with(i2)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r2.add(a2, i2);
+
+
+
+
+
+
+ var r3 = new qx.ui.layout.HorizontalBoxLayout;
+ r3.setLeft(0);
+ r3.setWidth("100%");
+ r3.setHeight("auto");
+ r3.setVerticalChildrenAlign("middle");
+ fsl.add(r3);
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i3 = new qx.ui.form.TextField;
+ with(i3)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r3.add(a3, i3);
+
+
+
+
+
+ fs.getLegendObject().addEventListener("changeChecked", function(e) {
+ i1.setEnabled(e.getData());
+ i2.setEnabled(e.getData());
+ i3.setEnabled(e.getData());
+
+ a1.setEnabled(e.getData());
+ a2.setEnabled(e.getData());
+ a3.setEnabled(e.getData());
+ });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_3.html
new file mode 100644
index 0000000000..72ce8f7a87
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/GroupBox_3.html
@@ -0,0 +1,160 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.groupbox.RadioGroupBox</p>
+ </div>
+
+ <fieldset style="position:absolute; top:48px; left:400px; width:200px; height:100px"><legend>builtin</legend>content content content content content content content content content content content content content content content</fieldset>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fsr = new qx.ui.form.RadioButton("Simple configuration");
+
+ fsr.setLocation(27, 48);
+ d.add(fsr);
+
+ var fs = new qx.ui.groupbox.RadioGroupBox("RadioButton FieldSet");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(72);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth("auto");
+ };
+
+ d.add(fs);
+
+ var fag = new qx.manager.selection.RadioManager("fscontrol", [ fsr, fs.getLegendObject() ]);
+
+
+
+
+ var fsl = new qx.ui.layout.VerticalBoxLayout;
+ fsl.setLeft(0);
+ fsl.setRight(0);
+ fsl.setHeight("auto");
+ fsl.setSpacing(4);
+ fs.add(fsl);
+
+
+
+
+ var r1 = new qx.ui.layout.HorizontalBoxLayout;
+ r1.setLeft(0);
+ r1.setWidth("100%");
+ r1.setHeight("auto");
+ r1.setVerticalChildrenAlign("middle");
+ fsl.add(r1);
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i1 = new qx.ui.form.TextField;
+ with(i1)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r1.add(a1, i1);
+
+
+
+
+
+ var r2 = new qx.ui.layout.HorizontalBoxLayout;
+ r2.setLeft(0);
+ r2.setWidth("100%");
+ r2.setHeight("auto");
+ r2.setVerticalChildrenAlign("middle");
+ fsl.add(r2);
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/apps/preferences-desktop-wallpaper.png");
+ with(a2)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i2 = new qx.ui.form.TextField;
+ with(i2)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r2.add(a2, i2);
+
+
+
+
+
+
+ var r3 = new qx.ui.layout.HorizontalBoxLayout;
+ r3.setLeft(0);
+ r3.setWidth("100%");
+ r3.setHeight("auto");
+ r3.setVerticalChildrenAlign("middle");
+ fsl.add(r3);
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i3 = new qx.ui.form.TextField;
+ with(i3)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r3.add(a3, i3);
+
+
+
+
+
+ fs.getLegendObject().addEventListener("changeChecked", function(e) {
+ i1.setEnabled(e.getData());
+ i2.setEnabled(e.getData());
+ i3.setEnabled(e.getData());
+
+ a1.setEnabled(e.getData());
+ a2.setEnabled(e.getData());
+ a3.setEnabled(e.getData());
+ });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Iframe_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Iframe_1.html
new file mode 100644
index 0000000000..8d7adf7990
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Iframe_1.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Iframe implementation. Elastic.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ //----------
+ // qx.ui.embed.Iframe
+ //----------
+
+ w1 = new qx.ui.embed.Iframe();
+
+ w1.addEventListener("load", function(e) {
+ this.debug("Loaded: " + this.getSource());
+ });
+
+ // elastic
+ w1.set( { left: 20, top: 96, right: 335, bottom: 48 } );
+ w1.setSource("http://www.google.com");
+
+ d.add(w1);
+
+
+ function changeURL(e) {
+
+ this.setSource(e.getData());
+ };
+
+ // make qx.ui.embed.Iframe react to event "surfTo" via function changeURL()
+ d.addEventListener("surfTo", changeURL, w1);
+
+
+ //-------------
+ // radio group
+ //-------------
+
+ var rd1 = new qx.ui.form.RadioButton("Google", "http://www.google.com");
+ var rd2 = new qx.ui.form.RadioButton("Yahoo", "http://www.yahoo.com");
+
+ rd1.set( { left: 20, top: 48, checked: true } );
+ rd2.set( { left: 120, top: 48 } );
+
+ var rbm = new qx.manager.selection.RadioManager( name, [rd1, rd2]);
+
+ // elements of radio group fire event "surfTo"
+ rbm.addEventListener("changeSelected", function(e)
+ {
+ d.dispatchEvent( new qx.event.type.DataEvent("surfTo", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Inline_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Inline_1.html
new file mode 100644
index 0000000000..c1cfee4e8d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Inline_1.html
@@ -0,0 +1,260 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Inline widget.</p><p>Application layout is disabled by using qx.core.Settings. Scrollbars appear, if the content is bigger than the window.</p>
+ </div>
+
+ <div id="iframe1" class="manualFrame" style="overflow:hidden;position:static;margin-top:38px;margin-left:10px">
+ Inline Frame #1
+ </div>
+
+ <div id="iframe2" class="manualFrame" style="overflow:hidden;position:static;margin-top:20px;margin-left:10px">
+ Inline Frame #2
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var inlineWidget = new qx.ui.basic.Inline("iframe1");
+
+ inlineWidget.setHeight("auto");
+ inlineWidget.setWidth("auto");
+
+ var fieldSet = new qx.ui.groupbox.GroupBox("My first inline fieldset");
+
+ with(fieldSet)
+ {
+ // setWidth("auto");
+ // setWidth("100%");
+
+ setLeft(0);
+ setRight(0);
+
+ setHeight("auto");
+ };
+
+ inlineWidget.add(fieldSet);
+
+ d.add(inlineWidget);
+
+
+
+ var atom1 = new qx.ui.basic.Atom("Name");
+ var textfield1 = new qx.ui.form.TextField;
+
+ with(atom1)
+ {
+ setLeft(0);
+ setTop(3);
+ };
+
+ with(textfield1)
+ {
+ setLeft(80);
+ setRight(0);
+ setTop(0);
+ };
+
+ fieldSet.add(atom1, textfield1);
+
+
+
+ var atom2 = new qx.ui.basic.Atom("First Name");
+ var textfield2 = new qx.ui.form.TextField;
+
+ with(atom2)
+ {
+ setLeft(0);
+ setTop(33);
+ };
+
+ with(textfield2)
+ {
+ setLeft(80);
+ setRight(0);
+ setTop(30);
+ };
+
+ fieldSet.add(atom2, textfield2);
+
+
+
+ var atom3 = new qx.ui.basic.Atom("City");
+ var textfield3 = new qx.ui.form.TextField;
+
+ with(atom3)
+ {
+ setLeft(0);
+ setTop(63);
+ };
+
+ with(textfield3)
+ {
+ setLeft(80);
+ setRight(0);
+ setTop(60);
+ };
+
+ fieldSet.add(atom3, textfield3);
+
+
+
+ /*
+ Menu
+ */
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("New");
+ var mb1_02 = new qx.ui.menu.Button("Open");
+ var mb1_03 = new qx.ui.menu.Button("Save");
+ var mb1_04 = new qx.ui.menu.Button("Save as");
+ var mb1_05 = new qx.ui.menu.Button("Close");
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved");
+
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("Undo");
+ var mb2_02 = new qx.ui.menu.Button("Redo");
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png");
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png");
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png");
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png");
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All");
+ var mb2_08 = new qx.ui.menu.Button("Find");
+ var mb2_09 = new qx.ui.menu.Button("Find Again");
+
+
+
+
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", null, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", null, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", null, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt");
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt");
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt");
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt");
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt");
+
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt");
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt");
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt");
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt");
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt");
+
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, null, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...");
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions");
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences");
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window");
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", null, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally", null);
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically", null);
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window");
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window");
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+
+ var m5 = new qx.ui.menu.Menu;
+
+ var mb5_01 = new qx.ui.menu.Button("Help");
+ var mb5_02 = new qx.ui.menu.Button("About");
+
+ m5.add(mb5_01, mb5_02);
+
+ d.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m4, m4_suba, m5);
+
+
+ var inline2 = new qx.ui.basic.Inline("iframe2");
+
+ inline2.setHeight("auto");
+ inline2.setWidth("auto");
+
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4);
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5);
+
+ mb1.add(mbb1, mbb2, mbb3, mbb4, mbb5);
+
+ with(mb1)
+ {
+ setWidth(400);
+ setHeight("auto");
+ };
+
+ inline2.add(mb1);
+
+ d.add(inline2);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_1.html
new file mode 100644
index 0000000000..24e845ab97
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_1.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Testing of column alignment, resizeable prohibition for columns and live resizing.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right", resizable : false },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ // Prohibit resizing of columns completly
+ // lv.setResizable(false);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+
+
+
+ var chk1 = new qx.ui.form.CheckBox("Enable Live Resize");
+ chk1.setLocation(20, 420);
+ qx.ui.core.ClientDocument.getInstance().add(chk1);
+
+ chk1.addEventListener("changeChecked", function(e) {
+ lv.setLiveResize(e.getData());
+ });
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_2.html
new file mode 100644
index 0000000000..eff805d2c0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_2.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells and an additional icon.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+ var li = [ "apps/preferences-desktop-theme.png", "actions/edit.png", "apps/graphics-image-viewer.png", "apps/preferences-desktop-wallpaper.png", "actions/document-new.png" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ icon : { source : "icon/16/" + li[t] }, name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ icon : { label : "", width: 24, type : "image" },
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_3.html
new file mode 100644
index 0000000000..d726c26d63
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_3.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with iconHtml cells.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { html : "E-Mail " + i, icon : "icon/16/apps/internet-email-client.png", iconWidth : 16, iconHeight : 16 }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }, open : { uri : "http://www.google.com/search?q=" + i, html : "Open " + i }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 120, type : "iconHtml" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_4.html
new file mode 100644
index 0000000000..6072187c89
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ListView_4.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Added some sort handling stuff.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString, align : "right" },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(qx.ui.core.ClientDocument.getInstance(), 20, 448);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/List_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/List_1.html
new file mode 100644
index 0000000000..843ce723ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/List_1.html
@@ -0,0 +1,127 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>List implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var l1 = new qx.ui.form.List;
+
+ l1.set({ top : 48, left: 20, height: 200, width: 150, overflow : "scrollY" });
+
+ var item;
+ for( var i=1; i<=35; i++ )
+ {
+ // item = new qx.ui.form.ListItem("Item No " + i);
+ item = new qx.ui.form.ListItem("Item No " + i, "icon/" + ((i % 4) ? "16" : "48") + "/places/folder.png");
+
+ !(i % 9) && (item.setEnabled(false));
+
+ l1.add(item);
+ };
+
+ d.add(l1);
+
+ var l2 = new qx.ui.form.List;
+
+ l2.set({ top : 48, left: 400, height: 200, width: 150 });
+ l2.getManager().setMultiSelection(false);
+ //l2.setOverflow("scrollY");
+ l2.setHeight("auto");
+
+ var l2l = [ "red", "violett", "rose", "blue", "green", "cyan", "magenta", "yellow", "brown", "orange", "black", "white", "grey", "gray", "brown" ];
+
+ for (var i=0; i<l2l.length; i++) {
+ l2.add(new qx.ui.form.ListItem(l2l[i]));
+ };
+
+ d.add(l2);
+
+
+
+
+ var c1 = new qx.ui.form.CheckBox("Enable Multi-Selection");
+ var c2 = new qx.ui.form.CheckBox("Enable Drag-Selection");
+ var c3 = new qx.ui.form.CheckBox("Allow Deselection");
+ var c4 = new qx.ui.form.CheckBox("Enable Inline Find");
+
+ c1.setLocation(180, 48);
+ c2.setLocation(180, 68);
+ c3.setLocation(180, 88);
+ c4.setLocation(180, 108);
+
+ d.add(c1, c2, c3, c4);
+
+ c1.setChecked(true);
+ c2.setChecked(true);
+ c3.setChecked(true);
+ c4.setChecked(true);
+
+ c1.addEventListener("changeChecked", function(e) {
+ l1.getManager().setMultiSelection(e.getData());
+ });
+
+ c2.addEventListener("changeChecked", function(e) {
+ l1.getManager().setDragSelection(e.getData());
+ });
+
+ c3.addEventListener("changeChecked", function(e) {
+ l1.getManager().setCanDeselect(e.getData());
+ });
+
+ c4.addEventListener("changeChecked", function(e) {
+ l1.setEnableInlineFind(e.getData());
+ });
+
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Label", "label");
+ var rd2 = new qx.ui.form.RadioButton("Show Icon", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Both", "both");
+
+ rd1.set( { left: 180, top: 128 } );
+ rd2.set( { left: 180, top: 148 } );
+ rd3.set( { left: 180, top: 168 } );
+
+ d.add(rd1, rd2, rd3);
+
+ rd3.setChecked(true);
+
+ var rbm = new qx.manager.selection.RadioManager( name, [rd1, rd2, rd3]);
+
+ rbm.addEventListener("changeSelected", function(e)
+ {
+ for( var i=0; i<l1.getChildrenLength(); i++ ) {
+ l1.getChildren()[i].setShow(e.getData().getValue());
+ }
+ });
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 400);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 200, 400);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Menu_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Menu_1.html
new file mode 100644
index 0000000000..7c3b1310ea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Menu_1.html
@@ -0,0 +1,193 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.menu.Menu Implementation.</p>
+ <p>Added qx.client.Command support tests.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var q1 = new qx.client.Command("Ctrl+Z");
+ q1.addEventListener("execute", function(e) {
+ alert("Undo");
+ });
+
+ var q2 = new qx.client.Command("Ctrl+Y");
+ q2.addEventListener("execute", function(e) {
+ alert("Redo");
+ });
+
+ var q3 = new qx.client.Command("Ctrl+X");
+ q3.addEventListener("execute", function(e) {
+ alert("Cut");
+ });
+
+ var q4 = new qx.client.Command("Ctrl+C");
+ q4.addEventListener("execute", function(e) {
+ alert("Copy");
+ });
+
+ var q5 = new qx.client.Command("Ctrl+V");
+ q5.addEventListener("execute", function(e) {
+ alert("Paste");
+ });
+
+ var q6 = new qx.client.Command("Del");
+ q6.addEventListener("execute", function(e) {
+ alert("Delete");
+ });
+
+ var q7 = new qx.client.Command("Ctrl+A");
+ q7.addEventListener("execute", function(e) {
+ alert("Select All");
+ });
+
+ var q8 = new qx.client.Command("Ctrl+F");
+ q8.addEventListener("execute", function(e) {
+ alert("Search");
+ });
+
+ var q9 = new qx.client.Command("Ctrl+G");
+ q9.addEventListener("execute", function(e) {
+ alert("Search Again");
+ });
+
+ var q10 = new qx.client.Command();
+ q10.addEventListener("execute", function(e) {
+ alert("Syntax Highlighting");
+ });
+
+ var q11 = new qx.client.Command("Esc");
+ q11.addEventListener("execute", function(e) {
+ alert("Escape");
+ });
+
+ var q12 = new qx.client.Command("Space");
+ q12.addEventListener("execute", function(e) {
+ alert("Space");
+ });
+
+
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists", null, q12);
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting", null, q10);
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font", null, q11);
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo", null, q1);
+ var mb1_06 = new qx.ui.menu.Button("Redo", null, q2);
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png", q3);
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png", q4);
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png", q5);
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png", q6);
+ var mb1_11 = new qx.ui.menu.Button("Select All", null, q7);
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search", null, q8);
+ var mb1_13 = new qx.ui.menu.Button("Search Again", null, q9);
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+
+
+
+
+
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.html.Location.getPageBoxLeft(el));
+ m1.setTop(qx.html.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ d.add(w1);
+
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 180, 48);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 380, 48);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/NativeWindow_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/NativeWindow_1.html
new file mode 100644
index 0000000000..55fab71439
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/NativeWindow_1.html
@@ -0,0 +1,198 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Native Windows. Could be understood as an enhanced window.open with some additional options like to create modal windows.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var w1 = new qx.client.NativeWindow("http://www.google.com");
+
+ w1.setDimension(600, 400);
+
+
+ w1.addEventListener("load", function(e) {
+ this.debug("Content loaded: " + this.isLoaded());
+ });
+
+ w1.addEventListener("close", function(e) {
+ this.debug("Window closed: " + this.isClosed());
+ });
+
+
+
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var btn1 = new qx.ui.form.Button("Open Native Window", "icon/16/apps/preferences-desktop-wallpaper.png");
+ with(btn1)
+ {
+ setTop(48);
+ setLeft(20);
+
+ addEventListener("click", function() { w1.open(); } );
+ };
+
+ d.add(btn1);
+
+
+
+
+
+ var l = new qx.ui.layout.VerticalBoxLayout;
+ l.setLocation(20, 96);
+ l.setWidth("auto");
+ l.setHeight("auto");
+ d.add(l);
+
+ var fs1 = new qx.ui.groupbox.GroupBox("Initial Settings");
+ fs1.setHeight("auto");
+ l.add(fs1);
+
+
+ var chk1 = new qx.ui.form.CheckBox("Resizeable");
+ chk1.setLocation(0, 0);
+ chk1.setChecked(true);
+ chk1.addEventListener("changeChecked", function(e) {
+ w1.setResizeable(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk2.setLocation(0, 20);
+ chk2.setChecked(false);
+ chk2.addEventListener("changeChecked", function(e) {
+ w1.setShowStatusbar(e.getData());
+ });
+
+ var chk3 = new qx.ui.form.CheckBox("Show Menubar");
+ chk3.setLocation(0, 40);
+ chk3.setChecked(false);
+ chk3.addEventListener("changeChecked", function(e) {
+ w1.setShowMenubar(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Show Location");
+ chk4.setLocation(0, 60);
+ chk4.setChecked(false);
+ chk4.addEventListener("changeChecked", function(e) {
+ w1.setShowLocation(e.getData());
+ });
+
+ var chk5 = new qx.ui.form.CheckBox("Show Toolbar");
+ chk5.setLocation(0, 80);
+ chk5.setChecked(false);
+ chk5.addEventListener("changeChecked", function(e) {
+ w1.setShowToolbar(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Allow Scrollbars");
+ chk6.setLocation(0, 100);
+ chk6.setChecked(true);
+ chk6.addEventListener("changeChecked", function(e) {
+ w1.setAllowScrollbars(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Modal");
+ chk7.setLocation(0, 120);
+ chk7.setChecked(false);
+ chk7.addEventListener("changeChecked", function(e) {
+ w1.setModal(e.getData());
+ });
+
+ var chk8 = new qx.ui.form.CheckBox("Dependent");
+ chk8.setLocation(0, 140);
+ chk8.setChecked(true);
+ chk8.addEventListener("changeChecked", function(e) {
+ w1.setDependent(e.getData());
+ });
+
+ fs1.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8);
+
+
+
+
+
+
+
+
+ var fs2 = new qx.ui.groupbox.GroupBox("Runtime Settings");
+ fs2.setHeight("auto");
+ l.add(fs2);
+
+
+
+ var tf1 = new qx.ui.form.TextField("http://www.google.com");
+ tf1.setLocation(0, 2);
+ tf1.setWidth(150);
+
+ var btn1 = new qx.ui.form.Button("Set Url", "icon/16/actions/dialog-ok.png");
+ btn1.setLocation(155, 0);
+ btn1.addEventListener("click", function() {
+ w1.setUrl(tf1.getValue());
+ });
+
+
+
+
+ var tf2 = new qx.ui.form.TextField("600");
+ tf2.setLocation(0, 42);
+ tf2.setWidth(50);
+
+ var btn2 = new qx.ui.form.Button("Set Width", "icon/16/actions/dialog-ok.png");
+ btn2.setLocation(55, 40);
+ btn2.addEventListener("click", function() {
+ w1.setWidth(parseInt(tf2.getValue()));
+ });
+
+
+
+
+ var tf3 = new qx.ui.form.TextField("400");
+ tf3.setLocation(0, 72);
+ tf3.setWidth(50);
+
+ var btn3 = new qx.ui.form.Button("Set Height", "icon/16/actions/dialog-ok.png");
+ btn3.setLocation(55, 70);
+ btn3.addEventListener("click", function() {
+ w1.setHeight(parseInt(tf3.getValue()));
+ });
+
+
+
+ var btn4 = new qx.ui.form.Button("Center to screen", "icon/16/apps/graphics-image-viewer.png");
+ btn4.setLocation(0, 110);
+ btn4.addEventListener("click", function() {
+ w1.centerToScreen()
+ });
+
+ var btn5 = new qx.ui.form.Button("Center to screen area", "icon/16/apps/graphics-image-viewer.png");
+ btn5.setLocation(0, 140);
+ btn5.addEventListener("click", function() {
+ w1.centerToScreenArea()
+ });
+
+ var btn6 = new qx.ui.form.Button("Center to opener", "icon/16/apps/graphics-image-viewer.png");
+ btn6.setLocation(0, 170);
+ btn6.addEventListener("click", function() {
+ w1.centerToOpener()
+ });
+
+
+
+ fs2.add(tf1, btn1, tf2, btn2, tf3, btn3, btn4, btn5, btn6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RadioButton_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RadioButton_1.html
new file mode 100644
index 0000000000..05d558e800
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RadioButton_1.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.ui.form.RadioButton. qx.ui.form.RadioButton extends qx.ui.basic.Atom and so it inherits all the options and properties defined there.</p>
+ <p>To group multiple QxRadioButtons you must define a instance of qx.manager.selection.RadioManager and add them to this new instance. All QxRadioButtons assigned to the same group make sure that only one of them is checked at the same time.</p>
+ <p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var rb1 = new qx.ui.form.RadioButton("Option #1", "rb1");
+ with(rb1)
+ {
+ setTop(80);
+ setLeft(20);
+ };
+ d.add(rb1);
+
+ var rb2 = new qx.ui.form.RadioButton("Option #2", "rb2");
+ with(rb2)
+ {
+ setTop(110);
+ setLeft(20);
+ };
+ d.add(rb2);
+ rb2.setChecked(true);
+
+
+ var rb3 = new qx.ui.form.RadioButton("Top RadioButton", "rb3");
+ with(rb3)
+ {
+ setTop(160);
+ setLeft(20);
+ setIconPosition("top");
+ };
+ d.add(rb3);
+
+ var rb4 = new qx.ui.form.RadioButton("Bottom RadioButton", "rb4");
+ with(rb4)
+ {
+ setTop(160);
+ setLeft(160);
+ setIconPosition("bottom");
+ };
+ d.add(rb4);
+
+
+ var rb5 = new qx.ui.form.RadioButton("Left RadioButton", "rb5");
+ with(rb5)
+ {
+ setTop(220);
+ setLeft(20);
+ setIconPosition("left");
+ };
+ d.add(rb5);
+
+ var rb6 = new qx.ui.form.RadioButton("Right RadioButton", "rb6");
+ with(rb6)
+ {
+ setTop(220);
+ setLeft(160);
+ setIconPosition("right");
+ };
+ d.add(rb6);
+
+ var rb7 = new qx.ui.form.RadioButton(null, "rb7");
+ with(rb7)
+ {
+ setTop(280);
+ setLeft(20);
+ };
+ d.add(rb7);
+
+
+ var rg1 = new qx.manager.selection.RadioManager("mygroup", [rb1, rb2, rb3, rb4, rb5, rb6, rb7]);
+
+
+
+
+
+ var linfo = new qx.ui.basic.Atom("Current Value: \"" + rg1.getSelected().getLabel() + "\" (" + rg1.getSelected().getValue() + ")", "icon/16/actions/go-next.png");
+
+ with(linfo)
+ {
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ setBackgroundColor("white");
+ setTop(48);
+ setLeft(20);
+ };
+
+ rg1.addEventListener("changeSelected", function(e) {
+ linfo.setLabel("Current Value: \"" + e.getData().getLabel() + "\" (" + e.getData().getValue() + ")");
+ });
+
+ d.add(linfo);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RepeatButton_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RepeatButton_1.html
new file mode 100644
index 0000000000..e0281c273a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RepeatButton_1.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the qx.ui.form.RepeatButton constructor. qx.ui.form.RepeatButton is based on qx.ui.form.Button but adds some interval handled event mechanism.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function buttonExecute() { this.debug("Executed: " + this.getLabel()); };
+
+ var btn1 = new qx.ui.form.RepeatButton("Repeat Button No #1");
+ with(btn1)
+ {
+ setTop(48);
+ setLeft(20);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn1);
+
+
+
+ var btn2 = new qx.ui.form.RepeatButton("Repeat Button No #2");
+ with(btn2)
+ {
+ setTop(48);
+ setLeft(160);
+ addEventListener("execute", buttonExecute);
+ setEnabled(false);
+ };
+
+ d.add(btn2);
+
+
+
+ var btn3 = new qx.ui.form.RepeatButton("Repeat Button No #3");
+ with(btn3)
+ {
+ setTop(48);
+ setLeft(300);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn3);
+
+
+ var btn4 = new qx.ui.form.RepeatButton("Repeat Button No #4", "icon/16/actions/go-next.png");
+ with(btn4)
+ {
+ setTop(148);
+ setLeft(20);
+ addEventListener("execute", buttonExecute);
+ };
+
+ d.add(btn4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Resizer_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Resizer_1.html
new file mode 100755
index 0000000000..b71aa774d0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Resizer_1.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.resizer.Rezizer.</p>
+ <p>
+ The Resizer widget acts as a wrapper of another widget. It allows the child widget to be resized by the end user.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ function newResizer() {
+ var tArea = new qx.ui.form.TextArea;
+ tArea.setValue("Resize me\nI'm resizable");
+ tArea.set({
+ minWidth: 100,
+ minHeight: 50,
+ width: 200,
+ height: 100
+ });
+ return new qx.ui.resizer.Resizer(tArea);
+ }
+
+ function newHBox() {
+ var hBox = new qx.ui.layout.BoxLayout;
+ hBox.set({
+ spacing: 10
+ });
+ hBox.auto();
+ hBox.add(newResizer(), newResizer());
+ return hBox;
+ }
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var vBox = new qx.ui.layout.VerticalBoxLayout;
+ var list = new qx.ui.form.List;
+ list.set({width: 100, height: 200, minWidth: 50, minHeight: 100, overflow: 'auto'});
+ for (var i = 0; i < 100; i++) {
+ list.add(new qx.ui.form.ListItem('Option number '+i));
+ }
+ vBox.add(new qx.ui.resizer.Resizer(list));
+ vBox.set({
+ spacing: 10,
+ top: 50,
+ left: 30
+ });
+ vBox.auto();
+ vBox.add(newHBox(), newHBox());
+ vBox.addToDocument();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RpcTreeFullControl_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RpcTreeFullControl_1.html
new file mode 100644
index 0000000000..dbbc46fedf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/RpcTreeFullControl_1.html
@@ -0,0 +1,194 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link
+ type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>
+ Shows a tree which listens for tree events. This script communicates via
+ JSON-RPC to a backend server. Each time a new tree node is opened, the
+ children are requested from the server. See the server-side functions
+ at backend/php/services/qooxdoo/fs.php.
+ </p>
+ </div>
+
+<script type="text/javascript">
+qx.core.Init.getInstance().defineMain(
+ function()
+ {
+ var addChildren = function(parent, children)
+ {
+ var t;
+ var trs;
+ var child;
+
+ for (i = 0; i < children.length; i++)
+ {
+ child = children[i];
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().newRow();
+
+ // Here's our indentation and tree-lines
+ trs.addIndent();
+
+ // If not a file or directory, change the icon
+ var bIsDirectory = ((child.mode & 0040000) != 0);
+ var bIsFile = ((child.mode & 0100000) != 0);
+ if (! bIsDirectory && ! bIsFile)
+ {
+ trs.addIcon("icon/16/places/user-desktop.png",
+ "icon/16/apps/accessories-dictionary.png");
+ }
+ else
+ {
+ trs.addIcon();
+ }
+
+ // The label
+ trs.addLabel(child.name);
+
+ // All else should be right justified
+ obj = new qx.ui.basic.HorizontalSpacer;
+ trs.addObject(obj, true);
+
+ // Add the permissions
+ mode = "";
+ mode = ((child.mode & 0001) ? "x" : "-") + mode;
+ mode = ((child.mode & 0002) ? "w" : "-") + mode;
+ mode = ((child.mode & 0004) ? "r" : "-") + mode;
+ mode = ((child.mode & 0010) ? "x" : "-") + mode;
+ mode = ((child.mode & 0020) ? "w" : "-") + mode;
+ mode = ((child.mode & 0040) ? "r" : "-") + mode;
+ mode = ((child.mode & 0100) ? "x" : "-") + mode;
+ mode = ((child.mode & 0200) ? "w" : "-") + mode;
+ mode = ((child.mode & 0400) ? "r" : "-") + mode;
+ obj = new qx.ui.basic.Label(mode);
+ obj.setWidth(80);
+ obj.setStyleProperty("fontFamily", "monospace");
+ trs.addObject(obj, true);
+
+ // Add a file size, date and mode
+ obj = new qx.ui.basic.Label(child.size + "");
+ obj.setWidth(50);
+ obj.setStyleProperty("fontFamily", "monospace");
+ trs.addObject(obj, true);
+
+ var d = new Date();
+ d.setTime(child.mtime * 1000);
+ obj = new qx.ui.basic.Label(d.toString().slice(0,33));
+ obj.setWidth(200);
+ obj.setStyleProperty("fontFamily", "monospace");
+ trs.addObject(obj, true);
+
+ if (bIsDirectory)
+ {
+ t = new qx.ui.treefullcontrol.TreeFolder(trs);
+ }
+ else
+ {
+ t = new qx.ui.treefullcontrol.TreeFile(trs);
+ }
+ parent.add(t);
+ }
+ }
+
+ /*
+ * Reset the default of always showing the plus/minus symbol. The
+ * default is 'false'. We want to always display it for each folder
+ * (and then stop displaying it if we determine upon open that there
+ * are no contents).
+ */
+ var constructor = qx.OO.classes["qx.ui.treefullcontrol.TreeFolder"];
+ qx.Proto = constructor.prototype;
+ qx.OO.changeProperty({
+ name : "alwaysShowPlusMinusSymbol",
+ type : "boolean",
+ defaultValue : true });
+
+ var rpc = new qx.io.remote.Rpc();
+ rpc.setTimeout(10000);
+ rpc.setUrl("/services/");
+ rpc.setServiceName("qooxdoo.fs");
+ rpc.setCrossDomain(false);
+
+ var mycall = null;
+
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Root");
+ var t = new qx.ui.treefullcontrol.Tree(trs);
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(700);
+ setBottom(48);
+
+ setHideNode(true); // hide the root node
+ setUseTreeLines(true); // display tree lines
+ };
+
+ /*
+ * All subtrees will use this root node's event listeners. Create an
+ * event listener for an open while empty.
+ */
+ t.addEventListener(
+ "treeOpenWhileEmpty",
+ function(e)
+ {
+ var parent = e.getData();
+ var hierarchy = parent.getHierarchy(new Array());
+
+ parent.debug("Requesting children...");
+
+ // Strip off the root node
+ hierarchy.shift();
+
+ mycall = rpc.callAsync(
+ function(result, ex, id)
+ {
+ mycall = null;
+ if (ex == null) {
+ parent.debug("Children obtained. Rendering...");
+ addChildren(parent, result);
+ parent.debug("Rendering complete.");
+ } else {
+ alert("Async(" + id + ") exception: " + ex);
+ }
+ },
+ "readDirEntries",
+ hierarchy,
+ true);
+ });
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Sandbox");
+ var tf = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.add(tf);
+ });
+/*
+ * Local Variables:
+ * mode: java
+ * End:
+ */
+</script>
+
+</body>
+</html>
+
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Spinner_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Spinner_1.html
new file mode 100644
index 0000000000..bdeb65cb10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Spinner_1.html
@@ -0,0 +1,107 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.form.Spinner.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var s1 = new qx.ui.form.Spinner;
+
+ with(s1)
+ {
+ setLeft(20);
+ setTop(64);
+ };
+
+ d.add(s1);
+
+ d.add( (new qx.ui.basic.Label("100").set({left:20, top:48})) );
+ d.add( (new qx.ui.basic.Label("0").set({left:20, top:90})) );
+
+ var s2 = new qx.ui.form.Spinner;
+
+ with(s2)
+ {
+ setLeft(100);
+ setTop(64);
+ setValue(30);
+ setMin(-30);
+ setMax(30);
+ };
+
+ d.add(s2);
+
+ d.add( (new qx.ui.basic.Label("30").set({left:100, top:48})) );
+ d.add( (new qx.ui.basic.Label("-30").set({left:100, top:90})) );
+
+ var s3 = new qx.ui.form.Spinner;
+
+ with(s3)
+ {
+ setLeft(180);
+ setTop(64);
+ setValue(0);
+ setMin(-3000);
+ setMax(3000);
+ setIncrementAmount(5);
+ };
+
+ d.add(s3);
+
+ d.add( (new qx.ui.basic.Label("3000").set({left:180, top:48})) );
+ d.add( (new qx.ui.basic.Label("-3000").set({left:180, top:90})) );
+
+ /*
+ s3._manager.addEventListener("changeValue", function(e) {
+ this.debug("Value: " + e.getData());
+ });
+ */
+
+ var s4 = new qx.ui.form.Spinner;
+
+ with(s4)
+ {
+ setLeft(260);
+ setTop(64);
+ setValue(0);
+ setMin(100);
+ setMax(200);
+ };
+
+ d.add(s4);
+
+ d.add( (new qx.ui.basic.Label("200").set({left:260, top:48})) );
+ d.add( (new qx.ui.basic.Label("100").set({left:260, top:90})) );
+
+
+ var s5 = new qx.ui.form.Spinner( -200, null, -100);
+
+ with(s5)
+ {
+ setLeft(340);
+ setTop(64);
+ };
+
+ d.add(s5);
+
+ d.add( (new qx.ui.basic.Label("-100").set({left:340, top:48})) );
+ d.add( (new qx.ui.basic.Label("-200").set({left:340, top:90})) );
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/SplitPane_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/SplitPane_1.html
new file mode 100644
index 0000000000..fbeed10a36
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/SplitPane_1.html
@@ -0,0 +1,72 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for normal width Splitpane, no holding knobs, live resize enabled.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var frame = new qx.ui.layout.CanvasLayout;
+ frame.setLocation(20, 48);
+ frame.setBottom(48);
+ frame.setRight(300);
+ frame.setBackgroundColor("#134275");
+ frame.setPadding(20);
+ frame.addToDocument();
+
+ // the splitpane itself
+ var splitpane = new qx.ui.splitpane.HorizontalSplitPane("1*", "2*");
+ splitpane.setEdge(0);
+ splitpane.setLiveResize(true);
+ frame.add(splitpane);
+
+ // left Widget
+ var leftWidget = new qx.ui.form.TextArea("LeftWidget");
+ leftWidget.setWrap(true);
+ leftWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ leftWidget.setWidth("100%");
+ leftWidget.setHeight("100%");
+
+ // rightWidget (another splitpane)
+ var rightWidget = new qx.ui.splitpane.VerticalSplitPane;
+ rightWidget.setHeight("100%");
+ rightWidget.setWidth("100%");
+ rightWidget.setLiveResize(true);
+
+ // add widgets to splitpane
+ splitpane.addLeft(leftWidget);
+ splitpane.addRight(rightWidget);
+
+
+
+ // right top widget
+ var topWidget = new qx.ui.form.TextArea("Right Top Widget");
+ topWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ topWidget.setHeight("100%");
+ topWidget.setWidth("100%");
+
+ // right bottom widget
+ var bottomWidget = new qx.ui.embed.Iframe("http://www.qooxdoo.org");
+ bottomWidget.setHeight("100%");
+ bottomWidget.setWidth("100%");
+
+ // add widgets to right splitpane
+ rightWidget.addTop(topWidget);
+ rightWidget.addBottom(bottomWidget);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/SplitPane_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/SplitPane_2.html
new file mode 100644
index 0000000000..5041e62928
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/SplitPane_2.html
@@ -0,0 +1,75 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for extra slim Splitpane, with holding knobs.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var frame = new qx.ui.layout.CanvasLayout;
+ frame.setLocation(20, 48);
+ frame.setBottom(48);
+ frame.setRight(300);
+ frame.setBackgroundColor("#134275");
+ frame.setPadding(20);
+ frame.addToDocument();
+
+ // the splitpane itself
+ var splitpane = new qx.ui.splitpane.HorizontalSplitPane("1*", "2*");
+ splitpane.setEdge(0);
+ splitpane.setSplitterSize(1);
+ splitpane.setShowKnob(true);
+ frame.add(splitpane);
+
+ // left Widget
+ var leftWidget = new qx.ui.form.TextArea("LeftWidget");
+ leftWidget.setWrap(true);
+ leftWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ leftWidget.setWidth("100%");
+ leftWidget.setHeight("100%");
+
+ // rightWidget (another splitpane)
+ var rightWidget = new qx.ui.splitpane.VerticalSplitPane;
+ rightWidget.setHeight("100%");
+ rightWidget.setWidth("100%");
+ rightWidget.setSplitterSize(1);
+ rightWidget.setShowKnob(true);
+
+
+ // add widgets to splitpane
+ splitpane.addLeft(leftWidget);
+ splitpane.addRight(rightWidget);
+
+
+
+ // right top widget
+ var topWidget = new qx.ui.form.TextArea("Right Top Widget");
+ topWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ topWidget.setHeight("100%");
+ topWidget.setWidth("100%");
+
+ // right bottom widget
+ var bottomWidget = new qx.ui.embed.Iframe("http://www.qooxdoo.org");
+ bottomWidget.setHeight("100%");
+ bottomWidget.setWidth("100%");
+
+ // add widgets to right splitpane
+ rightWidget.addTop(topWidget);
+ rightWidget.addBottom(bottomWidget);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TabView_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TabView_1.html
new file mode 100644
index 0000000000..caaf10d027
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TabView_1.html
@@ -0,0 +1,156 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tabbar implementation.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 20, top: 48, right: 335, bottom: 48 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Edit");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Find");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Backup");
+
+
+ t1_2.setChecked(true);
+
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ var f2 = new qx.ui.form.TextField("Find Anywhere");
+ var f3 = new qx.ui.form.TextField("Backup Input");
+
+ p1_2.add(f2);
+ p1_3.add(f3);
+
+ var c1 = new qx.ui.form.CheckBox("Place bar on top");
+ var c2 = new qx.ui.form.CheckBox("Align tabs to left");
+
+ c1.setTop(0);
+ c1.setChecked(true);
+
+ c2.setTop(20);
+ c2.setChecked(true);
+
+ p1_1.add(c1, c2);
+
+ c1.addEventListener("changeChecked", function(e) {
+ tf1.setPlaceBarOnTop(e.getData());
+ });
+
+ c2.addEventListener("changeChecked", function(e) {
+ tf1.setAlignTabsToLeft(e.getData());
+ });
+
+
+
+
+ var tf2 = new qx.ui.pageview.tabview.TabView;
+
+ tf2.set({ left: 0, top: 50, right: 0, bottom: 0 });
+
+
+
+ var t2_1 = new qx.ui.pageview.tabview.Button("Search for Files", "icon/16/actions/document-open.png");
+ var t2_2 = new qx.ui.pageview.tabview.Button("Search the Web", "icon/16/categories/applications-internet.png");
+ var t2_3 = new qx.ui.pageview.tabview.Button("Search for Text", "icon/16/categories/applications.png");
+ var t2_4 = new qx.ui.pageview.tabview.Button("Search for Persons", "icon/16/apps/accessories-archiver.png");
+ var t2_5 = new qx.ui.pageview.tabview.Button("Search in Mails", "icon/16/apps/internet-email-client.png");
+
+ t2_1.setChecked(true);
+
+ tf2.getBar().add(t2_1, t2_2, t2_3, t2_4, t2_5);
+
+ var p2_1 = new qx.ui.pageview.tabview.Page(t2_1);
+ var p2_2 = new qx.ui.pageview.tabview.Page(t2_2);
+ var p2_3 = new qx.ui.pageview.tabview.Page(t2_3);
+ var p2_4 = new qx.ui.pageview.tabview.Page(t2_4);
+ var p2_5 = new qx.ui.pageview.tabview.Page(t2_5);
+
+ tf2.getPane().add(p2_1, p2_2, p2_3, p2_4, p2_5);
+
+ var t2_1 = new qx.ui.form.TextField("Files...");
+ var t2_2 = new qx.ui.form.TextField("Web...");
+ var t2_3 = new qx.ui.form.TextField("Printers...");
+ var t2_4 = new qx.ui.form.TextField("Persons...");
+ var t2_5 = new qx.ui.form.TextField("Mails...");
+
+ t2_1.set({ top: 2, left: 0, width: 140 });
+ t2_2.set({ top: 2, left: 0, width: 140 });
+ t2_3.set({ top: 2, left: 0, width: 140 });
+ t2_4.set({ top: 2, left: 0, width: 140 });
+ t2_5.set({ top: 2, left: 0, width: 140 });
+
+ p2_1.add(t2_1);
+ p2_2.add(t2_2);
+ p2_3.add(t2_3);
+ p2_4.add(t2_4);
+ p2_5.add(t2_5);
+
+ var b2_1 = new qx.ui.form.Button("Search", "icon/16/actions/edit-find.png");
+ var b2_2 = new qx.ui.form.Button("Search", "icon/16/actions/edit-find.png");
+ var b2_3 = new qx.ui.form.Button("Search", "icon/16/actions/edit-find.png");
+ var b2_4 = new qx.ui.form.Button("Search", "icon/16/actions/edit-find.png");
+ var b2_5 = new qx.ui.form.Button("Search", "icon/16/actions/edit-find.png");
+
+ b2_1.set({ top: 0, left: 150 });
+ b2_2.set({ top: 0, left: 150 });
+ b2_3.set({ top: 0, left: 150 });
+ b2_4.set({ top: 0, left: 150 });
+ b2_5.set({ top: 0, left: 150 });
+
+ p2_1.add(b2_1);
+ p2_2.add(b2_2);
+ p2_3.add(b2_3);
+ p2_4.add(b2_4);
+ p2_5.add(b2_5);
+
+ function dosearch(e) {
+ alert("Searching...");
+ };
+
+ b2_1.addEventListener("click", dosearch);
+ b2_2.addEventListener("click", dosearch);
+ b2_3.addEventListener("click", dosearch);
+ b2_4.addEventListener("click", dosearch);
+ b2_5.addEventListener("click", dosearch);
+
+
+
+
+ p1_2.add(tf2);
+
+
+
+
+
+
+ d.add(tf1);
+
+
+ t1_1.setEnabled(false);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TabView_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TabView_2.html
new file mode 100644
index 0000000000..2e1fea67cb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TabView_2.html
@@ -0,0 +1,127 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+ </head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tabbar implementation.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 20, top: 48, right: 335, bottom: 48 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Edit");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Find");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Backup");
+ var t1_4 = new qx.ui.pageview.tabview.Button("System");
+ var t1_5 = new qx.ui.pageview.tabview.Button("Tools");
+ var t1_6 = new qx.ui.pageview.tabview.Button("Infos");
+
+ // set tab 1 active
+ t1_1.setChecked(true);
+
+ // add close images to tab
+ t1_1.setShowCloseButton(true);
+ t1_2.setShowCloseButton(true);
+ t1_3.setShowCloseButton(true);
+ t1_4.setShowCloseButton(true);
+ t1_5.setShowCloseButton(true);
+ t1_6.setShowCloseButton(true);
+
+
+ // modify the default images
+ t1_2.setCloseButtonImage("icon/16/status/dialog-error.png");
+ t1_4.setCloseButtonImage("icon/16/actions/dialog-ok.png");
+
+ // add an eventlistener on the buttons
+ t1_1.addEventListener("closetab", _ontabclose);
+ t1_2.addEventListener("closetab", _ontabclose);
+ t1_3.addEventListener("closetab", _ontabclose);
+ t1_4.addEventListener("closetab", _ontabclose);
+ t1_5.addEventListener("closetab", _ontabclose);
+ t1_6.addEventListener("closetab", _ontabclose);
+
+
+
+ // this handler gets called if a tab-button fires a "closetab" event
+ function _ontabclose(e){
+ var btn = e.getData();
+
+ var pagesArray = tf1.getPane().getChildren();
+ var pageSearched = null;
+
+ for(var i = 0, l = pagesArray.length; i < l; i++){
+ var tmpPage = pagesArray[i];
+ if(tmpPage.getButton() === btn){
+ pageSearched = tmpPage;
+ }
+ }
+ if(pageSearched){
+
+ var itemsList = tf1.getBar().getChildren();
+ var lengthList = itemsList.length;
+ var btnIndex = itemsList.indexOf(btn);
+
+ // never remove the last tab
+ if( lengthList > 1 ) {
+
+ // Select another tab
+ if (btnIndex < lengthList-1 ){
+ itemsList[btnIndex+1].setChecked(true);
+ }
+ else {
+ itemsList[btnIndex-1].setChecked(true);
+ }
+
+ btn.getManager().remove(btn);
+ tf1.getBar().remove(btn);
+
+ tf1.getPane().remove(pageSearched);
+
+ pageSearched.dispose();
+ btn.dispose();
+ } else {
+ alert("Last Tab won't be removed!");
+ }
+ }
+
+ e.stopPropagation();
+ }
+
+ tf1.getBar().add(t1_1, t1_2, t1_3, t1_4, t1_5, t1_6);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+ var p1_4 = new qx.ui.pageview.tabview.Page(t1_4);
+ var p1_5 = new qx.ui.pageview.tabview.Page(t1_5);
+ var p1_6 = new qx.ui.pageview.tabview.Page(t1_6);
+
+ p1_1.setBackgroundColor("green");
+ p1_2.setBackgroundColor("red");
+ p1_3.setBackgroundColor("blue");
+ p1_4.setBackgroundColor("black");
+ p1_5.setBackgroundColor("yellow");
+ p1_6.setBackgroundColor("orange");
+
+ tf1.getPane().add(p1_1, p1_2, p1_3, p1_4, p1_5, p1_6);
+
+ d.add(tf1);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Table_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Table_1.html
new file mode 100644
index 0000000000..3accffc630
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Table_1.html
@@ -0,0 +1,107 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table with virtual scrolling, model-view-controller, renderers,
+ editing, sorting, column resizing, column reordering,
+ column hiding.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var main = new qx.ui.layout.VerticalBoxLayout();
+ main.set({ left:10, top:30, right:300, bottom:30, spacing:5 });
+
+ var nextId = 0;
+ var createRandomRows = function(rowCount) {
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < rowCount; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ nextId++, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ return rowData;
+ };
+
+ // Create the initial data
+ var rowData = createRandomRows(50);
+
+ // Add some encoding relevant stuff
+ rowData[15][1] = "<b>A html &amp; entities escaping test</b>";
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ width:"100%", height:"1*", border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ setColumnWidth(0, 80);
+ setColumnWidth(1, 200);
+ setColumnWidth(2, 150);
+ };
+ main.add(table);
+
+ var buttonBar = new qx.ui.layout.HorizontalBoxLayout();
+ buttonBar.set({ width:"100%", height:"auto", spacing:5 });
+ main.add(buttonBar);
+
+ var button = new qx.ui.form.Button("Change row with ID 10");
+ button.addEventListener("execute", function(evt) {
+ var rowData = createRandomRows(1);
+ for (var i = 1; i < tableModel.getColumnCount(); i++) {
+ tableModel.setValue(i, 10, rowData[0][i]);
+ }
+ this.info("Row 10 changed");
+ });
+ buttonBar.add(button);
+
+ var button = new qx.ui.form.Button("Add 10 rows");
+ button.addEventListener("execute", function(evt) {
+ var rowData = createRandomRows(10);
+ tableModel.addRows(rowData);
+ this.info("10 rows added");
+ });
+ buttonBar.add(button);
+
+ var button = new qx.ui.form.Button("Remove 5 rows");
+ button.addEventListener("execute", function(evt) {
+ var rowCount = tableModel.getRowCount();
+ tableModel.removeRows(rowCount-5, 5);
+ this.info("5 rows removed");
+ });
+ buttonBar.add(button);
+
+ var checkBox = new qx.ui.form.CheckBox("keepFirstVisibleRowComplete", null, null, table.getKeepFirstVisibleRowComplete());
+ checkBox.setToolTip(new qx.ui.popup.ToolTip("Whether the the first visible row should be rendered completely when scrolling."));
+ checkBox.addEventListener("changeChecked", function(evt) {
+ table.setKeepFirstVisibleRowComplete(checkBox.getChecked());
+ this.info("Set keepFirstVisibleRowComplete to: " + checkBox.getChecked());
+ });
+ buttonBar.add(checkBox);
+
+ d.add(main);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Table_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Table_2.html
new file mode 100644
index 0000000000..372648cd8f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Table_2.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table with fixed columns.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, width:350, height:300, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_1.html
new file mode 100644
index 0000000000..a44c023c34
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_1.html
@@ -0,0 +1,252 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introduce all classes needed for creating real qx.ui.toolbar.ToolBars. This includes qx.ui.toolbar.ToolBars,
+ qx.ui.toolbar.ToolBarParts, qx.ui.toolbar.Separator and qx.ui.toolbar.ToolBarButtons.</p>
+
+ <p>The qx.ui.toolbar.ToolBarButtons and QxRadioButtons in this example are beautifully
+ decoupled by "global" qx.event.type.DataEvent.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48);
+ setLeft(20);
+ setRight(335);
+
+ // setWidth("auto");
+ };
+
+ var btns1 = [
+ { type : "button", icon : "document-new", text : "New" },
+ { type : "separator" },
+ { type : "button", icon : "edit-copy", text : "Copy" },
+ { type : "button", icon : "edit-cut", text : "Cut" },
+ { type : "button", icon : "edit-paste", text : "Paste" }
+ ];
+
+ var btns2 = [
+ { type : "button", icon : "go-up", text : "Upload" },
+ { type : "button", icon : "go-down", text : "Download" }
+ ];
+
+ var btns3 = [
+ { type : "button", icon : "help-about", text : "Help" }
+ ];
+
+ var bars = [ btns1, btns2, btns3 ];
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ };
+
+ function buttonExecute() { this.debug("Executed: " + this.getLabel()); };
+
+ var useParts = true;
+
+
+ for (var j=0; j<bars.length; j++)
+ {
+ var btns = bars[j];
+
+ if (useParts) {
+ var tbp = new qx.ui.toolbar.Part;
+ };
+
+ for (var i=0; i<btns.length; i++)
+ {
+ var btn = btns[i];
+
+ switch(btn.type)
+ {
+ case "separator":
+ var o = new qx.ui.toolbar.Separator;
+ break;
+
+ case "button":
+ var o = new qx.ui.toolbar.Button(btn.text, "icon/22/actions/" + btn.icon + ".png");
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ d.addEventListener("changeLayout", changeLayout, o);
+ d.addEventListener("changeSize", changeSize, o);
+
+ o.addEventListener("execute", buttonExecute);
+ break;
+ };
+
+ if (useParts)
+ {
+ tbp.add(o);
+ }
+ else
+ {
+ tb.add(o);
+ };
+ };
+
+ if (useParts) {
+ tb.add(tbp);
+ };
+ };
+
+ d.add(tb);
+
+
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var rd2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Label", "label");
+
+ with(rd1)
+ {
+ setTop(140);
+ setLeft(20);
+ setChecked(true);
+ };
+
+ with(rd2)
+ {
+ setTop(160);
+ setLeft(20);
+ };
+
+ with(rd3)
+ {
+ setTop(180);
+ setLeft(20);
+ };
+
+
+ var rbm = new qx.manager.selection.RadioManager();
+
+ rbm.add(rd1);
+ rbm.add(rd2);
+ rbm.add(rd3);
+
+
+ // beautiful decoupling: radio boxes don't know about toolbar buttons
+ rbm.addEventListener("changeSelected", function(e) {
+ d.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2, rd3);
+
+
+
+ // Alignment
+ var ra1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var ra2 = new qx.ui.form.RadioButton("Centered", "center");
+ var ra3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+
+ with(ra1)
+ {
+ setTop(140);
+ setLeft(220);
+ setChecked(true);
+ };
+
+ with(ra2)
+ {
+ setTop(160);
+ setLeft(220);
+ };
+
+ with(ra3)
+ {
+ setTop(180);
+ setLeft(220);
+ };
+
+
+ var ram = new qx.manager.selection.RadioManager();
+
+ ram.add(ra1);
+ ram.add(ra2);
+ ram.add(ra3);
+
+ d.add(ra1, ra2, ra3);
+
+ ram.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+
+
+
+ // Icon Sizes
+ var b3 = new qx.ui.form.Button("Icons: 22 Pixel", "icon/16/actions/format-color.png");
+
+ with(b3)
+ {
+ setTop(140);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b3.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 22));
+ });
+
+ var b4 = new qx.ui.form.Button("Icons: 32 Pixel", "icon/16/actions/format-color.png");
+
+ with(b4)
+ {
+ setTop(170);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b4.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 32));
+ });
+
+ d.add(b3, b4);
+
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 248);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 248);
+
+
+
+ /*
+ Test for cloning support
+
+ tb2 = tb.clone(true);
+ tb2.setTop(400);
+ */
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_2.html
new file mode 100644
index 0000000000..9e060ebc68
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_2.html
@@ -0,0 +1,269 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introducing qx.ui.toolbar.CheckBox and qx.ui.toolbar.RadioButton.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ };
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48);
+ setLeft(20);
+ setRight(335);
+ setParent(d);
+ };
+
+
+ var tbp1 = new qx.ui.toolbar.Part;
+ tb.add(tbp1);
+
+ var tbp2 = new qx.ui.toolbar.Part;
+ tb.add(tbp2);
+
+ var tbp3 = new qx.ui.toolbar.Part;
+ tb.add(tbp3);
+
+ var tbp4 = new qx.ui.toolbar.Part;
+ tb.add(tbp4);
+
+
+
+ // Default
+ var tbd1 = new qx.ui.toolbar.Button("Default", "icon/22/actions/document-new.png");
+ tbp1.add(tbd1);
+ d.addEventListener("changeLayout", changeLayout, tbd1);
+ d.addEventListener("changeSize", changeSize, tbd1);
+
+ tbd1._marker = true;
+
+ tbp1.setDisplay(false);
+ tbd1.setDisplay(false);
+
+
+
+ // Checkbox
+ var tbc1 = new qx.ui.toolbar.CheckBox("Check", "icon/22/apps/preferences.png", true);
+ tbp2.add(tbc1);
+ d.addEventListener("changeLayout", changeLayout, tbc1);
+ d.addEventListener("changeSize", changeSize, tbc1);
+
+
+
+ // Radio
+ var tbr1 = new qx.ui.toolbar.RadioButton("Radio1", "icon/22/actions/system-run.png");
+ tbp3.add(tbr1);
+ d.addEventListener("changeLayout", changeLayout, tbr1);
+ d.addEventListener("changeSize", changeSize, tbr1);
+
+ var tbr2 = new qx.ui.toolbar.RadioButton("Radio2", "icon/22/actions/view-pane-detailed.png", true);
+ tbp3.add(tbr2);
+ d.addEventListener("changeLayout", changeLayout, tbr2);
+ d.addEventListener("changeSize", changeSize, tbr2);
+
+ var tbr3 = new qx.ui.toolbar.RadioButton("Radio3", "icon/22/actions/view-pane-icon.png");
+ tbp3.add(tbr3);
+ d.addEventListener("changeLayout", changeLayout, tbr3);
+ d.addEventListener("changeSize", changeSize, tbr3);
+
+ // Radio Mananger
+ var tbr_manager = new qx.manager.selection.RadioManager(null, [tbr1, tbr2, tbr3]);
+
+
+
+
+ // Radio
+ var tbs1 = new qx.ui.toolbar.RadioButton("Radio1", "icon/22/actions/view-pane-tree.png");
+ tbp4.add(tbs1);
+ tbs1.setDisableUncheck(true);
+ d.addEventListener("changeLayout", changeLayout, tbs1);
+ d.addEventListener("changeSize", changeSize, tbs1);
+
+ var tbs2 = new qx.ui.toolbar.RadioButton("Radio2", "icon/22/actions/view-pane-detailed.png", true);
+ tbp4.add(tbs2);
+ tbs2.setDisableUncheck(true);
+ d.addEventListener("changeLayout", changeLayout, tbs2);
+ d.addEventListener("changeSize", changeSize, tbs2);
+
+ var tbs3 = new qx.ui.toolbar.RadioButton("Radio3", "icon/22/actions/view-pane-icon.png");
+ tbp4.add(tbs3);
+ tbs3.setDisableUncheck(true);
+ d.addEventListener("changeLayout", changeLayout, tbs3);
+ d.addEventListener("changeSize", changeSize, tbs3);
+
+ // Radio Mananger
+ var tbs_manager = new qx.manager.selection.RadioManager(null, [tbs1, tbs2, tbs3]);
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var rd2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Label", "label");
+
+ with(rd1)
+ {
+ setTop(140);
+ setLeft(20);
+ };
+
+ with(rd2)
+ {
+ setTop(160);
+ setLeft(20);
+ };
+
+ with(rd3)
+ {
+ setTop(180);
+ setLeft(20);
+ };
+
+
+ var rbm = new qx.manager.selection.RadioManager();
+
+ rbm.add(rd1);
+ rbm.add(rd2);
+ rbm.add(rd3);
+
+ // beautiful decoupling: radio boxes don't know about toolbar buttons
+ rbm.addEventListener("changeSelected", function(e)
+ {
+ d.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2, rd3);
+
+
+ // apply default layout
+ rd1.setChecked(true);
+
+
+
+
+
+ // Alignment
+ var ra1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var ra2 = new qx.ui.form.RadioButton("Centered", "center");
+ var ra3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+
+ with(ra1)
+ {
+ setTop(140);
+ setLeft(220);
+ setChecked(true);
+ };
+
+ with(ra2)
+ {
+ setTop(160);
+ setLeft(220);
+ };
+
+ with(ra3)
+ {
+ setTop(180);
+ setLeft(220);
+ };
+
+
+ var ram = new qx.manager.selection.RadioManager();
+
+ ram.add(ra1);
+ ram.add(ra2);
+ ram.add(ra3);
+
+ d.add(ra1, ra2, ra3);
+
+ ram.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+
+
+
+ // Icon Sizes
+ var b3 = new qx.ui.form.Button("Icons: 22 Pixel", "icon/16/actions/format-color.png");
+
+ with(b3)
+ {
+ setTop(140);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b3.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 22));
+ });
+
+ var b4 = new qx.ui.form.Button("Icons: 32 Pixel", "icon/16/actions/format-color.png");
+
+ with(b4)
+ {
+ setTop(170);
+ setLeft(420);
+ setHorizontalAlign("center");
+ };
+
+ b4.addEventListener("execute", function(e) {
+ d.dispatchEvent(new qx.event.type.DataEvent("changeSize", 32));
+ });
+
+ d.add(b3, b4);
+
+
+
+
+
+
+ var chkShowBtn1 = new qx.ui.form.CheckBox("Show First Button");
+
+ chkShowBtn1.setLocation(20, 500);
+ chkShowBtn1.addEventListener("changeChecked", function(e) {
+ tbd1.setDisplay(e.getData());
+ });
+
+ var chkShowPart1 = new qx.ui.form.CheckBox("Show First Part");
+
+ chkShowPart1.setLocation(220, 500);
+ chkShowPart1.addEventListener("changeChecked", function(e) {
+ tbp1.setDisplay(e.getData());
+ });
+
+ d.add(chkShowBtn1, chkShowPart1);
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 248);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 248);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_3.html
new file mode 100644
index 0000000000..2cd007f6db
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_3.html
@@ -0,0 +1,184 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Again a nice example which shows how to use qx.ui.toolbar.ToolBar as a menubar system.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.client.Command();
+ c1.addEventListener("execute", function(e) {
+ this.debug("Execute: " + e.getData().getLabel());
+ });
+
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("New", "icon/16/actions/document-new.png", c1);
+ var mb1_02 = new qx.ui.menu.Button("Open", "icon/16/actions/document-open.png", c1);
+ var mb1_03 = new qx.ui.menu.Button("Save", "icon/16/actions/document-save.png", c1);
+ var mb1_04 = new qx.ui.menu.Button("Save as", "icon/16/actions/document-save-as.png", c1);
+ var mb1_05 = new qx.ui.menu.Button("Close", "icon/16/actions/document-close.png", c1);
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved", null, c1);
+
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("Undo", null, c1);
+ var mb2_02 = new qx.ui.menu.Button("Redo", null, c1);
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png", c1);
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png", c1);
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png", c1);
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png", c1);
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All", null, c1);
+ var mb2_08 = new qx.ui.menu.Button("Find", null, c1);
+ var mb2_09 = new qx.ui.menu.Button("Find Again", null, c1);
+
+
+
+
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+ var m3_subd = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", c1, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", c1, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", c1, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+ var mb3_b2 = new qx.ui.menu.Separator();
+ var mb3_07 = new qx.ui.menu.Button("Advanced", null, null, m3_subd);
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06, mb3_b2, mb3_07);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt", null, c1);
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt", null, c1);
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt", null, c1);
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt", null, c1);
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt", null, c1);
+
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt", null, c1);
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt", null, c1);
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt", null, c1);
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt", null, c1);
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt", null, c1);
+
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt", null, c1);
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt", null, c1);
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt", null, c1);
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt", null, c1);
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt", null, c1);
+
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+ var mb3_subd_02_suba = new qx.ui.menu.Menu();
+
+ var mb3_subd_02_suba_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02_suba_02 = new qx.ui.menu.Button("Second", null, c1);
+ var mb3_subd_02_suba_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ mb3_subd_02_suba.add(mb3_subd_02_suba_01, mb3_subd_02_suba_02, mb3_subd_02_suba_03);
+
+ var mb3_subd_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02 = new qx.ui.menu.Button("Second", null, c1, mb3_subd_02_suba);
+ var mb3_subd_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ m3_subd.add(mb3_subd_01, mb3_subd_02, mb3_subd_03);
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, c1, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...", null, c1);
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions", null, c1);
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences", null, c1);
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window", null, c1);
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", c1, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally", c1);
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically", c1);
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window", null, c1);
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window", null, c1);
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+
+ var m5 = new qx.ui.menu.Menu;
+
+ var mb5_01 = new qx.ui.menu.Button("Help", null, c1);
+ var mb5_02 = new qx.ui.menu.Button("About", null, c1);
+
+ m5.add(mb5_01, mb5_02);
+
+ d.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m3_subd, mb3_subd_02_suba, m4, m4_suba, m5);
+
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+
+ mb1.setTop(48);
+ mb1.setRight(335);
+ mb1.setLeft(20);
+
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4);
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5);
+
+ mb1.add(mbb1, mbb2, mbb3, mbb4, mbb5);
+
+ d.add(mb1);
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 348);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 348);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_4.html
new file mode 100644
index 0000000000..69d91c125b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolBar_4.html
@@ -0,0 +1,196 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Again a nice example which shows how to use qx.ui.toolbar.ToolBar as a menubar system.</p>
+ <p>Added some parts and a new flex zone which aligns the help button to the right edge</p>
+ <p>Added some image and a qx.ui.toolbar.CheckBox, you can event combine all these features as you can easily see here.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.client.Command();
+ c1.addEventListener("execute", function(e) {
+ this.debug("Execute: " + e.getData().getLabel());
+ });
+
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("New", null, c1);
+ var mb1_02 = new qx.ui.menu.Button("Open", null, c1);
+ var mb1_03 = new qx.ui.menu.Button("Save", null, c1);
+ var mb1_04 = new qx.ui.menu.Button("Save as", null, c1);
+ var mb1_05 = new qx.ui.menu.Button("Close", null, c1);
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved", null, c1);
+
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("Undo", null, c1);
+ var mb2_02 = new qx.ui.menu.Button("Redo", null, c1);
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png", c1);
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png", c1);
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png", c1);
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png", c1);
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All", null, c1);
+ var mb2_08 = new qx.ui.menu.Button("Find", null, c1);
+ var mb2_09 = new qx.ui.menu.Button("Find Again", null, c1);
+
+
+
+
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+ var m3_subd = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", c1, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", c1, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", c1, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+ var mb3_b2 = new qx.ui.menu.Separator();
+ var mb3_07 = new qx.ui.menu.Button("Advanced", null, null, m3_subd);
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06, mb3_b2, mb3_07);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt", null, c1);
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt", null, c1);
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt", null, c1);
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt", null, c1);
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt", null, c1);
+
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt", null, c1);
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt", null, c1);
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt", null, c1);
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt", null, c1);
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt", null, c1);
+
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt", null, c1);
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt", null, c1);
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt", null, c1);
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt", null, c1);
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt", null, c1);
+
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+ var mb3_subd_02_suba = new qx.ui.menu.Menu();
+
+ var mb3_subd_02_suba_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02_suba_02 = new qx.ui.menu.Button("Second", null, c1);
+ var mb3_subd_02_suba_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ mb3_subd_02_suba.add(mb3_subd_02_suba_01, mb3_subd_02_suba_02, mb3_subd_02_suba_03);
+
+ var mb3_subd_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02 = new qx.ui.menu.Button("Second", null, c1, mb3_subd_02_suba);
+ var mb3_subd_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ m3_subd.add(mb3_subd_01, mb3_subd_02, mb3_subd_03);
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, c1, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...", null, c1);
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions", null, c1);
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences", null, c1);
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window", null, c1);
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", c1, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally", c1);
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically", c1);
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window", null, c1);
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window", null, c1);
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+
+ var m5 = new qx.ui.menu.Menu;
+
+ var mb5_01 = new qx.ui.menu.Button("Help", null, c1);
+ var mb5_02 = new qx.ui.menu.Button("About", null, c1);
+
+ m5.add(mb5_01, mb5_02);
+
+ d.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m3_subd, mb3_subd_02_suba, m4, m4_suba, m5);
+
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+
+ mb1.setTop(48);
+ mb1.setRight(335);
+ mb1.setLeft(20);
+
+ var mp1 = new qx.ui.toolbar.Part;
+ var mp2 = new qx.ui.toolbar.Part;
+ var mp3 = new qx.ui.toolbar.Part;
+
+ mb1.add(mp1, mp2, new qx.ui.basic.HorizontalSpacer, mp3);
+
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1, "icon/16/actions/document-new.png");
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2, "icon/16/actions/edit.png");
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3, "icon/16/apps/preferences-desktop-wallpaper.png");
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4, "icon/16/apps/system-software-update.png");
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5, "icon/16/actions/help-about.png");
+
+ var tbb1 = new qx.ui.toolbar.CheckBox("Checkbox", "icon/16/apps/office-organizer.png", true);
+
+ mp1.add(mbb1, mbb2);
+ mp2.add(mbb3, mbb4, tbb1);
+ mp3.add(mbb5);
+
+ d.add(mb1);
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 348);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 348);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolTip_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolTip_1.html
new file mode 100644
index 0000000000..8cbf4b9855
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/ToolTip_1.html
@@ -0,0 +1,111 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for QxToolTips. Each qx.ui.popup.ToolTip could be assigned to any
+ instance of qx.ui.core.Widget. You could also use one qx.ui.popup.ToolTip instance
+ for multiple QxWidgets (to show the same tooltip any multiple items).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Atom("Hover me");
+ with(c1)
+ {
+ setTop(48);
+ setLeft(20);
+ setBackgroundColor(new qx.renderer.color.Color("#BDD2EF"));
+ setWidth(100);
+ setHeight(100);
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ };
+ d.add(c1);
+
+
+
+ var c2 = new qx.ui.basic.Atom("Hover me");
+ with(c2)
+ {
+ setTop(48);
+ setLeft(140);
+ setBackgroundColor(new qx.renderer.color.Color("#D1DFAD"));
+ setWidth(100);
+ setHeight(100);
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ };
+ d.add(c2);
+
+
+ var c3 = new qx.ui.basic.Atom("Hover me");
+ with(c3)
+ {
+ setTop(48);
+ setLeft(260);
+ setBackgroundColor(new qx.renderer.color.Color("#D1A4AD"));
+ setWidth(100);
+ setHeight(100);
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ };
+ d.add(c3);
+
+
+ var c4 = new qx.ui.basic.Atom("Hover me");
+ with(c4)
+ {
+ setTop(48);
+ setLeft(380);
+ setBackgroundColor(new qx.renderer.color.Color("#F5E0BB"));
+ setWidth(100);
+ setHeight(100);
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ };
+ d.add(c4);
+
+
+ var c5 = new qx.ui.basic.Atom("Hover me", "icon/32/actions/format-color.png");
+ with(c5)
+ {
+ setTop(248);
+ setLeft(20);
+ setBackgroundColor(new qx.renderer.color.Color("#F5E0BB"));
+ setTabIndex(1);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setPadding(4);
+ };
+ d.add(c5);
+
+
+ var tt1 = new qx.ui.popup.ToolTip("Hello World #1");
+ c1.setToolTip(tt1);
+ c2.setToolTip(tt1);
+
+ var tt2 = new qx.ui.popup.ToolTip(null, "icon/16/actions/help-about.png");
+ c3.setToolTip(tt2);
+
+ var tt3 = new qx.ui.popup.ToolTip("Hello World #3", "icon/16/actions/help-about.png");
+ c4.setToolTip(tt3);
+
+ var tt4 = new qx.ui.popup.ToolTip("Such a great tooltip with a<br/>(show) timeout of 50ms.", "icon/32/apps/graphics-snapshot.png");
+ c5.setToolTip(tt4);
+ tt4.setShowInterval(50);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_1.html
new file mode 100644
index 0000000000..ac037d7711
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_1.html
@@ -0,0 +1,235 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Shows a tree, with user-defined icons for some nodes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Root");
+ var t = new qx.ui.treefullcontrol.Tree(trs);
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Desktop", "icon/16/places/user-desktop.png", "icon/16/apps/accessories-dictionary.png");
+ var te1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.add(te1);
+
+ desktop = te1;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Files");
+ var te1_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Workspace");
+ var te1_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Network");
+ var te1_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash");
+ var te1_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Windows (C:)", "icon/16/devices/drive-harddisk.png");
+ var te1_2_1 = new qx.ui.treefullcontrol.TreeFile(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Documents (D:)", "icon/16/devices/drive-harddisk.png");
+ var te1_2_2 = new qx.ui.treefullcontrol.TreeFile(trs);
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Inbox");
+ var te2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ posteingang = te2;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Presets");
+ var te2_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Sent");
+ var te2_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash", "icon/16/places/user-trash.png");
+ var te2_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Data");
+ var te2_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Edit");
+ var te2_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ editieren = te2_5;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Chat");
+ var te2_5_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Pustefix");
+ var te2_5_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("TINC");
+ var te2_5_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Announce");
+ var te2_5_3_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Devel");
+ var te2_5_3_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Lists");
+ var te2_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Relations");
+ var te2_6_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Company");
+ var te2_6_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Questions");
+ var te2_6_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Internal");
+ var te2_6_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Products");
+ var te2_6_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Press");
+ var te2_6_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Development");
+ var te2_6_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Competition");
+ var te2_6_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Personal");
+ var te2_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Bugs");
+ var te2_7_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Family");
+ var te2_7_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Projects");
+ var te2_7_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Holiday");
+ var te2_7_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Big");
+ var te2_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ for (var i=0;i<50; i++) {
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Item " + i);
+ te2_8.add(new qx.ui.treefullcontrol.TreeFolder(trs));
+ };
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Spam");
+ var te2_9 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_2.html
new file mode 100644
index 0000000000..1bddc43cf0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_2.html
@@ -0,0 +1,270 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+<p>Shows a tree, with user-defined extra fields. In this example, the extra
+fields include a left-justified icon, a checkbox between the node icon and the
+label, and a whole series of right-justified fields. Additionally, the root node may be hidden. </p>
+ </div>
+
+ <script type="text/javascript">
+ var treeRowStructure;
+
+ function stuff(vLabel, vIcon, vIconSelected)
+ {
+ treeRowStructure = qx.ui.treefullcontrol.TreeRowStructure.getInstance().newRow();
+
+ // A left-justified icon
+ if (Math.floor(Math.random() * 4) == 0)
+ {
+ obj = new qx.ui.basic.Image("icon/16/apps/accessories-alarm.png", 16);
+ }
+ else
+ {
+ obj = new qx.ui.basic.Image(null, 16);
+ }
+ treeRowStructure.addObject(obj, true);
+
+ // Here's our indentation and tree-lines
+ treeRowStructure.addIndent();
+
+ // The standard tree icon follows
+ treeRowStructure.addIcon(
+ arguments.length >= 2 ? vIcon : "icon/16/places/user-desktop.png",
+ arguments.length >= 3 ? vIconSelected : "icon/16/apps/accessories-dictionary.png");
+
+ // A checkbox comes right after the tree icon
+ obj = new qx.ui.form.CheckBox(
+ null, "23", null, Math.floor(Math.random() * 2) == 0 ? false : true);
+ obj.setPadding(0, 0);
+ treeRowStructure.addObject(obj, true);
+
+ // The label
+ treeRowStructure.addLabel(vLabel);
+
+ // All else should be right justified
+ obj = new qx.ui.basic.HorizontalSpacer;
+ treeRowStructure.addObject(obj, true);
+
+ // Add a file size, date and mode
+ obj = new qx.ui.basic.Label(Math.round(Math.random() * 100) + "kb");
+ obj.setWidth(50);
+ treeRowStructure.addObject(obj, true);
+ obj = new qx.ui.basic.Label(
+ "May " + Math.round(Math.random() * 30 + 1) + " 2005");
+ obj.setWidth(150);
+ treeRowStructure.addObject(obj, true);
+ obj = new qx.ui.basic.Label("-rw-r--r--");
+ obj.setWidth(80);
+ treeRowStructure.addObject(obj, true);
+
+ return treeRowStructure;
+ }
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var x = new qx.ui.basic.Atom("Test #1", "icon/16/actions/view-refresh.png", 16, 16);
+ x.debug("In main");
+
+ var t = new qx.ui.treefullcontrol.Tree(stuff("Root"));
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(600);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ var te1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Desktop"));
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Files"));
+ var te1_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Workspace"));
+ var te1_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("Network"));
+ var te1_4 = new qx.ui.treefullcontrol.TreeFolder(stuff("Trash"));
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ var te1_2_1 = new qx.ui.treefullcontrol.TreeFile(stuff("Windows (C:)", "icon/16/devices/drive-harddisk.png"));
+ var te1_2_2 = new qx.ui.treefullcontrol.TreeFile(stuff("Documents (D:)", "icon/16/devices/drive-harddisk.png"));
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ var te2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Inbox"));
+ posteingang = te2;
+
+ var te2_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Presets"));
+ var te2_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Sent"));
+ var te2_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("Trash", "icon/16/places/user-trash.png"));
+ var te2_4 = new qx.ui.treefullcontrol.TreeFolder(stuff("Data"));
+ var te2_5 = new qx.ui.treefullcontrol.TreeFolder(stuff("Edit"));
+
+ editieren = te2_5;
+
+ var te2_5_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Chat"));
+ var te2_5_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Pustefix"));
+ var te2_5_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("TINC"));
+
+ var te2_5_3_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Announce"));
+ var te2_5_3_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Devel"));
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_6 = new qx.ui.treefullcontrol.TreeFolder(stuff("Lists"));
+
+ var te2_6_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Relations"));
+ var te2_6_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Company"));
+ var te2_6_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("Questions"));
+ var te2_6_4 = new qx.ui.treefullcontrol.TreeFolder(stuff("Internal"));
+ var te2_6_5 = new qx.ui.treefullcontrol.TreeFolder(stuff("Products"));
+ var te2_6_6 = new qx.ui.treefullcontrol.TreeFolder(stuff("Press"));
+ var te2_6_7 = new qx.ui.treefullcontrol.TreeFolder(stuff("Development"));
+ var te2_6_8 = new qx.ui.treefullcontrol.TreeFolder(stuff("Competition"));
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.treefullcontrol.TreeFolder(stuff("Personal"));
+
+ var te2_7_1 = new qx.ui.treefullcontrol.TreeFolder(stuff("Bugs"));
+ var te2_7_2 = new qx.ui.treefullcontrol.TreeFolder(stuff("Family"));
+ var te2_7_3 = new qx.ui.treefullcontrol.TreeFolder(stuff("Projects"));
+ var te2_7_4 = new qx.ui.treefullcontrol.TreeFolder(stuff("Holiday"));
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.treefullcontrol.TreeFolder(stuff("Big"));
+
+ for (var i=0;i<50; i++) {
+ te2_8.add(new qx.ui.treefullcontrol.TreeFolder(stuff("Item " + i)));
+ };
+
+ var te2_9 = new qx.ui.treefullcontrol.TreeFolder(stuff("Spam"));
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(650);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+
+ var tHideNode = new qx.ui.form.CheckBox("Hide the root node?");
+
+ with(tHideNode) {
+ setTop(100);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tHideNode);
+
+ tHideNode.addEventListener("changeChecked", function(e) { t.setHideNode(e.getData()); });
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_3.html
new file mode 100644
index 0000000000..4dc1894826
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_3.html
@@ -0,0 +1,298 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Shows a tree, with user-defined icons for some nodes. This tests
+ listening for tree events. A separate alert is generated upon opening a
+ folder that has contents; when opening a folder that has no contents; and
+ closing a folder.</p><p>We also demonstrate changing the default value of
+ 'allowShowPlusMinusSymbol' so that all folders initially have a plus/minus
+ symbol. Then, upon opening an empty folder, we remove that
+ icon.</p><p>Lastly, we demonstrate in the alert presented by tree events,
+ use of the getHierarchy() method to obtain a full "path" for a tree
+ node.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ /*
+ * Reset the default of always showing the plus/minus symbol. The
+ * default is 'false'. We want to always display it for each folder
+ * (and then stop displaying it if we determine upon open that there are
+ * no contents).
+ *
+ * The changeProperty() function assumes that it is being called
+ * shortly after defineClass() is called. We therefore need to kludge
+ * qx.Proto to point to the right place.
+ *
+ * TODO: There should be a mechanism to change a property attribute
+ * without having to jump through these hoops.
+ */
+ var constructor = qx.OO.classes["qx.ui.treefullcontrol.TreeFolder"];
+ qx.Proto = constructor.prototype;
+ qx.OO.changeProperty({ name : "alwaysShowPlusMinusSymbol", type : "boolean", defaultValue : true });
+
+
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Root");
+ var t = new qx.ui.treefullcontrol.Tree(trs);
+
+ /*
+ * All subtrees will use this root node's event listeners. Create event
+ * listeners for each of the possible events.
+ */
+ t.addEventListener("treeOpenWithContent", function(e) {
+ alert('treeOpenWithContent ' + e.getData().getHierarchy(new Array()).join("/"));
+ });
+
+ t.addEventListener("treeClose", function(e) {
+ alert('treeClose ' + e.getData().getHierarchy(new Array()).join("/"));
+ });
+
+ /*
+ * We handle opening an empty folder specially. We demonstrate how to
+ * disable the plus/minus sign once we've determined there's nothing in
+ * it. This feature might be used to dynamically retrieve the contents
+ * of the folder, and if nothing is available, indicate it by removing
+ * the plus/minus sign.
+ */
+ t.addEventListener("treeOpenWhileEmpty", function(e) {
+ alert('treeOpenWhileEmpty ' + e.getData().getHierarchy(new Array()).join("/"));
+ e.getData().setAlwaysShowPlusMinusSymbol(false);
+ });
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Desktop", "icon/16/places/user-desktop.png", "icon/16/apps/accessories-dictionary.png");
+ var te1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.add(te1);
+
+ desktop = te1;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Files");
+ var te1_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Workspace");
+ var te1_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Network");
+ var te1_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash");
+ var te1_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Windows (C:)", "icon/16/devices/drive-harddisk.png");
+ var te1_2_1 = new qx.ui.treefullcontrol.TreeFile(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Documents (D:)", "icon/16/devices/drive-harddisk.png");
+ var te1_2_2 = new qx.ui.treefullcontrol.TreeFile(trs);
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Inbox");
+ var te2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ posteingang = te2;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Presets");
+ var te2_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Sent");
+ var te2_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash", "icon/16/places/user-trash.png");
+ var te2_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Data");
+ var te2_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Edit");
+ var te2_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ editieren = te2_5;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Chat");
+ var te2_5_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Pustefix");
+ var te2_5_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("TINC");
+ var te2_5_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Announce");
+ var te2_5_3_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Devel");
+ var te2_5_3_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Lists");
+ var te2_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Relations");
+ var te2_6_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Company");
+ var te2_6_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Questions");
+ var te2_6_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Internal");
+ var te2_6_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Products");
+ var te2_6_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Press");
+ var te2_6_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Development");
+ var te2_6_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Competition");
+ var te2_6_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Personal");
+ var te2_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Bugs");
+ var te2_7_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Family");
+ var te2_7_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Projects");
+ var te2_7_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Holiday");
+ var te2_7_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Big");
+ var te2_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ for (var i=0;i<50; i++) {
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Item " + i);
+ te2_8.add(new qx.ui.treefullcontrol.TreeFolder(trs));
+ };
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Spam");
+ var te2_9 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+ var tHideNode = new qx.ui.form.CheckBox("Hide the root node?");
+
+ with(tHideNode) {
+ setTop(100);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tHideNode);
+
+ tHideNode.addEventListener("changeChecked", function(e) { t.setHideNode(e.getData()); });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_4.html
new file mode 100644
index 0000000000..5367c244cd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/TreeFullControl_4.html
@@ -0,0 +1,384 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Shows a tree and allows playing with the settings of the Tree
+ properties <i>hideNode</i> and <i>rootOpenClose</i>. Also demonstrates
+ manipulating display (or not) of tree lines at specific indentation
+ levels, using the <i>excludeSpecificTreeLines</i> property.</p>
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Root");
+ var t = new qx.ui.treefullcontrol.Tree(trs);
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Desktop", "icon/16/places/user-desktop.png", "icon/16/apps/accessories-dictionary.png");
+ var te1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ t.add(te1);
+
+ desktop = te1;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Files");
+ var te1_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Workspace");
+ var te1_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Network");
+ var te1_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash");
+ var te1_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Windows (C:)", "icon/16/devices/drive-harddisk.png");
+ var te1_2_1 = new qx.ui.treefullcontrol.TreeFile(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Documents (D:)", "icon/16/devices/drive-harddisk.png");
+ var te1_2_2 = new qx.ui.treefullcontrol.TreeFile(trs);
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Inbox");
+ var te2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ posteingang = te2;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Presets");
+ var te2_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Sent");
+ var te2_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Trash", "icon/16/places/user-trash.png");
+ var te2_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Data");
+ var te2_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Edit");
+ var te2_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ editieren = te2_5;
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Chat");
+ var te2_5_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Pustefix");
+ var te2_5_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("TINC");
+ var te2_5_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Announce");
+ var te2_5_3_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Devel");
+ var te2_5_3_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Lists");
+ var te2_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Relations");
+ var te2_6_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Company");
+ var te2_6_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Questions");
+ var te2_6_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Internal");
+ var te2_6_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Products");
+ var te2_6_5 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Press");
+ var te2_6_6 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Development");
+ var te2_6_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Competition");
+ var te2_6_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Personal");
+ var te2_7 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Bugs");
+ var te2_7_1 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Family");
+ var te2_7_2 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Projects");
+ var te2_7_3 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Holiday");
+ var te2_7_4 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Big");
+ var te2_8 = new qx.ui.treefullcontrol.TreeFolder(trs);
+
+ for (var i=0;i<50; i++) {
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Item " + i);
+ te2_8.add(new qx.ui.treefullcontrol.TreeFolder(trs));
+ };
+
+ trs = qx.ui.treefullcontrol.TreeRowStructure.getInstance().standard("Spam");
+ var te2_9 = new qx.ui.treefullcontrol.TreeFolder(trs);
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+ var tHideNode = new qx.ui.form.CheckBox("Hide the root node?");
+
+ with(tHideNode) {
+ setTop(100);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tHideNode);
+
+ tHideNode.addEventListener("changeChecked", function(e) { t.setHideNode(e.getData()); });
+
+ var tIncludeRootOpenClose =
+ new qx.ui.form.CheckBox("Include root open/close button?");
+
+ with(tIncludeRootOpenClose) {
+ setTop(120);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tIncludeRootOpenClose);
+
+ tIncludeRootOpenClose.addEventListener("changeChecked", function(e) { t.setRootOpenClose(e.getData()); });
+
+ tExcludeTreeLines0 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 0?");
+
+ with(tExcludeTreeLines0) {
+ setTop(140);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines0);
+
+ tExcludeTreeLines0.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[0] = true;
+ } else {
+ delete(excl[0]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ tExcludeTreeLines1 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 1?");
+
+ with(tExcludeTreeLines1) {
+ setTop(160);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines1);
+
+ tExcludeTreeLines1.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[1] = true;
+ } else {
+ delete(excl[1]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ tExcludeTreeLines2 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 2?");
+
+ with(tExcludeTreeLines2) {
+ setTop(180);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines2);
+
+ tExcludeTreeLines2.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[2] = true;
+ } else {
+ delete(excl[2]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ tExcludeTreeLines3 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 3?");
+
+ with(tExcludeTreeLines3) {
+ setTop(200);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines3);
+
+ tExcludeTreeLines3.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[3] = true;
+ } else {
+ delete(excl[3]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ tExcludeTreeLines4 =
+ new qx.ui.form.CheckBox("Exclude tree lines at level 4?");
+
+ with(tExcludeTreeLines4) {
+ setTop(220);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tExcludeTreeLines4);
+
+ tExcludeTreeLines4.addEventListener(
+ "changeChecked",
+ function(e)
+ {
+ var excl = t.getExcludeSpecificTreeLines();
+ if (e.getData()) {
+ excl[4] = true;
+ } else {
+ delete(excl[4]);
+ }
+ t.setExcludeSpecificTreeLines(excl);
+ });
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Tree_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Tree_1.html
new file mode 100644
index 0000000000..295231bf42
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Tree_1.html
@@ -0,0 +1,191 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Shows a tree, with user-defined icons for some nodes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ // One icon for selected and one for unselected states
+ var te1 = new qx.ui.tree.TreeFolder("Desktop", "icon/16/places/user-desktop.png", "icon/16/apps/accessories-dictionary.png");
+ t.add(te1);
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+ // One icon specified, and used for both selected unselected states
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)", "icon/16/devices/drive-harddisk.png");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)", "icon/16/devices/drive-harddisk.png");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash", "icon/16/places/user-trash.png");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ var te2_5_1 = new qx.ui.tree.TreeFolder("Chat");
+ var te2_5_2 = new qx.ui.tree.TreeFolder("Pustefix");
+ var te2_5_3 = new qx.ui.tree.TreeFolder("TINC");
+
+ var te2_5_3_1 = new qx.ui.tree.TreeFolder("Announce");
+ var te2_5_3_2 = new qx.ui.tree.TreeFolder("Devel");
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_6 = new qx.ui.tree.TreeFolder("Lists");
+
+ var te2_6_1 = new qx.ui.tree.TreeFolder("Relations");
+ var te2_6_2 = new qx.ui.tree.TreeFolder("Company");
+ var te2_6_3 = new qx.ui.tree.TreeFolder("Questions");
+ var te2_6_4 = new qx.ui.tree.TreeFolder("Internal");
+ var te2_6_5 = new qx.ui.tree.TreeFolder("Products");
+ var te2_6_6 = new qx.ui.tree.TreeFolder("Press");
+ var te2_6_7 = new qx.ui.tree.TreeFolder("Development");
+ var te2_6_8 = new qx.ui.tree.TreeFolder("Competition");
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.tree.TreeFolder("Personal");
+
+ var te2_7_1 = new qx.ui.tree.TreeFolder("Bugs");
+ var te2_7_2 = new qx.ui.tree.TreeFolder("Family");
+ var te2_7_3 = new qx.ui.tree.TreeFolder("Projects");
+ var te2_7_4 = new qx.ui.tree.TreeFolder("Holiday");
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.tree.TreeFolder("Big");
+
+ for (var i=0;i<50; i++) {
+ te2_8.add(new qx.ui.tree.TreeFolder("Item " + i));
+ };
+
+ var te2_9 = new qx.ui.tree.TreeFolder("Spam");
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Window_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Window_1.html
new file mode 100644
index 0000000000..54eb402afa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/Window_1.html
@@ -0,0 +1,308 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This is the qx.ui.window.Window widget. These should emulate the default look and behaviour of the application windows running under Microsoft Windows(TM).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.window.Window("First Window", "icon/16/apps/preferences-desktop-multimedia.png");
+ w1.setSpace(20, 400, 48, 250);
+ d.add(w1);
+
+ var w2 = new qx.ui.window.Window("Second Window", "icon/16/actions/format-color.png");
+ w2.setSpace(250, "auto", 120, "auto");
+ d.add(w2);
+
+ var w3 = new qx.ui.window.Window("Third Window", "icon/16/categories/applications-internet.png");
+ w3.setSpace(100, 300, 200, 300);
+ w3.setMaxWidth(450);
+ w3.setMaxHeight(400);
+ d.add(w3);
+
+ var wm1 = new qx.ui.window.Window("First Modal Dialog");
+ wm1.setSpace(150, 200, 150, 200);
+ wm1.setModal(true);
+ d.add(wm1);
+
+ var wm2 = new qx.ui.window.Window("Second Modal Dialog");
+ wm2.setSpace(100, 200, 100, 150);
+ wm2.setModal(true);
+ wm2.setShowClose(false);
+ d.add(wm2);
+
+
+
+
+ var a1 = new qx.ui.basic.Atom("Welcome to your first own Window.<br/>Have fun!", "icon/32/apps/office-organizer.png");
+ a1.set({ top: 4, left: 4 });
+ w1.add(a1);
+
+
+
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 10, top: 52, right: 10, bottom: 10 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Explore");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Internet");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Future");
+
+ t1_1.setChecked(true);
+
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ w1.add(tf1);
+
+
+
+ var at1 = new qx.ui.basic.Atom("Your second window", "icon/22/actions/edit-find.png");
+ at1.setLocation(8, 8);
+ w2.add(at1);
+
+
+
+
+ var btn1 = new qx.ui.form.Button("Open Modal Dialog 1", "icon/16/apps/system-software-update.png");
+ btn1.setLocation(4, 4);
+ w3.add(btn1);
+
+ btn1.addEventListener("execute", function(e) {
+ wm1.open();
+ });
+
+
+ var btn2 = new qx.ui.form.Button("Open Modal Dialog 2", "icon/16/apps/system-software-update.png");
+ btn2.setLocation(4, 4);
+ wm1.add(btn2);
+
+ btn2.addEventListener("execute", function(e) {
+ wm2.open();
+ });
+
+
+ var chkm1 = new qx.ui.form.CheckBox("Modal", null, null, true);
+ chkm1.setLocation(4, 50);
+ wm1.add(chkm1);
+
+ chkm1.addEventListener("changeChecked", function(e) {
+ wm1.setModal(e.getData());
+ });
+
+
+
+ var fs1 = new qx.ui.groupbox.GroupBox("Settings");
+ fs1.setLocation(4, 40);
+ fs1.setRight(4);
+ fs1.setBottom(4);
+
+
+ var chk1 = new qx.ui.form.CheckBox("Show Icon");
+ chk1.setLocation(0, 0);
+ chk1.setChecked(true);
+ chk1.addEventListener("changeChecked", function(e) {
+ w2.setShowIcon(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Caption");
+ chk2.setLocation(0, 20);
+ chk2.setChecked(true);
+ chk2.addEventListener("changeChecked", function(e) {
+ w2.setShowCaption(e.getData());
+ });
+
+
+
+ var chk3 = new qx.ui.form.CheckBox("Resizeable");
+ chk3.setLocation(0, 50);
+ chk3.setChecked(true);
+ chk3.addEventListener("changeChecked", function(e) {
+ w2.setResizeable(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Moveable");
+ chk4.setLocation(0, 70);
+ chk4.setChecked(true);
+ chk4.addEventListener("changeChecked", function(e) {
+ w2.setMoveable(e.getData());
+ });
+
+
+
+ var chk5 = new qx.ui.form.CheckBox("Show Close");
+ chk5.setLocation(140, 0);
+ chk5.setChecked(true);
+ chk5.addEventListener("changeChecked", function(e) {
+ w2.setShowClose(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Show Maximize/Restore");
+ chk6.setLocation(140, 20);
+ chk6.setChecked(true);
+ chk6.addEventListener("changeChecked", function(e) {
+ w2.setShowMaximize(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Show Minimize");
+ chk7.setLocation(140, 40);
+ chk7.setChecked(true);
+ chk7.addEventListener("changeChecked", function(e) {
+ w2.setShowMinimize(e.getData());
+ });
+
+
+
+ var chk8 = new qx.ui.form.CheckBox("Allow Close");
+ chk8.setLocation(140, 70);
+ chk8.setChecked(true);
+ chk8.addEventListener("changeChecked", function(e) {
+ w2.setAllowClose(e.getData());
+ });
+
+ var chk9 = new qx.ui.form.CheckBox("Allow Maximize");
+ chk9.setLocation(140, 90);
+ chk9.setChecked(true);
+ chk9.addEventListener("changeChecked", function(e) {
+ w2.setAllowMaximize(e.getData());
+ });
+
+ var chk10 = new qx.ui.form.CheckBox("Allow Minimize");
+ chk10.setLocation(140, 110);
+ chk10.setChecked(true);
+ chk10.addEventListener("changeChecked", function(e) {
+ w2.setAllowMinimize(e.getData());
+ });
+
+
+
+
+ var l1 = new qx.ui.basic.Atom("Move Method", "icon/16/actions/system-run.png");
+ l1.setLocation(0, 100);
+
+ var rb1 = new qx.ui.form.RadioButton("Frame", "frame");
+ rb1.setLocation(0, 120);
+
+ var rb2 = new qx.ui.form.RadioButton("Opaque", "opaque");
+ rb2.setLocation(0, 140);
+ rb2.setChecked(true);
+
+ var rb3 = new qx.ui.form.RadioButton("Translucent", "translucent");
+ rb3.setLocation(0, 160);
+
+ var rbm1 = new qx.manager.selection.RadioManager("move", [rb1, rb2, rb3]);
+
+ rbm1.addEventListener("changeSelected", function(e) {
+ w2.setMoveMethod(e.getData().getValue());
+ });
+
+
+
+
+ var l2 = new qx.ui.basic.Atom("Resize Method", "icon/16/actions/system-run.png");
+ l2.setLocation(0, 190);
+
+ var rb4 = new qx.ui.form.RadioButton("Frame", "frame");
+ rb4.setLocation(0, 210);
+ rb4.setChecked(true);
+
+ var rb5 = new qx.ui.form.RadioButton("Opaque", "opaque");
+ rb5.setLocation(0, 230);
+
+ var rb6 = new qx.ui.form.RadioButton("Lazy Opaque", "lazyopaque");
+ rb6.setLocation(0, 250);
+
+ var rb7 = new qx.ui.form.RadioButton("Translucent", "translucent");
+ rb7.setLocation(0, 270);
+
+ var rbm2 = new qx.manager.selection.RadioManager("resize", [rb4, rb5, rb6, rb7]);
+
+ rbm2.addEventListener("changeSelected", function(e) {
+ w2.setResizeMethod(e.getData().getValue());
+ });
+
+
+
+
+ var chk11 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk11.setLocation(140, 140);
+ chk11.setChecked(false);
+ chk11.addEventListener("changeChecked", function(e) {
+ w2.setShowStatusbar(e.getData());
+ });
+
+
+
+
+ var btnpack = new qx.ui.form.Button("Pack Window", "icon/16/devices/media-optical.png");
+ btnpack.setLocation(140, 170);
+ btnpack.addEventListener("execute", function(e) {
+ w2.pack();
+ });
+
+
+ fs1.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8, chk9, chk10, l1, rb1, rb2, rb3, l2, rb4, rb5, rb6, rb7, chk11, btnpack);
+ w2.add(fs1);
+
+
+ var icon1 = new qx.ui.basic.Image("icon/32/status/dialog-error.png");
+ var warn1 = new qx.ui.basic.Label("Do you want to<br/>fly to Rio?");
+
+ icon1.setTop(10);
+ icon1.setLeft(10);
+
+ warn1.setTop(10);
+ warn1.setLeft(48);
+
+ var btn3 = new qx.ui.form.Button("Yes", "icon/16/actions/dialog-ok.png");
+ var btn4 = new qx.ui.form.Button("No", "icon/16/actions/dialog-cancel.png");
+
+ btn3.addEventListener("execute", function(e) {
+ alert("Thank you!");
+ wm2.close();
+ });
+
+ btn4.addEventListener("execute", function(e) {
+ alert("Sorry, please click 'Yes'!");
+ });
+
+ btn3.set({ bottom : 10, right : 10 });
+ btn4.set({ bottom : 10, left : 10 });
+
+ wm2.add(btn3, btn4, icon1, warn1);
+
+
+
+ // Icon & Color Themes
+ //qx.manager.object.ImageManager.getInstance().createThemeList(w3, 20, 248);
+ qx.manager.object.ColorManager.getInstance().createThemeList(w3, 4, 58);
+
+
+
+
+ w1.open();
+ w2.open();
+ w3.open();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file1.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file1.swf
new file mode 100644
index 0000000000..2e6d69a3fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file1.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file10.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file10.swf
new file mode 100644
index 0000000000..eeafa9a8f3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file10.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file2.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file2.swf
new file mode 100644
index 0000000000..51c8f0ff76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file2.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file3.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file3.swf
new file mode 100644
index 0000000000..0b6b56be85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file3.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file4.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file4.swf
new file mode 100644
index 0000000000..746baa8cd9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file4.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file5.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file5.swf
new file mode 100644
index 0000000000..a3333e1c31
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file5.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file6.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file6.swf
new file mode 100644
index 0000000000..2cad550081
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file6.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file7.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file7.swf
new file mode 100644
index 0000000000..b5f4eb4ddf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file7.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file8.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file8.swf
new file mode 100644
index 0000000000..54c9a11edc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file8.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file9.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file9.swf
new file mode 100644
index 0000000000..cc41ff1c10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/color/file9.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/fo_tester.fla b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/fo_tester.fla
new file mode 100644
index 0000000000..afd4bb6134
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/fo_tester.fla
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/fo_tester.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/fo_tester.swf
new file mode 100644
index 0000000000..8e0b966bca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/image/flash/fo_tester.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/index.html
new file mode 100644
index 0000000000..ac16317e80
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/example/index.html
@@ -0,0 +1,8 @@
+<html>
+ <head>
+ <script type="text/javascript">window.location.href="Atom_1.html";</script>
+ </head>
+ <body>
+ <a href="Atom1.html">Continue...</a>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ArrayCreate_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ArrayCreate_1.html
new file mode 100644
index 0000000000..17b7b62a19
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ArrayCreate_1.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for empty Array creation performance</p>
+ <ol>
+ <li>Using "[]"</li>
+ <li>Using "new Array"</li>
+ <li>Using "new Array()"</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function ArrayCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = [];
+ };
+ };
+
+ function ArrayCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Array;
+ };
+ };
+
+ function ArrayCreate3(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Array();
+ };
+ };
+
+ new qx.dev.TimeTracker(ArrayCreate1, ArrayCreate2, ArrayCreate3);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ArrayCreate_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ArrayCreate_2.html
new file mode 100644
index 0000000000..24dc250844
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ArrayCreate_2.html
@@ -0,0 +1,47 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for filled Array creation performance</p>
+ <ol>
+ <li>Using "[ values ]"</li>
+ <li>Using "new Array(values)"</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function ArrayCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = [ 1, 2, 3, 4, 5 ];
+ };
+ };
+
+ function ArrayCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Array(1, 2, 3, 4, 5);
+ };
+ };
+
+ new qx.dev.TimeTracker(ArrayCreate1, ArrayCreate2);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_1.html
new file mode 100644
index 0000000000..438d962c89
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_1.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Create 10.000 new (non stored) objects inside a loop. Identical to LocalObject_1.html.</p>
+
+ <h1>Result</h1>
+ <p>The performance in IE is quite good (~330ms for each loop), compared to the same stuff executed without the precreated stuff.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_2.html
new file mode 100644
index 0000000000..747381ab23
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_2.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (globally stored). After this create 10.000 new (non stored) objects inside a loop.</p>
+ <p>Keep global storage over runtime.</p>
+
+ <h1>Result</h1>
+ <p>The performance in IE is poor (~1150ms for each loop), compared to the same stuff executed without so much precreated objects (previous example).</p>
+ <p>It makes no difference if we use a global or a local variable here. It's identical to LocalObject_2.html.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ window.store = [];
+
+ for (var i=0; i<50000; i++) {
+ window.store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_3.html
new file mode 100644
index 0000000000..1e992095b1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_3.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (globally stored). After this create 10.000 new (non stored) objects inside a loop.</p>
+ <p>Use removeAll to clean up global storage after first loop.</p>
+
+ <h1>Result</h1>
+ <p>The additional cleanup (remove all entries) of the global storage optimizes performance after the first loop. First loop is done after ~1150ms. The following loop needs ~490ms. Not bad, but poorly compared to the version, where the storage have never exist before. (See first examples, which executes in ~350ms.)</p>
+ <p>It makes no difference if we use a global or a local variable here. It's identical to LocalObject_3.html.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ window.store = [];
+
+ for (var i=0; i<50000; i++) {
+ window.store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+
+ qx.lang.Array.removeAll(window.store);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_4.html
new file mode 100644
index 0000000000..e8f766358c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/GlobalObject_4.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (globally stored). After this create 10.000 new (non stored) objects inside a loop.</p>
+ <p>Overwrite global storage to clean up after first loop.</p>
+
+ <h1>Result</h1>
+ <p>The additional cleanup (overwrite with null) of the global storage optimizes performance after the first loop. First loop is done after ~1150ms. The following loop needs ~350ms. Quite good. The same value as in the first example, where the data have never exist.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ window.store = [];
+
+ for (var i=0; i<50000; i++) {
+ window.store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+
+ window.store = null;
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_1.html
new file mode 100644
index 0000000000..5228d4fe23
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_1.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Create 10.000 new (non stored) objects inside a loop. Identical to GlobalObject_1.html.</p>
+
+ <h1>Result</h1>
+ <p>The performance in IE is quite good (~330ms for each loop), compared to the same stuff executed without the precreated stuff.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_2.html
new file mode 100644
index 0000000000..dca923d209
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_2.html
@@ -0,0 +1,51 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (locally stored). After this create 10.000 new (not stored) objects inside a loop.</p>
+ <p>As the loop will be executed inside the scope of "store", the browser must keep the information about "store" with each execution of "test", even if called from the timeout.</p>
+
+ <h1>Result</h1>
+ <p>The performance in IE is poor (~1150ms for each loop), compared to the same stuff executed without so much precreated objects (previous example).</p>
+ <p>It makes no difference if we use a global or a local variable here. It's identical to GlobalObject_2.html.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var store = [];
+
+ for (var i=0; i<50000; i++) {
+ store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_3.html
new file mode 100644
index 0000000000..cf180b4318
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_3.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (locally stored). After this create 10.000 new (not stored) objects inside a loop.</p>
+
+ <h1>Result</h1>
+ <p>The additional cleanup (remove all entries) of the local storage optimizes performance after the first loop. First loop is done after ~1150ms. The following loop needs ~490ms. Not bad, but poorly compared to the version, where the storage have never exist before. (See first examples, which executes in ~350ms.)</p>
+ <p>It makes no difference if we use a global or a local variable here. It's identical to GlobalObject_3.html.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var store = [];
+
+ for (var i=0; i<50000; i++) {
+ store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+
+ qx.lang.Array.removeAll(store);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_4.html
new file mode 100644
index 0000000000..0cd346a605
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_4.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (locally stored). After this create 10.000 new (not stored) objects inside a loop.</p>
+ <p>The "store" variable will be resetted after the first loop with "null".</p>
+
+ <h1>Result</h1>
+ <p>The additional cleanup (overwrite with null) of the global storage optimizes performance after the first loop. First loop is done after ~1150ms. The following loop needs ~350ms. Quite good. The same value as in the first example, where the data have never exist.</p>
+ <p>Interesting because theoratically the function implemenetation of "test" is inside the scope of "store".</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var store = [];
+
+ for (var i=0; i<50000; i++) {
+ store.push({});
+ };
+
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ test();
+
+ store = null;
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_5.html
new file mode 100644
index 0000000000..0c218f965a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/LocalObject_5.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>JS Object Storage Performance</p>
+
+ <h1>Test Description</h1>
+ <p>Precreate 50.000 objects (locally stored). After this create 10.000 new (not stored) objects inside a loop.</p>
+ <p>The test method is implemented outside of the scope of "store".</p>
+
+ <h1>Result</h1>
+ <p>We need no additional cleanup to get a good performance of the function. First loop is done after ~1150ms. The following loop needs ~350ms. Quite good. The same value as in the first example, where the data have never exist.</p>
+ </div>
+
+ <script type="text/javascript">
+ function test()
+ {
+ var _s = (new Date).valueOf();
+
+ for (var i=0; i<10000; i++) {
+ new Object()
+ };
+
+ window.status = "time: " + (new Date).valueOf() + " | measured: " + ((new Date).valueOf() - _s) + "ms";
+ window.setTimeout(test, 1000);
+ }
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var store = [];
+
+ for (var i=0; i<50000; i++) {
+ store.push({});
+ };
+
+ test();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/NumberCreate_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/NumberCreate_1.html
new file mode 100644
index 0000000000..79c1e4096a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/NumberCreate_1.html
@@ -0,0 +1,110 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for Number creation performance</p>
+ <ol>
+ <li>Using simple number</li>
+ <li>Using parseInt</li>
+ <li>Using parseFloat</li>
+ <li>Using new with string int</li>
+ <li>Using new with string float</li>
+ <li>Using new with simple number</li>
+ <li>Using new with parseInt</li>
+ <li>Using new with parseFloat</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var n1 = "2392";
+ var n2 = "223.92";
+
+ function NumberCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = 2392;
+ };
+ };
+
+ function NumberCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = parseInt(n1);
+ };
+ };
+
+ function NumberCreate3(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = parseFloat(n2);
+ };
+ };
+
+ function NumberCreate4(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(n1);
+ };
+ };
+
+ function NumberCreate5(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(n2);
+ };
+ };
+
+ function NumberCreate6(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(2392);
+ };
+ };
+
+ function NumberCreate7(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(parseInt(n1));
+ };
+ };
+
+ function NumberCreate8(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Number(parseFloat(n2));
+ };
+ };
+
+ new qx.dev.TimeTracker(NumberCreate1, NumberCreate2, NumberCreate3, NumberCreate4, NumberCreate5, NumberCreate6, NumberCreate7, NumberCreate8);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectCreate_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectCreate_1.html
new file mode 100644
index 0000000000..9e2743b78b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectCreate_1.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for empty Object creation performance</p>
+ <ol>
+ <li>Using "{}"</li>
+ <li>Using "new Object"</li>
+ <li>Using "new Object()"</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function ObjectCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = {};
+ };
+ };
+
+ function ObjectCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Object;
+ };
+ };
+
+ function ObjectCreate3(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = new Object();
+ };
+ };
+
+ new qx.dev.TimeTracker(ObjectCreate1, ObjectCreate2, ObjectCreate3);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectCreate_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectCreate_2.html
new file mode 100644
index 0000000000..2e6dac8a72
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectCreate_2.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for filled Object creation performance</p>
+ <ol>
+ <li>Using "{ content }"</li>
+ <li>Using "new Object; obj.key = value"</li>
+ <li>Using "new Object(); obj.key = value"</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function ObjectCreate1(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++) {
+ foo = {
+ key1 : 1,
+ key2 : 2,
+ key3 : 3,
+ key4 : 4,
+ key5 : 5
+ };
+ };
+ };
+
+ function ObjectCreate2(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++)
+ {
+ foo = new Object;
+
+ foo.key1 = 1;
+ foo.key2 = 2;
+ foo.key3 = 3;
+ foo.key4 = 4;
+ foo.key5 = 5;
+ };
+ };
+
+ function ObjectCreate3(vLoops)
+ {
+ var foo;
+
+ for (var i=0; i<vLoops; i++)
+ {
+ foo = new Object();
+
+ foo.key1 = 1;
+ foo.key2 = 2;
+ foo.key3 = 3;
+ foo.key4 = 4;
+ foo.key5 = 5;
+ };
+ };
+
+ new qx.dev.TimeTracker(ObjectCreate1, ObjectCreate2, ObjectCreate3);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_1.html
new file mode 100755
index 0000000000..7b5034c7e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_1.html
@@ -0,0 +1,92 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the influence of inheritance to object creation performance.</p>
+ <p>Result: Each inheritance level increases the negative effect.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function l1() {
+ this.store = true;
+ }
+
+ function l2() {
+ l1.call(this);
+ }
+ l2.prototype = new l1;
+
+ function l3() {
+ l2.call(this);
+ }
+ l3.prototype = new l2;
+
+ function l4() {
+ l3.call(this);
+ }
+ l4.prototype = new l3;
+
+ function l5() {
+ l4.call(this);
+ }
+ l5.prototype = new l4;
+
+ function l6() {
+ l5.call(this);
+ }
+ l6.prototype = new l5;
+
+
+ function t1(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l1;
+ }
+ }
+
+ function t2(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l2;
+ }
+ }
+
+ function t3(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l3;
+ }
+ }
+
+ function t4(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l4;
+ }
+ }
+
+ function t5(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l5;
+ }
+ }
+
+ function t6(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l6;
+ }
+ }
+
+ new qx.dev.TimeTracker(t1, t2, t3, t4, t5, t6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_2.html
new file mode 100755
index 0000000000..90a60bb715
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_2.html
@@ -0,0 +1,88 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the influence of inheritance to object creation performance.</p>
+ <p>Don't execute superclass constructor.</p>
+ <p>Result: No negative effect!</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function l1() {
+ this.store = true;
+ }
+
+ function l2() {
+ }
+ l2.prototype = new l1;
+
+ function l3() {
+ }
+ l3.prototype = new l2;
+
+ function l4() {
+ }
+ l4.prototype = new l3;
+
+ function l5() {
+ }
+ l5.prototype = new l4;
+
+ function l6() {
+ }
+ l6.prototype = new l5;
+
+
+ function t1(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l1;
+ }
+ }
+
+ function t2(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l2;
+ }
+ }
+
+ function t3(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l3;
+ }
+ }
+
+ function t4(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l4;
+ }
+ }
+
+ function t5(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l5;
+ }
+ }
+
+ function t6(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l6;
+ }
+ }
+
+ new qx.dev.TimeTracker(t1, t2, t3, t4, t5, t6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_3.html
new file mode 100644
index 0000000000..88433a8558
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectLevel_3.html
@@ -0,0 +1,97 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the influence of inheritance to object creation performance.</p>
+ <p>Result: Each inheritance level increases the negative effect.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function l1() {
+ this.store = true;
+ }
+
+ function l2() {
+ this._t = l1;
+ this._t();
+ }
+ l2.prototype = new l1;
+
+ function l3() {
+ this._t = l2;
+ this._t();
+ }
+ l3.prototype = new l2;
+
+ function l4() {
+ this._t = l3;
+ this._t();
+ }
+ l4.prototype = new l3;
+
+ function l5() {
+ this._t = l4;
+ this._t();
+ }
+ l5.prototype = new l4;
+
+ function l6() {
+ this._t = l5;
+ this._t();
+ }
+ l6.prototype = new l5;
+
+
+ function t1(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l1;
+ }
+ }
+
+ function t2(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l2;
+ }
+ }
+
+ function t3(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l3;
+ }
+ }
+
+ function t4(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l4;
+ }
+ }
+
+ function t5(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l5;
+ }
+ }
+
+ function t6(vLoops) {
+ for (var i=0; i<vLoops; i++) {
+ new l6;
+ }
+ }
+
+ new qx.dev.TimeTracker(t1, t2, t3, t4, t5, t6);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectSize_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectSize_1.html
new file mode 100755
index 0000000000..27fd66313a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/ObjectSize_1.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the incluence to the performance of data using the prototype mechanism on classes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var emptyObject = function() {};
+ var protoObject1 = function() {};
+ var protoObject2 = function() {};
+
+ for (var i=0; i<1000; i++)
+ {
+ protoObject1.prototype["i" + i] = function() {
+ alert("Hello World: " + i);
+ };
+ }
+
+ for (var i=0; i<1000; i++)
+ {
+ protoObject2.prototype["i" + i] = "Hello World";
+ }
+
+ function empty(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new emptyObject;
+ }
+ }
+
+ function protos1(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new protoObject1;
+ }
+ }
+
+ function protos2(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new protoObject2;
+ }
+ }
+
+ new qx.dev.TimeTracker(empty, protos1, protos2);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/Qooxdoo_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/Qooxdoo_1.html
new file mode 100644
index 0000000000..25810becb9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/Qooxdoo_1.html
@@ -0,0 +1,83 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qooxdoo object performance</p>
+ <ol>
+ <li>qx.core.Object</li>
+ <li>qx.core.Target</li>
+ <li>qx.event.type.Event</li>
+ <li>qx.event.type.MouseEvent</li>
+ <li>qx.ui.basic.Terminator</li>
+ <li>qx.ui.layout.CanvasLayout</li>
+ <li>qx.ui.layout.BoxLayout</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function TestObject(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.core.Object;
+ };
+ };
+
+ function TestTarget(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.core.Target;
+ };
+ };
+
+ function TestEvent(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.event.type.Event;
+ };
+ };
+
+ function TestMouseEvent(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.event.type.MouseEvent;
+ };
+ };
+
+ function TestTerminator(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.ui.basic.Terminator;
+ };
+ };
+
+ function TestCanvasLayout(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.ui.layout.CanvasLayout;
+ };
+ };
+
+ function TestBoxLayout(vLoops)
+ {
+ for (var i=0; i<vLoops; i++) {
+ new qx.ui.layout.BoxLayout;
+ };
+ };
+
+ new qx.dev.TimeTracker(TestObject, TestTarget, TestEvent, TestMouseEvent, TestTerminator, TestCanvasLayout, TestBoxLayout);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_1.html
new file mode 100644
index 0000000000..cd2e3630d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_1.html
@@ -0,0 +1,95 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for String Performance. Using new String instances for concat.</p>
+ <ol>
+ <li>Operator +=</li>
+ <li>Operators = and +</li>
+ <li>Concat function</li>
+ <li>Array Push</li>
+ <li>Array Index</li>
+ <li>StringBuilder Object</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function StringConcatShort(vLoops)
+ {
+ var s = "";
+
+ for (var i=0; i<vLoops; i++) {
+ s += "a";
+ };
+ };
+
+ function StringConcatShortAlt(vLoops)
+ {
+ var s = "";
+
+ for (var i=0; i<vLoops; i++) {
+ s = s + "a";
+ };
+ };
+
+ function StringConcatMethod(vLoops)
+ {
+ var s = "";
+
+ for (var i=0; i<vLoops; i++) {
+ s=s.concat("a");
+ };
+ };
+
+ function StringConcatArrayPush(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push("a");
+ };
+
+ s = s.join("");
+ };
+
+ function StringConcatArrayAdd(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s[s.length] = "a";
+ };
+
+ s = s.join("");
+ };
+
+ function StringConcatStringBuilder(vLoops)
+ {
+ var s = new qx.util.StringBuilder;
+
+ for (var i=0; i<vLoops; i++) {
+ s.add("a");
+ };
+
+ s = s.get();
+ };
+
+ new qx.dev.TimeTracker(StringConcatShort, StringConcatShortAlt,
+ StringConcatMethod, StringConcatArrayPush, StringConcatArrayAdd,
+ StringConcatStringBuilder);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_2.html
new file mode 100644
index 0000000000..5b17c14f7d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_2.html
@@ -0,0 +1,98 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for String Performance. Using cached string instances for concat.</p>
+ <ol>
+ <li>Operator +=</li>
+ <li>Operators = and +</li>
+ <li>Concat function</li>
+ <li>Array Push</li>
+ <li>Array Index</li>
+ <li>StringBuilder Object</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var e = "";
+ var a = "a";
+
+ function StringConcatShort(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s += a;
+ };
+ };
+
+ function StringConcatShortAlt(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s = s + a;
+ };
+ };
+
+ function StringConcatMethod(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s=s.concat(a);
+ };
+ };
+
+ function StringConcatArrayPush(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push(a);
+ };
+
+ s = s.join(e);
+ };
+
+ function StringConcatArrayAdd(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s[s.length] = a;
+ };
+
+ s = s.join(e);
+ };
+
+ function StringConcatStringBuilder(vLoops)
+ {
+ var s = new qx.util.StringBuilder;
+
+ for (var i=0; i<vLoops; i++) {
+ s.add(a);
+ };
+
+ s = s.get();
+ };
+
+ new qx.dev.TimeTracker(StringConcatShort, StringConcatShortAlt,
+ StringConcatMethod, StringConcatArrayPush, StringConcatArrayAdd,
+ StringConcatStringBuilder);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_3.html
new file mode 100644
index 0000000000..e802984215
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/StringConcat_3.html
@@ -0,0 +1,109 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for String Performance.</p>
+ <p>Getting an filled array of strings and try to combine them.</p>
+
+ <ol>
+ <li>Operator +=</li>
+ <li>Operators = and +</li>
+ <li>Concat function</li>
+ <li>Array Push</li>
+ <li>Array Index</li>
+ <li>Array Append</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var e = "";
+ var a = "a";
+
+ function getStringArr(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push(a);
+ };
+
+ return s;
+ };
+
+ function StringConcatShort(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s += getStringArr(vLoops).join(e);
+ };
+ };
+
+ function StringConcatShortAlt(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s = s + getStringArr(vLoops).join(e);
+ };
+ };
+
+ function StringConcatMethod(vLoops)
+ {
+ var s = e;
+
+ for (var i=0; i<vLoops; i++) {
+ s=s.concat(getStringArr(vLoops).join(e));
+ };
+ };
+
+ function StringConcatArrayPush(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push(getStringArr(vLoops).join(e));
+ };
+
+ s = s.join(e);
+ };
+
+ function StringConcatArrayAdd(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s[s.length] = getStringArr(vLoops).join(e);
+ };
+
+ s = s.join(e);
+ };
+
+ function StringConcatArrayAppend(vLoops)
+ {
+ var s = [];
+
+ for (var i=0; i<vLoops; i++) {
+ s.push.apply(s, getStringArr(vLoops));
+ };
+
+ s = s.join(e);
+ };
+
+ new qx.dev.TimeTracker(StringConcatShort, StringConcatShortAlt, StringConcatMethod, StringConcatArrayPush, StringConcatArrayAdd, StringConcatArrayAppend);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/TypeCheck_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/TypeCheck_1.html
new file mode 100644
index 0000000000..5d202ecff3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/TypeCheck_1.html
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for typical value checks and their performance.</p>
+ <ol>
+ <li>Typeof with Strings</li>
+ <li>Typeof with Constants</li>
+ <li>Instanceof</li>
+ </ol>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var STR = "string";
+ var NR = "number";
+ var OBJ = "object";
+
+ var str = "Hello World"
+ var nr1 = 1000;
+ var nr2 = Infinity;
+ var nr3 = NaN;
+ var nr4 = 0.432;
+ var obj1 = {};
+ var obj2 = { key1 : "hello world", key2 : "hello world", key3 : "hello world" }
+
+ function typeCheckTypeof1(vLoops)
+ {
+ for (var i=0; i<vLoops; i++)
+ {
+ typeof str === "string";
+ typeof nr1 === "number";
+ typeof nr2 === "number";
+ typeof nr3 === "number";
+ typeof nr4 === "number";
+ typeof obj1 === "object";
+ typeof obj2 === "object";
+ }
+ }
+
+ function typeCheckTypeof2(vLoops)
+ {
+ for (var i=0; i<vLoops; i++)
+ {
+ typeof str === STR;
+ typeof nr1 === NR;
+ typeof nr2 === NR;
+ typeof nr3 === NR;
+ typeof nr4 === NR;
+ typeof obj1 === OBJ;
+ typeof obj2 === OBJ;
+ }
+ }
+
+ function typeCheckInstanceOf(vLoops)
+ {
+ for (var i=0; i<vLoops; i++)
+ {
+ str instanceof String
+ nr1 instanceof Number
+ nr2 instanceof Number
+ nr3 instanceof Number
+ nr4 instanceof Number
+ obj1 instanceof Object
+ obj2 instanceof Object
+ }
+ }
+
+ new qx.dev.TimeTracker(typeCheckTypeof1, typeCheckTypeof2, typeCheckInstanceOf);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/index.html
new file mode 100644
index 0000000000..6634518480
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/performance/index.html
@@ -0,0 +1,8 @@
+<html>
+ <head>
+ <script type="text/javascript">window.location.href="ArrayCreate_1.html";</script>
+ </head>
+ <body>
+ <a href="ArrayCreate_1.html">Continue...</a>
+ </body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_1.html
new file mode 100644
index 0000000000..0511ee7034
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_1.html
@@ -0,0 +1,286 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some speed tests for qx.ui.basic.Atom. Please regard, that many of things in the finished
+ page are modified on the already created and visible qx.ui.basic.Atom instances. This is not
+ a good example in scripting qooxdoo. It's always faster to configure a instance of qx.ui.core.Widget
+ completely, before add it to the qx.ui.core.ClientDocument or any other visible parent qx.ui.core.Widget.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL I
+ ----------------------------------------------
+ */
+
+ var la1 = new qx.ui.basic.Atom("Test No #1", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(la1)
+ {
+ setTop(48);
+ setLeft(20);
+ setIconPosition("left");
+ };
+ d.add(la1);
+
+
+ var la2 = new qx.ui.basic.Atom("Test No #2", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(la2)
+ {
+ setTop(148);
+ setLeft(20);
+ setIconPosition("right");
+ };
+ d.add(la2);
+
+
+ var la3 = new qx.ui.basic.Atom("Test No #3", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(la3)
+ {
+ setTop(248);
+ setLeft(20);
+ setIconPosition("top");
+ };
+ d.add(la3);
+
+
+ var la4 = new qx.ui.basic.Atom("Test No #4", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(la4)
+ {
+ setTop(348);
+ setLeft(20);
+ setIconPosition("bottom");
+ };
+ d.add(la4);
+
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL II
+ ----------------------------------------------
+ */
+
+ var lb1 = new qx.ui.basic.Atom("Test No #1", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(lb1)
+ {
+ setTop(48);
+ setLeft(120);
+ setIconPosition("left");
+ };
+ d.add(lb1);
+ lb1.setIconPosition("right");
+
+
+ var lb2 = new qx.ui.basic.Atom("Test No #2", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(lb2)
+ {
+ setTop(148);
+ setLeft(120);
+ setIconPosition("right");
+ };
+ d.add(lb2);
+ lb2.setIconPosition("left");
+
+
+ var lb3 = new qx.ui.basic.Atom("Test No #3", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(lb3)
+ {
+ setTop(248);
+ setLeft(120);
+ setIconPosition("top");
+ };
+ d.add(lb3);
+ lb3.setIconPosition("bottom");
+
+
+ var lb4 = new qx.ui.basic.Atom("Test No #4", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(lb4)
+ {
+ setTop(348);
+ setLeft(120);
+ setIconPosition("bottom");
+ };
+ d.add(lb4);
+ lb4.setIconPosition("top");
+
+
+
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL III
+ ----------------------------------------------
+ */
+
+ var lc1 = new qx.ui.basic.Atom("Test No #1", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(lc1)
+ {
+ setTop(48);
+ setLeft(220);
+ setIconPosition("left");
+ };
+ d.add(lc1);
+ lc1.setIconPosition("top");
+
+
+ var lc2 = new qx.ui.basic.Atom("Test No #2", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(lc2)
+ {
+ setTop(148);
+ setLeft(220);
+ setIconPosition("right");
+ };
+ d.add(lc2);
+ lc2.setIconPosition("bottom");
+
+
+ var lc3 = new qx.ui.basic.Atom("Test No #3", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(lc3)
+ {
+ setTop(248);
+ setLeft(220);
+ setIconPosition("top");
+ };
+ d.add(lc3);
+ lc3.setIconPosition("right");
+
+
+ var lc4 = new qx.ui.basic.Atom("Test No #4", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(lc4)
+ {
+ setTop(348);
+ setLeft(220);
+ setIconPosition("bottom");
+ };
+ d.add(lc4);
+ lc4.setIconPosition("left");
+
+
+
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL IV
+ ----------------------------------------------
+ */
+
+ var ld1 = new qx.ui.basic.Atom("Test No #1", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(ld1)
+ {
+ setTop(48);
+ setLeft(320);
+ setIconPosition("left");
+ };
+ d.add(ld1);
+ ld1.setIconPosition("bottom");
+
+
+ var ld2 = new qx.ui.basic.Atom("Test No #2", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(ld2)
+ {
+ setTop(148);
+ setLeft(320);
+ setIconPosition("right");
+ };
+ d.add(ld2);
+ ld2.setIconPosition("top");
+
+
+ var ld3 = new qx.ui.basic.Atom("Test No #3", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(ld3)
+ {
+ setTop(248);
+ setLeft(320);
+ setIconPosition("top");
+ };
+ d.add(ld3);
+ ld3.setIconPosition("left");
+
+
+ var ld4 = new qx.ui.basic.Atom("Test No #4", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(ld4)
+ {
+ setTop(348);
+ setLeft(320);
+ setIconPosition("bottom");
+ };
+ d.add(ld4);
+ ld4.setIconPosition("right");
+
+
+
+
+
+ /*
+ ----------------------------------------------
+ TEST LEVEL V
+ ----------------------------------------------
+ */
+
+ var le1 = new qx.ui.basic.Atom("Test No #1", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(le1)
+ {
+ setTop(48);
+ setLeft(420);
+ setIconPosition("right");
+ };
+ d.add(le1);
+ le1.setIconPosition("top");
+
+
+ var le2 = new qx.ui.basic.Atom("Test No #2", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(le2)
+ {
+ setTop(148);
+ setLeft(420);
+ setIconPosition("left");
+ };
+ d.add(le2);
+ le2.setIconPosition("bottom");
+
+
+ var le3 = new qx.ui.basic.Atom("Test No #3", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(le3)
+ {
+ setTop(248);
+ setLeft(420);
+ setIconPosition("top");
+ };
+ d.add(le3);
+ le3.setIconPosition("right");
+
+
+ var le4 = new qx.ui.basic.Atom("Test No #4", "icon/16/apps/preferences-desktop-multimedia.png");
+ with(le4)
+ {
+ setTop(348);
+ setLeft(420);
+ setIconPosition("bottom");
+ };
+ d.add(le4);
+ le4.setIconPosition("left");
+
+
+
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_2.html
new file mode 100644
index 0000000000..5dcd5af424
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_2.html
@@ -0,0 +1,187 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Example to show correct calculations of qx.ui.basic.Atom sizes. Normally a qx.ui.basic.Atom has only the size of its content.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var w = qx.ui.core.ClientDocument.getInstance();
+
+
+ function alertoff() {
+ alert(this.getElement().offsetWidth + "x" + this.getElement().offsetHeight);
+ };
+
+ var l1 = new qx.ui.layout.CanvasLayout();
+ var l2 = new qx.ui.layout.CanvasLayout();
+
+ with(l1)
+ {
+ setTop(100);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ with(l2)
+ {
+ setTop(123);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ w.add(l1);
+ w.add(l2);
+
+
+
+ var a1 = new qx.ui.basic.Atom("Pure Text", "icon/22/places/folder.png");
+ var a2 = new qx.ui.basic.Atom(null, "icon/22/places/folder.png");
+
+ with(a1) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(100);
+ setLeft(120);
+ };
+
+ with(a2) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(100);
+ setLeft(300);
+ };
+
+ w.add(a1);
+ w.add(a2);
+
+ a1.addEventListener("click", alertoff);
+ a2.addEventListener("click", alertoff);
+
+
+
+ var l3 = new qx.ui.layout.CanvasLayout();
+ var l4 = new qx.ui.layout.CanvasLayout();
+
+ with(l3)
+ {
+ setTop(200);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ with(l4)
+ {
+ setTop(233);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ w.add(l3);
+ w.add(l4);
+
+
+ var b1 = new qx.ui.basic.Atom("Pure Text", "icon/32/categories/applications-internet.png");
+ var b2 = new qx.ui.basic.Atom(null, "icon/32/categories/applications-internet.png");
+
+ with(b1) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(200);
+ setLeft(120);
+ };
+
+ with(b2) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(200);
+ setLeft(300);
+ };
+
+ w.add(b1);
+ w.add(b2);
+
+ b1.addEventListener("click", alertoff);
+ b2.addEventListener("click", alertoff);
+
+
+
+
+
+
+ var l5 = new qx.ui.layout.CanvasLayout();
+ var l6 = new qx.ui.layout.CanvasLayout();
+
+ with(l5)
+ {
+ setTop(300);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ with(l6)
+ {
+ setTop(317);
+ setLeft(20);
+ setWidth(500);
+ setHeight(1);
+ setBackgroundColor("red");
+ setOverflow("hidden");
+ };
+
+ w.add(l5);
+ w.add(l6);
+
+
+ var c1 = new qx.ui.basic.Atom("Pure Text", "icon/16/categories/applications-internet.png");
+ var c2 = new qx.ui.basic.Atom(null, "icon/16/categories/applications-internet.png");
+
+ with(c1) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(300);
+ setLeft(120);
+ };
+
+ with(c2) {
+ setBorder(new qx.renderer.border.Border(1, "solid", "black"));
+ setTop(300);
+ setLeft(300);
+ };
+
+ w.add(c1);
+ w.add(c2);
+
+ c1.addEventListener("click", alertoff);
+ c2.addEventListener("click", alertoff);
+
+
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_3.html
new file mode 100644
index 0000000000..49f2595ced
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_3.html
@@ -0,0 +1,322 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Layout tests for qx.ui.basic.Atom reimplementation.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var a1 = new qx.ui.basic.Atom;
+ a1.setLabel("hello world");
+ a1.setTop(48);
+ a1.setLeft(20);
+ a1.setPadding(2, 4);
+ a1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(a1);
+
+ var a2 = new qx.ui.basic.Atom;
+ a2.setIcon("icon/32/actions/system-run.png");
+ a2.setTop(48);
+ a2.setLeft(120);
+ a2.setPadding(2, 4);
+ a2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(a2);
+
+
+
+
+ var b1 = new qx.ui.basic.Atom;
+ b1.setLabel("hello world");
+ b1.setIcon("icon/32/actions/system-run.png");
+ b1.setIconPosition("left");
+ b1.setTop(100);
+ b1.setLeft(20);
+ b1.setPadding(2, 4);
+ b1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(b1);
+
+ var b2 = new qx.ui.basic.Atom;
+ b2.setLabel("hello world");
+ b2.setIcon("icon/32/actions/system-run.png");
+ b2.setIconPosition("top");
+ b2.setTop(100);
+ b2.setLeft(120);
+ b2.setPadding(2, 4);
+ b2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(b2);
+
+ var b3 = new qx.ui.basic.Atom;
+ b3.setLabel("hello world");
+ b3.setIcon("icon/32/actions/system-run.png");
+ b3.setIconPosition("right");
+ b3.setTop(100);
+ b3.setLeft(220);
+ b3.setPadding(2, 4);
+ b3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(b3);
+
+ var b4 = new qx.ui.basic.Atom;
+ b4.setLabel("hello world");
+ b4.setIcon("icon/32/actions/system-run.png");
+ b4.setIconPosition("bottom");
+ b4.setTop(100);
+ b4.setLeft(320);
+ b4.setPadding(2, 4);
+ b4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(b4);
+
+
+
+
+ var c1 = new qx.ui.basic.Atom;
+ c1.setLabel("hello world");
+ c1.setIcon("icon/32/actions/system-run.png");
+ c1.setShow("icon");
+ c1.setTop(180);
+ c1.setLeft(20);
+ c1.setPadding(2, 4);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(c1);
+
+ var c2 = new qx.ui.basic.Atom;
+ c2.setLabel("hello world");
+ c2.setIcon("icon/32/actions/system-run.png");
+ c2.setShow("label");
+ c2.setTop(180);
+ c2.setLeft(120);
+ c2.setPadding(2, 4);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(c2);
+
+
+
+
+
+ var d1 = new qx.ui.basic.Atom;
+ d1.setLabel("hello world");
+ d1.setIcon("icon/32/actions/system-run.png");
+ d1.setShow("icon");
+ d1.setTop(250);
+ d1.setLeft(20);
+ d1.setPadding(2, 4);
+ d1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(d1);
+ d1.setShow("both");
+
+ var d2 = new qx.ui.basic.Atom;
+ d2.setLabel("hello world");
+ d2.setIcon("icon/32/actions/system-run.png");
+ d2.setShow("label");
+ d2.setTop(250);
+ d2.setLeft(120);
+ d2.setPadding(2, 4);
+ d2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(d2);
+ d2.setShow("both");
+
+ var d3 = new qx.ui.basic.Atom;
+ d3.setLabel("hello world");
+ d3.setIcon("icon/32/actions/system-run.png");
+ d3.setShow("none");
+ d3.setTop(250);
+ d3.setLeft(220);
+ d3.setPadding(2, 4);
+ d3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(d3);
+ d3.setShow("both");
+
+
+
+
+ var e1 = new qx.ui.basic.Atom;
+ e1.setIcon("icon/32/actions/system-run.png");
+ e1.setShow("none");
+ e1.setTop(300);
+ e1.setLeft(20);
+ e1.setPadding(2, 4);
+ e1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(e1);
+ e1.setShow("both");
+ e1.setLabel("hello world");
+
+ var e2 = new qx.ui.basic.Atom;
+ e2.setLabel("hello world");
+ e2.setShow("none");
+ e2.setTop(300);
+ e2.setLeft(120);
+ e2.setPadding(2, 4);
+ e2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(e2);
+ e2.setShow("both");
+ e2.setIcon("icon/32/actions/system-run.png");
+
+ var e3 = new qx.ui.basic.Atom;
+ e3.setShow("none");
+ e3.setTop(300);
+ e3.setLeft(220);
+ e3.setPadding(2, 4);
+ e3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(e3);
+ e3.setShow("both");
+ e3.setIcon("icon/32/actions/system-run.png");
+ e3.setLabel("hello world");
+
+ var e4 = new qx.ui.basic.Atom;
+ e4.setShow("none");
+ e4.setTop(300);
+ e4.setLeft(320);
+ e4.setPadding(2, 4);
+ e4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(e4);
+ e4.setShow("both");
+ e4.setLabel("hello world");
+ e4.setIcon("icon/32/actions/system-run.png");
+
+
+
+
+ var f1 = new qx.ui.basic.Atom;
+ f1.setLabel("hello world");
+ f1.setIcon("icon/32/actions/system-run.png");
+ f1.setIconPosition("left");
+ f1.setTop(350);
+ f1.setLeft(20);
+ f1.setPadding(2, 4);
+ f1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(f1);
+ f1.setIconPosition("top");
+
+ var f2 = new qx.ui.basic.Atom;
+ f2.setLabel("hello world");
+ f2.setIcon("icon/32/actions/system-run.png");
+ f2.setIconPosition("left");
+ f2.setTop(350);
+ f2.setLeft(120);
+ f2.setPadding(2, 4);
+ f2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(f2);
+ f2.setIconPosition("right");
+
+ var f3 = new qx.ui.basic.Atom;
+ f3.setLabel("hello world");
+ f3.setIcon("icon/32/actions/system-run.png");
+ f3.setIconPosition("left");
+ f3.setTop(350);
+ f3.setLeft(220);
+ f3.setPadding(2, 4);
+ f3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(f3);
+ f3.setIconPosition("bottom");
+
+
+
+
+ var g1 = new qx.ui.basic.Atom;
+ g1.setLabel("hello world");
+ g1.setIcon("icon/32/actions/system-run.png");
+ g1.setIconPosition("top");
+ g1.setTop(450);
+ g1.setLeft(20);
+ g1.setPadding(2, 4);
+ g1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(g1);
+ g1.setIconPosition("right");
+
+ var g2 = new qx.ui.basic.Atom;
+ g2.setLabel("hello world");
+ g2.setIcon("icon/32/actions/system-run.png");
+ g2.setIconPosition("top");
+ g2.setTop(450);
+ g2.setLeft(120);
+ g2.setPadding(2, 4);
+ g2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(g2);
+ g2.setIconPosition("bottom");
+
+ var g3 = new qx.ui.basic.Atom;
+ g3.setLabel("hello world");
+ g3.setIcon("icon/32/actions/system-run.png");
+ g3.setIconPosition("top");
+ g3.setTop(450);
+ g3.setLeft(220);
+ g3.setPadding(2, 4);
+ g3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(g3);
+ g3.setIconPosition("left");
+
+
+
+
+
+
+ var h1 = new qx.ui.basic.Atom;
+ h1.setLabel("hello world");
+ h1.setIcon("icon/32/actions/system-run.png");
+ h1.setIconPosition("left");
+ h1.setTop(520);
+ h1.setLeft(20);
+ h1.setPadding(2, 4);
+ h1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(h1);
+ h1.setSpacing(20);
+
+
+ var h2 = new qx.ui.basic.Atom;
+ h2.setLabel("hello world");
+ h2.setIcon("icon/32/actions/system-run.png");
+ h2.setIconPosition("top");
+ h2.setTop(520);
+ h2.setLeft(150);
+ h2.setPadding(2, 4);
+ h2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ d.add(h2);
+ h2.setSpacing(20);
+
+
+
+
+
+
+ var i1 = new qx.ui.basic.Atom;
+ i1.setLabel("hello world");
+ i1.setIcon("icon/32/actions/system-run.png");
+ i1.setIconPosition("left");
+ i1.setTop(600);
+ i1.setLeft(20);
+ i1.setPadding(2, 4);
+ i1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i1.setHeight(150);
+ i1.setWidth(150);
+ d.add(i1);
+
+ var i2 = new qx.ui.basic.Atom;
+ i2.setLabel("hello world");
+ i2.setIcon("icon/32/actions/system-run.png");
+ i2.setIconPosition("top");
+ i2.setTop(600);
+ i2.setLeft(200);
+ i2.setPadding(2, 4);
+ i2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i2.setWidth(150);
+ i2.setHeight(150);
+ d.add(i2);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_4.html
new file mode 100644
index 0000000000..8e260675e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_4.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var icons = [
+ "apps/accessories-clock",
+ "categories/applications-graphics",
+ "apps/accessories-date",
+ "places/folder",
+ "apps/accessories-tip",
+ "apps/preferences-desktop-accessibility"
+ ];
+ var sizes = [ 16, 22, 32, 48, 64, 48, 32, 22, 16 ];
+
+ var atom;
+ var toppos = 48;
+
+ for (var j=0; j<sizes.length; j++)
+ {
+ for (var i=0; i<icons.length; i++)
+ {
+ atom = new qx.ui.basic.Atom("Atom " + (i+1) + "." + (j+1), "icon/" + sizes[j] + "/" + icons[i] + ".png");
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (120 *i));
+
+ d.add(atom);
+ };
+
+ toppos += sizes[j] + 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_5.html
new file mode 100644
index 0000000000..7fa55f0fdf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_5.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Adding many qx.ui.basic.Atom widgets without setting the icon-width and -height.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Atom("Date", "icon/16/apps/accessories-date.png");
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_6.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_6.html
new file mode 100644
index 0000000000..e750651489
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_6.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Adding many qx.ui.basic.Atom widgets setting the icon-width and -height.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Atom("Date", "icon/16/apps/accessories-date.png", 16, 16);
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_7.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_7.html
new file mode 100644
index 0000000000..d720d9a032
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_7.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Atom(null, "icon/16/apps/accessories-date.png", 16, 16);
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_8.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_8.html
new file mode 100644
index 0000000000..211b756dda
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_8.html
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Atom("Date");
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_9.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_9.html
new file mode 100644
index 0000000000..6eb49319e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Atom_9.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ This uses qx.ui.basic.Label instead of qx.ui.basic.Atom for text only display. Stored as Atom test file
+ because this way we could compare it to the previous test file.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var atom;
+ var toppos = 48;
+
+ for (var i=0; i<20; i++)
+ {
+ for (var j=0; j<10; j++)
+ {
+ atom = new qx.ui.basic.Label("Date");
+
+ atom.setTop(toppos);
+ atom.setLeft(20 + (j*50));
+
+ d.add(atom);
+ };
+
+ toppos += 20;
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Border_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Border_1.html
new file mode 100644
index 0000000000..173a5a05c9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Border_1.html
@@ -0,0 +1,177 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.renderer.border.Border, a cross-browser advanced border engine.
+ Each instance of qx.renderer.border.Border allows to affect multiple QxTerminators.
+ When the one property of the qx.renderer.border.Border change, it informs all bounded
+ QxTerminators to rerender the border.</p>
+
+ <p>The qx.renderer.border.Border constructor also allows you to convert a string
+ (css-like) into and qx.renderer.border.Border instance (last example).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+
+ var c1 = new qx.ui.basic.Terminator;
+ with(c1)
+ {
+ setTop(48);
+ setLeft(20);
+ setWidth(150);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.Color("#fff"));
+ };
+ d.add(c1);
+
+ var c2 = new qx.ui.basic.Terminator;
+ with(c2)
+ {
+ setTop(48);
+ setLeft(200);
+ setWidth(150);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.Color("#fff"));
+ };
+ d.add(c2);
+
+ var b1 = new qx.renderer.border.Border;
+
+ // before set border properties
+ c1.setBorder(b1);
+
+ b1.setWidth(2);
+ b1.setStyle("solid");
+ b1.setColor(new qx.renderer.color.Color("black"));
+ b1.setBottomStyle("dotted");
+ b1.setTopColor(new qx.renderer.color.Color("blue"));
+
+ // after set border properties
+ c2.setBorder(b1);
+
+
+
+
+
+
+
+
+ var c3 = new qx.ui.basic.Terminator;
+ with(c3)
+ {
+ setTop(110);
+ setLeft(20);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c3);
+
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+
+ var c4 = new qx.ui.basic.Terminator;
+ with(c4)
+ {
+ setTop(110);
+ setLeft(80);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c4);
+
+ c4.setBorder(qx.renderer.border.BorderPresets.getInstance().thinOutset);
+
+ var c5 = new qx.ui.basic.Terminator;
+ with(c5)
+ {
+ setTop(110);
+ setLeft(140);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c5);
+
+ c5.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+
+
+ var c6 = new qx.ui.basic.Terminator;
+ with(c6)
+ {
+ setTop(110);
+ setLeft(200);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c6);
+
+ c6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+
+
+ var c7 = new qx.ui.basic.Terminator;
+ with(c7)
+ {
+ setTop(110);
+ setLeft(260);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c7);
+
+ c7.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+
+ var c8 = new qx.ui.basic.Terminator;
+ with(c8)
+ {
+ setTop(110);
+ setLeft(320);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c8);
+
+ c8.setBorder(qx.renderer.border.BorderPresets.getInstance().ridge);
+
+
+
+ var c9 = new qx.ui.basic.Terminator;
+ with(c9)
+ {
+ setTop(110);
+ setLeft(380);
+ setWidth(40);
+ setHeight(40);
+ setBackgroundColor(new qx.renderer.color.ColorObject("threedface"));
+ };
+ d.add(c9);
+
+ var b2 = qx.renderer.border.Border.fromString("2px solid red");
+ c9.setBorder(b2);
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 248);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/BoxLayout_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/BoxLayout_1.html
new file mode 100644
index 0000000000..b85f7224d3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/BoxLayout_1.html
@@ -0,0 +1,283 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="testCommand" class="manualFrame">
+ <style type="text/css">
+ #testCommand{
+ position: absolute;
+ right: 335px;
+ bottom: 48px;
+ width: 350px;
+ }
+
+ .setform select{
+ font-size: 11px;
+ min-width: 75px;
+ }
+
+ .setform button{
+ font-size: 11px;
+ }
+ </style>
+
+ <table class="setform"><tbody>
+
+ <tr>
+ <td>
+ <label for="sel_orientation">Orientation:</label>
+ </td>
+ <td>
+ <select id="sel_orientation">
+ <option selected="selected">horizontal</option>
+ <option>vertical</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Width/Height:</td>
+ <td>
+ <select id="sel_width">
+ <option>100</option>
+ <option selected="selected">250</option>
+ <option>500</option>
+ <option>auto</option>
+ </select>
+ <select id="sel_height">
+ <option>100</option>
+ <option selected="selected">250</option>
+ <option>500</option>
+ <option>auto</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Spacing/Padding:</td>
+ <td>
+ <select id="sel_spacing">
+ <option selected="selected">0</option>
+ <option>2</option>
+ <option>4</option>
+ <option>8</option>
+ </select>
+ <select id="sel_padding">
+ <option selected="selected">0</option>
+ <option>2</option>
+ <option>4</option>
+ <option>8</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <label for="sel_order">Order/Stretching:</label>
+ </td>
+ <td>
+ <select id="sel_order">
+ <option selected="selected">default</option>
+ <option>reverse</option>
+ </select>
+ <select id="sel_stretch">
+ <option selected="selected">enabled</option>
+ <option>disabled</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Horizontal/Vertical Align:</td>
+ <td>
+ <select id="sel_horalg">
+ <option selected="selected">left</option>
+ <option>center</option>
+ <option>right</option>
+ </select>
+ <select id="sel_veralg">
+ <option selected="selected">top</option>
+ <option>middle</option>
+ <option>bottom</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td>
+ <button id="btn_save">Apply</button>
+ </td>
+ </tr>
+
+ </tbody></table>
+
+ <p><b>Tests</b></p>
+ <ul>
+ <li><a href="javascript:test1()">Test 1: Remove blue widget</a></li>
+ <li><a href="javascript:test2()">Test 2: Add blue widget</a></li>
+ <li><a href="javascript:test3()">Test 3: Add blue widget at position 2</a></li>
+ <li><a href="javascript:test4()">Test 4: Add blue widget at position 4</a></li>
+ <li><a href="javascript:test5()">Test 5: Add green widget at before the cdrom</a></li>
+ <li><a href="javascript:test6()">Test 6: Add green widget at after the color palette</a></li>
+ <li><a href="javascript:test7()">Test 7: Add new widget to layout</a></li>
+ </ul>
+ </div>
+
+ <div id="demoDescription">
+ <p>Now something more complex. Try to configure multiple things and then press &lt;apply&gt;.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ var bl, w1, w2, w3, w4, w5, w6, w7, w8;
+
+ var _b = document.getElementById("btn_save");
+ var _t = document.getElementById("sel_orientation");
+ var _w = document.getElementById("sel_width");
+ var _h = document.getElementById("sel_height");
+ var _s = document.getElementById("sel_spacing");
+ var _p = document.getElementById("sel_padding");
+ var _o = document.getElementById("sel_order");
+ var _r = document.getElementById("sel_stretch");
+ var _l = document.getElementById("sel_horalg");
+ var _v = document.getElementById("sel_veralg");
+
+ function save()
+ {
+ var vt = _t.options[_t.selectedIndex].firstChild.nodeValue;
+ var vw = _w.options[_w.selectedIndex].firstChild.nodeValue;
+ var vh = _h.options[_h.selectedIndex].firstChild.nodeValue;
+ var vs = _s.options[_s.selectedIndex].firstChild.nodeValue;
+ var vp = _p.options[_p.selectedIndex].firstChild.nodeValue;
+ var vo = _o.options[_o.selectedIndex].firstChild.nodeValue;
+ var vr = _r.options[_r.selectedIndex].firstChild.nodeValue;
+ var vl = _l.options[_l.selectedIndex].firstChild.nodeValue;
+ var vv = _v.options[_v.selectedIndex].firstChild.nodeValue;
+
+ bl.setOrientation(vt);
+ bl.setWidth(vw == "auto" ? vw : parseInt(vw));
+ bl.setHeight(vh == "auto" ? vh : parseInt(vh));
+ bl.setSpacing(parseInt(vs));
+ bl.setPadding(parseInt(vp));
+ bl.setReverseChildrenOrder(vo == "reverse");
+ bl.setStretchChildrenOrthogonalAxis(vr == "enabled");
+ bl.setHorizontalChildrenAlign(vl);
+ bl.setVerticalChildrenAlign(vv);
+ };
+
+ if (_b.attachEvent)
+ _b.attachEvent("onclick", save);
+ else if (_b.addEventListener)
+ _b.addEventListener("click", save, false);
+
+
+ function test1()
+ {
+ bl.remove(w2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test2()
+ {
+ bl.add(w2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test3()
+ {
+ bl.addAt(w2, 2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test4()
+ {
+ bl.addAt(w2, 4);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test5()
+ {
+ bl.addBefore(w3, w7);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test6()
+ {
+ bl.addAfter(w3, w4);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test7()
+ {
+ bl.addAt(w8, 1);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ bl = new qx.ui.layout.BoxLayout("horizontal");
+ bl.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ bl.setBackgroundColor(new qx.renderer.color.Color("white"));
+ bl.setWidth(250);
+ bl.setHeight(250);
+ bl.setTop(48);
+ bl.setLeft(20);
+
+ w1 = new qx.ui.layout.CanvasLayout;
+ w1.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w1.setMinWidth(20);
+ w1.setMinHeight(20);
+ w1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w2 = new qx.ui.layout.CanvasLayout;
+ w2.setBackgroundColor(new qx.renderer.color.Color("blue"));
+ w2.setMinWidth(20);
+ w2.setMinHeight(20);
+ w2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w3 = new qx.ui.layout.CanvasLayout;
+ w3.setBackgroundColor(new qx.renderer.color.Color("green"));
+ w3.setMinWidth(20);
+ w3.setMinHeight(20);
+ w3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w4 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ w5 = new qx.ui.layout.CanvasLayout;
+ w5.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+ w5.setMinWidth(20);
+ w5.setMinHeight(20);
+ w5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w6 = new qx.ui.layout.CanvasLayout;
+ w6.setBackgroundColor(new qx.renderer.color.Color("red"));
+ w6.setMinWidth(20);
+ w6.setMinHeight(20);
+ w6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w7 = new qx.ui.basic.Image("icon/64/devices/media-optical.png");
+
+ w8 = new qx.ui.layout.CanvasLayout;
+ w8.setBackgroundColor(new qx.renderer.color.Color("fuchsia"));
+ w8.setMinWidth(20);
+ w8.setMinHeight(20);
+ w8.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ bl.add(w1, w2, w3, w4, w5, w6, w7);
+ d.add(bl);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/BoxLayout_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/BoxLayout_2.html
new file mode 100644
index 0000000000..d228dc08bf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/BoxLayout_2.html
@@ -0,0 +1,324 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="testCommand" class="manualFrame">
+ <style type="text/css">
+ #testCommand{
+ position: absolute;
+ right: 335px;
+ bottom: 48px;
+ width: 350px;
+ }
+
+ .setform select{
+ font-size: 11px;
+ min-width: 75px;
+ }
+
+ .setform button{
+ font-size: 11px;
+ }
+ </style>
+
+ <table class="setform"><tbody>
+
+ <tr>
+ <td>
+ <label for="sel_orientation">Orientation:</label>
+ </td>
+ <td>
+ <select id="sel_orientation">
+ <option selected="selected">horizontal</option>
+ <option>vertical</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Width/Height:</td>
+ <td>
+ <select id="sel_width">
+ <option>100</option>
+ <option selected="selected">250</option>
+ <option>500</option>
+ <option>auto</option>
+ </select>
+ <select id="sel_height">
+ <option>100</option>
+ <option selected="selected">250</option>
+ <option>500</option>
+ <option>auto</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Spacing/Padding:</td>
+ <td>
+ <select id="sel_spacing">
+ <option selected="selected">0</option>
+ <option>2</option>
+ <option>4</option>
+ <option>8</option>
+ </select>
+ <select id="sel_padding">
+ <option selected="selected">0</option>
+ <option>2</option>
+ <option>4</option>
+ <option>8</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>
+ <label for="sel_order">Order/Stretching:</label>
+ </td>
+ <td>
+ <select id="sel_order">
+ <option selected="selected">default</option>
+ <option>reverse</option>
+ </select>
+ <select id="sel_stretch">
+ <option selected="selected">enabled</option>
+ <option>disabled</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>Horizontal/Vertical Align:</td>
+ <td>
+ <select id="sel_horalg">
+ <option selected="selected">left</option>
+ <option>center</option>
+ <option>right</option>
+ </select>
+ <select id="sel_veralg">
+ <option selected="selected">top</option>
+ <option>middle</option>
+ <option>bottom</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td>&#160;</td>
+ <td>
+ <button id="btn_save">Apply</button>
+ </td>
+ </tr>
+
+ </tbody></table>
+
+ <p><b>Tests</b></p>
+ <ul>
+ <li><a href="javascript:test1()">Test 1: Remove blue widget</a></li>
+ <li><a href="javascript:test2()">Test 2: Add blue widget</a></li>
+ <li><a href="javascript:test3()">Test 3: Add blue widget at position 2</a></li>
+ <li><a href="javascript:test4()">Test 4: Add blue widget at position 4</a></li>
+ <li><a href="javascript:test5()">Test 5: Add green widget at before the cdrom</a></li>
+ <li><a href="javascript:test6()">Test 6: Add green widget at after the color palette</a></li>
+ <li><a href="javascript:test7()">Test 7: Add new widget to layout</a></li>
+ </ul>
+ </div>
+
+ <div id="demoDescription">
+ <p>Now something more complex. Try to configure multiple things and then press &lt;apply&gt;.</p>
+ <p>Added initial support for children align override: Try to click on the color palette.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ var bl, w1, w2, w3, w4, w5, w6, w7, w8;
+
+ var _b = document.getElementById("btn_save");
+ var _t = document.getElementById("sel_orientation");
+ var _w = document.getElementById("sel_width");
+ var _h = document.getElementById("sel_height");
+ var _s = document.getElementById("sel_spacing");
+ var _p = document.getElementById("sel_padding");
+ var _o = document.getElementById("sel_order");
+ var _r = document.getElementById("sel_stretch");
+ var _l = document.getElementById("sel_horalg");
+ var _v = document.getElementById("sel_veralg");
+
+ function save()
+ {
+ var vt = _t.options[_t.selectedIndex].firstChild.nodeValue;
+ var vw = _w.options[_w.selectedIndex].firstChild.nodeValue;
+ var vh = _h.options[_h.selectedIndex].firstChild.nodeValue;
+ var vs = _s.options[_s.selectedIndex].firstChild.nodeValue;
+ var vp = _p.options[_p.selectedIndex].firstChild.nodeValue;
+ var vo = _o.options[_o.selectedIndex].firstChild.nodeValue;
+ var vr = _r.options[_r.selectedIndex].firstChild.nodeValue;
+ var vl = _l.options[_l.selectedIndex].firstChild.nodeValue;
+ var vv = _v.options[_v.selectedIndex].firstChild.nodeValue;
+
+ bl.setOrientation(vt);
+ bl.setWidth(vw == "auto" ? vw : parseInt(vw));
+ bl.setHeight(vh == "auto" ? vh : parseInt(vh));
+ bl.setSpacing(parseInt(vs));
+ bl.setPadding(parseInt(vp));
+ bl.setReverseChildrenOrder(vo == "reverse");
+ bl.setStretchChildrenOrthogonalAxis(vr == "enabled");
+ bl.setHorizontalChildrenAlign(vl);
+ bl.setVerticalChildrenAlign(vv);
+ };
+
+ if (_b.attachEvent)
+ _b.attachEvent("onclick", save);
+ else if (_b.addEventListener)
+ _b.addEventListener("click", save, false);
+
+
+ function test1()
+ {
+ bl.remove(w2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test2()
+ {
+ bl.add(w2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test3()
+ {
+ bl.addAt(w2, 2);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test4()
+ {
+ bl.addAt(w2, 4);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test5()
+ {
+ bl.addBefore(w3, w7);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test6()
+ {
+ bl.addAfter(w3, w4);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ function test7()
+ {
+ bl.addAt(w8, 3);
+ qx.ui.core.Widget.flushGlobalQueues();
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ bl = new qx.ui.layout.BoxLayout("horizontal");
+ bl.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ bl.setBackgroundColor(new qx.renderer.color.Color("white"));
+ bl.setWidth(250);
+ bl.setHeight(250);
+ bl.setTop(48);
+ bl.setLeft(20);
+
+ w1 = new qx.ui.layout.CanvasLayout;
+ w1.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w1.setMinWidth(20);
+ w1.setMinHeight(20);
+ w1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1.setAllowStretchX(false);
+ w1.setAllowStretchY(false);
+ w1.setVerticalAlign("middle");
+ w1.setHorizontalAlign("center");
+
+ w2 = new qx.ui.layout.CanvasLayout;
+ w2.setBackgroundColor(new qx.renderer.color.Color("blue"));
+ w2.setMinWidth(20);
+ w2.setMinHeight(20);
+ w2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2.setAllowStretchX(false);
+ w2.setHorizontalAlign("center");
+
+ w3 = new qx.ui.layout.CanvasLayout;
+ w3.setBackgroundColor(new qx.renderer.color.Color("green"));
+ w3.setMinWidth(20);
+ w3.setMinHeight(20);
+ w3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3.setAllowStretchY(false);
+ w3.setVerticalAlign("middle");
+
+ w4 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+ w4.setVerticalAlign("bottom");
+ w4.setHorizontalAlign("right");
+
+ w5 = new qx.ui.layout.CanvasLayout;
+ w5.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+ w5.setMinWidth(20);
+ w5.setMinHeight(20);
+ w5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w6 = new qx.ui.layout.CanvasLayout;
+ w6.setBackgroundColor(new qx.renderer.color.Color("red"));
+ w6.setMinWidth(20);
+ w6.setMinHeight(20);
+ w6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ w7 = new qx.ui.basic.Image("icon/64/devices/media-optical.png");
+ w7.setVerticalAlign("middle");
+ w7.setHorizontalAlign("center");
+
+ w8 = new qx.ui.layout.CanvasLayout;
+ w8.setBackgroundColor(new qx.renderer.color.Color("fuchsia"));
+ w8.setMinWidth(20);
+ w8.setMinHeight(20);
+ w8.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+
+ w4.addEventListener("click", function()
+ {
+ var h, v;
+
+ switch(this.getHorizontalAlign())
+ {
+ case "center":
+ h = "right";
+ v = "bottom";
+ break;
+
+ case "right":
+ h = "left";
+ v = "top";
+ break;
+
+ default:
+ h = "center";
+ v = "middle";
+ };
+
+ this.setHorizontalAlign(h);
+ this.setVerticalAlign(v);
+ });
+
+
+
+ bl.add(w1, w2, w3, w4, w5, w6, w7);
+ d.add(bl);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_1.html
new file mode 100644
index 0000000000..290bb6e8b0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_1.html
@@ -0,0 +1,73 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ new qx.util.GuiBuilder().build(qx.ui.core.ClientDocument.getInstance(), document.getElementById('widgets'));
+ });
+
+ // test delegate object
+ var d = {
+ hello : 'world',
+ click : function(e) {
+ alert(e + '\n\nclick received at delegate object\n\n' + this.hello);
+ }
+ }
+
+ // test delegate function
+ var f = function(e) {
+ alert(e + '\n\nclick received at delegate function\n\n');
+ }
+ </script>
+ <div id="demoDescription">
+ <p>qx.util.GuiBuilder demo.</p>
+ <p>Build your web apps using qooxdooml.</p>
+ <p>Textarea example</p>
+ </div>
+ <textarea id='widgets' style='display:none'>
+ <qx.client.builder.Container>
+ <qx.ui.form.Button id='btn' label='Click Me!!!' location='20,50'>
+
+ <!-- function body event listener -->
+ <qx.client.builder.EventListener type='click' args='event'>
+ btn.setLabel(btn.getLabel() + ".");
+ alert(event + "\n\nClicked on: " + this.getLabel());
+ </qx.client.builder.EventListener>
+
+ <!--
+ global object.method delegation
+ when the button is clicked, d.click(event) will be called
+ -->
+ <qx.client.builder.EventListener type='click' delegate='d.click'/>
+
+ <!--
+ global function delegation
+ when the button is clicked, f(event) will be called
+ -->
+ <qx.client.builder.EventListener type='click' delegate='f'/>
+
+ </qx.ui.form.Button>
+ <qx.ui.basic.Atom id='atom1' label='Test No #1' icon='icon/16/apps/graphics-snapshot.png' border='qx.renderer.border.BorderPresets.getInstance().black' location='20,90'/>
+
+ <qx.ui.form.Button label='Test No #2' icon='icon/16/apps/graphics-snapshot.png' location='20,120'>
+ <qx.client.builder.EventListener type='click'>
+ atom1.setLabel(atom1.getLabel() + ".");
+ </qx.client.builder.EventListener>
+ </qx.ui.form.Button>
+ <qx.ui.basic.Atom label='Test No #3' icon='icon/16/apps/graphics-snapshot.png' location='20,160'/>
+ <qx.ui.basic.Atom label='a' icon='icon/16/apps/graphics-snapshot.png' location='20,200'/>
+ <qx.ui.basic.Atom label='b' icon='icon/16/apps/graphics-snapshot.png' location='20,240'/>
+ </qx.client.builder.Container>
+ </textarea>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_2.html
new file mode 100644
index 0000000000..d04ddbeb96
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_2.html
@@ -0,0 +1,25 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ new qx.util.GuiBuilder().buildFromUrl(qx.ui.core.ClientDocument.getInstance(), 'Builder_2.xml');
+ });
+ </script>
+ <div id="demoDescription">
+ <p>qx.util.GuiBuilder demo.</p>
+ <p>Build your web apps using qooxdooml.</p>
+ <p>XmlHttp Example</p>
+ </div>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_2.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_2.xml
new file mode 100644
index 0000000000..e440ac2a3b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_2.xml
@@ -0,0 +1,51 @@
+<qx.client.builder.Container>
+ <qx.ui.form.Button id='btn' label='Click Me!!!' location='20,50'>
+
+ <!-- function body event listener -->
+ <qx.client.builder.EventListener type='click' args='event'>
+ btn.setLabel(btn.getLabel() + ".");
+ alert(event + "\n\nClicked on: " + this.getLabel());
+ </qx.client.builder.EventListener>
+
+ <!--
+ global object.method delegation
+ when the button is clicked, d.click(event) will be called
+ -->
+ <qx.client.builder.EventListener type='click' delegate='d.click'/>
+
+ <!--
+ global function delegation
+ when the button is clicked, f(event) will be called
+ -->
+ <qx.client.builder.EventListener type='click' delegate='f'/>
+
+ </qx.ui.form.Button>
+ <qx.ui.basic.Atom id='atom1' label='Test No #1' icon='icon/16/penguin.png' border='qx.renderer.border.BorderPresets.black' location='20,90'/>
+
+ <qx.ui.form.Button label='Test No #2' icon='icon/16/penguin.png' location='20,120'>
+ <qx.client.builder.EventListener type='click'>
+ atom1.setLabel(atom1.getLabel() + ".");
+ </qx.client.builder.EventListener>
+ </qx.ui.form.Button>
+
+ <qx.ui.basic.Atom label='Test No #3' icon='icon/16/penguin.png' location='20,160'/>
+
+ <qx.ui.basic.Atom label='a' icon='icon/16/penguin.png' location='20,200'/>
+ <qx.ui.basic.Atom label='b' icon='icon/16/penguin.png' location='20,240'/>
+
+
+ <qx.client.builder.Script>
+ // test delegate function
+ var f = function(e) {
+ alert(e + '\n\nclick received at delegate function\n\n');
+ }
+
+ // test delegate object
+ var d = {
+ hello : 'world',
+ click : function(e) {
+ alert(e + '\n\nclick received at delegate object\n\n' + this.hello);
+ }
+ }
+ </qx.client.builder.Script>
+</qx.client.builder.Container>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_3.html
new file mode 100644
index 0000000000..49254bf003
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_3.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ new qx.util.GuiBuilder().buildFromUrl(qx.ui.core.ClientDocument.getInstance(), 'Builder_3.xml');
+ });
+ </script>
+ <div id="demoDescription">
+ <p>qx.util.GuiBuilder demo.</p>
+ <p>Build your web apps using qooxdooml.</p>
+ <p>Property Editor Example</p>
+ </div>
+</body>
+</html>
+
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_3.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_3.xml
new file mode 100644
index 0000000000..8c1e95f382
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_3.xml
@@ -0,0 +1,33 @@
+<qx.client.builder.Container>
+ <qx.ui.menu.Menu id='m2'>
+ <qx.ui.menu.Button label='New Window'/>
+ <qx.ui.menu.Button label='Overlapping'/>
+ <qx.ui.menu.Button label='Split Vertical'/>
+ <qx.ui.menu.Button label='Split Horizontal'/>
+ <qx.ui.menu.Button label='Next Window'/>
+ <qx.ui.menu.Button label='Previous Window'/>
+ </qx.ui.menu.Menu>
+
+ <qx.ui.menu.Menu id='m1'>
+ <qx.ui.menu.Button label='View/Lists'/>
+ <qx.ui.menu.Button label='Syntax Highlighting'/>
+ <qx.ui.menu.Separator/>
+ <qx.ui.menu.Button label='Window Font'/>
+ <qx.ui.menu.Button label='Printer Font' menu='m2'/>
+ </qx.ui.menu.Menu>
+
+ <qx.ui.form.Button id='btn' label='Reference Property' location='20,48'>
+ <qx.client.builder.EventListener type='click' args='e'>
+ var el = this.getElement();
+ m1.setLeft(qx.dom.Location.getPageBoxLeft(el));
+ m1.setTop(qx.dom.Location.getPageBoxBottom(el)); ;
+ m1.show();
+ e.setPropagationStopped(true);
+ </qx.client.builder.EventListener>
+ <qx.client.builder.EventListener type='mousedown' args='e'>
+ e.setPropagationStopped(true);
+ </qx.client.builder.EventListener>
+ </qx.ui.form.Button>
+
+ <qx.ui.basic.Atom label='Comma Delimited Property &amp; Eval Property ' location='140,48' backgroundColor='#BDD2EF' dimension='220,220' border='qx.renderer.border.BorderPresets.outset'/>
+</qx.client.builder.Container>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_4.html
new file mode 100644
index 0000000000..827129a64b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Builder_4.html
@@ -0,0 +1,42 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ new qx.util.GuiBuilder().build(qx.ui.core.ClientDocument.getInstance(), document.getElementById('widgets'));
+ });
+ </script>
+ <div id="demoDescription">
+ <p>qx.util.GuiBuilder demo.</p>
+ <p>2 Format Example</p>
+ </div>
+ <textarea id='widgets' style='display:none'>
+ <qx.client.builder.Container>
+ <qx.ui.basic.Atom id="linfo" label="Current Value" icon="icon/16/actions/go-next.png" border="qx.renderer.border.BorderPresets.getInstance().black" padding="2,4" backgroundColor="white" top="48" left="20"/>
+ <qx.manager.selection.RadioManager id='_rm1' name="mygroup">
+ <qx.client.builder.EventListener type='changeSelected' args='e'>
+ linfo.setLabel("Current Value: \"" + e.getData().getLabel() + "\" (" + e.getData().getValue() + ")");
+ </qx.client.builder.EventListener>
+ </qx.manager.selection.RadioManager>
+ <qx.ui.form.RadioButton qxtype="radioButton" label="Option #1" value="rb1" location="20,80" manager="_rm1"/>
+ <qx.ui.form.RadioButton label="Option #2" value="rb2" location="20,110" manager="_rm1" checked="true"/>
+ <div qxtype="qx.ui.form.RadioButton" label="Top RadioButton" value="rb3" location="20,160" manager="_rm1" iconPosition="top"/>
+ <qx.ui.form.RadioButton label="Bottom RadioButton" value="rb4" location="160,160" manager="_rm1" iconPosition="bottom"/>
+ <qx.ui.form.RadioButton label="Left RadioButton" value="rb5" location="20,220" manager="_rm1" iconPosition="left"/>
+ <qx.ui.form.RadioButton label="Right RadioButton" value="rb6" location="160,220" manager="_rm1" iconPosition="right"/>
+ <qx.ui.form.RadioButton value="rb7" location="20,280" manager="_rm1"/>
+ </qx.client.builder.Container>
+ </textarea>
+</body>
+</html>
+
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Button_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Button_1.html
new file mode 100644
index 0000000000..4627769566
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Button_1.html
@@ -0,0 +1,44 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the new flash support for QxButtons (inherited from qx.ui.basic.Atom).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var a;
+
+ for (var i=1; i<11; i++)
+ {
+ var b = new qx.ui.form.Button("Flash Button #" + i, "icon/16/actions/view-refresh.png", 16, 16, "./image/flash/color/file" + i + ".swf");
+
+ b.setTop(48 + ((i-1)*30));
+ b.setLeft(20);
+
+ d.add(b);
+ };
+
+ var b = new qx.ui.form.Button("Big Rotated", "icon/48/actions/view-refresh.png", 48, 48, "./image/flash/color/file3.swf");
+
+ b.setTop(48);
+ b.setLeft(200);
+ b.setIconPosition("top");
+
+ d.add(b);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CSS_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CSS_1.html
new file mode 100644
index 0000000000..fd60f55c0b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CSS_1.html
@@ -0,0 +1,110 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+
+ <style type="text/css">
+
+ .box {
+ position: absolute;
+ width: 100px;
+ height: 100px;
+ left: 30px;
+ top: 40px;
+ color: white;
+ padding: 5px;
+ }
+
+ #box1 {
+ background-color: red;
+ }
+
+ #box2 {
+ background-color: blue;
+ top: 200px;
+ left: 100px;
+ }
+
+ </style>
+
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests of qx.html.StyleSheet</p>
+ </div>
+
+
+ <div id="box1" class="box">
+ Box 1
+ </div>
+
+ <div id="box2" class="box">
+ Box 2
+ </div>
+
+ <div style="display:none" id="control">
+ <p>
+ <h3>Box 1</h3>
+ <a href="javascript://" onclick="qx.html.StyleSheet.addRule(sheet, '#box1', 'background-color:green !important');">qx.html.StyleSheet.addRule(style, '#box1', 'background-color:green !important')</a> <br>
+ <a href="javascript://" onclick="qx.html.StyleSheet.removeRule(sheet, '#box1');">qx.html.StyleSheet.removeRule(sheet, '#box1')</a> <br>
+ </p>
+ <h3>Box 1</h3>
+ <a href="javascript://" onclick="qx.html.StyleSheet.addRule(sheet, '#box2', 'background-color:yellow !important');">qx.html.StyleSheet.addRule(style, '#box2', 'background-color:yellow !important')</a> <br>
+ <a href="javascript://" onclick="qx.html.StyleSheet.removeRule(sheet, '#box2');">qx.html.StyleSheet.removeRule(sheet, '#box2')</a> <br>
+ <p>
+ <h3>All</h3>
+ <a href="javascript://" onclick="qx.html.StyleSheet.removeAllRules(sheet)">qx.html.StyleSheet.removeAllRules(sheet)</a> <br>
+ </p>
+ <p>
+ <h3>Import</h3>
+ add Import <br>
+ <a href="javascript://" onclick="qx.html.StyleSheet.addImport(sheet, 'bigFont.css')">qx.html.StyleSheet.addImport(sheet, 'bigFont.css')</a> <br>
+ <a href="javascript://" onclick="qx.html.StyleSheet.addImport(sheet, 'boldFont.css')">qx.html.StyleSheet.addImport(sheet, 'boldFont.css')</a> <br>
+ remove Import<br>
+ <a href="javascript://" onclick="qx.html.StyleSheet.removeImport(sheet, 'bigFont.css')">qx.html.StyleSheet.removeImport(sheet, 'bigFont.css')</a> <br>
+ <a href="javascript://" onclick="qx.html.StyleSheet.removeImport(sheet, 'boldFont.css')">qx.html.StyleSheet.removeImport(sheet, 'boldFont.css')</a> <br>
+ remove all Imports<br>
+ <a href="javascript://" onclick="qx.html.StyleSheet.removeAllImports(sheet)">qx.html.StyleSheet.removeAllImports(sheet)</a> <br>
+ </p>
+
+ </div>
+
+ <script type="text/javascript">
+
+ var sheet = qx.html.StyleSheet.createElement();
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var ct1 = new qx.ui.basic.Label(document.getElementById("control").innerHTML);
+
+ with(ct1)
+ {
+ setWidth(450);
+ setRight(335);
+
+ setHeight(null);
+ setTop(48);
+ setBottom(48);
+
+ setOverflow("auto");
+
+ setBackgroundColor(new qx.renderer.color.Color("white"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ setPadding(10);
+ };
+
+ d.add(ct1);
+ });
+
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_1.html
new file mode 100644
index 0000000000..a53950bb73
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_1.html
@@ -0,0 +1,616 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.layout.CanvasLayout;
+
+ w1.setWidth(100);
+ w1.setHeight(100);
+ w1.setLeft(100);
+ w1.setTop(100);
+ w1.setBackgroundColor(new qx.renderer.color.Color("red"));
+
+ d.add(w1);
+
+
+
+
+
+
+ var w2 = new qx.ui.layout.CanvasLayout;
+
+ w2.setWidth("25%");
+ w2.setHeight(100);
+ w2.setLeft(200);
+ w2.setTop(200);
+ w2.setBackgroundColor(new qx.renderer.color.Color("blue"));
+
+ d.add(w2);
+
+
+
+ var w3 = new qx.ui.layout.CanvasLayout;
+
+ w3.setRight(400);
+ w3.setHeight(100);
+ w3.setLeft(300);
+ w3.setTop(300);
+ w3.setBackgroundColor(new qx.renderer.color.Color("green"));
+
+ d.add(w3);
+
+
+
+
+
+ var w4 = new qx.ui.layout.CanvasLayout;
+
+ w4.setLeft(10);
+ w4.setRight(10);
+ w4.setTop(10);
+ w4.setBottom(10);
+ w4.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ w2.add(w4);
+
+
+
+
+
+ var w5 = new qx.ui.layout.CanvasLayout;
+
+ w5.setLeft(0);
+ w5.setTop(0);
+ w5.setWidth("50%");
+ w5.setHeight(50);
+ w5.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ w3.add(w5);
+
+
+
+
+ var w6 = new qx.ui.layout.CanvasLayout;
+
+ w6.setBottom(50);
+ w6.setLeft(350);
+ w6.setHeight("30%");
+ w6.setWidth(50);
+ w6.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+ w6.setZIndex(100);
+ w6.setMinHeight(100);
+ w6.setMaxHeight(150);
+
+ d.add(w6);
+
+
+
+ var w7 = new qx.ui.layout.CanvasLayout;
+
+ w7.setTop(150);
+ w7.setLeft(20);
+ w7.setWidth(100);
+ w7.setHeight(100);
+ w7.setBackgroundColor(new qx.renderer.color.Color("aqua"));
+ w7.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+ d.add(w7);
+
+
+
+ var w8 = new qx.ui.layout.CanvasLayout;
+
+ w8.setTop(280);
+ w8.setLeft(20);
+ w8.setWidth("auto");
+ w8.setHeight("auto");
+ w8.setBackgroundColor(new qx.renderer.color.Color("fuchsia"));
+ w8.setBorder(new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("black")));
+ w8.setPaddingTop(10);
+
+ //w8.getBorder().setLeftWidth(20);
+ //w8.getBorder().setLeftWidth(0);
+
+ // d.add(w8);
+
+
+ var w9 = new qx.ui.layout.CanvasLayout;
+
+ w9.setTop(0);
+ w9.getLeft(0);
+ w9.setWidth(40);
+ w9.setHeight(20);
+ w9.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ w8.add(w9);
+
+
+
+ var w10 = new qx.ui.layout.CanvasLayout;
+
+ w10.setTop(0);
+ w10.getLeft(0);
+ w10.setWidth(10);
+ w10.setHeight(50);
+ w10.setBackgroundColor(new qx.renderer.color.Color("red"));
+
+ w8.add(w10);
+
+ d.add(w8);
+
+
+
+
+
+
+ var w11 = new qx.ui.layout.CanvasLayout;
+
+ w11.setTop(200);
+ w11.setLeft(40);
+ w11.setWidth("auto");
+ w11.setHeight("auto");
+ w11.setBackgroundColor(new qx.renderer.color.Color("green"));
+ w11.setDisplay(false);
+ w11.setBorder(qx.renderer.border.BorderPresets.getInstance().white);
+ w11.setPaddingLeft(20);
+
+ d.add(w11);
+
+ w8.addEventListener("click", function(e) {
+ w11.toggleDisplay();
+ });
+
+
+ /*
+ w11.addEventListener("show", function(e) {
+ this.debug("Show W11");
+ });
+
+ w11.addEventListener("hide", function(e) {
+ this.debug("Hide W11");
+ });
+ */
+
+
+ var w12 = new qx.ui.basic.Image("icon/64/energy.png");
+ w11.add(w12);
+
+
+
+
+ var w12 = new qx.ui.basic.Image("icon/48/apps/accessories-clock.png");
+
+ w12.setTop(350);
+ w12.setLeft(20);
+
+ d.add(w12);
+
+
+ var w13 = new qx.ui.basic.Image("icon/48/apps/accessories-alarm.png");
+
+ w13.setTop(350);
+ w13.setLeft(80);
+
+ d.add(w13);
+
+
+
+
+
+ var w14 = new qx.ui.layout.CanvasLayout;
+
+ w14.setTop(400);
+ w14.setLeft(20);
+ w14.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ //w14.setWidth("auto");
+ w14.setMinWidth("auto");
+ w14.setWidth("30%");
+
+ w14.setHeight("auto");
+ w14.setPadding(10);
+ w14.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ d.add(w14);
+
+
+ var w15 = new qx.ui.basic.Image("icon/48/apps/accessories-clock.png");
+
+ w15.setTop(0);
+ w15.setLeft(20);
+
+ w14.add(w15);
+
+
+ var w16 = new qx.ui.basic.Image("icon/128/apps/accessories-date.png");
+
+ w16.setTop(20);
+ w16.setLeft(80);
+
+ w14.add(w16);
+
+
+ var w16a = new qx.ui.layout.CanvasLayout;
+
+ w16a.setMarginTop(160);
+ w16a.setBottom(20);
+ w16a.setRight(20);
+
+ w16a.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+
+ w16a.setWidth(30);
+ w16a.setHeight(30);
+
+ w14.add(w16a);
+
+
+
+ w16a.addEventListener("click", function(e)
+ {
+ var v16Margin = w16a.getMarginTop() + 20;
+ if (v16Margin > 240) {
+ v16Margin = 100;
+ };
+
+ w16a.setMarginTop(v16Margin);
+ });
+
+
+
+
+ var w17_b1 = new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("black"));
+ var w17_b2 = new qx.renderer.border.Border(10, "solid", new qx.renderer.color.Color("black"));
+
+ var w17_p1 = 10;
+ var w17_p2 = 5;
+
+ var w17 = new qx.ui.layout.CanvasLayout;
+
+ w17.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w17.setWidth(50);
+ w17.setHeight(50);
+ w17.setTop(50);
+ w17.setLeft(200);
+
+ w17.setBorder(w17_b1);
+ w17.setPadding(w17_p1);
+
+ d.add(w17);
+
+
+ w17.addEventListener("click", function(e)
+ {
+ if (w17.getBorder() == w17_b1)
+ {
+ w17.setBorder(w17_b2);
+ w17.setPadding(w17_p2);
+ }
+ else
+ {
+ w17.setBorder(w17_b1);
+ w17.setPadding(w17_p1);
+ };
+ });
+
+
+ var w18 = new qx.ui.layout.CanvasLayout;
+
+ w18.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w18.setWidth("100%");
+ w18.setHeight("100%");
+ w18.setLeft(0);
+ w18.setTop(0);
+
+ w17.add(w18);
+
+
+
+
+
+
+
+
+
+ var w19_b1 = new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("black"));
+
+ var w19_p1 = 10;
+ var w19_p2 = 5;
+
+ var w19 = new qx.ui.layout.CanvasLayout;
+
+ w19.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w19.setWidth(50);
+ w19.setHeight(50);
+ w19.setTop(50);
+ w19.setLeft(270);
+
+ w19.setBorder(w19_b1);
+ w19.setPadding(w19_p1);
+
+ d.add(w19);
+
+
+ var _t22 = true;
+ w19.addEventListener("click", function(e)
+ {
+ if (_t22)
+ {
+ w19_b1.setWidth(10);
+ w19.setPadding(w19_p2);
+ }
+ else
+ {
+ w19_b1.setWidth(5);
+ w19.setPadding(w19_p1);
+ };
+
+ _t22 = !_t22;
+ });
+
+
+ var w20 = new qx.ui.layout.CanvasLayout;
+
+ w20.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w20.setWidth("100%");
+ w20.setHeight("100%");
+ w20.setLeft(0);
+ w20.setTop(0);
+
+ w19.add(w20);
+
+
+
+
+
+ var w21_b1 = new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("black"));
+ var w21_b2 = new qx.renderer.border.Border(5, "solid", new qx.renderer.color.Color("blue"));
+
+ var w21 = new qx.ui.layout.CanvasLayout;
+
+ w21.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w21.setWidth(50);
+ w21.setHeight(50);
+ w21.setTop(50);
+ w21.setLeft(340);
+
+ w21.setBorder(w21_b1);
+ w21.setPadding(10);
+
+ d.add(w21);
+
+
+ w21.addEventListener("click", function(e)
+ {
+ if (w21.getBorder() == w21_b1)
+ {
+ w21.setBorder(w21_b2);
+ }
+ else
+ {
+ w21.setBorder(w21_b1);
+ };
+ });
+
+
+ var w22 = new qx.ui.layout.CanvasLayout;
+
+ w22.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w22.setWidth("100%");
+ w22.setHeight("100%");
+ w22.setLeft(0);
+ w22.setTop(0);
+
+ w21.add(w22);
+
+
+
+
+
+
+
+ var w23_b1 = new qx.renderer.border.BorderObject(5, "solid", new qx.renderer.color.Color("black"));
+
+ var w23 = new qx.ui.layout.CanvasLayout;
+
+ w23.setBackgroundColor(new qx.renderer.color.Color("orange"));
+ w23.setWidth(50);
+ w23.setHeight(50);
+ w23.setTop(50);
+ w23.setLeft(410);
+
+ w23.setBorder(w23_b1);
+ w23.setPadding(10);
+
+ d.add(w23);
+
+ w23.addEventListener("mouseover", function(e)
+ {
+ w23_b1.setColor(new qx.renderer.color.Color("blue"));
+ w23_b1.setStyle("dotted");
+ });
+
+ w23.addEventListener("mouseout", function(e)
+ {
+ w23_b1.setColor(new qx.renderer.color.Color("black"));
+ w23_b1.setStyle("solid");
+ });
+
+ var w24 = new qx.ui.layout.CanvasLayout;
+
+ w24.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w24.setWidth("100%");
+ w24.setHeight("100%");
+ w24.setLeft(0);
+ w24.setTop(0);
+ w24.setAnonymous(true);
+
+ w23.add(w24);
+
+
+
+
+
+
+ var w25_b1 = qx.renderer.border.BorderPresets.getInstance().outset;
+ var w25_b2 = qx.renderer.border.BorderPresets.getInstance().inset;
+
+ var w25_p1 = 10;
+ var w25_p2 = 5;
+
+ var w25 = new qx.ui.layout.CanvasLayout;
+
+ w25.setBackgroundColor(new qx.renderer.color.ColorObject("ThreeDFace"));
+ w25.setWidth(50);
+ w25.setHeight(50);
+ w25.setTop(50);
+ w25.setLeft(480);
+
+ w25.setBorder(w25_b1);
+ w25.setPadding(w25_p1);
+
+ d.add(w25);
+
+
+ w25.addEventListener("click", function(e)
+ {
+ if (w25.getBorder() == w25_b1)
+ {
+ w25.setBorder(w25_b2);
+ w25.setPadding(w25_p2);
+ }
+ else
+ {
+ w25.setBorder(w25_b1);
+ w25.setPadding(w25_p1);
+ };
+ });
+
+
+ var w26 = new qx.ui.layout.CanvasLayout;
+
+ w26.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w26.setWidth("100%");
+ w26.setHeight("100%");
+ w26.setLeft(0);
+ w26.setTop(0);
+
+ w25.add(w26);
+
+
+
+
+
+
+
+ var w27 = new qx.ui.layout.CanvasLayout;
+
+ w27.setBackgroundColor(new qx.renderer.color.ColorObject("ThreeDFace"));
+ w27.setWidth(50);
+ w27.setHeight(50);
+ w27.setTop(50);
+ w27.setLeft(550);
+
+ w27.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ w27.setPadding(10, 10, 10, 10);
+
+ d.add(w27);
+
+
+ w27.addEventListener("click", function(e)
+ {
+ if (w27.getBorder() == qx.renderer.border.BorderPresets.getInstance().outset)
+ {
+ w27.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ w27.setPadding(12, 8, 8, 12);
+ }
+ else
+ {
+ w27.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ w27.setPadding(10, 10, 10, 10);
+ };
+ });
+
+
+ var w28 = new qx.ui.layout.CanvasLayout;
+
+ w28.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w28.setWidth("100%");
+ w28.setHeight("100%");
+ w28.setLeft(0);
+ w28.setTop(0);
+
+ w27.add(w28);
+
+
+
+
+
+
+
+ var w29_b1 = qx.renderer.border.BorderPresets.getInstance().outset;
+ var w29_b2 = qx.renderer.border.BorderPresets.getInstance().inset;
+
+ var w29_p1 = 10;
+ var w29_p2 = 5;
+
+ var w29 = new qx.ui.layout.CanvasLayout;
+
+ w29.setBackgroundColor(new qx.renderer.color.ColorObject("ThreeDFace"));
+ w29.setWidth(50);
+ w29.setHeight(50);
+ w29.setTop(50);
+ w29.setLeft(620);
+
+ w29.setBorder(w29_b1);
+ w29.setPadding(w29_p1);
+
+ d.add(w29);
+
+
+ w29.addEventListener("click", function(e)
+ {
+ if (w29.getBorder() == w29_b1)
+ {
+ w29.setBorder(w29_b2);
+ w29.setPadding(w29_p2);
+ }
+ else
+ {
+ w29.setBorder(w29_b1);
+ w29.setPadding(w29_p1);
+ };
+ });
+
+
+ var w30 = new qx.ui.layout.CanvasLayout;
+
+ w30.setBackgroundColor(new qx.renderer.color.Color("white"));
+ w30.setLeft(0);
+ w30.setRight(0);
+ w30.setTop(0);
+ w30.setBottom(0);
+
+ w29.add(w30);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_3.html
new file mode 100644
index 0000000000..ae17a92964
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_3.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This test is using multiple qx.ui.basic.Terminator</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var w, s;
+
+
+
+ for (var i=1; i<=20; i++)
+ {
+ s = new Date().valueOf();
+
+ for (var j=1; j<=20; j++)
+ {
+ var w = new qx.ui.basic.Terminator;
+
+ w.setWidth(12);
+ w.setHeight(12);
+ w.setLeft(20+(12*i));
+ w.setTop(48+(12*j));
+ w.setBackgroundColor(new qx.renderer.color.Color(Math.round(20+(i*j)/2)));
+
+ d.add(w);
+ };
+
+ // this.debug("Col: " + ((new Date).valueOf()-s) + "ms");
+ };
+
+
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_4.html
new file mode 100644
index 0000000000..e3157be47f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_4.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This test is using multiple div-Elements</p>
+ <p>Created with "createElement" and added via "appendChild" to the document.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var w;
+ var v;
+
+ for (var i=1; i<=20; i++)
+ {
+ for (var j=1; j<=20; j++)
+ {
+ var w = document.createElement("div");
+
+ w.className = "qx_ui_core_Widget_QxWidgetCore";
+ w.id = "Auto" + i + "|" + j;
+
+ w.style.width = "12px";
+ w.style.height = "12px";
+ w.style.position = "absolute";
+ w.style.left = (20+(12*i)) + "px";
+ w.style.top = (48+(12*j)) + "px";
+
+ v = Math.round(20+(i*j)/2);
+ w.style.backgroundColor = "rgb(" + v + "," + v + "," + v + ")";
+
+ document.body.appendChild(w);
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_5.html
new file mode 100644
index 0000000000..49f66f4715
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CanvasLayout_5.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This test is using multiple div-Elements</p>
+ <p>Added to the document using the "innerHTML" property.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var w;
+ var v;
+ var h = [];
+
+ for (var i=1; i<=20; i++)
+ {
+ for (var j=1; j<=20; j++)
+ {
+ h.push("<div style='width:12px;height:12px;position:absolute;");
+ h.push("left:" + (20+(12*i)) + "px;");
+ h.push("top:" + (48+(12*j)) + "px;");
+
+ v = Math.round(20+(i*j)/2);
+ h.push("background-color:" + "rgb(" + v + "," + v + "," + v + ")");
+ h.push("' class='qx_ui_core_Widget_QxWidgetCore' id='Auto" + i + "|" + j + "'></div>");
+ };
+ };
+
+ document.body.innerHTML += h.join("");
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clipping_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clipping_1.html
new file mode 100644
index 0000000000..e7d8b1afd6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clipping_1.html
@@ -0,0 +1,76 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for clipping implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var t1 = new qx.ui.basic.Terminator;
+
+ t1.setBackgroundColor("red");
+ t1.setLocation(20, 48);
+ t1.setDimension(100, 100);
+ t1.setBorder(2, "solid", "black");
+ t1.setClipLocation(0, 0);
+ t1.setClipDimension(50, 50);
+
+ d.add(t1);
+
+
+
+ var t2 = new qx.ui.basic.Terminator;
+
+ t2.setBackgroundColor("yellow");
+ t2.setLocation(200, 48);
+ t2.setDimension(100, 100);
+ t2.setBorder(2, "solid", "black");
+ t2.setClipLocation(25, 25);
+ t2.setClipDimension(50, 50);
+
+ d.add(t2);
+
+
+
+ var t3 = new qx.ui.basic.Terminator;
+
+ t3.setBackgroundColor("blue");
+ t3.setLocation(20, 248);
+ t3.setDimension(100, 100);
+ t3.setBorder(2, "solid", "black");
+ t3.setClipLocation(50, 50);
+ t3.setClipDimension(50, 50);
+
+ d.add(t3);
+
+
+
+
+ var t4 = new qx.ui.basic.Terminator;
+
+ t4.setBackgroundColor("orange");
+ t4.setLocation(200, 248);
+ t4.setDimension(100, 100);
+ t4.setBorder(2, "solid", "black");
+ t4.setClip(25, 25, null, null);
+
+ d.add(t4);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clone_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clone_1.html
new file mode 100644
index 0000000000..22ee1697c9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clone_1.html
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test widget cloning.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.layout.CanvasLayout;
+
+ with(c1)
+ {
+ setWidth(200);
+
+ setTop(48);
+ setLeft(20);
+
+ setHeight(100);
+ setBackgroundColor("orange");
+ };
+
+ d.add(c1);
+
+
+ var c2 = c1.clone();
+
+ with(c2)
+ {
+ setLeft(30);
+ setTop(58);
+
+ setBackgroundColor("green");
+ };
+ d.add(c2);
+
+ var c3 = c2.clone(false, ["top","left","width","height"]);
+
+ with(c3)
+ {
+ setLeft(40);
+ setTop(68);
+
+ setBackgroundColor("blue");
+ };
+ d.add(c3);
+
+
+
+
+
+ var a1 = new qx.ui.basic.Atom("First Atom", "icon/48/apps/accessories-clock.png");
+
+ with(a1)
+ {
+ setTop(200);
+ setLeft(20);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+
+ setPadding(5);
+ };
+
+ d.add(a1);
+
+
+
+ var a2 = a1.clone(true);
+
+ with(a2)
+ {
+ setLeft(200);
+ };
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clone_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clone_2.html
new file mode 100644
index 0000000000..c3f60be97b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Clone_2.html
@@ -0,0 +1,108 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testfile for check cloning on QxFieldSets.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fs = new qx.ui.groupbox.GroupBox("My first Fieldset");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(48);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth(250);
+ };
+
+
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setTop(13);
+ setLeft(0);
+ setWidth("35%");
+ };
+
+ var i1 = new qx.ui.form.TextField();
+ with(i1)
+ {
+ setTop(10);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(a1, i1);
+
+
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/apps/internet-email-client.png");
+ with(a2)
+ {
+ setTop(43);
+ setLeft(0);
+ setWidth("35%");
+ };
+ fs.add(a2);
+
+ var i2 = new qx.ui.form.TextField();
+ with(i2)
+ {
+ setTop(40);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(i2);
+
+
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setTop(73);
+ setLeft(0);
+ setWidth("35%");
+ };
+ fs.add(a3);
+
+ var i3 = new qx.ui.form.TextField();
+ with(i3)
+ {
+ setTop(70);
+ setRight(0);
+ setWidth("60%");
+ };
+ fs.add(i3);
+
+
+ d.add(fs);
+
+
+ fsclone = fs.clone(true);
+ with(fsclone)
+ {
+ setLeft(400);
+ setLegend("My cloned Fieldset");
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_1.html
new file mode 100644
index 0000000000..38b90ba19f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_1.html
@@ -0,0 +1,235 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Color Theme Test</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.basic.Terminator;
+
+ w1.setWidth(100);
+ w1.setHeight(100);
+ w1.setBackgroundColor(new qx.renderer.color.Color("yellow"));
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ d.add(w1);
+
+
+
+ var w2 = new qx.ui.basic.Terminator;
+
+ w2.setWidth(100);
+ w2.setHeight(100);
+ w2.setBackgroundColor(new qx.renderer.color.ColorObject("activecaption"));
+ w2.setTop(48);
+ w2.setLeft(150);
+
+ d.add(w2);
+
+
+
+
+ var w3 = new qx.ui.basic.Terminator;
+
+ w3.setWidth(100);
+ w3.setHeight(100);
+ w3.setBackgroundColor("red");
+ w3.setTop(200);
+ w3.setLeft(20);
+
+ d.add(w3);
+
+
+
+ var w4 = new qx.ui.basic.Terminator;
+
+ w4.setWidth(100);
+ w4.setHeight(100);
+ w4.setBackgroundColor("red");
+ w4.setTop(200);
+ w4.setLeft(150);
+
+ d.add(w4);
+
+
+
+
+ var w5 = new qx.ui.basic.Label("Hello World");
+
+ w5.setTop(320);
+ w5.setLeft(20);
+ w5.setColor("red");
+
+ d.add(w5);
+
+
+
+
+
+ var w6 = new qx.ui.basic.Terminator;
+
+ w6.setWidth(100);
+ w6.setHeight(100);
+ w6.setBackgroundColor("activecaption");
+ w6.setTop(400);
+ w6.setLeft(20);
+
+ d.add(w6);
+
+
+
+ var w7 = new qx.ui.basic.Terminator;
+
+ w7.setWidth(100);
+ w7.setHeight(100);
+ w7.setBackgroundColor("activeCaption");
+ w7.setTop(400);
+ w7.setLeft(150);
+
+ d.add(w7);
+
+
+
+
+ var w8 = new qx.ui.basic.Label("Hello World");
+
+ w8.setTop(520);
+ w8.setLeft(20);
+ w8.setColor("ActiveCaption");
+
+ d.add(w8);
+
+
+
+
+
+
+
+ var w9 = new qx.ui.basic.Atom("Super qooxdoo", "icon/48/apps/preferences-desktop-multimedia.png");
+
+ w9.setTop(520);
+ w9.setLeft(200);
+ w9.setBorder(new qx.renderer.border.BorderObject(2, "solid", "activeCaption"));
+ w9.setBackgroundColor("threedlightshadow");
+
+ d.add(w9);
+
+
+
+
+
+ var w10 = new qx.ui.basic.Atom("Super qooxdoo", "icon/48/apps/preferences-desktop-multimedia.png");
+
+ w10.setTop(520);
+ w10.setLeft(400);
+ w10.setBorder(new qx.renderer.border.BorderObject(2, "solid", new qx.renderer.color.ColorObject("activeCaption")));
+ w10.setBackgroundColor("threedlightshadow");
+
+ d.add(w10);
+
+
+
+
+
+
+ var w11 = new qx.ui.basic.Label("Hello World");
+
+ w11.setTop(600);
+ w11.setLeft(20);
+ w11.setBackgroundColor([232,102,255]);
+ w11.setColor(20,30,60);
+ w11.setBorder(1, "solid", "red");
+
+ d.add(w11);
+
+
+
+ var w12 = new qx.ui.basic.Label("Hello World");
+
+ w12.setTop(600);
+ w12.setLeft(120);
+ w12.setBackgroundColor([232,102,255]);
+ w12.setColor(20,30,60);
+ w12.setBorder([1, "solid", "red"]);
+
+ d.add(w12);
+
+
+
+ var w13 = new qx.ui.basic.Label("Hello World");
+
+ w13.setLocation(220, 600);
+ w13.setBackgroundColor([232,102,255]);
+ w13.setColor(20,30,60);
+ w13.setBorder([1, "solid", "activeCaption"]);
+
+ d.add(w13);
+
+
+
+
+ var myBoundedBorder1 = new qx.renderer.border.Border(1, "solid", [200,10,20]);
+
+
+ var w14 = new qx.ui.basic.Terminator;
+
+ w14.setWidth(100);
+ w14.setHeight(100);
+ w14.setLeft(600);
+ w14.setTop(100);
+ w14.setBorder(myBoundedBorder1);
+
+ d.add(w14);
+
+ // should not work with qx.renderer.border.Border - use qx.renderer.border.BorderObject instead
+ w14.addEventListener("click", function(e) {
+ myBoundedBorder1.setTopColor([100,200,200]);
+ myBoundedBorder1.setTopWidth(10);
+ });
+
+
+
+ var myBoundedBorder2 = new qx.renderer.border.BorderObject(1, "solid", [200,10,20]);
+
+
+ var w15 = new qx.ui.basic.Terminator;
+
+ w15.setWidth(100);
+ w15.setHeight(100);
+ w15.setLeft(600);
+ w15.setTop(210);
+ w15.setBorder(myBoundedBorder2);
+
+ d.add(w15);
+
+ w15.addEventListener("click", function(e) {
+ myBoundedBorder2.setTopColor([100,200,200]);
+ myBoundedBorder2.setTopWidth(10);
+ });
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 350, 128);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_2.html
new file mode 100644
index 0000000000..a76a8dc567
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_2.html
@@ -0,0 +1,77 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Color Theme Test</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ // Create Default OS Color Table
+ var w;
+ var c=0;
+ for (var i in qx.renderer.color.Color.themedNames)
+ {
+ w = new qx.ui.basic.Label(i);
+
+ w.setWidth(120);
+ w.setTop(48+(c*18));
+ w.setLeft(20);
+ w.setPadding(1, 2);
+ w.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w.setStyleProperty("backgroundColor", i);
+
+ d.add(w);
+
+ c++;
+ };
+
+
+
+ // Create Default OS Color Table
+ var w;
+ var c=0;
+ for (var i in qx.renderer.color.Color.themedNames)
+ {
+ w = new qx.ui.basic.Label(i);
+
+ w.setWidth(120);
+ w.setTop(48+(c*18));
+ w.setLeft(150);
+ w.setPadding(1, 2);
+ w.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w.setBackgroundColor(new qx.renderer.color.ColorObject(i));
+
+ d.add(w);
+
+ c++;
+ };
+
+
+
+
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 400, 128);
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_3.html
new file mode 100644
index 0000000000..5378f2f5f6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ColorTheme_3.html
@@ -0,0 +1,176 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Color Theme Test for qx.renderer.border.BorderObject's</p>
+ <ul>
+ <li>First Col: qooxdoo solution for borders</li>
+ <li>Second Col: html solution without color value</li>
+ <li>Third Col: html solution with color value: white</li>
+ </ul>
+ <p>The default color Theme is: <em>OS Default</em></p>
+ </div>
+
+ <div style="position: absolute; left: 120px; top: 48px; width: 50px">
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px outset">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px inset">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px ridge">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px groove">&#160;</div>
+
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 1px outset">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 1px inset">&#160;</div>
+ </div>
+
+ <div style="position: absolute; left: 180px; top: 48px; width: 50px">
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px outset white">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px inset white">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px ridge white">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 2px groove white">&#160;</div>
+
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 1px outset white">&#160;</div>
+ <div style="width:50px; height: 50px; margin-bottom: 10px; border: 1px inset white">&#160;</div>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+
+ var w1 = new qx.ui.basic.Terminator;
+ w1.setDimension(50, 50);
+ w1.setLocation(20, 48);
+ w1.setBorder(new qx.renderer.border.BorderObject(2, "outset"));
+ d.add(w1);
+
+ var w2 = new qx.ui.basic.Terminator;
+ w2.setDimension(50, 50);
+ w2.setLocation(20, 108);
+ w2.setBorder(new qx.renderer.border.BorderObject(2, "inset"));
+ d.add(w2);
+
+ var w3 = new qx.ui.basic.Terminator;
+ w3.setDimension(50, 50);
+ w3.setLocation(20, 168);
+ w3.setBorder(new qx.renderer.border.BorderObject(2, "ridge"));
+ d.add(w3);
+
+ var w4 = new qx.ui.basic.Terminator;
+ w4.setDimension(50, 50);
+ w4.setLocation(20, 228);
+ w4.setBorder(new qx.renderer.border.BorderObject(2, "groove"));
+ d.add(w4);
+
+ var w5 = new qx.ui.basic.Terminator;
+ w5.setDimension(50, 50);
+ w5.setLocation(20, 288);
+ w5.setBorder(new qx.renderer.border.BorderObject(1, "outset"));
+ d.add(w5);
+
+ var w6 = new qx.ui.basic.Terminator;
+ w6.setDimension(50, 50);
+ w6.setLocation(20, 348);
+ w6.setBorder(new qx.renderer.border.BorderObject(1, "inset"));
+ d.add(w6);
+
+
+
+ var border1 = new qx.renderer.border.BorderObject(2, "outset");
+ var border2 = new qx.renderer.border.BorderObject(1, "outset");
+
+ var w7 = new qx.ui.layout.CanvasLayout;
+ w7.setDimension(50, 50);
+ w7.setLocation(20, 408);
+ w7.setBorder(border1);
+ d.add(w7);
+
+ var w7c = new qx.ui.basic.Terminator;
+ w7c.setDimension("100%", "100%");
+ w7c.setBackgroundColor(new qx.renderer.color.Color("red"));
+ w7.add(w7c);
+
+
+
+ var w8 = new qx.ui.layout.CanvasLayout;
+ w8.setDimension(50, 50);
+ w8.setLocation(20, 468);
+ w8.setBorder(border2);
+ d.add(w8);
+
+ var w8c = new qx.ui.basic.Terminator;
+ w8c.setDimension("100%", "100%");
+ w8c.setBackgroundColor(new qx.renderer.color.Color("red"));
+ w8.add(w8c);
+
+
+
+
+ w7.addEventListener("click", function(e) {
+ this.setBorder(this.getBorder() == null ? border1 : this.getBorder() == border1 ? border2 : null)
+ });
+
+ w8.addEventListener("click", function(e) {
+ this.setBorder(this.getBorder() == null ? border1 : this.getBorder() == border1 ? border2 : null)
+ });
+
+
+
+
+
+
+ var w9 = new qx.ui.layout.CanvasLayout;
+
+ w9.setDimension(100, 100);
+ w9.setLocation(400, 400);
+ w9.setBorder(border1);
+ w9.setOverflow("scroll");
+
+ d.add(w9);
+
+ var w9c = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ w9c.setTop(150);
+ w9c.setLeft(300);
+
+ w9.add(w9c);
+
+
+
+ w9.addEventListener("click", function(e) {
+ this.setOverflow(this.getOverflow() == "scroll" ? "scrollX" : this.getOverflow() == "scrollX" ? "scrollY" : this.getOverflow() == "scrollY" ? "" : "scroll");
+ });
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 400, 128);
+
+
+
+
+
+
+ /*
+ var c1 = new qx.renderer.color.Color("gray");
+ this.debug("RGB-Transform I: " + c1.getRed() + "," + c1.getGreen() + "," + c1.getBlue());
+
+ // This could not work with the default theme "OS Default", as this does not define any rgb colors
+ var c2 = new qx.renderer.color.ColorObject("threedface");
+ this.debug("RGB-Transform II: " + c2.getRed() + "," + c2.getGreen() + "," + c2.getBlue());
+ */
+ });
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_1.html
new file mode 100644
index 0000000000..7a2a2e65bd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_1.html
@@ -0,0 +1,102 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.form.ComboBox implementation.</p>
+ <p>Testing object creation (the list content will be filled then) on first open.</p>
+ </div>
+
+ <select style="position:absolute; left:300px; top:48px; width: 120px;">
+ <option>Item No 1</option>
+ <option>Item No 2</option>
+ <option>Item No 3</option>
+ <option>Item No 4</option>
+ <option>Item No 5</option>
+ <option>Item No 6</option>
+ <option>Item No 7</option>
+ <option>Item No 8</option>
+ <option>Item No 9</option>
+ <option disabled="true">Item No 10</option>
+ <option>Item No 11</option>
+ <option>Item No 12</option>
+ <option>Item No 13</option>
+ <option>Item No 14</option>
+ <option>Item No 15</option>
+ <option>Item No 16</option>
+ <option>Item No 17</option>
+ <option>Item No 18</option>
+ <option>Item No 19</option>
+ <option disabled="true">Item No 20</option>
+ <option>Item No 21</option>
+ <option>Item No 22</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 25</option>
+ <option>Item No 26</option>
+ <option>Item No 27</option>
+ <option>Item No 28</option>
+ <option>Item No 29</option>
+ <option disabled="true">Item No 30</option>
+ </select>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.setLocation(20, 48);
+
+ c1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ c1.add(item);
+ };
+ });
+
+ // this does not work here (if there is no content)
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 50, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+
+ d.add(c1, b1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_2.html
new file mode 100644
index 0000000000..c5a22d7ac5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_2.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.form.ComboBox implementation.</p>
+ <p>Testing object creation (the list content will be filled then) on first open.</p>
+ <p>Added Color Theme Buttons</p>
+ </div>
+
+ <select style="position:absolute; left:300px; top:48px; width: 120px;">
+ <option>Item No 1</option>
+ <option>Item No 2</option>
+ <option>Item No 3</option>
+ <option>Item No 4</option>
+ <option>Item No 5</option>
+ <option>Item No 6</option>
+ <option>Item No 7</option>
+ <option>Item No 8</option>
+ <option>Item No 9</option>
+ <option disabled="true">Item No 10</option>
+ <option>Item No 11</option>
+ <option>Item No 12</option>
+ <option>Item No 13</option>
+ <option>Item No 14</option>
+ <option>Item No 15</option>
+ <option>Item No 16</option>
+ <option>Item No 17</option>
+ <option>Item No 18</option>
+ <option>Item No 19</option>
+ <option disabled="true">Item No 20</option>
+ <option>Item No 21</option>
+ <option>Item No 22</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 25</option>
+ <option>Item No 26</option>
+ <option>Item No 27</option>
+ <option>Item No 28</option>
+ <option>Item No 29</option>
+ <option disabled="true">Item No 30</option>
+ </select>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.setLocation(20, 48);
+
+ c1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ c1.add(item);
+ };
+ });
+
+ // this does not work here (if there is no content)
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 50, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+
+ d.add(c1, b1);
+
+
+
+
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 20, 248);
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_3.html
new file mode 100644
index 0000000000..8a8fbb0216
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_3.html
@@ -0,0 +1,123 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.form.ComboBox implementation.</p>
+ <p>Testing object creation (the list content will be filled then) on first open.</p>
+ <p>Added Color Theme Buttons</p>
+ <p>Now with image inside the popup.</p>
+ </div>
+
+ <select style="position:absolute; left:300px; top:48px; width: 120px;">
+ <option>Item No 1</option>
+ <option>Item No 2</option>
+ <option>Item No 3</option>
+ <option>Item No 4</option>
+ <option>Item No 5</option>
+ <option>Item No 6</option>
+ <option>Item No 7</option>
+ <option>Item No 8</option>
+ <option>Item No 9</option>
+ <option disabled="true">Item No 10</option>
+ <option>Item No 11</option>
+ <option>Item No 12</option>
+ <option>Item No 13</option>
+ <option>Item No 14</option>
+ <option>Item No 15</option>
+ <option>Item No 16</option>
+ <option>Item No 17</option>
+ <option>Item No 18</option>
+ <option>Item No 19</option>
+ <option disabled="true">Item No 20</option>
+ <option>Item No 21</option>
+ <option>Item No 22</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 23</option>
+ <option>Item No 24</option>
+ <option>Item No 25</option>
+ <option>Item No 26</option>
+ <option>Item No 27</option>
+ <option>Item No 28</option>
+ <option>Item No 29</option>
+ <option disabled="true">Item No 30</option>
+ </select>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.setLocation(20, 48);
+
+ // this example seems to be buggy with auto-height
+ // c1.getPopup().setHeight(150);
+
+ c1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+ var list = [ "archive", "binary", "card", "document", "html", "image", "manual", "multimedia", "pdf" ];
+
+ for(var i=0; i<list.length; i++)
+ {
+ item = new qx.ui.form.ListItem(list[i], "icon/48/mime-" + list[i] + ".png");
+ item.setShow("icon");
+
+ c1.add(item);
+ };
+
+ c1.setSelected(c1.getList().getFirstChild());
+ });
+
+ // this does not work here (if there is no content)
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 50, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+
+ d.add(c1, b1);
+
+
+
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 20, 248);
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_4.html
new file mode 100644
index 0000000000..3cc11235aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ComboBox_4.html
@@ -0,0 +1,41 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.form.ComboBox behaviour when inside a container with scroll bars and the popup list goes off the screen.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function() {
+ var box = new qx.ui.layout.BoxLayout('vertical');
+ box.set({left: 5, right: 300, top: 30, bottom: 20, overflow: 'scroll', backgroundColor: '#FFE'});
+ for (var row = 0; row < 8; row++) {
+ var rowBox = new qx.ui.layout.BoxLayout;
+ rowBox.set({ marginBottom: 100, width: 'auto', height: 'auto' });
+ for (var col = 0; col < 8; col++) {
+ var cb = new qx.ui.form.ComboBox;
+ for (var i = 0; i < 15; i++) {
+ cb.add(new qx.ui.form.ListItem('Item '+i));
+ }
+ cb.setEditable(true);
+ cb.setValue('Row '+row+', col '+col);
+ cb.setMarginRight(100);
+ rowBox.add(cb);
+ }
+ box.add(rowBox);
+ }
+ box.addToDocument();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CookieStorage_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CookieStorage_1.html
new file mode 100644
index 0000000000..e13ba10f7d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CookieStorage_1.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.io.local.CookieApi.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var f1 = new qx.ui.form.TextField;
+ f1.setLocation(20, 48);
+ qx.ui.core.ClientDocument.getInstance().add(f1);
+
+ var b1 = new qx.ui.form.Button("Restore");
+ b1.setLocation(20, 80);
+ qx.ui.core.ClientDocument.getInstance().add(b1);
+
+ var b2 = new qx.ui.form.Button("Save");
+ b2.setLocation(80, 80);
+ qx.ui.core.ClientDocument.getInstance().add(b2);
+
+
+
+ b1.addEventListener("execute", function(e) {
+ f1.setValue(qx.io.local.CookieTransport.get("fieldContent"));
+ });
+
+ b2.addEventListener("execute", function(e) {
+ qx.io.local.CookieTransport.set("fieldContent", f1.getValue());
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CookieStorage_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CookieStorage_2.html
new file mode 100644
index 0000000000..d98b6ffb19
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CookieStorage_2.html
@@ -0,0 +1,67 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.io.local.CookieTransport API.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var vAll = [];
+ var vNum = 20;
+
+ for (var i=0; i<vNum; i++)
+ {
+ var f1 = new qx.ui.form.TextField;
+ f1.setLocation(20, 48+(i*22));
+ qx.ui.core.ClientDocument.getInstance().add(f1);
+ vAll.push(f1);
+ };
+
+ var b1 = new qx.ui.form.Button("Restore");
+ b1.setLocation(220, 48);
+ qx.ui.core.ClientDocument.getInstance().add(b1);
+
+ var b2 = new qx.ui.form.Button("Save");
+ b2.setLocation(280, 48);
+ qx.ui.core.ClientDocument.getInstance().add(b2);
+
+ var b3 = new qx.ui.form.Button("Clear");
+ b3.setLocation(340, 48);
+ qx.ui.core.ClientDocument.getInstance().add(b3);
+
+
+
+ b1.addEventListener("execute", function(e)
+ {
+ for (var i=0; i<vAll.length; i++) {
+ var vIn = qx.io.local.CookieTransport.get("fieldContent" + i);
+ vAll[i].setValue(vIn);
+ };
+ });
+
+ b2.addEventListener("execute", function(e)
+ {
+ for (var i=0; i<vAll.length; i++) {
+ qx.io.local.CookieTransport.set("fieldContent" + i, vAll[i].getValue());
+ };
+ });
+
+ b3.addEventListener("execute", function(e) {
+ qx.io.local.CookieTransport.delAll();
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Cookie_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Cookie_1.html
new file mode 100644
index 0000000000..2f6214da09
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Cookie_1.html
@@ -0,0 +1,45 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for qx.io.local.CookieApi.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var f1 = new qx.ui.form.TextField;
+ f1.setLocation(20, 48);
+ qx.ui.core.ClientDocument.getInstance().add(f1);
+
+ var b1 = new qx.ui.form.Button("Restore");
+ b1.setLocation(20, 80);
+ qx.ui.core.ClientDocument.getInstance().add(b1);
+
+ var b2 = new qx.ui.form.Button("Save");
+ b2.setLocation(80, 80);
+ qx.ui.core.ClientDocument.getInstance().add(b2);
+
+
+
+ b1.addEventListener("execute", function(e) {
+ f1.setValue(qx.io.local.CookieApi.get("fieldContent"));
+ });
+
+ b2.addEventListener("execute", function(e) {
+ qx.io.local.CookieApi.set("fieldContent", f1.getValue());
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CrossBrowser_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CrossBrowser_1.html
new file mode 100644
index 0000000000..1bfb3abd7b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CrossBrowser_1.html
@@ -0,0 +1,166 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <fieldset style="padding:3px; background-color:#fff; text-align:right"><legend style="color:red">Outer</legend>
+ <span style="color:blue; font-style:italic">Margin</span>
+ <fieldset style="margin:3px 10px; padding:3px 10px; background-color:#bbb"><legend style="color:red">Box</legend>
+ <span style="color:blue; font-style:italic">Inset (Border + Scrollbar)</span>
+ <fieldset style="margin:3px 10px; padding:3px 10px; background-color:#999"><legend style="color:red">Area</legend>
+ <span style="color:blue; font-style:italic">Padding</span>
+ <fieldset style="margin:3px 10px; padding:3px 10px; background-color:#666"><legend style="color:red">Inner</legend>
+ </fieldset>
+ </fieldset>
+ </fieldset>
+ </fieldset>
+ </div>
+
+ <div style="margin-left:200px;margin-right:400px; margin-top: 30px;">
+Mit seiner Aufnahme in die Elite war Knechts Leben auf eine andre Ebene verpflanzt, es war der erste und entscheidende Schritt in seiner Entwicklung geschehen. Es geht durchaus nicht allen Elitesch�lern so, da� die amtliche Aufnahme in die Elite mit dem innern Erlebnis der Berufung zusammenf�llt. Das ist Gnade, oder wenn man es banal ausdr�cken will: es ist ein Gl�cksfall. Wem er begegnet, dessen Leben hat ein Plus, so wie der ein Plus besitzt, dem ein Gl�cksfall besonders gl�ckliche Gaben an Leib und See le mitgegeben hat. Die meisten Elitesch�ler, ja beinahe alle, empfinden zwar ihre Wahl als ein gro�es Gl�ck, als eine Auszeichnung, auf die sie stolz sind, und sehr viele von ihnen haben sich auch diese Auszeichnung vorher gl�hend erw�nscht. Aber der �bergang von der gew�hnlichen heimatlichen Schule in die Schulen von Kastalien f�llt den meisten Auserw�hlten dann doch schwerer, als sie gedacht h�tten, und bringt manchen unerwartete Entt�uschungen. Vor allem ist der �bergang f�r alle jene Sch�ler, die in i hrem Elternhaus gl�cklich und geliebt waren, ein sehr schwerer Abschied und Verzicht, und so kommt denn auch, namentlich w�hrend der beiden ersten Elitejahre, eine nicht unbetr�chtliche Zahl von R�ckversetzungen vor, deren Grund nicht ein Mangel an Begabung und Flei�, sondern Unf�higkeit der Sch�ler ist, sich mit dem Internatsleben und vor allem mit dem Gedanken zu vers�hnen, k�nftig die Verbindung mit Familie und Heimat immer mehr zu l�sen und schlie�lich keine andre Zugeh�rigkeit mehr zu kennen und zu r espektieren als die zum Orden. Dann gibt es je und je auch Sch�ler, welchen umgekehrt gerade das Loskommen vom Vaterhaus und von einer ihnen entleideten Schule die Hauptsache bei ihrer Aufnahme in die Elite war; diese, etwa von einem strengen Vater oder einem ihnen unangenehmen Lehrer befreit, atmeten zwar eine Weile auf, hatten sich aber von dem Wechsel so gro�e und unm�gliche Ver�nderungen ihres ganzen Lebens versprochen, da� bald eine Entt�uschung kam. Auch die eigentlichen Streber und Mustersch�ler, d i! e Pedantischen, konnten sich in Kastalien nicht immer halten; nicht da� sie den Studien nicht w�ren gewachsen gewesen, aber es kam in der Elite eben nicht allein auf die Studien und Fachzeugnisse an, sondern es wurden auch erzieherische und musische Ziele angestrebt, vor welchen dieser und jener die Waffen streckte. Immerhin war in dem System der vier gro�en Eliteschulen mit ihren zahlreichen Unterabteilungen und Zweiganstalten Raum f�r vielerlei Begabungen, und ein strebsamer Mathematiker oder Philologe, wenn er wirklich das Zeug zu einem Gelehrten in sich hatte, brauchte etwa einen Mangel an musikalischer oder philosophischer Begabung nicht als Gefahr zu empfinden. Es gab zuzeiten sogar in Kastalien sehr starke Tendenzen zur Pflege der reinen, n�chternen Fachwissenschaften, und die Vork�mpfer dieser Tendenzen waren nicht nur gegen die �Phantasten�, das hei�t gegen die Musikalischen und Musischen, kritisch und spottlustig gestimmt, sondern haben zuzeiten innerhalb ihrer Kreise alles Musische, und namentl ich das Glasperlenspiel, geradezu abgeschworen und verp�nt.Da Knechts Leben, soweit es uns bekannt ist, sich ganz in Kastalien abspielte, in jenem stillsten und heitersten Bezirk unseres gebirgigen Landes, den man fr�her mit einem Ausdruck des Dichters Goethe oft auch �die p�dagogische Provinz� genannt hat, wollen wir in aller K�rze und auf die Gefahr hin, den Leser mit L�ngstgewu�tem zu langweilen, nochmals dies ber�hmte Kastalien.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.basic.Terminator;
+
+ with(w1)
+ {
+ setHeight(100);
+ setWidth(100);
+ setTop(48);
+ setLeft(20);
+ setBackgroundColor("orange");
+ setStyleProperty("padding", "5px");
+ setStyleProperty("margin", "10px");
+ setBorder(new qx.renderer.border.Border(2, "solid", "blue"));
+ setOverflow("scroll");
+ };
+
+ d.add(w1);
+
+ w1.addEventListener("initialShow", function(e)
+ {
+ QxDebug("Properties", "getComputedMarginLeft: " + w1.getComputedMarginLeft());
+ QxDebug("Properties", "getComputedMarginTop: " + w1.getComputedMarginTop());
+ QxDebug("Properties", "getComputedMarginRight: " + w1.getComputedMarginRight());
+ QxDebug("Properties", "getComputedMarginBottom: " + w1.getComputedMarginBottom());
+
+ QxDebug("Properties", "getComputedPaddingLeft: " + w1.getComputedPaddingLeft());
+ QxDebug("Properties", "getComputedPaddingTop: " + w1.getComputedPaddingTop());
+ QxDebug("Properties", "getComputedPaddingRight: " + w1.getComputedPaddingRight());
+ QxDebug("Properties", "getComputedPaddingBottom: " + w1.getComputedPaddingBottom());
+
+ QxDebug("Properties", "getComputedBorderLeft: " + w1.getComputedBorderLeft());
+ QxDebug("Properties", "getComputedBorderTop: " + w1.getComputedBorderTop());
+ QxDebug("Properties", "getComputedBorderRight: " + w1.getComputedBorderRight());
+ QxDebug("Properties", "getComputedBorderBottom: " + w1.getComputedBorderBottom());
+
+ QxDebug("Dimensions", "getComputedOuterWidth: " + w1.getComputedOuterWidth());
+ QxDebug("Dimensions", "getComputedOuterHeight: " + w1.getComputedOuterHeight());
+
+ QxDebug("Dimensions", "getComputedBoxWidth: " + w1.getComputedBoxWidth());
+ QxDebug("Dimensions", "getComputedBoxHeight: " + w1.getComputedBoxHeight());
+
+ QxDebug("Dimensions", "getComputedAreaWidth: " + w1.getComputedAreaWidth());
+ QxDebug("Dimensions", "getComputedAreaHeight: " + w1.getComputedAreaHeight());
+
+ QxDebug("Dimensions", "getComputedInnerWidth: " + w1.getComputedInnerWidth());
+ QxDebug("Dimensions", "getComputedInnerHeight: " + w1.getComputedInnerHeight());
+
+ QxDebug("Insets", "getComputedInsetLeft: " + w1.getComputedInsetLeft());
+ QxDebug("Insets", "getComputedInsetTop: " + w1.getComputedInsetTop());
+ QxDebug("Insets", "getComputedInsetRight: " + w1.getComputedInsetRight());
+ QxDebug("Insets", "getComputedInsetBottom: " + w1.getComputedInsetBottom());
+
+ QxDebug("Scroll", "getComputedScrollBarSizeLeft: " + w1.getComputedScrollBarSizeLeft());
+ QxDebug("Scroll", "getComputedScrollBarSizeTop: " + w1.getComputedScrollBarSizeTop());
+ QxDebug("Scroll", "getComputedScrollBarSizeRight: " + w1.getComputedScrollBarSizeRight());
+ QxDebug("Scroll", "getComputedScrollBarSizeBottom: " + w1.getComputedScrollBarSizeBottom());
+
+ QxDebug("Scroll", "getComputedScrollBarVisibleX: " + w1.getComputedScrollBarVisibleX());
+ QxDebug("Scroll", "getComputedScrollBarVisibleY: " + w1.getComputedScrollBarVisibleY());
+
+
+
+ QxDebug("Positions->Client", "getComputedClientOuterLeft: " + w1.getComputedClientOuterLeft());
+ QxDebug("Positions->Client", "getComputedClientOuterTop: " + w1.getComputedClientOuterTop());
+ QxDebug("Positions->Client", "getComputedClientOuterRight: " + w1.getComputedClientOuterRight());
+ QxDebug("Positions->Client", "getComputedClientOuterBottom: " + w1.getComputedClientOuterBottom());
+
+ QxDebug("Positions->Client", "getComputedClientBoxLeft: " + w1.getComputedClientBoxLeft());
+ QxDebug("Positions->Client", "getComputedClientBoxTop: " + w1.getComputedClientBoxTop());
+ QxDebug("Positions->Client", "getComputedClientBoxRight: " + w1.getComputedClientBoxRight());
+ QxDebug("Positions->Client", "getComputedClientBoxBottom: " + w1.getComputedClientBoxBottom());
+
+ QxDebug("Positions->Client", "getComputedClientAreaLeft: " + w1.getComputedClientAreaLeft());
+ QxDebug("Positions->Client", "getComputedClientAreaTop: " + w1.getComputedClientAreaTop());
+ QxDebug("Positions->Client", "getComputedClientAreaRight: " + w1.getComputedClientAreaRight());
+ QxDebug("Positions->Client", "getComputedClientAreaBottom: " + w1.getComputedClientAreaBottom());
+
+ QxDebug("Positions->Client", "getComputedClientInnerLeft: " + w1.getComputedClientInnerLeft());
+ QxDebug("Positions->Client", "getComputedClientInnerTop: " + w1.getComputedClientInnerTop());
+ QxDebug("Positions->Client", "getComputedClientInnerRight: " + w1.getComputedClientInnerRight());
+ QxDebug("Positions->Client", "getComputedClientInnerBottom: " + w1.getComputedClientInnerBottom());
+
+
+
+ QxDebug("Positions->Page", "getComputedPageOuterLeft: " + w1.getComputedPageOuterLeft());
+ QxDebug("Positions->Page", "getComputedPageOuterTop: " + w1.getComputedPageOuterTop());
+ QxDebug("Positions->Page", "getComputedPageOuterRight: " + w1.getComputedPageOuterRight());
+ QxDebug("Positions->Page", "getComputedPageOuterBottom: " + w1.getComputedPageOuterBottom());
+
+ QxDebug("Positions->Page", "getComputedPageBoxLeft: " + w1.getComputedPageBoxLeft());
+ QxDebug("Positions->Page", "getComputedPageBoxTop: " + w1.getComputedPageBoxTop());
+ QxDebug("Positions->Page", "getComputedPageBoxRight: " + w1.getComputedPageBoxRight());
+ QxDebug("Positions->Page", "getComputedPageBoxBottom: " + w1.getComputedPageBoxBottom());
+
+ QxDebug("Positions->Page", "getComputedPageAreaLeft: " + w1.getComputedPageAreaLeft());
+ QxDebug("Positions->Page", "getComputedPageAreaTop: " + w1.getComputedPageAreaTop());
+ QxDebug("Positions->Page", "getComputedPageAreaRight: " + w1.getComputedPageAreaRight());
+ QxDebug("Positions->Page", "getComputedPageAreaBottom: " + w1.getComputedPageAreaBottom());
+
+ QxDebug("Positions->Page", "getComputedPageInnerLeft: " + w1.getComputedPageInnerLeft());
+ QxDebug("Positions->Page", "getComputedPageInnerTop: " + w1.getComputedPageInnerTop());
+ QxDebug("Positions->Page", "getComputedPageInnerRight: " + w1.getComputedPageInnerRight());
+ QxDebug("Positions->Page", "getComputedPageInnerBottom: " + w1.getComputedPageInnerBottom());
+
+
+
+
+ QxDebug("Screen", "getComputedScreenOuterLeft: " + w1.getComputedScreenOuterLeft());
+ QxDebug("Screen", "getComputedScreenOuterTop: " + w1.getComputedScreenOuterTop());
+ QxDebug("Screen", "getComputedScreenOuterRight: " + w1.getComputedScreenOuterRight());
+ QxDebug("Screen", "getComputedScreenOuterBottom: " + w1.getComputedScreenOuterBottom());
+
+ QxDebug("Screen", "getComputedScreenBoxLeft: " + w1.getComputedScreenBoxLeft());
+ QxDebug("Screen", "getComputedScreenBoxTop: " + w1.getComputedScreenBoxTop());
+ QxDebug("Screen", "getComputedScreenBoxRight: " + w1.getComputedScreenBoxRight());
+ QxDebug("Screen", "getComputedScreenBoxBottom: " + w1.getComputedScreenBoxBottom());
+
+ QxDebug("Screen", "getComputedScreenAreaLeft: " + w1.getComputedScreenAreaLeft());
+ QxDebug("Screen", "getComputedScreenAreaTop: " + w1.getComputedScreenAreaTop());
+ QxDebug("Screen", "getComputedScreenAreaRight: " + w1.getComputedScreenAreaRight());
+ QxDebug("Screen", "getComputedScreenAreaBottom: " + w1.getComputedScreenAreaBottom());
+
+ QxDebug("Screen", "getComputedScreenInnerLeft: " + w1.getComputedScreenInnerLeft());
+ QxDebug("Screen", "getComputedScreenInnerTop: " + w1.getComputedScreenInnerTop());
+ QxDebug("Screen", "getComputedScreenInnerRight: " + w1.getComputedScreenInnerRight());
+ QxDebug("Screen", "getComputedScreenInnerBottom: " + w1.getComputedScreenInnerBottom());
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CrossBrowser_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CrossBrowser_2.html
new file mode 100644
index 0000000000..700c80a03b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/CrossBrowser_2.html
@@ -0,0 +1,128 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Tests for crossbrowser offsetTop and offsetLeft properties provided by qx.dom</p>
+ </div>
+
+ <style type="text/css">
+
+#i{
+ border: 1px solid red;
+}
+
+#l{
+ position: absolute;
+
+ top: 100px;
+ left: 100px;
+
+ width: 300px;
+ height: 300px;
+
+ overflow: auto;
+ border: 6px solid red;
+ padding: 10px;
+}
+
+#p1{
+ position: static;
+
+ width: 100px;
+ height: 100px;
+
+ overflow: auto;
+
+ border: 5px solid orange;
+ padding: 5px;
+}
+
+#p2{
+ position: absolute;
+
+ top: 150px;
+ left: 150px;
+
+ width: 100px;
+ height: 100px;
+
+ overflow: auto;
+
+ border: 5px solid orange;
+ padding: 3px;
+}
+
+#p1 div,
+#p2 div{
+ border: 2px solid blue;
+ padding: 4px;
+}
+ </style>
+
+ <br/><br/><br/><br/><br/>
+ <p id="i">Inline</p>
+
+ <div id="l">
+ <div id="p1">
+ <div id="p1a">P1-A</div>
+ <div id="p1b">P1-B</div>
+ <div id="p1c">P1-C</div>
+ <div id="p1d">P1-D</div>
+ <div id="p1e">P1-E</div>
+ <div id="p1f">P1-F</div>
+ <div id="p1g">P1-G</div>
+ <div id="p1h">P1-H</div>
+ <div id="p1j">P1-I</div>
+ </div>
+ <div id="p2">
+ <div id="p2a">P2-A</div>
+ <div id="p2b">P2-B</div>
+ <div id="p2c">P2-C</div>
+ <div id="p2d">P2-D</div>
+ <div id="p2e">P2-E</div>
+ <div id="p2f">P2-F</div>
+ <div id="p2g">P2-G</div>
+ <div id="p2h">P2-H</div>
+ <div id="p2j">P2-I</div>
+ </div>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var i = document.getElementById("i");
+ var l = document.getElementById("l");
+ var p1 = document.getElementById("p1");
+ var p2 = document.getElementById("p2");
+ var p1a = document.getElementById("p1a");
+ var p2a = document.getElementById("p2a");
+
+ qx.core.Init.getInstance().debug("Browser-Impl", "I: " + i.offsetLeft + "x" + i.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "L: " + l.offsetLeft + "x" + l.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "P1: " + p1.offsetLeft + "x" + p1.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "P2: " + p2.offsetLeft + "x" + p2.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "P1A: " + p1a.offsetLeft + "x" + p1a.offsetTop);
+ qx.core.Init.getInstance().debug("Browser-Impl", "P2A: " + p2a.offsetLeft + "x" + p2a.offsetTop);
+
+ qx.core.Init.getInstance().debug("QxDom-Impl", "I: " + qx.html.Offset.getLeft(i) + "x" + qx.html.Offset.getTop(i));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "L: " + qx.html.Offset.getLeft(l) + "x" + qx.html.Offset.getTop(l));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "P1: " + qx.html.Offset.getLeft(p1) + "x" + qx.html.Offset.getTop(p1));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "P2: " + qx.html.Offset.getLeft(p2) + "x" + qx.html.Offset.getTop(p2));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "P1A: " + qx.html.Offset.getLeft(p1a) + "x" + qx.html.Offset.getTop(p1a));
+ qx.core.Init.getInstance().debug("QxDom-Impl", "P2A: " + qx.html.Offset.getLeft(p2a) + "x" + qx.html.Offset.getTop(p2a));
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DateChooserButton_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DateChooserButton_1.html
new file mode 100644
index 0000000000..a9e17cf589
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DateChooserButton_1.html
@@ -0,0 +1,64 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the date chooser button component.</p>
+ <p>This widget can be associated to another widget (in this case a textfield) which then
+ is synchronized with the selected date from the date chooser</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.locale.Manager.getInstance().setLocale("C");
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function changeValue(e) {
+ this.debug("Text changed: " + e.getData());
+ }
+
+ var l1 = new qx.ui.basic.Label("A date field: "); l1.set({top:51, left:20});
+ d.add(l1);
+
+ var tf1 = new qx.ui.form.TextField; tf1.set({top:48,left:80,width:70});
+ tf1.addEventListener("changeValue", changeValue);
+ d.add(tf1);
+
+
+ var dcb1 = new qx.ui.component.DateChooserButton();
+ dcb1.set({top:47,left:152});
+ // associate the date chooser button to the textfield tf1:
+ dcb1.setTargetWidget(tf1);
+ // change the button text
+ dcb1.setLabel("Please choose a date");
+ // change the chooser window title
+ dcb1.setChooserTitle("Date choosing made simple");
+
+ d.add(dcb1);
+
+ var l2 = new qx.ui.basic.Label("Date field 2: "); l2.set({top:91, left:20});
+ d.add(l2);
+
+ var tf2 = new qx.ui.form.TextField; tf2.set({top:88,left:80,width:70});
+ tf2.addEventListener("changeValue", changeValue);
+ d.add(tf2);
+
+ var dcb2 = new qx.ui.component.DateChooserButton(tf2);
+ dcb2.set({top:87,left:152});
+ d.add(dcb2);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DateChooserButton_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DateChooserButton_2.html
new file mode 100644
index 0000000000..024c955f5b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DateChooserButton_2.html
@@ -0,0 +1,65 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the date chooser button component.</p>
+ <p>This widget can be associated to another widget (in this case a textfield) which then
+ is synchronized with the selected date from the date chooser</p>
+ <p>The second demo is localized for german dates</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.locale.Manager.getInstance().setLocale("de_DE");
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function changeValue(e) {
+ this.debug("Text changed: " + e.getData());
+ }
+
+ var l1 = new qx.ui.basic.Label("Ein Datum: "); l1.set({top:51, left:20});
+ d.add(l1);
+
+ var tf1 = new qx.ui.form.TextField; tf1.set({top:48,left:80,width:70});
+ tf1.addEventListener("changeValue", changeValue);
+ d.add(tf1);
+
+
+ var dcb1 = new qx.ui.component.DateChooserButton();
+ dcb1.set({top:47,left:152});
+ // associate the date chooser button to the textfield tf1:
+ dcb1.setTargetWidget(tf1);
+ // change the button text
+ dcb1.setLabel("Bitte ein Datum auswählen");
+ // change the chooser window title
+ dcb1.setChooserTitle("Einfache Datumsauswahl");
+
+ d.add(dcb1);
+
+ var l2 = new qx.ui.basic.Label("Datum 2: "); l2.set({top:91, left:20});
+ d.add(l2);
+
+ var tf2 = new qx.ui.form.TextField; tf2.set({top:88,left:80,width:70});
+ tf2.addEventListener("changeValue", changeValue);
+ d.add(tf2);
+
+ var dcb2 = new qx.ui.component.DateChooserButton(tf2);
+ dcb2.set({top:87,left:152,chooserTitle:"Bitte ein Datum wählen"});
+ d.add(dcb2);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_1.html
new file mode 100644
index 0000000000..ff1ed23cd7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_1.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Simple Test for qx.ui.layout.DockLayout.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(2, "outset");
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.basic.Terminator;
+ t1.setHeight(50);
+ t1.setBackgroundColor("red");
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.basic.Terminator;
+ t2.setWidth(150);
+ t2.setBackgroundColor("yellow");
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.basic.Terminator;
+ t3.setBackgroundColor("blue");
+ dl1.add(t3);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_2.html
new file mode 100644
index 0000000000..d25bcf7ebb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_2.html
@@ -0,0 +1,224 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ The next generation of table-less layouts ;)
+ </div>
+
+ <script type="text/javascript">
+ function selfRemove() {
+ this.getParent().remove(this);
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(120);
+ dl1.setMinWidth(400);
+ dl1.setMinHeight(300);
+
+ dl1.setBorder(2, "outset");
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.basic.Terminator;
+ t1.setHeight(50);
+ t1.setBackgroundColor("red");
+ t1.setVerticalAlign("top");
+ t1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1.addEventListener("click", selfRemove);
+
+ var t2 = new qx.ui.basic.Terminator;
+ // t2.setWidth(150);
+ t2.setWidth("20%");
+ t2.setBackgroundColor("gray");
+ t2.setHorizontalAlign("left");
+ t2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2.addEventListener("click", selfRemove);
+
+ var t3 = new qx.ui.basic.Terminator;
+ t3.setHeight(100);
+ t3.setBackgroundColor("yellow");
+ t3.setVerticalAlign("top");
+ t3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3.addEventListener("click", selfRemove);
+
+ var t4 = new qx.ui.basic.Terminator;
+ t4.setWidth(40);
+ t4.setBackgroundColor("orange");
+ t4.setHorizontalAlign("right");
+ t4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4.addEventListener("click", selfRemove);
+
+ var t5 = new qx.ui.basic.Terminator;
+ t5.setHeight(80);
+ t5.setBackgroundColor("blue");
+ t5.setVerticalAlign("bottom");
+ t5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5.addEventListener("click", selfRemove);
+
+ var t6 = new qx.ui.basic.Terminator;
+ t6.setBackgroundColor("green");
+ t6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6.addEventListener("click", selfRemove);
+
+ dl1.add(t1, t2, t3, t4, t5, t6);
+
+
+
+
+
+
+
+
+
+ var l1 = new qx.ui.basic.Label("Mode:");
+ l1.setWidth(50);
+
+ var btn1_1 = new qx.ui.form.Button("Vertical", "icon/16/actions/dialog-ok.png");
+ var btn1_2 = new qx.ui.form.Button("Horizontal", "icon/16/actions/dialog-ok.png");
+ var btn1_3 = new qx.ui.form.Button("Ordered", "icon/16/actions/dialog-ok.png");
+
+ btn1_1.addEventListener("click", function(e) {
+ dl1.setMode("vertical");
+ });
+
+ btn1_2.addEventListener("click", function(e) {
+ dl1.setMode("horizontal");
+ });
+
+ btn1_3.addEventListener("click", function(e) {
+ dl1.setMode("ordered");
+ });
+
+ var h1 = new qx.ui.layout.HorizontalBoxLayout;
+ h1.setVerticalChildrenAlign("middle");
+ h1.add(l1, btn1_1, btn1_2, btn1_3);
+ h1.setBottom(78);
+ h1.setLeft(20);
+ d.add(h1);
+
+
+
+
+
+
+
+
+
+ var l2 = new qx.ui.basic.Label("Children:");
+ l2.setWidth(50);
+
+ var btn2_1 = new qx.ui.form.Button("Remove First", "icon/16/actions/dialog-ok.png");
+ var btn2_2 = new qx.ui.form.Button("Remove Last", "icon/16/actions/dialog-ok.png");
+ var btn2_3 = new qx.ui.form.Button("Add Top", "icon/16/actions/dialog-ok.png");
+ var btn2_4 = new qx.ui.form.Button("Add Right", "icon/16/actions/dialog-ok.png");
+ var btn2_5 = new qx.ui.form.Button("Add Bottom", "icon/16/actions/dialog-ok.png");
+ var btn2_6 = new qx.ui.form.Button("Add Left", "icon/16/actions/dialog-ok.png");
+ var btn2_7 = new qx.ui.form.Button("Add Auto", "icon/16/actions/dialog-ok.png");
+
+ btn2_1.addEventListener("execute", function(e)
+ {
+ var c = dl1.getFirstChild();
+ if (c) {
+ dl1.remove(c);
+ };
+ });
+
+ btn2_2.addEventListener("execute", function(e)
+ {
+ var c = dl1.getLastChild();
+ if (c) {
+ dl1.remove(c);
+ };
+ });
+
+ btn2_3.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setHeight(2+Math.round(Math.random()*50));
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.addTop(t);
+ });
+
+ btn2_4.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setWidth(2+Math.round(Math.random()*50));
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.addRight(t);
+ });
+
+ btn2_5.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setHeight(2+Math.round(Math.random()*50));
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.addBottom(t);
+ });
+
+ btn2_6.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setWidth(2+Math.round(Math.random()*50));
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.addLeft(t);
+ });
+
+ btn2_7.addEventListener("execute", function(e)
+ {
+ var t = new qx.ui.basic.Terminator();
+
+ t.setBackgroundColor(qx.renderer.color.Color.fromRandom());
+ t.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t.addEventListener("click", selfRemove);
+
+ dl1.add(t);
+ });
+
+
+ var h2 = new qx.ui.layout.HorizontalBoxLayout;
+ h2.setVerticalChildrenAlign("middle");
+ h2.add(l2, btn2_1, btn2_2, btn2_3, btn2_4, btn2_5, btn2_6, btn2_7);
+ h2.setBottom(48);
+ h2.setLeft(20);
+ d.add(h2);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_3.html
new file mode 100644
index 0000000000..c0e5dd5e99
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_3.html
@@ -0,0 +1,140 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Testing Layouts inside the qx.ui.layout.DockLayout. In this example centering through qx.ui.layout.HorizontalBoxLayout.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.layout.HorizontalBoxLayout;
+ t1.setHeight(50);
+ t1.setBackgroundColor("red");
+ t1.setWidth(null);
+ t1.setVerticalChildrenAlign("middle");
+ t1.setHorizontalChildrenAlign("center");
+ t1.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.layout.HorizontalBoxLayout;
+ t2.setWidth(150);
+ t2.setBackgroundColor("yellow");
+ t2.setHeight(null);
+ t2.setVerticalChildrenAlign("middle");
+ t2.setHorizontalChildrenAlign("center");
+ t2.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.layout.HorizontalBoxLayout;
+ t3.setHeight(50);
+ t3.setBackgroundColor("blue");
+ t3.setWidth(null);
+ t3.setVerticalChildrenAlign("middle");
+ t3.setHorizontalChildrenAlign("center");
+ t3.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ dl1.addBottom(t3);
+
+ var t4 = new qx.ui.layout.HorizontalBoxLayout;
+ t4.setWidth(150);
+ t4.setBackgroundColor("green");
+ t4.setHeight(null);
+ t4.setVerticalChildrenAlign("middle");
+ t4.setHorizontalChildrenAlign("center");
+ t4.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ dl1.addRight(t4);
+
+
+
+
+ var dl2 = new qx.ui.layout.DockLayout;
+ dl2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.add(dl2);
+
+
+
+
+
+
+
+ var t5 = new qx.ui.layout.HorizontalBoxLayout;
+ t5.setHeight(50);
+ t5.setBackgroundColor("fuchsia");
+ t5.setWidth(null);
+ t5.setVerticalChildrenAlign("middle");
+ t5.setHorizontalChildrenAlign("center");
+ t5.add(new qx.ui.basic.Image("icon/32/apps/accessories-clock.png"));
+ dl2.addTop(t5);
+
+ var t6 = new qx.ui.layout.HorizontalBoxLayout;
+ t6.setWidth(150);
+ t6.setBackgroundColor("orange");
+ t6.setHeight(null);
+ t6.setVerticalChildrenAlign("middle");
+ t6.setHorizontalChildrenAlign("center");
+ t6.add(new qx.ui.basic.Image("icon/32/apps/accessories-clock.png"));
+ dl2.addLeft(t6);
+
+ var t7 = new qx.ui.layout.HorizontalBoxLayout;
+ t7.setHeight(50);
+ t7.setBackgroundColor("aqua");
+ t7.setWidth(null);
+ t7.setVerticalChildrenAlign("middle");
+ t7.setHorizontalChildrenAlign("center");
+ t7.add(new qx.ui.basic.Image("icon/32/apps/accessories-clock.png"));
+ dl2.addBottom(t7);
+
+ var t8 = new qx.ui.layout.HorizontalBoxLayout;
+ t8.setWidth(150);
+ t8.setBackgroundColor("lime");
+ t8.setHeight(null);
+ t8.setVerticalChildrenAlign("middle");
+ t8.setHorizontalChildrenAlign("center");
+ t8.add(new qx.ui.basic.Image("icon/32/apps/accessories-clock.png"));
+ dl2.addRight(t8);
+
+
+
+
+
+ var hb1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hb1.setBackgroundColor("silver");
+ hb1.setVerticalChildrenAlign("middle");
+ hb1.setHorizontalChildrenAlign("center");
+ hb1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ hb1.setWidth(null);
+ hb1.setHeight(null);
+ hb1.add(new qx.ui.basic.Image("icon/64/apps/accessories-clock.png"));
+
+ dl2.add(hb1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_4.html
new file mode 100644
index 0000000000..62bc46c3ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_4.html
@@ -0,0 +1,140 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Same as the previous one, but additional the dimensions of the qx.ui.layout.DockLayout are defined as percents here.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.layout.HorizontalBoxLayout;
+ t1.setHeight("20%");
+ t1.setBackgroundColor("red");
+ t1.setWidth(null);
+ t1.setVerticalChildrenAlign("middle");
+ t1.setHorizontalChildrenAlign("center");
+ t1.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.layout.HorizontalBoxLayout;
+ t2.setWidth("20%");
+ t2.setBackgroundColor("yellow");
+ t2.setHeight(null);
+ t2.setVerticalChildrenAlign("middle");
+ t2.setHorizontalChildrenAlign("center");
+ t2.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.layout.HorizontalBoxLayout;
+ t3.setHeight("20%");
+ t3.setBackgroundColor("blue");
+ t3.setWidth(null);
+ t3.setVerticalChildrenAlign("middle");
+ t3.setHorizontalChildrenAlign("center");
+ t3.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ dl1.addBottom(t3);
+
+ var t4 = new qx.ui.layout.HorizontalBoxLayout;
+ t4.setWidth("20%");
+ t4.setBackgroundColor("green");
+ t4.setHeight(null);
+ t4.setVerticalChildrenAlign("middle");
+ t4.setHorizontalChildrenAlign("center");
+ t4.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ dl1.addRight(t4);
+
+
+
+
+ var dl2 = new qx.ui.layout.DockLayout;
+ dl2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.add(dl2);
+
+
+
+
+
+
+
+ var t5 = new qx.ui.layout.HorizontalBoxLayout;
+ t5.setHeight("20%");
+ t5.setBackgroundColor("fuchsia");
+ t5.setWidth(null);
+ t5.setVerticalChildrenAlign("middle");
+ t5.setHorizontalChildrenAlign("center");
+ t5.add(new qx.ui.basic.Image("icon/32/apps/accessories-clock.png"));
+ dl2.addTop(t5);
+
+ var t6 = new qx.ui.layout.HorizontalBoxLayout;
+ t6.setWidth("20%");
+ t6.setBackgroundColor("orange");
+ t6.setHeight(null);
+ t6.setVerticalChildrenAlign("middle");
+ t6.setHorizontalChildrenAlign("center");
+ t6.add(new qx.ui.basic.Image("icon/32/apps/accessories-clock.png"));
+ dl2.addLeft(t6);
+
+ var t7 = new qx.ui.layout.HorizontalBoxLayout;
+ t7.setHeight("20%");
+ t7.setBackgroundColor("aqua");
+ t7.setWidth(null);
+ t7.setVerticalChildrenAlign("middle");
+ t7.setHorizontalChildrenAlign("center");
+ t7.add(new qx.ui.basic.Image("icon/32/apps/accessories-clock.png"));
+ dl2.addBottom(t7);
+
+ var t8 = new qx.ui.layout.HorizontalBoxLayout;
+ t8.setWidth("20%");
+ t8.setBackgroundColor("lime");
+ t8.setHeight(null);
+ t8.setVerticalChildrenAlign("middle");
+ t8.setHorizontalChildrenAlign("center");
+ t8.add(new qx.ui.basic.Image("icon/32/apps/accessories-clock.png"));
+ dl2.addRight(t8);
+
+
+
+
+
+ var hb1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hb1.setBackgroundColor("silver");
+ hb1.setVerticalChildrenAlign("middle");
+ hb1.setHorizontalChildrenAlign("center");
+ hb1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ hb1.setWidth(null);
+ hb1.setHeight(null);
+ hb1.add(new qx.ui.basic.Image("icon/64/apps/accessories-clock.png"));
+
+ dl2.add(hb1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_5.html
new file mode 100644
index 0000000000..5375babd02
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_5.html
@@ -0,0 +1,164 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Same as the previous one, but additional added multiple children to the box layout.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.layout.HorizontalBoxLayout;
+ t1.setHeight("20%");
+ t1.setBackgroundColor("red");
+ t1.setWidth(null);
+ t1.setVerticalChildrenAlign("middle");
+ t1.setHorizontalChildrenAlign("center");
+ t1.setSpacing(4);
+ t1.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ t1.add(new qx.ui.basic.Label("Hello World"));
+ t1.add(new qx.ui.basic.Image("icon/48/categories/applications-graphics.png"));
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.layout.HorizontalBoxLayout;
+ t2.setWidth("20%");
+ t2.setBackgroundColor("yellow");
+ t2.setHeight(null);
+ t2.setVerticalChildrenAlign("middle");
+ t2.setHorizontalChildrenAlign("center");
+ t2.setSpacing(4);
+ t2.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ t2.add(new qx.ui.basic.Label("Hello World"));
+ t2.add(new qx.ui.basic.Image("icon/48/categories/applications-graphics.png"));
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.layout.HorizontalBoxLayout;
+ t3.setHeight("20%");
+ t3.setBackgroundColor("blue");
+ t3.setWidth(null);
+ t3.setVerticalChildrenAlign("middle");
+ t3.setHorizontalChildrenAlign("center");
+ t3.setSpacing(4);
+ t3.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ t3.add(new qx.ui.basic.Label("Hello World"));
+ t3.add(new qx.ui.basic.Image("icon/48/categories/applications-graphics.png"));
+ dl1.addBottom(t3);
+
+ var t4 = new qx.ui.layout.HorizontalBoxLayout;
+ t4.setWidth("20%");
+ t4.setBackgroundColor("green");
+ t4.setHeight(null);
+ t4.setVerticalChildrenAlign("middle");
+ t4.setHorizontalChildrenAlign("center");
+ t4.setSpacing(4);
+ t4.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ t4.add(new qx.ui.basic.Label("Hello World"));
+ t4.add(new qx.ui.basic.Image("icon/48/categories/applications-graphics.png"));
+ dl1.addRight(t4);
+
+
+
+
+ var dl2 = new qx.ui.layout.DockLayout;
+ dl2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ dl1.add(dl2);
+
+
+
+
+
+
+
+ var t5 = new qx.ui.layout.HorizontalBoxLayout;
+ t5.setHeight("20%");
+ t5.setBackgroundColor("fuchsia");
+ t5.setWidth(null);
+ t5.setVerticalChildrenAlign("middle");
+ t5.setHorizontalChildrenAlign("center");
+ t5.setSpacing(4);
+ t5.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ t5.add(new qx.ui.basic.Label("Hello World"));
+ t5.add(new qx.ui.basic.Image("icon/48/categories/applications-graphics.png"));
+ dl2.addTop(t5);
+
+ var t6 = new qx.ui.layout.HorizontalBoxLayout;
+ t6.setWidth("20%");
+ t6.setBackgroundColor("orange");
+ t6.setHeight(null);
+ t6.setVerticalChildrenAlign("middle");
+ t6.setHorizontalChildrenAlign("center");
+ t6.setSpacing(4);
+ t6.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ t6.add(new qx.ui.basic.Label("Hello World"));
+ t6.add(new qx.ui.basic.Image("icon/48/categories/applications-graphics.png"));
+ dl2.addLeft(t6);
+
+ var t7 = new qx.ui.layout.HorizontalBoxLayout;
+ t7.setHeight("20%");
+ t7.setBackgroundColor("aqua");
+ t7.setWidth(null);
+ t7.setVerticalChildrenAlign("middle");
+ t7.setHorizontalChildrenAlign("center");
+ t7.setSpacing(4);
+ t7.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ t7.add(new qx.ui.basic.Label("Hello World"));
+ t7.add(new qx.ui.basic.Image("icon/48/categories/applications-graphics.png"));
+ dl2.addBottom(t7);
+
+ var t8 = new qx.ui.layout.HorizontalBoxLayout;
+ t8.setWidth("20%");
+ t8.setBackgroundColor("lime");
+ t8.setHeight(null);
+ t8.setVerticalChildrenAlign("middle");
+ t8.setHorizontalChildrenAlign("center");
+ t8.setSpacing(4);
+ t8.add(new qx.ui.basic.Image("icon/16/apps/accessories-clock.png"));
+ t8.add(new qx.ui.basic.Label("Hello World"));
+ t8.add(new qx.ui.basic.Image("icon/48/categories/applications-graphics.png"));
+ dl2.addRight(t8);
+
+
+
+
+
+ var hb1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hb1.setBackgroundColor("silver");
+ hb1.setVerticalChildrenAlign("middle");
+ hb1.setHorizontalChildrenAlign("center");
+ hb1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ hb1.setWidth(null);
+ hb1.setHeight(null);
+ hb1.add(new qx.ui.basic.Image("icon/64/apps/accessories-clock.png"));
+
+ dl2.add(hb1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_6.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_6.html
new file mode 100644
index 0000000000..9ae310189d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DockLayout_6.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Simple Test for qx.ui.layout.DockLayout. But with a dynamic child. Simple click on "Hello World" to see the effect.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var dl1 = new qx.ui.layout.DockLayout;
+
+ dl1.setTop(48);
+ dl1.setLeft(20);
+ dl1.setRight(335);
+ dl1.setBottom(48);
+
+ dl1.setBorder(2, "outset");
+ dl1.setBackgroundColor("white");
+
+ d.add(dl1);
+
+
+
+ var t1 = new qx.ui.basic.Terminator;
+ t1.setHeight(50);
+ t1.setBackgroundColor("white");
+ t1.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ dl1.addTop(t1);
+
+ var t2 = new qx.ui.basic.Label("Hello World");
+ t2.setHeight(null);
+ t2.setBackgroundColor("white");
+ t2.setPadding(10);
+ t2.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ dl1.addLeft(t2);
+
+ var t3 = new qx.ui.layout.HorizontalBoxLayout;
+
+ t3.setWidth(null);
+ t3.setHeight(null);
+ t3.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ t3.setBackgroundColor("white");
+ t3.setHorizontalChildrenAlign("center");
+ t3.setVerticalChildrenAlign("middle");
+
+ dl1.add(t3);
+
+ t3.add(new qx.ui.basic.Image("icon/128/categories/applications-games.png"));
+
+
+
+ t2.addEventListener("click", function(e) {
+ this.setHtml(this.getHtml() == "Hello World" ? "Real long text, especially to test this cool behaviour" : "Hello World");
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DragAndDropManager_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DragAndDropManager_1.html
new file mode 100644
index 0000000000..1412a37315
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DragAndDropManager_1.html
@@ -0,0 +1,131 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for drag&#38;drop implementation.</p>
+ <p>Changing the action using the modifier keys (Shift, Alt, Control) might not work in Safari.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var a1 = new qx.ui.basic.Atom("Drag Me");
+ a1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove });
+ a1.setPadding(10);
+ a1.setLocation(20, 48);
+ d.add(a1);
+
+
+ function handleDragStart(e)
+ {
+ e.addData(qx.util.Mime.TEXT, "Plain text");
+ e.addData(qx.util.Mime.HTML, "Some <strong>HTML</strong>");
+
+ e.addAction("copy");
+ e.addAction("move");
+ e.addAction("alias");
+
+ e.startDrag();
+ };
+
+ function handleDragDrop( e )
+ {
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ this.debug("Drag&Drop Action: " + e.getAction());
+
+ switch(type)
+ {
+ case qx.util.Mime.TEXT:
+ case qx.util.Mime.HTML:
+ this.setLabel(data);
+ break;
+ };
+ };
+
+ function handleDragOver(e) {
+ e.getTarget().setBackgroundColor("#f2f2f2");
+ };
+
+ function handleDragOut(e) {
+ e.getTarget().setBackgroundColor("#fff");
+ };
+
+ function handleDragEnd(e)
+ {
+ // we don't need to do anything here
+ // If we had a succesful move action we might have removed
+ // the source here or something else
+ };
+
+ a1.addEventListener("dragstart", handleDragStart);
+
+
+
+
+ var w1 = new qx.ui.basic.Atom("Drop to me");
+ w1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 100, left: 20, horizontalAlign: "center" });
+ w1.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w1.addEventListener("dragdrop", handleDragDrop);
+ w1.addEventListener("dragover", handleDragOver);
+ w1.addEventListener("dragout", handleDragOut);
+
+ var w2 = new qx.ui.basic.Atom("Drop to me");
+ w2.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 230, left: 20, horizontalAlign: "center" });
+ w2.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w2.addEventListener("dragdrop", handleDragDrop);
+ w2.addEventListener("dragover", handleDragOver);
+ w2.addEventListener("dragout", handleDragOut);
+
+ var w3 = new qx.ui.basic.Atom("Drop to me");
+ w3.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 100, left: 150, horizontalAlign: "center" });
+ w3.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w3.addEventListener("dragdrop", handleDragDrop);
+ w3.addEventListener("dragover", handleDragOver);
+ w3.addEventListener("dragout", handleDragOut);
+
+ var w4 = new qx.ui.basic.Atom("Drop to me");
+ w4.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 230, left: 150, horizontalAlign: "center" });
+ w4.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w4.addEventListener("dragdrop", handleDragDrop);
+ w4.addEventListener("dragover", handleDragOver);
+ w4.addEventListener("dragout", handleDragOut);
+
+
+
+ var f1 = new qx.ui.layout.CanvasLayout;
+ f1.set({ backgroundColor: "orange", width: 230, height: 120, top: 350, left: 20 });
+
+ var w5 = new qx.ui.basic.Atom("Drop to me");
+ w5.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 10, horizontalAlign: "center" });
+ w5.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w5.addEventListener("dragdrop", handleDragDrop);
+ w5.addEventListener("dragover", handleDragOver);
+ w5.addEventListener("dragout", handleDragOut);
+
+ var w6 = new qx.ui.basic.Atom("Drop to me");
+ w6.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 10, right: 0, horizontalAlign: "center" });
+ w6.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w6.addEventListener("dragdrop", handleDragDrop);
+ w6.addEventListener("dragover", handleDragOver);
+ w6.addEventListener("dragout", handleDragOut);
+
+ f1.add(w5, w6);
+ d.add(w1, w2, w3, w4, f1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DragAndDropManager_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DragAndDropManager_2.html
new file mode 100644
index 0000000000..31bf712a05
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/DragAndDropManager_2.html
@@ -0,0 +1,135 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for drag&#38;drop implementation.</p>
+ <p>Changing the action using the modifier keys (Shift, Alt, Control) might not work in Safari.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var a1 = new qx.ui.basic.Atom("Drag Me");
+ a1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove });
+ a1.setPadding(10);
+ a1.setLocation(20, 48);
+ d.add(a1);
+
+
+
+
+ function printEvent(e) {
+ return "TARGET:" + (e.getTarget() ? e.getTarget().toHashCode() : "null") + " [ORIG:" + (e.getOriginalTarget() ? e.getOriginalTarget().toHashCode() : "null") + "] [REL:" + (e.getRelatedTarget() ? e.getRelatedTarget().toHashCode() : "null") + "]";
+ };
+
+ function handleDragStart(e)
+ {
+ this.debug("Fire DragStart: " + printEvent(e));
+
+ e.addData(qx.util.Mime.TEXT, "Plain text");
+ e.addData(qx.util.Mime.HTML, "Some <strong>HTML</strong>");
+
+ e.addAction("copy");
+ e.addAction("move");
+ e.addAction("alias");
+
+ if (feedbackCheckBox.isChecked()) {
+ var feedbackWidget = new qx.ui.basic.Atom("Some HTML", "icon/16/file-new.png");
+ feedbackWidget.set({ border:new qx.renderer.border.Border(1, "dashed", "gray"),
+ opacity:0.7 });
+ feedbackWidget.setPadding(2);
+
+ e.setFeedbackWidget(feedbackWidget, 15, 0, true);
+ e.setCursorPosition(15, 25);
+ }
+
+ e.startDrag();
+ };
+
+ function handleDragDrop( e )
+ {
+ this.debug("Fire DragDrop: " + printEvent(e));
+
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ switch(type)
+ {
+ case qx.util.Mime.TEXT:
+ case qx.util.Mime.HTML:
+ this.setLabel(data);
+ break;
+ };
+ };
+
+ function handleDragOver(e)
+ {
+ this.debug("Fire DragOver: " + printEvent(e));
+ e.getTarget().setBackgroundColor("#f2f2f2");
+ };
+
+ function handleDragOut(e)
+ {
+ this.debug("Fire DragOut: " + printEvent(e));
+ e.getTarget().setBackgroundColor("#fff");
+ };
+
+ function handleDragEnd(e) {
+ this.debug("Fire DragEnd: " + printEvent(e));
+ };
+
+
+
+
+ a1.addEventListener("dragstart", handleDragStart);
+ a1.addEventListener("dragend", handleDragEnd);
+
+
+ var feedbackCheckBox = new qx.ui.form.CheckBox("Show feedback");
+ feedbackCheckBox.setLocation(120, 55);
+
+ var w1 = new qx.ui.basic.Atom("Drop to me");
+ w1.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 100, left: 20, horizontalAlign: "center" });
+ w1.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w1.addEventListener("dragdrop", handleDragDrop);
+ w1.addEventListener("dragover", handleDragOver);
+ w1.addEventListener("dragout", handleDragOut);
+
+ var w2 = new qx.ui.basic.Atom("Drop to me");
+ w2.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 200, left: 20, horizontalAlign: "center" });
+ w2.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w2.addEventListener("dragdrop", handleDragDrop);
+ w2.addEventListener("dragover", handleDragOver);
+ w2.addEventListener("dragout", handleDragOut);
+
+ var w3 = new qx.ui.basic.Atom("Drop to me");
+ w3.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 100, left: 150, horizontalAlign: "center" });
+ w3.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w3.addEventListener("dragdrop", handleDragDrop);
+ w3.addEventListener("dragover", handleDragOver);
+ w3.addEventListener("dragout", handleDragOut);
+
+ var w4 = new qx.ui.basic.Atom("Drop to me");
+ w4.set({ backgroundColor: "white", border: qx.renderer.border.BorderPresets.getInstance().groove, width: 100, height: 100, top: 200, left: 150, horizontalAlign: "center" });
+ w4.setDropDataTypes([qx.util.Mime.HTML, qx.util.Mime.TEXT]);
+ w4.addEventListener("dragdrop", handleDragDrop);
+ w4.addEventListener("dragover", handleDragOver);
+ w4.addEventListener("dragout", handleDragOut);
+
+ d.add(feedbackCheckBox, w1, w2, w3, w4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/EnabledDisabled_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/EnabledDisabled_1.html
new file mode 100644
index 0000000000..002562e2da
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/EnabledDisabled_1.html
@@ -0,0 +1,230 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some test for the enable property in QxObject which will be extended from qx.ui.core.Widget and any other
+ widget which need additional handling on a change of this property. Keep in mind: Disabled QxWidgets will be ignored
+ from the QxEventManager and the qx.event.handler.FocusHandler.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.basic.Label("Basic Container");
+
+ with(w1)
+ {
+ setWidth(75);
+ setLeft(20);
+ setTop(48);
+ setHeight(50);
+ setWidth(80);
+ setBackgroundColor("#fff");
+ setColor("blue");
+ setTabIndex(1);
+ setBorder(new qx.renderer.border.Border(2, "solid", "blue"));
+ setEnabled(false);
+ };
+
+ d.add(w1);
+
+ w1.addEventListener("mouseover", function(e)
+ {
+ if( this.getEnabled() )
+ this.getElement().style.color = "red";
+ });
+
+ w1.addEventListener("mouseout", function(e)
+ {
+ if( this.getEnabled() )
+ this.getElement().style.color = "blue";
+ });
+
+ var c1t = new qx.ui.form.CheckBox("Enabled");
+ with(c1t)
+ {
+ setTop(60);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { w1.setEnabled(e.getData()); });
+ };
+
+ d.add(c1t);
+
+ //------
+ // atom
+ //------
+
+ var a1 = new qx.ui.basic.Atom("Atom", "icon/32/apps/accessories-clock.png");
+
+ with(a1)
+ {
+ setTop(190);
+ setLeft(20);
+ setEnabled(false);
+ setPadding(2, 4);
+ setBackgroundColor("#FFFF6D");
+ };
+
+ d.add(a1);
+
+ var swa1 = new qx.ui.form.CheckBox("Enabled");
+ with(swa1)
+ {
+ setTop(196);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { a1.setEnabled(e.getData()); });
+ };
+
+ d.add(swa1);
+
+ //--------
+ // button
+ //--------
+
+ var btn1 = new qx.ui.form.Button("Button No #1");
+ with(btn1)
+ {
+ setTop(244);
+ setLeft(20);
+ setEnabled(false);
+ };
+
+ d.add(btn1);
+
+ var swbtn1 = new qx.ui.form.CheckBox("Enabled");
+ with(swbtn1)
+ {
+ setTop(244);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { btn1.setEnabled(e.getData()); });
+ };
+
+ d.add(swbtn1);
+
+ //-------------
+ // radiobutton
+ //-------------
+
+ var rb1 = new qx.ui.form.RadioButton("Radio button");
+ with(rb1)
+ {
+ setTop(292);
+ setLeft(20);
+ setEnabled(false);
+ };
+
+ d.add(rb1);
+
+ var swrb1 = new qx.ui.form.CheckBox("Enabled");
+ with(swrb1)
+ {
+ setTop(292);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { rb1.setEnabled(e.getData()); });
+ };
+
+ d.add(swrb1);
+
+ //----------
+ // checkbox
+ //----------
+
+ var cb1 = new qx.ui.form.CheckBox("Checkbox");
+ with(cb1)
+ {
+ setTop(340);
+ setLeft(20);
+ setEnabled(false);
+ };
+
+ d.add(cb1);
+
+ var swcb1 = new qx.ui.form.CheckBox("Enabled");
+ with(swcb1)
+ {
+ setTop(340);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { cb1.setEnabled(e.getData()); });
+ };
+
+ d.add(swcb1);
+
+ //-----------
+ // TextField
+ //-----------
+
+ var tf1 = new qx.ui.form.TextField;
+ with(tf1)
+ {
+ setTop(388);
+ setLeft(20);
+ setEnabled(false);
+ };
+
+ d.add(tf1);
+
+ var swtf1 = new qx.ui.form.CheckBox("Enabled");
+ with(swtf1)
+ {
+ setTop(388);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { tf1.setEnabled(e.getData()); });
+ };
+
+ d.add(swtf1);
+
+ //-----------
+ // ComboBox
+ //-----------
+
+ var cb1 = new qx.ui.form.ComboBox;
+ with(cb1)
+ {
+ setTop(436);
+ setLeft(20);
+ setEnabled(false);
+ setEditable(true);
+ };
+
+ d.add(cb1);
+
+ cb1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ cb1.add(item);
+ };
+ });
+
+ var swcb1 = new qx.ui.form.CheckBox("Enabled");
+ with(swcb1)
+ {
+ setTop(436);
+ setLeft(220);
+ addEventListener("changeChecked", function(e) { cb1.setEnabled(e.getData()); });
+ };
+
+ d.add(swcb1);
+
+ });
+
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FieldSet_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FieldSet_1.html
new file mode 100644
index 0000000000..6257c2b0b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FieldSet_1.html
@@ -0,0 +1,141 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A more complex example than the previous one. Use layout managers for its content. Configured minWidth of the qx.ui.groupbox.GroupBox with "auto".</p>
+ </div>
+
+ <fieldset style="position:absolute; top:48px; left:400px; width:200px; height:100px"><legend>builtin</legend>content content content content content content content content content content content content content content content</fieldset>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var fs = new qx.ui.groupbox.GroupBox("My first Fieldset", "icon/16/apps/accessories-clock.png");
+
+ with(fs)
+ {
+ setWidth("40%");
+ setBottom(48);
+ setTop(48);
+ setLeft(20);
+
+ setMaxWidth(350);
+ setMinWidth("auto");
+ };
+
+ d.add(fs);
+
+
+
+
+ var fsl = new qx.ui.layout.VerticalBoxLayout;
+ fsl.setLeft(0);
+ fsl.setRight(0);
+ fsl.setHeight("auto");
+ fsl.setSpacing(4);
+ fs.add(fsl);
+
+
+
+
+ var r1 = new qx.ui.layout.HorizontalBoxLayout;
+ r1.setLeft(0);
+ r1.setWidth("100%");
+ r1.setHeight("auto");
+ r1.setVerticalChildrenAlign("middle");
+ fsl.add(r1);
+
+ var a1 = new qx.ui.basic.Atom("TextField 1");
+ with(a1)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i1 = new qx.ui.form.TextField;
+ with(i1)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r1.add(a1, i1);
+
+
+
+
+
+ var r2 = new qx.ui.layout.HorizontalBoxLayout;
+ r2.setLeft(0);
+ r2.setWidth("100%");
+ r2.setHeight("auto");
+ r2.setVerticalChildrenAlign("middle");
+ fsl.add(r2);
+
+ var a2 = new qx.ui.basic.Atom("TextField 2", "icon/16/apps/preferences-desktop-theme.png");
+ with(a2)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i2 = new qx.ui.form.TextField;
+ with(i2)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r2.add(a2, i2);
+
+
+
+
+
+
+ var r3 = new qx.ui.layout.HorizontalBoxLayout;
+ r3.setLeft(0);
+ r3.setWidth("100%");
+ r3.setHeight("auto");
+ r3.setVerticalChildrenAlign("middle");
+ fsl.add(r3);
+
+ var a3 = new qx.ui.basic.Atom("TextField 3");
+ with(a3)
+ {
+ setLeft(0);
+ setWidth("40%");
+ setHorizontalChildrenAlign("left");
+ };
+
+ var i3 = new qx.ui.form.TextField;
+ with(i3)
+ {
+ setRight(0);
+ setWidth("60%");
+ };
+
+ r3.add(a3, i3);
+
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Fields_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Fields_1.html
new file mode 100644
index 0000000000..c448ae7694
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Fields_1.html
@@ -0,0 +1,179 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the setting of background color of form fields.</p>
+ </div>
+
+ <script type="text/javascript">
+ function changeBackgrounds(parent, color)
+ {
+ var children = parent.getChildren();
+ var child;
+
+ for (var i=0; i<children.length; i++)
+ {
+ child = children[i];
+
+ switch(child.classname)
+ {
+ case 'qx.ui.form.TextArea':
+ case 'qx.ui.form.TextField':
+ case 'qx.ui.form.ComboBox':
+ case 'qx.ui.form.PasswordField':
+ child.setBackgroundColor(color);
+ break;
+ };
+ };
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function textChange(e) {
+ this.debug("Text changed: " + e.getData());
+ }
+
+ var t1 = new qx.ui.form.TextField;
+ t1.setValue("textfield");
+ t1.setTop(48);
+ t1.setLeft(20);
+
+ t1.addEventListener("changeText", textChange);
+ t1.addEventListener("input", function(e) {
+ this.debug("Input: " + e.getData());
+ });
+
+ d.add(t1);
+
+
+
+
+ var t2 = new qx.ui.form.PasswordField;
+ t2.setValue("passwordfield");
+ t2.setTop(80);
+ t2.setLeft(20);
+
+ t2.addEventListener("changeText", textChange);
+
+ d.add(t2);
+
+
+ var t3 = new qx.ui.form.TextArea;
+ t3.setValue("textarea");
+ t3.setTop(110);
+ t3.setLeft(20);
+ t3.setWidth(300);
+ t3.setHeight(60);
+
+ t3.addEventListener("changeText", textChange);
+
+ d.add(t3);
+
+
+ var t4 = new qx.ui.form.TextField;
+ t4.setValue("textfield");
+ t4.setTop(200);
+ t4.setLeft(20);
+ t4.setWidth(200);
+ t4.setMaxLength(100);
+ t4.setReadOnly(true);
+
+ t4.addEventListener("changeText", textChange);
+
+ d.add(t4);
+
+
+ var t5 = new qx.ui.form.TextField;
+ t5.setValue("You are foo!");
+ t5.setTop(240);
+ t5.setLeft(20);
+
+ t5.addEventListener("changeText", textChange);
+
+ d.add(t5);
+
+ var c1 = new qx.ui.form.ComboBox;
+ c1.setTop(280);
+ c1.setLeft(20);
+
+ c1.addEventListener("beforeInitialOpen", function(e)
+ {
+ var item;
+
+ for(var i=1; i<=30; i++)
+ {
+ item = new qx.ui.form.ListItem("Item No " + i);
+ !(i % 10) && (item.setEnabled(false));
+ c1.add(item);
+ };
+ });
+
+ // this does not work here (if there is no content)
+ c1.setSelected(c1.getList().getFirstChild());
+
+ c1.addEventListener("changeValue", function(e) {
+ this.debug("New value: " + e.getData());
+ });
+
+ c1.addEventListener("changeSelected", function(e) {
+ this.debug("New selected: " + e.getData());
+ });
+
+
+
+
+ var b1 = new qx.ui.form.CheckBox("Editable");
+
+ b1.set({ top: 282, left: 150 });
+
+ b1.addEventListener("changeChecked", function(e) {
+ c1.setEditable(e.getData());
+ });
+
+
+ var b2 = new qx.ui.form.Button("red", "icon/16/actions/format-color.png"); b2.set({left:10,top:10});
+ var b3 = new qx.ui.form.Button("green", "icon/16/actions/format-color.png"); b3.set({left:10,top:40});
+ var b4 = new qx.ui.form.Button("white", "icon/16/actions/format-color.png"); b4.set({left:10,top:70});
+
+ b2.addEventListener("click", function(e) { changeBackgrounds(d,this.getLabel()); });
+ b3.addEventListener("click", function(e) { changeBackgrounds(d,this.getLabel()); });
+ b4.addEventListener("click", function(e) { changeBackgrounds(d,this.getLabel()); });
+
+ var fs = new qx.ui.groupbox.GroupBox("BackgroundColor");
+ fs.set({left:400,top:50,width:150,height:"auto"});
+ fs.add(b2,b3,b4);
+
+
+
+ d.add(c1, b1, fs);
+
+
+
+
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 20, 320);
+
+
+
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_1.html
new file mode 100644
index 0000000000..da53826fcc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_1.html
@@ -0,0 +1,319 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.FlowLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+
+ var flow1 = new qx.ui.layout.FlowLayout;
+
+ flow1.setTop(48);
+ flow1.setLeft(20);
+ flow1.setRight(335);
+ flow1.setBottom(200);
+
+ // flow1.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ // flow1.setPadding(8);
+
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+
+ // flow1.setHorizontalChildrenAlign("right");
+ // flow1.setVerticalChildrenAlign("bottom");
+
+ // flow1.setReverseChildrenOrder(true);
+
+ d.add(flow1);
+
+
+
+ var w1 = new qx.ui.basic.Terminator;
+
+ w1.setBackgroundColor("orange");
+ w1.setWidth(300);
+ w1.setHeight(20);
+
+
+ var w2 = new qx.ui.basic.Terminator;
+
+ w2.setBackgroundColor("blue");
+ w2.setWidth(200);
+ w2.setHeight(50);
+
+
+ var w3 = new qx.ui.basic.Terminator;
+
+ w3.setBackgroundColor("green");
+ w3.setWidth(100);
+ w3.setHeight(150);
+ w3.setMarginLeft(20);
+
+ var w4 = new qx.ui.basic.Terminator;
+
+ w4.setBackgroundColor("purple");
+ w4.setWidth("30%");
+ w4.setHeight("10%");
+
+ var w5 = new qx.ui.basic.Terminator;
+
+ w5.setBackgroundColor("yellow");
+ w5.setWidth(50);
+ w5.setHeight(80);
+
+ var w6 = new qx.ui.basic.Terminator;
+
+ w6.setBackgroundColor("red");
+ w6.setWidth(400);
+ w6.setHeight(50);
+
+ var i1 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+ var i2 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ i2.setResizeToInner(true);
+
+ var c1 = new qx.ui.basic.Label("Hello World");
+ var c2 = new qx.ui.basic.Label("<ol><li>Simple HTML List</li><li>with one</li><li>and another item</li></ol>");
+
+ var a1 = new qx.ui.form.Button("Press", "icon/16/apps/preferences-desktop-multimedia.png");
+
+
+ flow1.add(w1, i1, w2, w3, a1, c2, w4, i2, w5, c1, w6);
+
+
+
+
+
+ w1.addEventListener("click", function(e) {
+ this.setMaxWidth(this.getMaxWidth() == 50 ? null : 50);
+ });
+
+ w2.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 200)
+ {
+ this.setWidth(100);
+ this.setHeight(200);
+ }
+ else
+ {
+ this.setWidth(200);
+ this.setHeight(50);
+ };
+ });
+
+ i1.addEventListener("click", function(e) {
+ this.setSource(this.getSource() == "icon/32/apps/accessories-clock.png" ? "icon/128/apps/accessories-clock.png" : "icon/32/apps/accessories-clock.png");
+ });
+
+ i2.addEventListener("click", function(e)
+ {
+ this.setWidth(this.getWidth() == "auto" ? 128 : "auto");
+ this.setHeight(this.getHeight() == "auto" ? 128 : "auto");
+ });
+
+ c1.addEventListener("click", function(e) {
+ this.setHtml(this.getHtml() == "Hello World" ? "Yeah, qooxdoo is great" : "Hello World");
+ });
+
+
+
+
+ // *************************************************************
+
+ var controlBox = new qx.ui.layout.VerticalBoxLayout;
+
+ controlBox.setLeft(20);
+ controlBox.setBottom(48);
+ controlBox.setRight(335);
+ controlBox.setWidth(null);
+ controlBox.setHeight("auto");
+ controlBox.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ controlBox.setSpacing(4);
+ controlBox.setPadding(8);
+
+ d.add(controlBox);
+
+
+
+
+ var cc0 = new qx.ui.basic.Label("Spacing: ");
+ cc0.setWidth(50);
+
+ var bc0 = new qx.ui.form.Button("0x0", "icon/16/actions/dialog-ok.png");
+ var bc1 = new qx.ui.form.Button("4x4", "icon/16/actions/dialog-ok.png");
+ var bc2 = new qx.ui.form.Button("8x8", "icon/16/actions/dialog-ok.png");
+ var bc3 = new qx.ui.form.Button("20x20", "icon/16/actions/dialog-ok.png");
+ var bc4 = new qx.ui.form.Button("0x10", "icon/16/actions/dialog-ok.png");
+ var bc5 = new qx.ui.form.Button("10x0", "icon/16/actions/dialog-ok.png");
+
+ bc0.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(0);
+ });
+
+ bc1.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+ });
+
+ bc2.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(8);
+ flow1.setVerticalSpacing(8);
+ });
+
+ bc3.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(20);
+ flow1.setVerticalSpacing(20);
+ });
+
+ bc4.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(10);
+ });
+
+ bc5.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(10);
+ flow1.setVerticalSpacing(0);
+ });
+
+ var hc0 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc0.add(cc0, bc0, bc1, bc2, bc3, bc4, bc5);
+ hc0.setVerticalChildrenAlign("middle");
+ hc0.setHeight("auto");
+
+ controlBox.add(hc0);
+
+
+
+
+
+
+ var cr0 = new qx.ui.basic.Label("Order: ");
+ cr0.setWidth(50);
+
+ var br0 = new qx.ui.form.Button("Default", "icon/16/actions/dialog-ok.png");
+ var br1 = new qx.ui.form.Button("Reversed", "icon/16/actions/dialog-ok.png");
+
+ br0.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(false);
+ });
+
+ br1.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(true);
+ });
+
+
+
+ var hc1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc1.add(cr0, br0, br1);
+ hc1.setVerticalChildrenAlign("middle");
+ hc1.setHeight("auto");
+
+ controlBox.add(hc1);
+
+
+
+
+
+
+
+ var cr0 = new qx.ui.basic.Label("Align: ");
+ cr0.setWidth(50);
+
+ var br0 = new qx.ui.form.Button("Top", "icon/16/actions/dialog-ok.png");
+ var br1 = new qx.ui.form.Button("Bottom", "icon/16/actions/dialog-ok.png");
+ var br2 = new qx.ui.form.Button("Left", "icon/16/actions/dialog-ok.png");
+ var br3 = new qx.ui.form.Button("Right", "icon/16/actions/dialog-ok.png");
+
+ br0.addEventListener("execute", function(e) {
+ flow1.setVerticalChildrenAlign("top");
+ });
+
+ br1.addEventListener("execute", function(e) {
+ flow1.setVerticalChildrenAlign("bottom");
+ });
+
+ br2.addEventListener("execute", function(e) {
+ flow1.setHorizontalChildrenAlign("left");
+ });
+
+ br3.addEventListener("execute", function(e) {
+ flow1.setHorizontalChildrenAlign("right");
+ });
+
+
+ var hc1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc1.add(cr0, br0, br1, br2, br3);
+ hc1.setVerticalChildrenAlign("middle");
+ hc1.setHeight("auto");
+
+ controlBox.add(hc1);
+
+
+
+
+
+
+
+ var ca0 = new qx.ui.basic.Label("Children: ");
+ ca0.setWidth(50);
+
+ var ba0 = new qx.ui.form.Button("New Atom", "icon/16/actions/dialog-ok.png");
+ var ba1 = new qx.ui.form.Button("New Image", "icon/16/actions/dialog-ok.png");
+ var ba2 = new qx.ui.form.Button("New Atom to #3", "icon/16/actions/dialog-ok.png");
+ var ba3 = new qx.ui.form.Button("New Image to #6", "icon/16/actions/dialog-ok.png");
+ var ba4 = new qx.ui.form.Button("Remove First", "icon/16/actions/dialog-ok.png");
+
+ ba0.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Atom("New Atom", "icon/16/places/services.png"));
+ });
+
+ ba1.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Image("icon/64/apps/accessories-disk-usage.png"));
+ });
+
+ ba2.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Atom("New Atom", "icon/16/apps/preferences-desktop-multimedia.png"), 3);
+ });
+
+ ba3.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Image("icon/64/actions/format-color.png"), 6);
+ });
+
+ ba4.addEventListener("execute", function(e) {
+ flow1.remove(flow1.getFirstChild());
+ });
+
+ var ha1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ ha1.add(ca0, ba0, ba1, ba2, ba3, ba4);
+ ha1.setVerticalChildrenAlign("middle");
+ ha1.setHeight("auto");
+
+ controlBox.add(ha1);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_2.html
new file mode 100644
index 0000000000..79c897b1f4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_2.html
@@ -0,0 +1,193 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.FlowLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var flow1 = new qx.ui.layout.FlowLayout;
+
+ flow1.setTop(48);
+ flow1.setLeft(20);
+ flow1.setRight(335);
+ flow1.setBottom(200);
+
+ // flow1.setBorder(qx.renderer.border.BorderPresets.getInstance().ridge);
+ // flow1.setPadding(8);
+
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+
+ // flow1.setOverflow("scrollY");
+
+ d.add(flow1);
+
+ for (var i=0, witer; i<100; i++)
+ {
+ witer = new qx.ui.basic.Terminator;
+
+ witer.setBackgroundColor("white");
+ witer.setWidth(50);
+ witer.setHeight(50);
+
+ flow1.add(witer);
+ };
+
+
+ // *************************************************************
+
+ var controlBox = new qx.ui.layout.VerticalBoxLayout;
+
+ controlBox.setLeft(20);
+ controlBox.setBottom(48);
+ controlBox.setRight(335);
+ controlBox.setWidth(null);
+ controlBox.setHeight("auto");
+ controlBox.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ controlBox.setSpacing(4);
+ controlBox.setPadding(8);
+
+ d.add(controlBox);
+
+
+
+
+ var cc0 = new qx.ui.basic.Label("Spacing: ");
+ cc0.setWidth(50);
+
+ var bc0 = new qx.ui.form.Button("0x0", "icon/16/actions/dialog-ok.png");
+ var bc1 = new qx.ui.form.Button("4x4", "icon/16/actions/dialog-ok.png");
+ var bc2 = new qx.ui.form.Button("8x8", "icon/16/actions/dialog-ok.png");
+ var bc3 = new qx.ui.form.Button("20x20", "icon/16/actions/dialog-ok.png");
+ var bc4 = new qx.ui.form.Button("0x10", "icon/16/actions/dialog-ok.png");
+ var bc5 = new qx.ui.form.Button("10x0", "icon/16/actions/dialog-ok.png");
+
+ bc0.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(0);
+ });
+
+ bc1.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+ });
+
+ bc2.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(8);
+ flow1.setVerticalSpacing(8);
+ });
+
+ bc3.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(20);
+ flow1.setVerticalSpacing(20);
+ });
+
+ bc4.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(10);
+ });
+
+ bc5.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(10);
+ flow1.setVerticalSpacing(0);
+ });
+
+ var hc0 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc0.add(cc0, bc0, bc1, bc2, bc3, bc4, bc5);
+ hc0.setVerticalChildrenAlign("middle");
+ hc0.setHeight("auto");
+
+ controlBox.add(hc0);
+
+
+
+
+
+
+ var cr0 = new qx.ui.basic.Label("Order: ");
+ cr0.setWidth(50);
+
+ var br0 = new qx.ui.form.Button("Default", "icon/16/actions/dialog-ok.png");
+ var br1 = new qx.ui.form.Button("Reversed", "icon/16/actions/dialog-ok.png");
+
+ br0.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(false);
+ });
+
+ br1.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(true);
+ });
+
+
+
+ var hc1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc1.add(cr0, br0, br1);
+ hc1.setVerticalChildrenAlign("middle");
+ hc1.setHeight("auto");
+
+ controlBox.add(hc1);
+
+
+
+
+
+
+
+ var ca0 = new qx.ui.basic.Label("Children: ");
+ ca0.setWidth(50);
+
+ var ba0 = new qx.ui.form.Button("New Atom", "icon/16/actions/dialog-ok.png");
+ var ba1 = new qx.ui.form.Button("New Image", "icon/16/actions/dialog-ok.png");
+ var ba2 = new qx.ui.form.Button("New Atom to #3", "icon/16/actions/dialog-ok.png");
+ var ba3 = new qx.ui.form.Button("New Image to #6", "icon/16/actions/dialog-ok.png");
+ var ba4 = new qx.ui.form.Button("Remove First", "icon/16/actions/dialog-ok.png");
+
+ ba0.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Atom("New Atom", "icon/16/places/services.png"));
+ });
+
+ ba1.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Image("icon/64/apps/accessories-disk-usage.png"));
+ });
+
+ ba2.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Atom("New Atom", "icon/16/apps/preferences-desktop-multimedia.png"), 3);
+ });
+
+ ba3.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Image("icon/64/actions/format-color.png"), 6);
+ });
+
+ ba4.addEventListener("execute", function(e) {
+ flow1.remove(flow1.getFirstChild());
+ });
+
+ var ha1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ ha1.add(ca0, ba0, ba1, ba2, ba3, ba4);
+ ha1.setVerticalChildrenAlign("middle");
+ ha1.setHeight("auto");
+
+ controlBox.add(ha1);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_3.html
new file mode 100644
index 0000000000..84d84ce1e5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FlowLayout_3.html
@@ -0,0 +1,277 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.FlowLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+
+ var flow1 = new qx.ui.layout.FlowLayout;
+
+ flow1.setTop(48);
+ flow1.setLeft(20);
+ flow1.setRight(335);
+ // flow1.setWidth("auto");
+ flow1.setHeight("auto");
+
+ flow1.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ flow1.setPadding(8);
+
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+
+ // flow1.setReverseChildrenOrder(true);
+
+ d.add(flow1);
+
+
+
+ var w1 = new qx.ui.basic.Terminator;
+
+ w1.setBackgroundColor("orange");
+ w1.setWidth(300);
+ w1.setHeight(20);
+
+
+ var w2 = new qx.ui.basic.Terminator;
+
+ w2.setBackgroundColor("blue");
+ w2.setWidth(200);
+ w2.setHeight(50);
+
+
+ var w3 = new qx.ui.basic.Terminator;
+
+ w3.setBackgroundColor("green");
+ w3.setWidth(100);
+ w3.setHeight(150);
+ w3.setMarginLeft(20);
+
+ var w4 = new qx.ui.basic.Terminator;
+
+ w4.setBackgroundColor("purple");
+ w4.setWidth(100);
+ w4.setHeight(20);
+
+ var w5 = new qx.ui.basic.Terminator;
+
+ w5.setBackgroundColor("yellow");
+ w5.setWidth(50);
+ w5.setHeight(80);
+
+ var w6 = new qx.ui.basic.Terminator;
+
+ w6.setBackgroundColor("red");
+ w6.setWidth(400);
+ w6.setHeight(50);
+
+ var i1 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+ var i2 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ i2.setResizeToInner(true);
+
+ var c1 = new qx.ui.basic.Label("Hello World");
+ var c2 = new qx.ui.basic.Label("<ol><li>Simple HTML List</li><li>with one</li><li>and another item</li></ol>");
+
+ var a1 = new qx.ui.form.Button("Press", "icon/16/apps/preferences-desktop-multimedia.png");
+
+
+ flow1.add(w1, i1, w2, w3, a1, c2, w4, i2, w5, c1, w6);
+
+
+
+
+
+ w1.addEventListener("click", function(e) {
+ this.setMaxWidth(this.getMaxWidth() == 50 ? null : 50);
+ });
+
+ w2.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 200)
+ {
+ this.setWidth(100);
+ this.setHeight(200);
+ }
+ else
+ {
+ this.setWidth(200);
+ this.setHeight(50);
+ };
+ });
+
+ i1.addEventListener("click", function(e) {
+ this.setSource(this.getSource() == "icon/32/apps/accessories-clock.png" ? "icon/128/apps/accessories-clock.png" : "icon/32/apps/accessories-clock.png");
+ });
+
+ i2.addEventListener("click", function(e)
+ {
+ this.setWidth(this.getWidth() == "auto" ? 128 : "auto");
+ this.setHeight(this.getHeight() == "auto" ? 128 : "auto");
+ });
+
+ c1.addEventListener("click", function(e) {
+ this.setHtml(this.getHtml() == "Hello World" ? "Yeah, qooxdoo is great" : "Hello World");
+ });
+
+
+
+
+ // *************************************************************
+
+ var controlBox = new qx.ui.layout.VerticalBoxLayout;
+
+ controlBox.setLeft(20);
+ controlBox.setBottom(48);
+ controlBox.setRight(335);
+ controlBox.setHeight("auto");
+ controlBox.setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ controlBox.setSpacing(4);
+ controlBox.setPadding(8);
+
+ d.add(controlBox);
+
+
+
+
+ var cc0 = new qx.ui.basic.Label("Spacing: ");
+ cc0.setWidth(50);
+
+ var bc0 = new qx.ui.form.Button("0x0", "icon/16/actions/dialog-ok.png");
+ var bc1 = new qx.ui.form.Button("4x4", "icon/16/actions/dialog-ok.png");
+ var bc2 = new qx.ui.form.Button("8x8", "icon/16/actions/dialog-ok.png");
+ var bc3 = new qx.ui.form.Button("20x20", "icon/16/actions/dialog-ok.png");
+ var bc4 = new qx.ui.form.Button("0x10", "icon/16/actions/dialog-ok.png");
+ var bc5 = new qx.ui.form.Button("10x0", "icon/16/actions/dialog-ok.png");
+
+ bc0.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(0);
+ });
+
+ bc1.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(4);
+ flow1.setVerticalSpacing(4);
+ });
+
+ bc2.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(8);
+ flow1.setVerticalSpacing(8);
+ });
+
+ bc3.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(20);
+ flow1.setVerticalSpacing(20);
+ });
+
+ bc4.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(0);
+ flow1.setVerticalSpacing(10);
+ });
+
+ bc5.addEventListener("execute", function(e) {
+ flow1.setHorizontalSpacing(10);
+ flow1.setVerticalSpacing(0);
+ });
+
+ var hc0 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc0.add(cc0, bc0, bc1, bc2, bc3, bc4, bc5);
+ hc0.setVerticalChildrenAlign("middle");
+ hc0.setHeight("auto");
+
+ controlBox.add(hc0);
+
+
+
+
+
+
+ var cr0 = new qx.ui.basic.Label("Order: ");
+ cr0.setWidth(50);
+
+ var br0 = new qx.ui.form.Button("Default", "icon/16/actions/dialog-ok.png");
+ var br1 = new qx.ui.form.Button("Reversed", "icon/16/actions/dialog-ok.png");
+
+ br0.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(false);
+ });
+
+ br1.addEventListener("execute", function(e) {
+ flow1.setReverseChildrenOrder(true);
+ });
+
+
+
+ var hc1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hc1.add(cr0, br0, br1);
+ hc1.setVerticalChildrenAlign("middle");
+ hc1.setHeight("auto");
+
+ controlBox.add(hc1);
+
+
+
+
+
+
+
+ var ca0 = new qx.ui.basic.Label("Children: ");
+ ca0.setWidth(50);
+
+ var ba0 = new qx.ui.form.Button("New Atom", "icon/16/actions/dialog-ok.png");
+ var ba1 = new qx.ui.form.Button("New Image", "icon/16/actions/dialog-ok.png");
+ var ba2 = new qx.ui.form.Button("New Atom to #3", "icon/16/actions/dialog-ok.png");
+ var ba3 = new qx.ui.form.Button("New Image to #6", "icon/16/actions/dialog-ok.png");
+ var ba4 = new qx.ui.form.Button("Remove First", "icon/16/actions/dialog-ok.png");
+
+ ba0.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Atom("New Atom", "icon/16/places/services.png"));
+ });
+
+ ba1.addEventListener("execute", function(e) {
+ flow1.add(new qx.ui.basic.Image("icon/64/apps/accessories-disk-usage.png"));
+ });
+
+ ba2.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Atom("New Atom", "icon/16/apps/preferences-desktop-multimedia.png"), 3);
+ });
+
+ ba3.addEventListener("execute", function(e) {
+ flow1.addAt(new qx.ui.basic.Image("icon/64/actions/format-color.png"), 6);
+ });
+
+ ba4.addEventListener("click", function(e) {
+ flow1.remove(flow1.getFirstChild());
+ });
+
+ var ha1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ ha1.add(ca0, ba0, ba1, ba2, ba3, ba4);
+ ha1.setVerticalChildrenAlign("middle");
+ ha1.setHeight("auto");
+
+ controlBox.add(ha1);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FocusManager_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FocusManager_1.html
new file mode 100644
index 0000000000..772718afe8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FocusManager_1.html
@@ -0,0 +1,108 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests for some of the most used properties of qx.ui.basic.Terminator (coordinates, dimensions, backgroundColor, opacity, ...).</p>
+ <p>Also here are the first test of some widgets which extend qx.ui.basic.Terminator: qx.ui.form.TextField and qx.ui.form.PasswordField. These extended
+ widgets also interacts like the basic QxTerminators with the qx.event.handler.FocusHandler.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Terminator;
+ d.add(c1);
+
+ c1.setTabIndex(1);
+ c1.setHeight(60);
+ c1.setWidth(60);
+ c1.setTop(48);
+ c1.setLeft(20);
+ c1.setBackgroundColor("blue");
+ c1.setOpacity(0.5);
+
+ c1.addEventListener("keydown", function(e){
+ if (e.getKeyIdentifier() != "Space") {
+ return;
+ };
+
+ this.setBackgroundColor("rgb(" + Math.round(Math.random()*255) + "," + Math.round(Math.random()*255) + "," + Math.round(Math.random()*255) + ")");
+ });
+
+
+ var c2 = new qx.ui.basic.Terminator;
+ d.add(c2);
+
+ c2.setTabIndex(2);
+ c2.setHeight(60);
+ c2.setWidth(60);
+ c2.setTop(68);
+ c2.setLeft(40);
+ c2.setBackgroundColor("orange");
+ c2.setOpacity(0.5);
+
+ c2.addEventListener("keydown", function(e){
+ if (e.getKeyIdentifier() != "Space") {
+ return;
+ };
+
+ this.setBackgroundColor("rgb(" + Math.round(Math.random()*255) + "," + Math.round(Math.random()*255) + "," + Math.round(Math.random()*255) + ")");
+ });
+
+
+ var t1 = new qx.ui.form.TextField;
+ t1.setValue("textfield");
+ t1.setTop(140);
+ t1.setLeft(20);
+ t1.setTabIndex(3);
+
+ d.add(t1);
+
+
+
+ var t2 = new qx.ui.form.PasswordField;
+ t2.setValue("passwordfield");
+ t2.setTop(170);
+ t2.setLeft(20);
+ t2.setTabIndex(4);
+
+ d.add(t2);
+
+
+ var t3 = new qx.ui.form.TextArea;
+ t3.setValue("textarea");
+ t3.setTop(200);
+ t3.setLeft(20);
+ t3.setWidth(300);
+ t3.setHeight(60);
+ t3.setTabIndex(5);
+
+ d.add(t3);
+
+
+ var t4 = new qx.ui.form.TextField;
+ t4.setValue("textfield");
+ t4.setTop(300);
+ t4.setLeft(20);
+ t4.setWidth(200);
+ t4.setMaxLength(100);
+ t4.setReadOnly(true);
+ t4.setTabIndex(6);
+
+ d.add(t4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Font_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Font_1.html
new file mode 100644
index 0000000000..e63a0fe879
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Font_1.html
@@ -0,0 +1,63 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.renderer.font.Font object for QxLabels inside QxAtoms.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var f1 = new qx.ui.layout.CanvasLayout;
+
+ var a1 = new qx.ui.basic.Atom("Hello World");
+
+ var b1 = new qx.ui.form.Button("Serif, 16px");
+ var b2 = new qx.ui.form.Button("Serif, 24px");
+ var b3 = new qx.ui.form.Button("Sans Serif, 16px");
+ var b4 = new qx.ui.form.Button("Sans Serif, 24px");
+
+ b1.addEventListener("execute", function() {
+ a1.getLabelObject().setFont("16px serif");
+ });
+
+ b2.addEventListener("execute", function() {
+ a1.getLabelObject().setFont("24px serif");
+ });
+
+ b3.addEventListener("execute", function() {
+ a1.getLabelObject().setFont("16px sans-serif");
+ });
+
+ b4.addEventListener("execute", function() {
+ a1.getLabelObject().setFont("24px sans-serif");
+ });
+
+ f1.setDimension("auto", "auto");
+ f1.setLocation(20, 48);
+ f1.setBorder("1px solid red");
+
+ a1.setLocation(0, 0);
+ a1.getLabelObject().setFont("16px serif");
+
+ b1.setLocation(200, 48);
+ b2.setLocation(200, 78);
+ b3.setLocation(200, 108);
+ b4.setLocation(200, 138);
+
+ f1.add(a1);
+ qx.ui.core.ClientDocument.getInstance().add(f1, b1, b2, b3, b4);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FormUtils_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FormUtils_1.html
new file mode 100644
index 0000000000..8aa4c89ad7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/FormUtils_1.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.html.Form</p>
+ </div>
+
+ <form id="mainform" style="position: absolute; left:300px; top: 48px">
+ <fieldset>
+ <legend>Basics</legend>
+ <input type="text" name="givenname" value="Given Name"/>
+ <br/>
+ <input type="text" name="name" value="Name"/>
+ <br/>
+ <input type="password" name="password" value="Password"/>
+ </fieldset>
+ <br/>
+ <input type="checkbox" checked="checked" name="human" id="human" value="true"/>
+ <label for="human">Human</label>
+ <br/>
+ <input type="checkbox" name="old" id="old" value="true"/>
+ <label for="old">Old</label>
+ <br/>
+ <input type="radio" name="gender" checked="checked" value="male" id="male"/>
+ <label for="male">Male</label">
+ <br/>
+ <input type="radio" name="gender" value="female" id="female"/>
+ <label for="female">Female</label">
+ <br/>
+ <label for="color">Favorite Color (Single)</label>
+ <br/>
+ <select name="color" id="color">
+ <option value="red">Red</option>
+ <option value="blue">Blue</option>
+ <option value="green">Green</option>
+ <option value="yellow">Yellow</option>
+ <option value="black">Black</option>
+ <option value="white">White</option>
+ </select>
+ <br/>
+ <label for="pets">Your Pets (Multiple)</label>
+ <br/>
+ <select name="pets" id="pets" multiple="multiple" size="3">
+ <option value="dog">Dog</option>
+ <option value="cat">Cat</option>
+ <option value="bird">Bird</option>
+ <option value="rabbit">Rabbit</option>
+ <option value="hamster">Hamster</option>
+ </select>
+ <br/>
+ <input type="submit" value="Send Data"/>
+ </form>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var btn = new qx.ui.form.Button("Encode");
+ btn.setLocation(20, 48);
+ qx.ui.core.ClientDocument.getInstance().add(btn);
+
+ var area = new qx.ui.form.TextArea;
+ area.setLocation(20, 100);
+ area.setDimension(200, 100);
+ qx.ui.core.ClientDocument.getInstance().add(area);
+
+ qx.html.Form.bind(document.getElementById("mainform"), function() {
+ alert("Submitting Form Replacement...");
+ });
+
+ btn.addEventListener("execute", function() {
+ area.setValue(qx.html.Form.encodeForm(document.getElementById("mainform")));
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Gallery_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Gallery_2.html
new file mode 100644
index 0000000000..3a3e2fb9a9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Gallery_2.html
@@ -0,0 +1,135 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test file for qx.ui.embed.Gallery</p>
+ </div>
+
+ <style type="text/css">
+ .qx_ui_embed_Gallery .galleryFrame{
+ padding: 2px;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell{
+ border: 1px solid #444;
+ background: #fff;
+ margin: 2px;
+ float: left;
+ overflow: hidden;
+
+ font-family: Tahoma, Verdana, sans-serif;
+ font-size: 10px;
+
+ cursor: default;
+
+ -moz-user-select: none;
+ user-select: none;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell img{
+ vertical-align: bottom;
+ display: block;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryTitle,
+ .qx_ui_embed_Gallery .galleryCell .galleryComment{
+ background: #eee;
+ padding: 3px 6px;
+ text-align: center;
+ cursor: default;
+ overflow: hidden;
+ white-space: nowrap;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryTitle{
+ border-bottom: 1px solid #aaa;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryComment{
+ border-top: 1px solid #aaa;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected{
+ background: #DCE8F6;
+ border: 1px solid #2760A1;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle,
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ background: #9BBFE7;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle{
+ border-bottom: 1px dotted #2760A1;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ border-top: 1px dotted #2760A1;
+ }
+
+
+ /* customize */
+
+ .qx_ui_embed_Gallery{
+ background: #fff;
+ padding: 5px;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell{
+ margin: 5px;
+ border: 1px solid #DCDFE8;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected{
+ border: 1px solid #5E6474;
+ background: #DADDE4;
+ }
+ </style>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var galleryList = [];
+
+ for (var i=0; i<100; i++)
+ {
+ galleryList.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 64,
+ thumbHeight : 64,
+ title : "gohome.png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment",
+ id : "7686191121780974-10682",
+ src : qx.manager.object.AliasManager.getInstance().resolvePath("icon/64/devices/video-display.png")
+ });
+ };
+
+ var gallery = new qx.ui.embed.Gallery(galleryList);
+
+ gallery.setLeft(20);
+ gallery.setRight(335);
+ gallery.setTop(48);
+ gallery.setBottom(48);
+ gallery.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ gallery.setShowTitle(false);
+ gallery.setShowComment(false);
+ gallery.setDecorHeight(0);
+
+ qx.ui.core.ClientDocument.getInstance().add(gallery);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Gallery_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Gallery_3.html
new file mode 100644
index 0000000000..0a910697a7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Gallery_3.html
@@ -0,0 +1,178 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test file for qx.ui.embed.Gallery, now with QxToolTips assigned.</p>
+ <button onclick="updateAdd()">Update Add</button>
+ </div>
+
+ <style type="text/css">
+ .qx_ui_embed_Gallery .galleryFrame{
+ padding: 2px;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell{
+ border: 1px solid #444;
+ background: #fff;
+ margin: 2px;
+ float: left;
+ overflow: hidden;
+
+ font-family: Tahoma, Verdana, sans-serif;
+ font-size: 10px;
+
+ cursor: default;
+
+ -moz-user-select: none;
+ user-select: none;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell img{
+ vertical-align: bottom;
+ display: block;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryTitle,
+ .qx_ui_embed_Gallery .galleryCell .galleryComment{
+ background: #eee;
+ padding: 3px 6px;
+ text-align: center;
+ cursor: default;
+ overflow: hidden;
+ white-space: nowrap;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryTitle{
+ border-bottom: 1px solid #aaa;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell .galleryComment{
+ border-top: 1px solid #aaa;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected{
+ background: #DCE8F6;
+ border: 1px solid #2760A1;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle,
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ background: #9BBFE7;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryTitle{
+ border-bottom: 1px dotted #2760A1;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected .galleryComment{
+ border-top: 1px dotted #2760A1;
+ }
+
+
+ /* customize */
+
+ .qx_ui_embed_Gallery{
+ background: #fff;
+ padding: 5px;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell{
+ margin: 5px;
+ border: 1px solid #DCDFE8;
+ }
+
+ .qx_ui_embed_Gallery .galleryCell-Selected{
+ border: 1px solid #5E6474;
+ background: #DADDE4;
+ }
+ </style>
+
+ <script type="text/javascript">
+ var updateAdd;
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var galleryList = [];
+
+ for (var i=0; i<100; i++)
+ {
+ galleryList.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 64,
+ thumbHeight : 64,
+ title : "gohome" + i + ".png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment: " + i,
+ id : "7686191121780974-10682-" + i,
+ src : qx.manager.object.AliasManager.getInstance().resolvePath("icon/64/apps/graphics-image-viewer.png")
+ });
+ };
+
+ var gallery = new qx.ui.embed.Gallery(galleryList);
+
+ gallery.setLeft(20);
+ gallery.setRight(335);
+ gallery.setTop(48);
+ gallery.setBottom(48);
+ gallery.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ gallery.setShowTitle(false);
+ gallery.setShowComment(false);
+ gallery.setDecorHeight(0);
+
+ qx.ui.core.ClientDocument.getInstance().add(gallery);
+
+
+
+ var toolTip = new qx.ui.popup.ToolTip("Photo Details", "icon/32/actions/format-color.png");
+ gallery.setToolTip(toolTip);
+
+ gallery.addEventListener("beforeToolTipAppear", function(e)
+ {
+ var vNode = e.getData();
+ var vEntry = this.getEntryByNode(vNode);
+
+ toolTip.getAtom().setLabel("<strong>" + vEntry.title + "</strong><br/>" + vEntry.comment);
+
+ this.setToolTip(toolTip);
+ });
+
+
+ updateAdd = function()
+ {
+ var galleryListUpdated = qx.lang.Array.copy(gallery.getList());
+
+ for (var i=galleryListUpdated.length, j=i+10; i<j; i++)
+ {
+ galleryListUpdated.push({
+ display : "bmzN9ci5",
+ width : 350,
+ height : 350,
+ thumbWidth : 64,
+ thumbHeight : 64,
+ title : "gohome" + i + ".png",
+ timestamp : Math.random().toString(),
+ comment : "Cool Comment: " + i,
+ id : "7686191121780974-10682-" + i,
+ src : qx.manager.object.AliasManager.getInstance().resolvePath("icon/64/actions/format-color.png")
+ });
+ };
+
+ gallery.addFromUpdatedList(galleryListUpdated);
+ };
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Generate_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Generate_1.html
new file mode 100644
index 0000000000..20d91f45ce
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Generate_1.html
@@ -0,0 +1,267 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.basic.Atom is the parent class for buttons, menu entries, icons, checkboxes. While you can do,
+ you usually don't have to instantiate qx.ui.basic.Atom directly.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.lang.Array.merge = function(firstArray, secondArray)
+ {
+ var combinedArray = [], currentValue, indexInSecond;
+
+ for (var i=0, l=firstArray.length; i<l; i++) {
+ (indexInSecond = secondArray.indexOf(currentValue = firstArray[i])) == -1 ? combinedArray.push(currentValue) : qx.lang.Array.append(combinedArray, secondArray.splice(0, indexInSecond+1));
+ };
+
+ return combinedArray.concat(secondArray);
+ };
+
+ var a = [ "before3Mnu", "fileMnu", "editMnu", "saveMnu", "exitMenu" ];
+ var b = [ "before1Mnu", "before2Mnu", "fileMnu", "fooMnu", "editMnu", "saveMnu", "after1Mnu" ];
+
+ //alert(qx.lang.Array.merge(a, b));
+
+ var comp1 =
+ {
+ bars :
+ [
+ {
+ id : "menubar",
+ groups : [ "mainMp", "helpMp" ]
+ },
+
+ {
+ id : "toolbar",
+ groups : [ "openTb", "editTb" ]
+ }
+ ],
+
+ groups :
+ {
+ // Menu Bar Parts
+ "mainMp" : { commands : [ "fileBtn", "editBtn", "viewBtn" ] },
+ "helpMp" : { commands : [ "helpBtn" ] },
+
+ // Tool Bar Parts
+ "openTb" : { commands : [ "openBtn", "openRecentlyBtn" ] },
+ "editTb" : { commands : [ "cutBtn", "copyBtn", "pasteBtn" ] },
+
+ // Menu Content
+ "openMn" : { commands : [ "openBtn", "openWithBtn", "openRecentlyBtn" ] },
+ "saveMn" : { commands : [ "saveBtn", "saveAsBtn" ] },
+ "closeMn" : { commands : [ "closeBtn" ] },
+ "exitMn" : { commands : [ "exitBtn" ] },
+ "undoMn" : { commands : [ "undoBtn", "redoBtn" ] },
+ "editMn" : { commands : [ "cutBtn", "copyBtn", "pasteBtn", "deleteBtn", "clipboardBtn" ] },
+ "searchMn" : { commands : [ "searchBtn", "replaceBtn", "continueSearchBtn" ] },
+
+ "barsMn" : { commands : [] },
+ "fontMn" : { commands : [] },
+
+ "aboutMn" : { commands : [ "aboutBtn" ] },
+ "recentDocsMn" : { commands : [ "doc1Btn", "doc2Btn", "doc3Btn" ] }
+ },
+
+ menus :
+ {
+ "fileMnu" : { groups : [ "openMn", "saveMn", "closeMn", "exitMn" ] },
+ "editMnu" : { groups : [ "undoMn", "editMn", "searchMn" ] },
+ "viewMnu" : { groups : [ "barsMn", "fontMn" ] },
+ "helpMnu" : { groups : [ "aboutMn" ] },
+ "openRecentlyMnu" : { groups : [ "recentDocsMn" ] }
+ },
+
+ commands :
+ {
+ // Menu-Buttons
+ "fileBtn" : { title : "Datei", menu : "fileMnu" },
+ "editBtn" : { title : "Bearbeiten", menu : "editMnu" },
+ "viewBtn" : { title : "Ansicht", menu : "viewMnu" },
+ "helpBtn" : { title : "Hilfe", menu : "helpMnu" },
+
+ // Execute-Buttons: Open
+ "openBtn" : { title : "Öffnen", execute : "open" },
+ "openWithBtn" : { title : "Öffnen mit...", execute : "openWith" },
+ "openRecentlyBtn" : { title : "Letzte öffnen...", menu : "openRecentlyMnu" },
+
+ "saveBtn" : { title : "Speichern", execute : "save" },
+ "saveAsBtn" : { title : "Speichern als...", execute : "saveAs" },
+ "closeBtn" : { title : "Schließen", execute : "close" },
+ "exitBtn" : { title : "Beenden", execute : "exit" },
+
+ "undoBtn" : { title : "Rückgängig", execute : "undo" },
+ "redoBtn" : { title : "Wiederherstellen", execute : "redo" },
+ "deleteBtn" : { title : "Löschen", execute : "delete" },
+ "clipboardBtn" : { title : "Zwischenablage", execute : "clipboard" },
+
+ // Execute-Buttons: Search
+ "searchBtn" : { title : "Suchen", execute : "search" },
+ "replaceBtn" : { title : "Ersetzen", execute : "replace" },
+ "continueSearchBtn" : { title : "Weitersuchen", execute : "continuesearch" },
+
+ // Execute-Buttons: Edit
+ "cutBtn" : { title : "Ausschneiden", execute : "cut" },
+ "copyBtn" : { title : "Kopieren", execute : "copy" },
+ "pasteBtn" : { title : "Einfügen", execute : "paste" },
+
+ // Execute-Buttons: Info
+ "aboutBtn" : { title : "Über", execute : "about" },
+
+ "doc1Btn" : { title : "Dokument 1", execute : "openDoc1" },
+ "doc2Btn" : { title : "Dokument 2", execute : "openDoc2" },
+ "doc3Btn" : { title : "Dokument 3", execute : "openDoc3" }
+ }
+ };
+
+ var comp2 =
+ {
+ };
+
+
+
+
+
+
+ qx.OO.defineClass("qx.Generator", qx.core.Target,
+ function(comp)
+ {
+ this._comp = comp;
+
+ });
+
+ qx.Proto._generateMenu = function(id)
+ {
+ var menu = new qx.ui.menu.Menu;
+
+ var menuData = this._comp.menus[id];
+
+ if (!menuData) {
+ alert("Missing menu: " + id);
+ };
+
+ for (var i=0; i<menuData.groups.length; i++)
+ {
+ var groupcontent = this._comp.groups[menuData.groups[i]];
+
+ if (!groupcontent) {
+ alert("Missing menu: " + menuData.groups[i]);
+ };
+
+ var groupcommandlist = groupcontent.commands;
+
+ for (var j=0; j<groupcommandlist.length; j++)
+ {
+ var commandData = this._comp.commands[groupcommandlist[j]];
+
+ if (!commandData) {
+ alert("Missing command: " + groupcommandlist[j]);
+ };
+
+ if (commandData.menu)
+ {
+ var subMenu = this._generateMenu(commandData.menu);
+ var menuButton = new qx.ui.menu.Button(commandData.title, null, null, subMenu);
+
+ subMenu.addToDocument();
+ }
+ else
+ {
+ var menuButton = new qx.ui.menu.Button(commandData.title);
+ };
+
+ menu.add(menuButton);
+ };
+
+ if (i < menuData.groups.length-1) {
+ menu.add(new qx.ui.menu.Separator);
+ };
+ };
+
+ return menu;
+ };
+
+ qx.Proto.getWidget = function()
+ {
+ var can = new qx.ui.layout.CanvasLayout;
+ can.auto();
+ can.setLocation(100, 100);
+ can.setBorder("2px solid red");
+
+ for (var i=0; i<this._comp.bars.length; i++)
+ {
+ var tb = new qx.ui.toolbar.ToolBar;
+ tb.setLocation(0, (i * 50));
+ tb.setRight(0);
+ can.add(tb);
+
+
+
+ var bardata = this._comp.bars[i];
+ var groupdata = bardata.groups;
+
+ for(var j=0; j<groupdata.length; j++)
+ {
+ var part = new qx.ui.toolbar.Part;
+
+ var groupcontent = this._comp.groups[groupdata[j]];
+ var groupcommandlist = groupcontent.commands;
+
+ if (!groupcommandlist)
+ {
+ alert("Missing commands in: " + groupcontent);
+ };
+
+ for (var k=0; k<groupcommandlist.length; k++)
+ {
+ var commanddata = this._comp.commands[groupcommandlist[k]];
+
+ if (commanddata)
+ {
+ if (typeof commanddata.menu != "undefined")
+ {
+ menu = this._generateMenu(commanddata.menu);
+ menu.addToDocument();
+
+ btn = new qx.ui.toolbar.MenuButton(commanddata.title, menu);
+ }
+ else
+ {
+ btn = new qx.ui.toolbar.Button(commanddata.title);
+ };
+
+ part.add(btn);
+ }
+ else
+ {
+ alert("Missing: " + groupcommandlist[k]);
+ };
+ };
+
+ tb.add(part);
+ };
+ };
+
+ return can;
+ };
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var c1 = new qx.Generator(comp1);
+ qx.ui.core.ClientDocument.getInstance().add(c1.getWidget());
+ });
+
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_1.html
new file mode 100644
index 0000000000..ff1a48575b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_1.html
@@ -0,0 +1,79 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension(462, 128);
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term4 = new qx.ui.basic.Terminator;
+ term4.setBackgroundColor("blue");
+ gl.add(term4, 3, 0);
+
+ var term5 = new qx.ui.basic.Terminator;
+ term5.setBackgroundColor("fuchsia");
+ gl.add(term5, 0, 1);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term7 = new qx.ui.basic.Terminator;
+ term7.setBackgroundColor("maroon");
+ gl.add(term7, 2, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_10.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_10.html
new file mode 100644
index 0000000000..5ed1972427
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_10.html
@@ -0,0 +1,94 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Layout Manager: qx.ui.layout.GridLayout. Example image borrowed from <a href="http://winfx.msdn.microsoft.com/library/en-us/wcp_conceptual/winfx/layout/overviews/grid_ovw.asp">Microsoft's XAML Documentation</a>.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var img = new qx.ui.basic.Image("./image/grid_dialog_box.png");
+
+ img.setLocation(20, 48);
+
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(46, 300);
+ gl.auto();
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(4);
+
+ gl.setRowCount(4);
+ gl.setColumnCount(5);
+
+ gl.setHorizontalSpacing(4);
+ gl.setVerticalSpacing(4);
+
+ gl.setColumnWidth(0, 40);
+ gl.setColumnWidth(1, 35);
+ gl.setColumnWidth(2, 75);
+ gl.setColumnWidth(3, 75);
+ gl.setColumnWidth(4, 75);
+
+ gl.setRowHeight(0, 30);
+ gl.setRowHeight(1, 30);
+ gl.setRowHeight(2, 15);
+ gl.setRowHeight(3, 25);
+
+ gl.mergeCells(1, 0, 4, 1);
+ gl.mergeCells(1, 1, 4, 1);
+
+ gl.setRowVerticalAlignment(1, "middle");
+
+ qx.ui.core.ClientDocument.getInstance().add(img, gl);
+
+
+
+
+
+ var i1 = new qx.ui.basic.Image("icon/32/apps/preferences-desktop-wallpaper.png");
+ gl.add(i1, 0, 0);
+
+ var t1 = new qx.ui.basic.Label("Open:");
+ t1.setMnemonic("O");
+ t1.setSelectable(false);
+ gl.add(t1, 0, 1);
+
+ var b1 = new qx.ui.form.Button("OK");
+ b1.setAllowStretchX(true);
+ gl.add(b1, 2, 3);
+
+ var b2 = new qx.ui.form.Button("Cancel");
+ b2.setAllowStretchX(true);
+ gl.add(b2, 3, 3);
+
+ var b3 = new qx.ui.form.Button("Browse...");
+ b3.setAllowStretchX(true);
+ b3.getLabelObject().setMnemonic("B");
+ gl.add(b3, 4, 3);
+
+ var t2 = new qx.ui.basic.Label("Type in the name of a program, folder, document or<br/> Internet Resource and Windows will open it for you.");
+ t2.setSelectable(false);
+ gl.add(t2, 1, 0);
+
+ var c1 = new qx.ui.form.ComboBox();
+ c1.setEditable(true);
+ c1.setValue("d:\\local\\pictures");
+ c1.setWidth(null);
+ gl.add(c1, 1, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_11.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_11.html
new file mode 100644
index 0000000000..83a08a64e1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_11.html
@@ -0,0 +1,124 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Layout Manager: qx.ui.layout.GridLayout. Example image borrowed from <a href="http://winfx.msdn.microsoft.com/library/en-us/wcp_conceptual/winfx/layout/overviews/grid_ovw.asp">Microsoft's XAML Documentation</a>.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var img = new qx.ui.basic.Image("./image/grid_dialog_box.png");
+
+ img.setLocation(20, 48);
+
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(46, 300);
+ gl.auto();
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(4);
+
+ gl.setRowCount(4);
+ gl.setColumnCount(5);
+
+ gl.setHorizontalSpacing(4);
+ gl.setVerticalSpacing(4);
+
+ gl.setColumnWidth(0, 40);
+ gl.setColumnWidth(1, 35);
+ gl.setColumnWidth(2, 75);
+ gl.setColumnWidth(3, 75);
+ gl.setColumnWidth(4, 75);
+
+ gl.setRowHeight(0, 30);
+ gl.setRowHeight(1, 30);
+ gl.setRowHeight(2, 15);
+ gl.setRowHeight(3, 25);
+
+ gl.mergeCells(1, 0, 4, 1);
+ gl.mergeCells(1, 1, 4, 1);
+
+ gl.setRowVerticalAlignment(1, "middle");
+
+ qx.ui.core.ClientDocument.getInstance().add(img, gl);
+
+
+
+
+
+ var i1 = new qx.ui.basic.Image("icon/32/apps/preferences-desktop-wallpaper.png");
+ gl.add(i1, 0, 0);
+
+ var t1 = new qx.ui.basic.Label("Open:");
+ t1.setMnemonic("O");
+ t1.setSelectable(false);
+ gl.add(t1, 0, 1);
+
+ var b1 = new qx.ui.form.Button("OK");
+ b1.setAllowStretchX(true);
+ gl.add(b1, 2, 3);
+
+ var b2 = new qx.ui.form.Button("Cancel");
+ b2.setAllowStretchX(true);
+ gl.add(b2, 3, 3);
+
+ var b3 = new qx.ui.form.Button("Browse...");
+ b3.setAllowStretchX(true);
+ b3.getLabelObject().setMnemonic("B");
+ gl.add(b3, 4, 3);
+
+ var t2 = new qx.ui.basic.Label("Type in the name of a program, folder, document or Internet Resource and Windows will open it for you.");
+ t2.setSelectable(false);
+ t2.setStyleProperty("whiteSpace", "normal");
+ gl.add(t2, 1, 0);
+
+ var c1 = new qx.ui.form.ComboBox();
+ c1.setEditable(true);
+ c1.setValue("d:\\local\\pictures");
+ c1.setWidth(null);
+ gl.add(c1, 1, 1);
+
+
+
+
+
+
+
+
+
+ var c1 = new qx.ui.form.Button("Make bigger");
+ var c2 = new qx.ui.form.Button("Make smaller");
+
+ c1.setLocation(500, 300);
+ c2.setLocation(500, 330);
+
+ qx.ui.core.ClientDocument.getInstance().add(c1, c2);
+
+ c1.addEventListener("execute", function(e) {
+ gl.setColumnWidth(2, 100);
+ gl.setColumnWidth(3, 100);
+ gl.setColumnWidth(4, 100);
+ });
+
+ c2.addEventListener("execute", function(e) {
+ gl.setColumnWidth(2, 75);
+ gl.setColumnWidth(3, 75);
+ gl.setColumnWidth(4, 75);
+ });
+
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_2.html
new file mode 100644
index 0000000000..90a629e7d4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_2.html
@@ -0,0 +1,88 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout.</p>
+ <p>Added some own sizes and use more complex children.</p>
+ <p>The olive child has a width of 50% (which is related to the cell size here) and a horizontal alignment 'center'.</p>
+ <p>The navi child has a height of 20 pixel and is aligned to the bottom of the cell.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension(462, 128);
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.form.Button("Hello World", "icon/22/actions/format-color.png");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ term3.setWidth(100);
+ term3.setHeight(100);
+ term3.setBorder("1px solid black");
+ gl.add(term3, 2, 0);
+
+ var term4 = new qx.ui.basic.Terminator;
+ term4.setBackgroundColor("blue");
+ gl.add(term4, 3, 0);
+
+ var term5 = new qx.ui.basic.Terminator;
+ term5.setBackgroundColor("fuchsia");
+ gl.add(term5, 0, 1);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ term6.setWidth("50%");
+ term6.setHorizontalAlign("center");
+ gl.add(term6, 1, 1);
+
+ var term7 = new qx.ui.basic.Terminator;
+ term7.setBackgroundColor("maroon");
+ gl.add(term7, 2, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ term8.setHeight(20);
+ term8.setVerticalAlign("bottom");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_3.html
new file mode 100644
index 0000000000..4df290606b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_3.html
@@ -0,0 +1,82 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout.</p>
+ <p>Using auto dimensions for the grid.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+ gl.setHorizontalSpacing(4);
+ gl.setVerticalSpacing(8);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term4 = new qx.ui.basic.Terminator;
+ term4.setBackgroundColor("blue");
+ gl.add(term4, 3, 0);
+
+ var term5 = new qx.ui.basic.Terminator;
+ term5.setBackgroundColor("fuchsia");
+ gl.add(term5, 0, 1);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term7 = new qx.ui.basic.Terminator;
+ term7.setBackgroundColor("maroon");
+ gl.add(term7, 2, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_4.html
new file mode 100644
index 0000000000..79503521f4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_4.html
@@ -0,0 +1,81 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout.</p>
+ <p>Using percents for children.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setRight(335);
+ gl.setBottom(48);
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+
+ gl.setColumnWidth(0, "10%");
+ gl.setColumnWidth(1, "40%");
+ gl.setColumnWidth(2, "30%");
+ gl.setColumnWidth(3, "20%");
+
+ gl.setRowHeight(0, "70%");
+ gl.setRowHeight(1, "30%");
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term4 = new qx.ui.basic.Terminator;
+ term4.setBackgroundColor("blue");
+ gl.add(term4, 3, 0);
+
+ var term5 = new qx.ui.basic.Terminator;
+ term5.setBackgroundColor("fuchsia");
+ gl.add(term5, 0, 1);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term7 = new qx.ui.basic.Terminator;
+ term7.setBackgroundColor("maroon");
+ gl.add(term7, 2, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_5.html
new file mode 100644
index 0000000000..68d37b9947
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_5.html
@@ -0,0 +1,85 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A simple form using qx.ui.layout.GridLayout</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(8);
+ gl.setColumnCount(2);
+ gl.setRowCount(7);
+ gl.setVerticalSpacing(4);
+ gl.setHorizontalSpacing(6);
+
+ gl.setColumnWidth(0, 70);
+ gl.setColumnWidth(1, 180);
+
+ gl.setColumnHorizontalAlignment(0, "right");
+ gl.setColumnVerticalAlignment(0, "middle");
+
+ gl.setRowHeight(0, 20);
+ gl.setRowHeight(1, 20);
+ gl.setRowHeight(2, 20);
+ gl.setRowHeight(3, 20);
+ gl.setRowHeight(4, 20);
+ gl.setRowHeight(5, 70);
+ gl.setRowHeight(6, 20);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ var label1 = new qx.ui.basic.Label("Given Name");
+ var label2 = new qx.ui.basic.Label("Name");
+ var label3 = new qx.ui.basic.Label("City");
+ var label4 = new qx.ui.basic.Label("Country");
+ var label5 = new qx.ui.basic.Label("E-Mail");
+ var label6 = new qx.ui.basic.Label("Comment");
+ label6.setVerticalAlign("top");
+
+ label6.setVerticalAlign("top");
+
+ var input1 = new qx.ui.form.TextField;
+ var input2 = new qx.ui.form.TextField;
+ var input3 = new qx.ui.form.TextField;
+ var input4 = new qx.ui.form.TextField;
+ var input5 = new qx.ui.form.TextField;
+ var input6 = new qx.ui.form.TextArea;
+ var input7 = new qx.ui.form.Button("Submit", "icon/16/actions/dialog-ok.png");
+
+ input7.setHorizontalAlign("right");
+
+ gl.add(label1, 0, 0);
+ gl.add(input1, 1, 0);
+ gl.add(label2, 0, 1);
+ gl.add(input2, 1, 1);
+ gl.add(label3, 0, 2);
+ gl.add(input3, 1, 2);
+ gl.add(label4, 0, 3);
+ gl.add(input4, 1, 3);
+ gl.add(label5, 0, 4);
+ gl.add(input5, 1, 4);
+ gl.add(label6, 0, 5);
+ gl.add(input6, 1, 5);
+ gl.add(input7, 1, 6);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_6.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_6.html
new file mode 100644
index 0000000000..786cd9927a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_6.html
@@ -0,0 +1,109 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A simple form using qx.ui.layout.GridLayout</p>
+ <p>Using padding instead of spacing. Spacing is between the cells, padding is inside the cells. The same layout using padding is always bigger because the first and last cells are also affected with the padding to the edge.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(8);
+ gl.setColumnCount(2);
+ gl.setRowCount(7);
+
+ gl.setColumnWidth(0, 76);
+ gl.setColumnWidth(1, 186);
+
+ gl.setColumnHorizontalAlignment(0, "right");
+ gl.setColumnVerticalAlignment(0, "middle");
+
+ gl.setRowHeight(0, 24);
+ gl.setRowHeight(1, 24);
+ gl.setRowHeight(2, 24);
+ gl.setRowHeight(3, 24);
+ gl.setRowHeight(4, 24);
+ gl.setRowHeight(5, 74);
+ gl.setRowHeight(6, 24);
+
+ gl.setCellPaddingTop(2);
+ gl.setCellPaddingRight(3);
+ gl.setCellPaddingBottom(2);
+ gl.setCellPaddingLeft(3);
+
+ /*
+
+ // the same like the above, but more local
+ gl.setColumnPaddingTop(0, 2);
+ gl.setColumnPaddingRight(0, 3);
+ gl.setColumnPaddingBottom(0, 2);
+ gl.setColumnPaddingLeft(0, 3);
+
+ gl.setColumnPaddingTop(1, 2);
+ gl.setColumnPaddingRight(1, 3);
+ gl.setColumnPaddingBottom(1, 2);
+ gl.setColumnPaddingLeft(1, 3);
+
+ */
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ var label1 = new qx.ui.basic.Label("Given Name");
+ var label2 = new qx.ui.basic.Label("Name");
+ var label3 = new qx.ui.basic.Label("City");
+ var label4 = new qx.ui.basic.Label("Country");
+ var label5 = new qx.ui.basic.Label("E-Mail");
+ var label6 = new qx.ui.basic.Label("Comment");
+
+ label6.setVerticalAlign("top");
+
+ var input1 = new qx.ui.form.TextField;
+ var input2 = new qx.ui.form.TextField;
+ var input3 = new qx.ui.form.ComboBox;
+ var input4 = new qx.ui.form.TextField;
+ var input5 = new qx.ui.form.TextField;
+ var input6 = new qx.ui.form.TextArea;
+ var input7 = new qx.ui.form.Button("Submit", "icon/16/actions/dialog-ok.png");
+
+ input3.add(new qx.ui.form.ListItem("New York"));
+ input3.add(new qx.ui.form.ListItem("Paris"));
+ input3.add(new qx.ui.form.ListItem("Sydney"));
+ input3.add(new qx.ui.form.ListItem("Berlin"));
+ input3.add(new qx.ui.form.ListItem("Washington"));
+
+ input7.setHorizontalAlign("right");
+
+ gl.add(label1, 0, 0);
+ gl.add(input1, 1, 0);
+ gl.add(label2, 0, 1);
+ gl.add(input2, 1, 1);
+ gl.add(label3, 0, 2);
+ gl.add(input3, 1, 2);
+ gl.add(label4, 0, 3);
+ gl.add(input4, 1, 3);
+ gl.add(label5, 0, 4);
+ gl.add(input5, 1, 4);
+ gl.add(label6, 0, 5);
+ gl.add(input6, 1, 5);
+ gl.add(input7, 1, 6);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_7.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_7.html
new file mode 100644
index 0000000000..1b3b108afb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_7.html
@@ -0,0 +1,112 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout. Now with cells which are merged with others.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension(462, 128);
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ // start-col, start-row, col-length, row-length
+ gl.debug("Merge: 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Span-Start (0, 1): " + gl.isSpanStart(0, 1));
+ gl.debug("Span-Start (0, 2): " + gl.isSpanStart(0, 2));
+ gl.debug("Span-Start (1, 1): " + gl.isSpanStart(1, 1));
+ gl.debug("Span-Start (1, 2): " + gl.isSpanStart(1, 2));
+ gl.debug("Span-Start (2, 1): " + gl.isSpanStart(2, 1));
+ gl.debug("Span-Start (2, 2): " + gl.isSpanStart(2, 2));
+ gl.debug("Span-Start (3, 1): " + gl.isSpanStart(3, 1));
+ gl.debug("Span-Start (3, 2): " + gl.isSpanStart(3, 2));
+
+ gl.debug("Span-Cell (0, 1): " + gl.isSpanCell(0, 1));
+ gl.debug("Span-Cell (0, 2): " + gl.isSpanCell(0, 2));
+ gl.debug("Span-Cell (1, 1): " + gl.isSpanCell(1, 1));
+ gl.debug("Span-Cell (1, 2): " + gl.isSpanCell(1, 2));
+ gl.debug("Span-Cell (2, 1): " + gl.isSpanCell(2, 1));
+ gl.debug("Span-Cell (2, 2): " + gl.isSpanCell(2, 2));
+ gl.debug("Span-Cell (3, 1): " + gl.isSpanCell(3, 1));
+ gl.debug("Span-Cell (3, 2): " + gl.isSpanCell(3, 2));
+
+ gl.debug("Fill-Cell (0, 1): " + gl.isFillCell(0, 1));
+ gl.debug("Fill-Cell (0, 2): " + gl.isFillCell(0, 2));
+ gl.debug("Fill-Cell (1, 1): " + gl.isFillCell(1, 1));
+ gl.debug("Fill-Cell (1, 2): " + gl.isFillCell(1, 2));
+ gl.debug("Fill-Cell (2, 1): " + gl.isFillCell(2, 1));
+ gl.debug("Fill-Cell (2, 2): " + gl.isFillCell(2, 2));
+ gl.debug("Fill-Cell (3, 1): " + gl.isFillCell(3, 1));
+ gl.debug("Fill-Cell (3, 2): " + gl.isFillCell(3, 2));
+
+ /*
+ // both should be impossible
+ gl.debug("Merge 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Merge 0, 0, 3, 4");
+ gl.mergeCells(0, 0, 3, 4);
+ */
+
+ gl.debug("Merge 0, 0, 1, 2");
+ gl.mergeCells(0, 0, 1, 2);
+
+ gl.debug("Merge 2, 0, 2, 1");
+ gl.mergeCells(2, 0, 2, 1);
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_8.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_8.html
new file mode 100644
index 0000000000..24a0ae9f4b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_8.html
@@ -0,0 +1,115 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout. Now with cells which are merged with others.</p>
+ <p>Added spacing in combination with spans.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+ gl.setHorizontalSpacing(10);
+ gl.setVerticalSpacing(10);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ // start-col, start-row, col-length, row-length
+ gl.debug("Merge: 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Span-Start (0, 1): " + gl.isSpanStart(0, 1));
+ gl.debug("Span-Start (0, 2): " + gl.isSpanStart(0, 2));
+ gl.debug("Span-Start (1, 1): " + gl.isSpanStart(1, 1));
+ gl.debug("Span-Start (1, 2): " + gl.isSpanStart(1, 2));
+ gl.debug("Span-Start (2, 1): " + gl.isSpanStart(2, 1));
+ gl.debug("Span-Start (2, 2): " + gl.isSpanStart(2, 2));
+ gl.debug("Span-Start (3, 1): " + gl.isSpanStart(3, 1));
+ gl.debug("Span-Start (3, 2): " + gl.isSpanStart(3, 2));
+
+ gl.debug("Span-Cell (0, 1): " + gl.isSpanCell(0, 1));
+ gl.debug("Span-Cell (0, 2): " + gl.isSpanCell(0, 2));
+ gl.debug("Span-Cell (1, 1): " + gl.isSpanCell(1, 1));
+ gl.debug("Span-Cell (1, 2): " + gl.isSpanCell(1, 2));
+ gl.debug("Span-Cell (2, 1): " + gl.isSpanCell(2, 1));
+ gl.debug("Span-Cell (2, 2): " + gl.isSpanCell(2, 2));
+ gl.debug("Span-Cell (3, 1): " + gl.isSpanCell(3, 1));
+ gl.debug("Span-Cell (3, 2): " + gl.isSpanCell(3, 2));
+
+ gl.debug("Fill-Cell (0, 1): " + gl.isFillCell(0, 1));
+ gl.debug("Fill-Cell (0, 2): " + gl.isFillCell(0, 2));
+ gl.debug("Fill-Cell (1, 1): " + gl.isFillCell(1, 1));
+ gl.debug("Fill-Cell (1, 2): " + gl.isFillCell(1, 2));
+ gl.debug("Fill-Cell (2, 1): " + gl.isFillCell(2, 1));
+ gl.debug("Fill-Cell (2, 2): " + gl.isFillCell(2, 2));
+ gl.debug("Fill-Cell (3, 1): " + gl.isFillCell(3, 1));
+ gl.debug("Fill-Cell (3, 2): " + gl.isFillCell(3, 2));
+
+ /*
+ // both should be impossible
+ gl.debug("Merge 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Merge 0, 0, 3, 4");
+ gl.mergeCells(0, 0, 3, 4);
+ */
+
+ gl.debug("Merge 0, 0, 1, 2");
+ gl.mergeCells(0, 0, 1, 2);
+
+ gl.debug("Merge 2, 0, 2, 1");
+ gl.mergeCells(2, 0, 2, 1);
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_9.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_9.html
new file mode 100644
index 0000000000..a37d5a0048
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/GridLayout_9.html
@@ -0,0 +1,120 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for qx.ui.layout.GridLayout. Now with cells which are merged with others.</p>
+ <p>Added spacing in combination with spans.</p>
+ <p>Added padding in combination with spans.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var gl = new qx.ui.layout.GridLayout;
+
+ gl.setLocation(20, 48);
+ gl.setDimension("auto", "auto");
+ gl.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ gl.setPadding(2, 4);
+ gl.setColumnCount(4);
+ gl.setRowCount(2);
+ gl.setHorizontalSpacing(10);
+ gl.setVerticalSpacing(10);
+ gl.setCellPaddingTop(4);
+ gl.setCellPaddingRight(4);
+ gl.setCellPaddingBottom(4);
+ gl.setCellPaddingLeft(4);
+
+ gl.setColumnWidth(0, 100);
+ gl.setColumnWidth(1, 200);
+ gl.setColumnWidth(2, 50);
+ gl.setColumnWidth(3, 100);
+
+ gl.setRowHeight(0, 40);
+ gl.setRowHeight(1, 80);
+
+ qx.ui.core.ClientDocument.getInstance().add(gl);
+
+ // start-col, start-row, col-length, row-length
+ gl.debug("Merge: 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Span-Start (0, 1): " + gl.isSpanStart(0, 1));
+ gl.debug("Span-Start (0, 2): " + gl.isSpanStart(0, 2));
+ gl.debug("Span-Start (1, 1): " + gl.isSpanStart(1, 1));
+ gl.debug("Span-Start (1, 2): " + gl.isSpanStart(1, 2));
+ gl.debug("Span-Start (2, 1): " + gl.isSpanStart(2, 1));
+ gl.debug("Span-Start (2, 2): " + gl.isSpanStart(2, 2));
+ gl.debug("Span-Start (3, 1): " + gl.isSpanStart(3, 1));
+ gl.debug("Span-Start (3, 2): " + gl.isSpanStart(3, 2));
+
+ gl.debug("Span-Cell (0, 1): " + gl.isSpanCell(0, 1));
+ gl.debug("Span-Cell (0, 2): " + gl.isSpanCell(0, 2));
+ gl.debug("Span-Cell (1, 1): " + gl.isSpanCell(1, 1));
+ gl.debug("Span-Cell (1, 2): " + gl.isSpanCell(1, 2));
+ gl.debug("Span-Cell (2, 1): " + gl.isSpanCell(2, 1));
+ gl.debug("Span-Cell (2, 2): " + gl.isSpanCell(2, 2));
+ gl.debug("Span-Cell (3, 1): " + gl.isSpanCell(3, 1));
+ gl.debug("Span-Cell (3, 2): " + gl.isSpanCell(3, 2));
+
+ gl.debug("Fill-Cell (0, 1): " + gl.isFillCell(0, 1));
+ gl.debug("Fill-Cell (0, 2): " + gl.isFillCell(0, 2));
+ gl.debug("Fill-Cell (1, 1): " + gl.isFillCell(1, 1));
+ gl.debug("Fill-Cell (1, 2): " + gl.isFillCell(1, 2));
+ gl.debug("Fill-Cell (2, 1): " + gl.isFillCell(2, 1));
+ gl.debug("Fill-Cell (2, 2): " + gl.isFillCell(2, 2));
+ gl.debug("Fill-Cell (3, 1): " + gl.isFillCell(3, 1));
+ gl.debug("Fill-Cell (3, 2): " + gl.isFillCell(3, 2));
+
+ /*
+ // both should be impossible
+ gl.debug("Merge 1, 1, 2, 1");
+ gl.mergeCells(1, 1, 2, 1);
+
+ gl.debug("Merge 0, 0, 3, 4");
+ gl.mergeCells(0, 0, 3, 4);
+ */
+
+ gl.debug("Merge 0, 0, 1, 2");
+ gl.mergeCells(0, 0, 1, 2);
+
+ gl.debug("Merge 2, 0, 2, 1");
+ gl.mergeCells(2, 0, 2, 1);
+
+
+
+
+ var term1 = new qx.ui.basic.Terminator;
+ term1.setBackgroundColor("yellow");
+ gl.add(term1, 0, 0);
+
+ var term2 = new qx.ui.basic.Terminator;
+ term2.setBackgroundColor("red");
+ gl.add(term2, 1, 0);
+
+ var term3 = new qx.ui.basic.Terminator;
+ term3.setBackgroundColor("green");
+ gl.add(term3, 2, 0);
+
+ var term6 = new qx.ui.basic.Terminator;
+ term6.setBackgroundColor("olive");
+ gl.add(term6, 1, 1);
+
+ var term8 = new qx.ui.basic.Terminator;
+ term8.setBackgroundColor("navy");
+ gl.add(term8, 3, 1);
+ });
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/History_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/History_1.html
new file mode 100644
index 0000000000..3c137ad131
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/History_1.html
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test the back button functionality of qooxdoo.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ function callback(e) {
+ d.debug(e.getData());
+ a1.setLabel("History event: " + e.getData());
+ }
+
+ var history = qx.client.History.getInstance();
+
+ history.init();
+ history.addEventListener("request", callback);
+
+ qx.client.Timer.once(function() {
+ history.addToHistory("Juhu1", "Juhu1");
+ }, this, 300);
+
+ qx.client.Timer.once(function() {
+ history.addToHistory("Juhu2", "Juhu2");
+ }, this, 600);
+
+ qx.client.Timer.once(function() {
+ history.addToHistory("Juhu3", "Juhu3");
+ }, this, 900);
+
+ var t1 = new qx.ui.form.TextField();
+ t1.set({
+ left: 20,
+ top:48,
+ height: 20,
+ value: ""
+ });
+
+ var a1 = new qx.ui.basic.Atom("");
+ a1.set({
+ left: 20,
+ top: 78,
+ width: 230,
+ height: 120,
+ backgroundColor: "orange",
+ border: qx.renderer.border.BorderPresets.getInstance().thinInset
+ });
+
+ var b1 = new qx.ui.form.Button("add to history");
+ b1.set({
+ top: 48,
+ left: 150,
+ height: 20,
+ width: 100
+ });
+ b1.addEventListener("execute", function() {
+ var data = t1.getValue();
+ if (!data) return;
+ t1.setValue("");
+ qx.client.Timer.once(function() {
+ history.addToHistory(data, data);
+ }, this, 100);
+ });
+
+ d.add(t1, a1, b1);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_1.html
new file mode 100644
index 0000000000..52ea8c5c07
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_1.html
@@ -0,0 +1,1261 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.HorizontalBoxLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var cl_white = new qx.renderer.color.Color("white");
+ var cl_blue = new qx.renderer.color.Color("blue");
+ var cl_yellow = new qx.renderer.color.Color("yellow");
+ var cl_green = new qx.renderer.color.Color("green");
+ var cl_orange = new qx.renderer.color.Color("orange");
+ var cl_purple = new qx.renderer.color.Color("purple");
+ var cl_aqua = new qx.renderer.color.Color("aqua");
+ var cl_fuchsia = new qx.renderer.color.Color("fuchsia");
+
+
+ /* ***********************************************
+
+ EXAMPLE ONE:
+ LEFT ALIGN
+
+ *********************************************** */
+
+ var hbl1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl1.setTop(48);
+ hbl1.setLeft(20);
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setHeight("auto");
+ hbl1.setRight(335);
+
+ hbl1.setSpacing(4);
+ hbl1.setPadding(8);
+
+ hbl1.setVerticalChildrenAlign("bottom");
+
+
+ var w1_1 = new qx.ui.layout.CanvasLayout;
+ w1_1.setWidth(25);
+ w1_1.setHeight(25);
+ w1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_1.setBackgroundColor(cl_white);
+ // w1_1.setMaxHeight(40);
+
+ var w1_2 = new qx.ui.layout.CanvasLayout;
+ w1_2.setWidth(25);
+ w1_2.setHeight(25);
+ w1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_2.setBackgroundColor(cl_blue);
+ w1_2.setBottom(10);
+
+ var w1_3 = new qx.ui.layout.CanvasLayout;
+ w1_3.setWidth(25);
+ w1_3.setHeight("100%");
+ w1_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_3.setBackgroundColor(cl_yellow);
+
+ var w1_4 = new qx.ui.layout.CanvasLayout;
+ w1_4.setWidth(25);
+ w1_4.setHeight(25);
+ w1_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_4.setBackgroundColor(cl_green);
+
+ var w1_5 = new qx.ui.layout.CanvasLayout;
+ w1_5.setWidth(40);
+ // w1_5.setHeight(25);
+ w1_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_5.setBackgroundColor(cl_orange);
+
+ var w1_6 = new qx.ui.layout.CanvasLayout;
+ w1_6.setWidth(25);
+ w1_6.setHeight(25);
+ w1_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_6.setBackgroundColor(cl_purple);
+ w1_6.setTop(15);
+ w1_6.setLeft(-25);
+
+ var w1_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w1_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w1_9 = new qx.ui.layout.CanvasLayout;
+ w1_9.setWidth(25);
+ w1_9.setHeight(25);
+ w1_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_9.setBackgroundColor(cl_aqua);
+
+ var w1_10 = new qx.ui.layout.CanvasLayout;
+ w1_10.setWidth(25);
+ w1_10.setHeight(25);
+ w1_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_10.setBackgroundColor(cl_fuchsia);
+
+ var hbl1_click = 0;
+ hbl1.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl1_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setHeight("auto");
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl1_click = 0;
+ return;
+ };
+
+ hbl1_click++;
+ });
+
+ w1_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w1_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w1_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w1_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w1_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w1_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w1_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w1_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w1_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w1_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl1.add(w1_1, w1_2, w1_3, w1_4, w1_5, w1_6, w1_7, w1_8, w1_9, w1_10);
+ d.add(hbl1);
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE TWO:
+ RIGHT ALIGN
+
+ *********************************************** */
+
+ var hbl2 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl2.setTop(138);
+ hbl2.setLeft(20);
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setHeight("auto");
+ hbl2.setRight(335);
+
+ hbl2.setSpacing(4);
+ hbl2.setPadding(8);
+
+ hbl2.setHorizontalChildrenAlign("right");
+ hbl2.setVerticalChildrenAlign("middle");
+
+
+ var w2_1 = new qx.ui.layout.CanvasLayout;
+ w2_1.setWidth(25);
+ w2_1.setHeight(25);
+ w2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_1.setBackgroundColor(cl_white);
+ // w2_1.setMaxHeight(40);
+
+ var w2_2 = new qx.ui.layout.CanvasLayout;
+ w2_2.setWidth(25);
+ w2_2.setHeight(25);
+ w2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_2.setBackgroundColor(cl_blue);
+ w2_2.setBottom(10);
+
+ var w2_3 = new qx.ui.layout.CanvasLayout;
+ w2_3.setWidth(25);
+ w2_3.setHeight("100%");
+ w2_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_3.setBackgroundColor(cl_yellow);
+
+ var w2_4 = new qx.ui.layout.CanvasLayout;
+ w2_4.setWidth(25);
+ w2_4.setHeight(25);
+ w2_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_4.setBackgroundColor(cl_green);
+
+ var w2_5 = new qx.ui.layout.CanvasLayout;
+ w2_5.setWidth(40);
+ // w2_5.setHeight(25);
+ w2_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_5.setBackgroundColor(cl_orange);
+
+ var w2_6 = new qx.ui.layout.CanvasLayout;
+ w2_6.setWidth(25);
+ w2_6.setHeight(25);
+ w2_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_6.setBackgroundColor(cl_purple);
+ w2_6.setTop(15);
+ w2_6.setLeft(-25);
+
+ var w2_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w2_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w2_9 = new qx.ui.layout.CanvasLayout;
+ w2_9.setWidth(25);
+ w2_9.setHeight(25);
+ w2_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_9.setBackgroundColor(cl_aqua);
+
+ var w2_10 = new qx.ui.layout.CanvasLayout;
+ w2_10.setWidth(25);
+ w2_10.setHeight(25);
+ w2_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_10.setBackgroundColor(cl_fuchsia);
+ w2_10.foo = true;
+
+
+ var hbl2_click = 0;
+ hbl2.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl2_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setHeight("auto");
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl2_click = 0;
+ return;
+ };
+
+ hbl2_click++;
+ });
+
+ w2_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w2_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w2_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w2_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w2_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w2_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w2_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w2_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w2_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w2_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl2.add(w2_1, w2_2, w2_3, w2_4, w2_5, w2_6, w2_7, w2_8, w2_9, w2_10);
+ d.add(hbl2);
+
+
+ /* ***********************************************
+
+ EXAMPLE THREE:
+ CENTER ALIGN
+
+ *********************************************** */
+
+ var hbl3 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl3.setTop(228);
+ hbl3.setLeft(20);
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setHeight("auto");
+ hbl3.setRight(335);
+
+ hbl3.setSpacing(4);
+ hbl3.setPadding(8);
+
+ hbl3.setHorizontalChildrenAlign("center");
+
+
+
+ var w3_1 = new qx.ui.layout.CanvasLayout;
+ w3_1.setWidth(25);
+ w3_1.setHeight(25);
+ w3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_1.setBackgroundColor(cl_white);
+ // w3_1.setMaxHeight(40);
+
+ var w3_2 = new qx.ui.layout.CanvasLayout;
+ w3_2.setWidth(25);
+ w3_2.setHeight(25);
+ w3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_2.setBackgroundColor(cl_blue);
+ w3_2.setBottom(10);
+
+ var w3_3 = new qx.ui.layout.CanvasLayout;
+ w3_3.setWidth(25);
+ w3_3.setHeight("100%");
+ w3_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_3.setBackgroundColor(cl_yellow);
+
+ var w3_4 = new qx.ui.layout.CanvasLayout;
+ w3_4.setWidth(25);
+ w3_4.setHeight(25);
+ w3_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_4.setBackgroundColor(cl_green);
+
+ var w3_5 = new qx.ui.layout.CanvasLayout;
+ w3_5.setWidth(40);
+ // w3_5.setHeight(25);
+ w3_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_5.setBackgroundColor(cl_orange);
+
+ var w3_6 = new qx.ui.layout.CanvasLayout;
+ w3_6.setWidth(25);
+ w3_6.setHeight(25);
+ w3_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_6.setBackgroundColor(cl_purple);
+ w3_6.setTop(15);
+ w3_6.setLeft(-25);
+
+ var w3_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w3_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w3_9 = new qx.ui.layout.CanvasLayout;
+ w3_9.setWidth(25);
+ w3_9.setHeight(25);
+ w3_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_9.setBackgroundColor(cl_aqua);
+
+ var w3_10 = new qx.ui.layout.CanvasLayout;
+ w3_10.setWidth(25);
+ w3_10.setHeight(25);
+ w3_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl3_click = 0;
+ hbl3.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl3_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setHeight("auto");
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl3_click = 0;
+ return;
+ };
+
+ hbl3_click++;
+ });
+
+ w3_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w3_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w3_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w3_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w3_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w3_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w3_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w3_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w3_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w3_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl3.add(w3_1, w3_2, w3_3, w3_4, w3_5, w3_6, w3_7, w3_8, w3_9, w3_10);
+ d.add(hbl3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FOUR:
+ LEFT ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl4 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl4.setTop(318);
+ hbl4.setLeft(20);
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setWidth(null);
+ hbl4.setRight(335);
+
+ hbl4.setSpacing(4);
+ hbl4.setPadding(8);
+ hbl4.setReverseChildrenOrder(true);
+ hbl4.setVerticalChildrenAlign("bottom");
+
+ hbl4.setHeight(80);
+
+
+
+ var w4_1 = new qx.ui.layout.CanvasLayout;
+ w4_1.setWidth(25);
+ w4_1.setHeight(25);
+ w4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_1.setBackgroundColor(cl_white);
+ // w4_1.setMaxHeight(40);
+
+ var w4_2 = new qx.ui.layout.CanvasLayout;
+ w4_2.setWidth(25);
+ w4_2.setHeight(25);
+ w4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_2.setBackgroundColor(cl_blue);
+ w4_2.setBottom(10);
+
+ var w4_3 = new qx.ui.layout.CanvasLayout;
+ w4_3.setWidth(25);
+ w4_3.setHeight("100%");
+ w4_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_3.setBackgroundColor(cl_yellow);
+
+ var w4_4 = new qx.ui.layout.CanvasLayout;
+ w4_4.setWidth(25);
+ w4_4.setHeight(25);
+ w4_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_4.setBackgroundColor(cl_green);
+
+ var w4_5 = new qx.ui.layout.CanvasLayout;
+ w4_5.setWidth(40);
+ // w4_5.setHeight(25);
+ w4_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_5.setBackgroundColor(cl_orange);
+
+ var w4_6 = new qx.ui.layout.CanvasLayout;
+ w4_6.setWidth(25);
+ w4_6.setHeight(25);
+ w4_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_6.setBackgroundColor(cl_purple);
+ w4_6.setTop(15);
+ w4_6.setLeft(-25);
+
+ var w4_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w4_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w4_9 = new qx.ui.layout.CanvasLayout;
+ w4_9.setWidth(25);
+ w4_9.setHeight(25);
+ w4_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_9.setBackgroundColor(cl_aqua);
+
+ var w4_10 = new qx.ui.layout.CanvasLayout;
+ w4_10.setWidth(25);
+ w4_10.setHeight(25);
+ w4_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl4_click = 0;
+ hbl4.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl4_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setHeight(80);
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl4_click = 0;
+ return;
+ };
+
+ hbl4_click++;
+ });
+
+ w4_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w4_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w4_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w4_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w4_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w4_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w4_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w4_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w4_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w4_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl4.add(w4_1, w4_2, w4_3, w4_4, w4_5, w4_6, w4_7, w4_8, w4_9, w4_10);
+ d.add(hbl4);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FIVE:
+ RIGHT ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl5 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl5.setTop(408);
+ hbl5.setLeft(20);
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setWidth(null);
+ hbl5.setRight(335);
+
+ hbl5.setSpacing(4);
+ hbl5.setPadding(8);
+
+ hbl5.setHorizontalChildrenAlign("right");
+ hbl5.setReverseChildrenOrder(true);
+ hbl5.setVerticalChildrenAlign("middle");
+
+ hbl5.setHeight(80);
+
+
+ var w5_1 = new qx.ui.layout.CanvasLayout;
+ w5_1.setWidth(25);
+ w5_1.setHeight(25);
+ w5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_1.setBackgroundColor(cl_white);
+ // w5_1.setMaxHeight(40);
+
+ var w5_2 = new qx.ui.layout.CanvasLayout;
+ w5_2.setWidth(25);
+ w5_2.setHeight(25);
+ w5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_2.setBackgroundColor(cl_blue);
+ w5_2.setBottom(10);
+
+ var w5_3 = new qx.ui.layout.CanvasLayout;
+ w5_3.setWidth(25);
+ w5_3.setHeight("100%");
+ w5_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_3.setBackgroundColor(cl_yellow);
+
+ var w5_4 = new qx.ui.layout.CanvasLayout;
+ w5_4.setWidth(25);
+ w5_4.setHeight(25);
+ w5_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_4.setBackgroundColor(cl_green);
+
+ var w5_5 = new qx.ui.layout.CanvasLayout;
+ w5_5.setWidth(40);
+ // w5_5.setHeight(25);
+ w5_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_5.setBackgroundColor(cl_orange);
+
+ var w5_6 = new qx.ui.layout.CanvasLayout;
+ w5_6.setWidth(25);
+ w5_6.setHeight(25);
+ w5_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_6.setBackgroundColor(cl_purple);
+ w5_6.setTop(15);
+ w5_6.setLeft(-25);
+
+ var w5_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w5_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w5_9 = new qx.ui.layout.CanvasLayout;
+ w5_9.setWidth(25);
+ w5_9.setHeight(25);
+ w5_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_9.setBackgroundColor(cl_aqua);
+
+ var w5_10 = new qx.ui.layout.CanvasLayout;
+ w5_10.setWidth(25);
+ w5_10.setHeight(25);
+ w5_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl5_click = 0;
+ hbl5.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl5_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setHeight(80);
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl5_click = 0;
+ return;
+ };
+
+ hbl5_click++;
+ });
+
+ w5_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w5_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w5_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w5_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w5_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w5_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w5_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w5_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w5_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w5_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl5.add(w5_1, w5_2, w5_3, w5_4, w5_5, w5_6, w5_7, w5_8, w5_9, w5_10);
+ d.add(hbl5);
+
+
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE SIX:
+ CENTER ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl6 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl6.setTop(498);
+ hbl6.setLeft(20);
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setWidth(null);
+ hbl6.setRight(335);
+
+ hbl6.setSpacing(4);
+ hbl6.setPadding(8);
+
+ hbl6.setHorizontalChildrenAlign("center");
+ hbl6.setReverseChildrenOrder(true);
+ hbl6.setHeight(80);
+
+
+ var w6_1 = new qx.ui.layout.CanvasLayout;
+ w6_1.setWidth(25);
+ w6_1.setHeight(25);
+ w6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_1.setBackgroundColor(cl_white);
+ // w6_1.setMaxHeight(40);
+
+ var w6_2 = new qx.ui.layout.CanvasLayout;
+ w6_2.setWidth(25);
+ w6_2.setHeight(25);
+ w6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_2.setBackgroundColor(cl_blue);
+ w6_2.setBottom(10);
+
+ var w6_3 = new qx.ui.layout.CanvasLayout;
+ w6_3.setWidth(25);
+ w6_3.setHeight("100%");
+ w6_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_3.setBackgroundColor(cl_yellow);
+
+ var w6_4 = new qx.ui.layout.CanvasLayout;
+ w6_4.setWidth(25);
+ w6_4.setHeight(25);
+ w6_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_4.setBackgroundColor(cl_green);
+
+ var w6_5 = new qx.ui.layout.CanvasLayout;
+ w6_5.setWidth(40);
+ // w6_5.setHeight(25);
+ w6_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_5.setBackgroundColor(cl_orange);
+
+ var w6_6 = new qx.ui.layout.CanvasLayout;
+ w6_6.setWidth(25);
+ w6_6.setHeight(25);
+ w6_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_6.setBackgroundColor(cl_purple);
+ w6_6.setTop(15);
+ w6_6.setLeft(-25);
+
+ var w6_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w6_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w6_9 = new qx.ui.layout.CanvasLayout;
+ w6_9.setWidth(25);
+ w6_9.setHeight(25);
+ w6_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_9.setBackgroundColor(cl_aqua);
+
+ var w6_10 = new qx.ui.layout.CanvasLayout;
+ w6_10.setWidth(25);
+ w6_10.setHeight(25);
+ w6_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl6_click = 0;
+ hbl6.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl6_click)
+ {
+ case 0:
+ this.setRight(null);
+ this.setWidth("auto");
+ break;
+
+ case 1:
+ this.setHeight(30);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setHeight(80);
+ break;
+
+ case 4:
+ this.setWidth(200);
+ break;
+
+ case 5:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl6_click = 0;
+ return;
+ };
+
+ hbl6_click++;
+ });
+
+ w6_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w6_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w6_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w6_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w6_5.addEventListener("click", function(e) {
+ this.getWidth() == 40 ? this.setWidth(80) : this.setWidth(40);
+ });
+
+ w6_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w6_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w6_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w6_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w6_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl6.add(w6_1, w6_2, w6_3, w6_4, w6_5, w6_6, w6_7, w6_8, w6_9, w6_10);
+ d.add(hbl6);
+
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_2.html
new file mode 100644
index 0000000000..80520ddc64
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_2.html
@@ -0,0 +1,1233 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.HorizontalBoxLayout widget.
+ This example includes a child with a width defined as percent. This makes
+ things much more complex (especially on resizing of the parent) so this also
+ dramatically reduces the speed ;)
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var cl_white = new qx.renderer.color.Color("white");
+ var cl_blue = new qx.renderer.color.Color("blue");
+ var cl_yellow = new qx.renderer.color.Color("yellow");
+ var cl_green = new qx.renderer.color.Color("green");
+ var cl_orange = new qx.renderer.color.Color("orange");
+ var cl_purple = new qx.renderer.color.Color("purple");
+ var cl_aqua = new qx.renderer.color.Color("aqua");
+ var cl_fuchsia = new qx.renderer.color.Color("fuchsia");
+
+ /* ***********************************************
+
+ EXAMPLE ONE:
+ LEFT ALIGN
+
+ *********************************************** */
+
+ var hbl1 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl1.setTop(48);
+ hbl1.setLeft(20);
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setHeight("auto");
+ hbl1.setRight(335);
+
+ hbl1.setSpacing(4);
+ hbl1.setPadding(8);
+
+ hbl1.setVerticalChildrenAlign("bottom");
+
+
+ var w1_1 = new qx.ui.layout.CanvasLayout;
+ w1_1.setWidth(25);
+ w1_1.setHeight(25);
+ w1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_1.setBackgroundColor(cl_white);
+ // w1_1.setMaxHeight(40);
+
+ var w1_2 = new qx.ui.layout.CanvasLayout;
+ w1_2.setWidth(25);
+ w1_2.setHeight(25);
+ w1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_2.setBackgroundColor(cl_blue);
+ w1_2.setBottom(10);
+
+ var w1_3 = new qx.ui.layout.CanvasLayout;
+ w1_3.setWidth(25);
+ w1_3.setHeight("100%");
+ w1_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_3.setBackgroundColor(cl_yellow);
+
+ var w1_4 = new qx.ui.layout.CanvasLayout;
+ w1_4.setWidth(25);
+ w1_4.setHeight(25);
+ w1_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_4.setBackgroundColor(cl_green);
+
+ var w1_5 = new qx.ui.layout.CanvasLayout;
+ w1_5.setWidth("15%");
+ // w1_5.setHeight(25);
+ w1_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_5.setBackgroundColor(cl_orange);
+
+ var w1_6 = new qx.ui.layout.CanvasLayout;
+ w1_6.setWidth(25);
+ w1_6.setHeight(25);
+ w1_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_6.setBackgroundColor(cl_purple);
+ w1_6.setTop(15);
+ w1_6.setLeft(-25);
+
+ var w1_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w1_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w1_9 = new qx.ui.layout.CanvasLayout;
+ w1_9.setWidth(25);
+ w1_9.setHeight(25);
+ w1_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_9.setBackgroundColor(cl_aqua);
+
+ var w1_10 = new qx.ui.layout.CanvasLayout;
+ w1_10.setWidth(25);
+ w1_10.setHeight(25);
+ w1_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_10.setBackgroundColor(cl_fuchsia);
+
+ var hbl1_click = 0;
+ hbl1.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl1_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight(80);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl1_click = 0;
+ return;
+ };
+
+ hbl1_click++;
+ });
+
+ w1_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w1_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w1_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w1_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w1_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w1_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w1_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w1_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w1_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w1_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl1.add(w1_1, w1_2, w1_3, w1_4, w1_5, w1_6, w1_7, w1_8, w1_9, w1_10);
+ d.add(hbl1);
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE TWO:
+ RIGHT ALIGN
+
+ *********************************************** */
+
+ var hbl2 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl2.setTop(138);
+ hbl2.setLeft(20);
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setHeight("auto");
+ hbl2.setRight(335);
+
+ hbl2.setSpacing(4);
+ hbl2.setPadding(8);
+
+ hbl2.setHorizontalChildrenAlign("right");
+ hbl2.setVerticalChildrenAlign("middle");
+
+
+ var w2_1 = new qx.ui.layout.CanvasLayout;
+ w2_1.setWidth(25);
+ w2_1.setHeight(25);
+ w2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_1.setBackgroundColor(cl_white);
+ // w2_1.setMaxHeight(40);
+
+ var w2_2 = new qx.ui.layout.CanvasLayout;
+ w2_2.setWidth(25);
+ w2_2.setHeight(25);
+ w2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_2.setBackgroundColor(cl_blue);
+ w2_2.setBottom(10);
+
+ var w2_3 = new qx.ui.layout.CanvasLayout;
+ w2_3.setWidth(25);
+ w2_3.setHeight("100%");
+ w2_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_3.setBackgroundColor(cl_yellow);
+
+ var w2_4 = new qx.ui.layout.CanvasLayout;
+ w2_4.setWidth(25);
+ w2_4.setHeight(25);
+ w2_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_4.setBackgroundColor(cl_green);
+
+ var w2_5 = new qx.ui.layout.CanvasLayout;
+ w2_5.setWidth("15%");
+ // w2_5.setHeight(25);
+ w2_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_5.setBackgroundColor(cl_orange);
+
+ var w2_6 = new qx.ui.layout.CanvasLayout;
+ w2_6.setWidth(25);
+ w2_6.setHeight(25);
+ w2_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_6.setBackgroundColor(cl_purple);
+ w2_6.setTop(15);
+ w2_6.setLeft(-25);
+
+ var w2_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w2_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w2_9 = new qx.ui.layout.CanvasLayout;
+ w2_9.setWidth(25);
+ w2_9.setHeight(25);
+ w2_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_9.setBackgroundColor(cl_aqua);
+
+ var w2_10 = new qx.ui.layout.CanvasLayout;
+ w2_10.setWidth(25);
+ w2_10.setHeight(25);
+ w2_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_10.setBackgroundColor(cl_fuchsia);
+ w2_10.foo = true;
+
+
+ var hbl2_click = 0;
+ hbl2.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl2_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight(80);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl2_click = 0;
+ return;
+ };
+
+ hbl2_click++;
+ });
+
+ w2_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w2_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w2_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w2_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w2_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w2_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w2_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w2_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w2_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w2_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl2.add(w2_1, w2_2, w2_3, w2_4, w2_5, w2_6, w2_7, w2_8, w2_9, w2_10);
+ d.add(hbl2);
+
+
+ /* ***********************************************
+
+ EXAMPLE THREE:
+ CENTER ALIGN
+
+ *********************************************** */
+
+ var hbl3 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl3.setTop(228);
+ hbl3.setLeft(20);
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setHeight("auto");
+ hbl3.setRight(335);
+
+ hbl3.setSpacing(4);
+ hbl3.setPadding(8);
+
+ hbl3.setHorizontalChildrenAlign("center");
+
+
+
+ var w3_1 = new qx.ui.layout.CanvasLayout;
+ w3_1.setWidth(25);
+ w3_1.setHeight(25);
+ w3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_1.setBackgroundColor(cl_white);
+ // w3_1.setMaxHeight(40);
+
+ var w3_2 = new qx.ui.layout.CanvasLayout;
+ w3_2.setWidth(25);
+ w3_2.setHeight(25);
+ w3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_2.setBackgroundColor(cl_blue);
+ w3_2.setBottom(10);
+
+ var w3_3 = new qx.ui.layout.CanvasLayout;
+ w3_3.setWidth(25);
+ w3_3.setHeight("100%");
+ w3_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_3.setBackgroundColor(cl_yellow);
+
+ var w3_4 = new qx.ui.layout.CanvasLayout;
+ w3_4.setWidth(25);
+ w3_4.setHeight(25);
+ w3_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_4.setBackgroundColor(cl_green);
+
+ var w3_5 = new qx.ui.layout.CanvasLayout;
+ w3_5.setWidth("15%");
+ // w3_5.setHeight(25);
+ w3_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_5.setBackgroundColor(cl_orange);
+
+ var w3_6 = new qx.ui.layout.CanvasLayout;
+ w3_6.setWidth(25);
+ w3_6.setHeight(25);
+ w3_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_6.setBackgroundColor(cl_purple);
+ w3_6.setTop(15);
+ w3_6.setLeft(-25);
+
+ var w3_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w3_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w3_9 = new qx.ui.layout.CanvasLayout;
+ w3_9.setWidth(25);
+ w3_9.setHeight(25);
+ w3_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_9.setBackgroundColor(cl_aqua);
+
+ var w3_10 = new qx.ui.layout.CanvasLayout;
+ w3_10.setWidth(25);
+ w3_10.setHeight(25);
+ w3_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl3_click = 0;
+ hbl3.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl3_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight(80);
+ break;
+
+ case 2:
+ this.setHeight("auto");
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl3_click = 0;
+ return;
+ };
+
+ hbl3_click++;
+ });
+
+ w3_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w3_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w3_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w3_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w3_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w3_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w3_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w3_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w3_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w3_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl3.add(w3_1, w3_2, w3_3, w3_4, w3_5, w3_6, w3_7, w3_8, w3_9, w3_10);
+ d.add(hbl3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FOUR:
+ LEFT ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl4 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl4.setTop(318);
+ hbl4.setLeft(20);
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setWidth(null);
+ hbl4.setRight(335);
+
+ hbl4.setSpacing(4);
+ hbl4.setPadding(8);
+ hbl4.setReverseChildrenOrder(true);
+ hbl4.setVerticalChildrenAlign("bottom");
+
+ hbl4.setHeight(80);
+
+
+
+ var w4_1 = new qx.ui.layout.CanvasLayout;
+ w4_1.setWidth(25);
+ w4_1.setHeight(25);
+ w4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_1.setBackgroundColor(cl_white);
+ // w4_1.setMaxHeight(40);
+
+ var w4_2 = new qx.ui.layout.CanvasLayout;
+ w4_2.setWidth(25);
+ w4_2.setHeight(25);
+ w4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_2.setBackgroundColor(cl_blue);
+ w4_2.setBottom(10);
+
+ var w4_3 = new qx.ui.layout.CanvasLayout;
+ w4_3.setWidth(25);
+ w4_3.setHeight("100%");
+ w4_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_3.setBackgroundColor(cl_yellow);
+
+ var w4_4 = new qx.ui.layout.CanvasLayout;
+ w4_4.setWidth(25);
+ w4_4.setHeight(25);
+ w4_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_4.setBackgroundColor(cl_green);
+
+ var w4_5 = new qx.ui.layout.CanvasLayout;
+ w4_5.setWidth("15%");
+ // w4_5.setHeight(25);
+ w4_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_5.setBackgroundColor(cl_orange);
+
+ var w4_6 = new qx.ui.layout.CanvasLayout;
+ w4_6.setWidth(25);
+ w4_6.setHeight(25);
+ w4_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_6.setBackgroundColor(cl_purple);
+ w4_6.setTop(15);
+ w4_6.setLeft(-25);
+
+ var w4_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w4_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w4_9 = new qx.ui.layout.CanvasLayout;
+ w4_9.setWidth(25);
+ w4_9.setHeight(25);
+ w4_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_9.setBackgroundColor(cl_aqua);
+
+ var w4_10 = new qx.ui.layout.CanvasLayout;
+ w4_10.setWidth(25);
+ w4_10.setHeight(25);
+ w4_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl4_click = 0;
+ hbl4.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl4_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight("auto");
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl4_click = 0;
+ return;
+ };
+
+ hbl4_click++;
+ });
+
+ w4_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w4_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w4_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w4_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w4_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w4_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w4_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w4_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w4_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w4_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl4.add(w4_1, w4_2, w4_3, w4_4, w4_5, w4_6, w4_7, w4_8, w4_9, w4_10);
+ d.add(hbl4);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FIVE:
+ RIGHT ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl5 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl5.setTop(408);
+ hbl5.setLeft(20);
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setWidth(null);
+ hbl5.setRight(335);
+
+ hbl5.setSpacing(4);
+ hbl5.setPadding(8);
+
+ hbl5.setHorizontalChildrenAlign("right");
+ hbl5.setReverseChildrenOrder(true);
+ hbl5.setVerticalChildrenAlign("middle");
+
+ hbl5.setHeight(80);
+
+
+ var w5_1 = new qx.ui.layout.CanvasLayout;
+ w5_1.setWidth(25);
+ w5_1.setHeight(25);
+ w5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_1.setBackgroundColor(cl_white);
+ // w5_1.setMaxHeight(40);
+
+ var w5_2 = new qx.ui.layout.CanvasLayout;
+ w5_2.setWidth(25);
+ w5_2.setHeight(25);
+ w5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_2.setBackgroundColor(cl_blue);
+ w5_2.setBottom(10);
+
+ var w5_3 = new qx.ui.layout.CanvasLayout;
+ w5_3.setWidth(25);
+ w5_3.setHeight("100%");
+ w5_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_3.setBackgroundColor(cl_yellow);
+
+ var w5_4 = new qx.ui.layout.CanvasLayout;
+ w5_4.setWidth(25);
+ w5_4.setHeight(25);
+ w5_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_4.setBackgroundColor(cl_green);
+
+ var w5_5 = new qx.ui.layout.CanvasLayout;
+ w5_5.setWidth("15%");
+ // w5_5.setHeight(25);
+ w5_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_5.setBackgroundColor(cl_orange);
+
+ var w5_6 = new qx.ui.layout.CanvasLayout;
+ w5_6.setWidth(25);
+ w5_6.setHeight(25);
+ w5_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_6.setBackgroundColor(cl_purple);
+ w5_6.setTop(15);
+ w5_6.setLeft(-25);
+
+ var w5_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w5_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w5_9 = new qx.ui.layout.CanvasLayout;
+ w5_9.setWidth(25);
+ w5_9.setHeight(25);
+ w5_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_9.setBackgroundColor(cl_aqua);
+
+ var w5_10 = new qx.ui.layout.CanvasLayout;
+ w5_10.setWidth(25);
+ w5_10.setHeight(25);
+ w5_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl5_click = 0;
+ hbl5.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl5_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight("auto");
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl5_click = 0;
+ return;
+ };
+
+ hbl5_click++;
+ });
+
+ w5_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w5_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w5_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w5_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w5_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w5_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w5_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w5_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w5_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w5_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl5.add(w5_1, w5_2, w5_3, w5_4, w5_5, w5_6, w5_7, w5_8, w5_9, w5_10);
+ d.add(hbl5);
+
+
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE SIX:
+ CENTER ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl6 = new qx.ui.layout.HorizontalBoxLayout;
+
+ hbl6.setTop(498);
+ hbl6.setLeft(20);
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setWidth(null);
+ hbl6.setRight(335);
+
+ hbl6.setSpacing(4);
+ hbl6.setPadding(8);
+
+ hbl6.setHorizontalChildrenAlign("center");
+ hbl6.setReverseChildrenOrder(true);
+ hbl6.setHeight(80);
+
+
+ var w6_1 = new qx.ui.layout.CanvasLayout;
+ w6_1.setWidth(25);
+ w6_1.setHeight(25);
+ w6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_1.setBackgroundColor(cl_white);
+ // w6_1.setMaxHeight(40);
+
+ var w6_2 = new qx.ui.layout.CanvasLayout;
+ w6_2.setWidth(25);
+ w6_2.setHeight(25);
+ w6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_2.setBackgroundColor(cl_blue);
+ w6_2.setBottom(10);
+
+ var w6_3 = new qx.ui.layout.CanvasLayout;
+ w6_3.setWidth(25);
+ w6_3.setHeight("100%");
+ w6_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_3.setBackgroundColor(cl_yellow);
+
+ var w6_4 = new qx.ui.layout.CanvasLayout;
+ w6_4.setWidth(25);
+ w6_4.setHeight(25);
+ w6_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_4.setBackgroundColor(cl_green);
+
+ var w6_5 = new qx.ui.layout.CanvasLayout;
+ w6_5.setWidth("15%");
+ // w6_5.setHeight(25);
+ w6_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_5.setBackgroundColor(cl_orange);
+
+ var w6_6 = new qx.ui.layout.CanvasLayout;
+ w6_6.setWidth(25);
+ w6_6.setHeight(25);
+ w6_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_6.setBackgroundColor(cl_purple);
+ w6_6.setTop(15);
+ w6_6.setLeft(-25);
+
+ var w6_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w6_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w6_9 = new qx.ui.layout.CanvasLayout;
+ w6_9.setWidth(25);
+ w6_9.setHeight(25);
+ w6_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_9.setBackgroundColor(cl_aqua);
+
+ var w6_10 = new qx.ui.layout.CanvasLayout;
+ w6_10.setWidth(25);
+ w6_10.setHeight(25);
+ w6_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl6_click = 0;
+ hbl6.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl6_click)
+ {
+ case 0:
+ this.setHeight(30);
+ break;
+
+ case 1:
+ this.setHeight("auto");
+ break;
+
+ case 2:
+ this.setHeight(80);
+ break;
+
+ case 3:
+ this.setWidth(200);
+ break;
+
+ case 4:
+ this.setWidth(null);
+ this.setRight(335);
+ hbl6_click = 0;
+ return;
+ };
+
+ hbl6_click++;
+ });
+
+ w6_1.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(65);
+ this.setHeight(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w6_2.addEventListener("click", function(e) {
+ this.getMarginRight() == 0 ? this.setMarginRight(10) : this.setMarginRight(0);
+ });
+
+ w6_3.addEventListener("click", function(e) {
+ this.getMinWidth() == -Infinity ? this.setMinWidth(100) : this.setMinWidth(-Infinity);
+ });
+
+ w6_4.addEventListener("click", function(e) {
+ this.getWidth() == 25 ? this.setWidth(50) : this.setWidth(25);
+ });
+
+ w6_5.addEventListener("click", function(e) {
+ this.getWidth() == "15%" ? this.setWidth("30%") : this.setWidth("15%");
+ });
+
+ w6_6.addEventListener("click", function(e) {
+ this.getLeft() == -25 ? this.setLeft(25) : this.setLeft(-25);
+ });
+
+ w6_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w6_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w6_9.addEventListener("click", function(e)
+ {
+ if (this.getTop() == null)
+ {
+ this.setTop(20);
+ this.setLeft(-10);
+ }
+ else
+ {
+ this.setTop(null);
+ this.setLeft(null);
+ };
+ });
+
+ w6_10.addEventListener("click", function(e)
+ {
+ if (this.getWidth() == 25)
+ {
+ this.setWidth(10);
+ this.setHeight(10);
+ this.setLeft(-5);
+ this.setBottom(15);
+ }
+ else
+ {
+ this.setWidth(25);
+ this.setHeight(25);
+ this.setLeft(null);
+ this.setBottom(null);
+ };
+ });
+
+
+
+ hbl6.add(w6_1, w6_2, w6_3, w6_4, w6_5, w6_6, w6_7, w6_8, w6_9, w6_10);
+ d.add(hbl6);
+
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_3.html
new file mode 100644
index 0000000000..92579e35a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HorizontalBoxLayout_3.html
@@ -0,0 +1,594 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.HorizontalBoxLayout widget.<br/>
+ <br/>
+ 1. Simple testing, one static and one flex child<br/>
+ 2. Two flex children with the same priority<br/>
+ 3. The same as #2, but the second has the doubled priority compared to the first<br/>
+ <br/>
+
+ 4. The same as #3, but now the second child has a max-width of 50px<br/>
+ 5. The same as #4, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 6. The same as #3, but now the second has a min width of 500px<br/>
+ 7. The same as #6, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 8. Three children with the priorities: 1, 2 and 3. The second has a maxWidth of 50px<br/>
+ 9. The same as #8, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 10. Three children with the priorities: 1, 2 and 3. Added a few mouse actions.<br/>
+ 11. Three children with the priorities: 1, a static width of 80px and 3.<br/>
+ 12. The same as #11, but configured as 'auto' width.<br/>
+ <br/>
+
+ 13. Test for more complex child widgets. Seems to work without problems.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ /* ***********************************************
+
+ EXAMPLE 1:
+
+ *********************************************** */
+
+ var te1 = new qx.ui.basic.Label("#1");
+ te1.setLocation(20, 48);
+ d.add(te1);
+
+ var hbl1 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl1.setLeft(50);
+ hbl1.setTop(48);
+ hbl1.setRight(335);
+ hbl1.setWidth(null);
+ hbl1.setHeight("auto");
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setSpacing(4);
+ hbl1.setPadding(2);
+ d.add(hbl1);
+
+ var t1_1 = new qx.ui.basic.Terminator;
+ t1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1_1.setWidth(20);
+ t1_1.setHeight(10);
+ t1_1.setBackgroundColor("green");
+ hbl1.add(t1_1);
+
+ t1_1.addEventListener("click", function() {
+ this.setWidth(this.getWidth() == 20 ? 100 : 20);
+ });
+
+ var t1_2 = new qx.ui.basic.Terminator;
+ t1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1_2.setWidth("1*");
+ t1_2.setHeight(10);
+ t1_2.setBackgroundColor("blue");
+ hbl1.add(t1_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 2:
+
+ *********************************************** */
+
+ var te2 = new qx.ui.basic.Label("#2");
+ te2.setLocation(20, 68);
+ d.add(te2);
+
+ var hbl2 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl2.setLeft(50);
+ hbl2.setTop(68);
+ hbl2.setRight(335);
+ hbl2.setWidth(null);
+ hbl2.setHeight("auto");
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setSpacing(4);
+ hbl2.setPadding(2);
+ d.add(hbl2);
+
+ var t2_1 = new qx.ui.basic.Terminator;
+ t2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2_1.setWidth("1*");
+ t2_1.setHeight(10);
+ t2_1.setBackgroundColor("green");
+ hbl2.add(t2_1);
+
+ var t2_2 = new qx.ui.basic.Terminator;
+ t2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2_2.setWidth("1*");
+ t2_2.setHeight(10);
+ t2_2.setBackgroundColor("blue");
+ hbl2.add(t2_2);
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 3:
+
+ *********************************************** */
+
+ var te3 = new qx.ui.basic.Label("#3");
+ te3.setLocation(20, 88);
+ d.add(te3);
+
+ var hbl3 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl3.setLeft(50);
+ hbl3.setTop(88);
+ hbl3.setRight(335);
+ hbl3.setWidth(null);
+ hbl3.setHeight("auto");
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setSpacing(4);
+ hbl3.setPadding(2);
+ d.add(hbl3);
+
+ var t3_1 = new qx.ui.basic.Terminator;
+ t3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3_1.setWidth("1*");
+ t3_1.setHeight(10);
+ t3_1.setBackgroundColor("green");
+ hbl3.add(t3_1);
+
+ var t3_2 = new qx.ui.basic.Terminator;
+ t3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3_2.setWidth("2*");
+ t3_2.setHeight(10);
+ t3_2.setBackgroundColor("blue");
+ hbl3.add(t3_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 4:
+
+ *********************************************** */
+
+ var te4 = new qx.ui.basic.Label("#4");
+ te4.setLocation(20, 128);
+ d.add(te4);
+
+ var hbl4 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl4.setLeft(50);
+ hbl4.setTop(128);
+ hbl4.setRight(335);
+ hbl4.setWidth(null);
+ hbl4.setHeight("auto");
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setSpacing(4);
+ hbl4.setPadding(2);
+ d.add(hbl4);
+
+ var t4_1 = new qx.ui.basic.Terminator;
+ t4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4_1.setWidth("1*");
+ t4_1.setHeight(10);
+ t4_1.setBackgroundColor("green");
+ hbl4.add(t4_1);
+
+ var t4_2 = new qx.ui.basic.Terminator;
+ t4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4_2.setWidth("2*");
+ t4_2.setHeight(10);
+ t4_2.setMaxWidth(50);
+ t4_2.setBackgroundColor("blue");
+ hbl4.add(t4_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 5:
+
+ *********************************************** */
+
+ var te5 = new qx.ui.basic.Label("#5");
+ te5.setLocation(20, 148);
+ d.add(te5);
+
+ var hbl5 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl5.setLeft(50);
+ hbl5.setTop(148);
+ hbl5.setRight(335);
+ hbl5.setWidth(null);
+ hbl5.setHeight("auto");
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setSpacing(4);
+ hbl5.setPadding(2);
+ hbl5.setUseAdvancedFlexAllocation(true);
+ d.add(hbl5);
+
+ var t5_1 = new qx.ui.basic.Terminator;
+ t5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5_1.setWidth("1*");
+ t5_1.setHeight(10);
+ t5_1.setBackgroundColor("green");
+ hbl5.add(t5_1);
+
+ var t5_2 = new qx.ui.basic.Terminator;
+ t5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5_2.setWidth("2*");
+ t5_2.setHeight(10);
+ t5_2.setMaxWidth(50);
+ t5_2.setBackgroundColor("blue");
+ hbl5.add(t5_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 6:
+
+ *********************************************** */
+
+ var te6 = new qx.ui.basic.Label("#6");
+ te6.setLocation(20, 188);
+ d.add(te6);
+
+ var hbl6 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl6.setLeft(50);
+ hbl6.setTop(188);
+ hbl6.setRight(335);
+ hbl6.setWidth(null);
+ hbl6.setHeight("auto");
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setSpacing(4);
+ hbl6.setPadding(2);
+ d.add(hbl6);
+
+ var t6_1 = new qx.ui.basic.Terminator;
+ t6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6_1.setWidth("1*");
+ t6_1.setHeight(10);
+ t6_1.setBackgroundColor("green");
+ hbl6.add(t6_1);
+
+ var t6_2 = new qx.ui.basic.Terminator;
+ t6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6_2.setWidth("2*");
+ t6_2.setHeight(10);
+ t6_2.setMinWidth(500);
+ t6_2.setBackgroundColor("blue");
+ hbl6.add(t6_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 7:
+
+ *********************************************** */
+
+ var te7 = new qx.ui.basic.Label("#7");
+ te7.setLocation(20, 208);
+ d.add(te7);
+
+ var hbl7 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl7.setLeft(50);
+ hbl7.setTop(208);
+ hbl7.setRight(335);
+ hbl7.setWidth(null);
+ hbl7.setHeight("auto");
+ hbl7.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl7.setSpacing(4);
+ hbl7.setPadding(2);
+ hbl7.setUseAdvancedFlexAllocation(true);
+ d.add(hbl7);
+
+ var t7_1 = new qx.ui.basic.Terminator;
+ t7_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t7_1.setWidth("1*");
+ t7_1.setHeight(10);
+ t7_1.setBackgroundColor("green");
+ hbl7.add(t7_1);
+
+ var t7_2 = new qx.ui.basic.Terminator;
+ t7_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t7_2.setWidth("2*");
+ t7_2.setHeight(10);
+ t7_2.setMinWidth(500);
+ t7_2.setBackgroundColor("blue");
+ hbl7.add(t7_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 8:
+
+ *********************************************** */
+
+ var te8 = new qx.ui.basic.Label("#8");
+ te8.setLocation(20, 248);
+ d.add(te8);
+
+ var hbl8 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl8.setLeft(50);
+ hbl8.setTop(248);
+ hbl8.setRight(335);
+ hbl8.setWidth(null);
+ hbl8.setHeight("auto");
+ hbl8.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl8.setSpacing(4);
+ hbl8.setPadding(2);
+ d.add(hbl8);
+
+ var t8_1 = new qx.ui.basic.Terminator;
+ t8_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_1.setWidth("1*");
+ t8_1.setHeight(10);
+ t8_1.setBackgroundColor("green");
+ hbl8.add(t8_1);
+
+ var t8_2 = new qx.ui.basic.Terminator;
+ t8_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_2.setWidth("2*");
+ t8_2.setHeight(10);
+ t8_2.setBackgroundColor("blue");
+ t8_2.setMaxWidth(50);
+ hbl8.add(t8_2);
+
+ var t8_3 = new qx.ui.basic.Terminator;
+ t8_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_3.setWidth("3*");
+ t8_3.setHeight(10);
+ t8_3.setBackgroundColor("red");
+ hbl8.add(t8_3);
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 9:
+
+ *********************************************** */
+
+ var te9 = new qx.ui.basic.Label("#9");
+ te9.setLocation(20, 268);
+ d.add(te9);
+
+ var hbl9 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl9.setLeft(50);
+ hbl9.setTop(268);
+ hbl9.setRight(335);
+ hbl9.setWidth(null);
+ hbl9.setHeight("auto");
+ hbl9.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl9.setSpacing(4);
+ hbl9.setPadding(2);
+ hbl9.setUseAdvancedFlexAllocation(true);
+ d.add(hbl9);
+
+ var t9_1 = new qx.ui.basic.Terminator;
+ t9_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_1.setWidth("1*");
+ t9_1.setHeight(10);
+ t9_1.setBackgroundColor("green");
+ hbl9.add(t9_1);
+
+ var t9_2 = new qx.ui.basic.Terminator;
+ t9_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_2.setWidth("2*");
+ t9_2.setHeight(10);
+ t9_2.setBackgroundColor("blue");
+ t9_2.setMaxWidth(50);
+ hbl9.add(t9_2);
+
+ var t9_3 = new qx.ui.basic.Terminator;
+ t9_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_3.setWidth("3*");
+ t9_3.setHeight(10);
+ t9_3.setBackgroundColor("red");
+ hbl9.add(t9_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 10:
+
+ *********************************************** */
+
+ var te10 = new qx.ui.basic.Label("#10");
+ te10.setLocation(20, 308);
+ d.add(te10);
+
+ var hbl10 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl10.setLeft(50);
+ hbl10.setTop(308);
+ hbl10.setRight(335);
+ hbl10.setWidth(null);
+ hbl10.setHeight("auto");
+ hbl10.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl10.setSpacing(4);
+ hbl10.setPadding(2);
+ hbl10.setUseAdvancedFlexAllocation(true);
+ d.add(hbl10);
+
+ var t10_1 = new qx.ui.basic.Terminator;
+ t10_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_1.setWidth("1*");
+ t10_1.setHeight(10);
+ t10_1.setBackgroundColor("green");
+ t10_1.addEventListener("click", function(e) { this.setWidth(this.getWidth() == "1*" ? "4*" : "1*"); });
+ hbl10.add(t10_1);
+
+ var t10_2 = new qx.ui.basic.Terminator;
+ t10_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_2.setWidth("2*");
+ t10_2.setHeight(10);
+ t10_2.setBackgroundColor("blue");
+ t10_2.addEventListener("click", function(e) { this.setWidth(this.getWidth() == "2*" ? "1*" : "2*"); });
+ hbl10.add(t10_2);
+
+ var t10_3 = new qx.ui.basic.Terminator;
+ t10_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_3.setWidth("3*");
+ t10_3.setHeight(10);
+ t10_3.setBackgroundColor("red");
+ t10_3.addEventListener("click", function(e) { this.setWidth(this.getWidth() == "3*" ? "6*" : "3*"); });
+ hbl10.add(t10_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 11:
+
+ *********************************************** */
+
+ var te11 = new qx.ui.basic.Label("#11");
+ te11.setLocation(20, 328);
+ d.add(te11);
+
+ var hbl11 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl11.setLeft(50);
+ hbl11.setTop(328);
+ hbl11.setRight(335);
+ hbl11.setWidth(null);
+ hbl11.setHeight("auto");
+ hbl11.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl11.setSpacing(4);
+ hbl11.setPadding(2);
+ d.add(hbl11);
+
+ var t11_1 = new qx.ui.basic.Terminator;
+ t11_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_1.setWidth("1*");
+ t11_1.setHeight(10);
+ t11_1.setBackgroundColor("green");
+ hbl11.add(t11_1);
+
+ var t11_2 = new qx.ui.basic.Terminator;
+ t11_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_2.setWidth(80);
+ t11_2.setHeight(10);
+ t11_2.setBackgroundColor("blue");
+ hbl11.add(t11_2);
+
+ var t11_3 = new qx.ui.basic.Terminator;
+ t11_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_3.setWidth("3*");
+ t11_3.setHeight(10);
+ t11_3.setBackgroundColor("red");
+ hbl11.add(t11_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 12:
+
+ *********************************************** */
+
+ var te12 = new qx.ui.basic.Label("#12");
+ te12.setLocation(20, 348);
+ d.add(te12);
+
+ var hbl12 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl12.setLeft(50);
+ hbl12.setTop(348);
+ hbl12.setHeight("auto");
+ hbl12.setWidth("auto");
+ hbl12.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl12.setSpacing(4);
+ hbl12.setPadding(2);
+ d.add(hbl12);
+
+ var t12_1 = new qx.ui.basic.Terminator;
+ t12_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_1.setWidth("1*");
+ t12_1.setHeight(10);
+ t12_1.setBackgroundColor("green");
+ hbl12.add(t12_1);
+
+ var t12_2 = new qx.ui.basic.Terminator;
+ t12_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_2.setWidth(80);
+ t12_2.setHeight(10);
+ t12_2.setBackgroundColor("blue");
+ hbl12.add(t12_2);
+
+ var t12_3 = new qx.ui.basic.Terminator;
+ t12_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_3.setWidth("3*");
+ t12_3.setHeight(10);
+ t12_3.setBackgroundColor("red");
+ hbl12.add(t12_3);
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 13:
+
+ *********************************************** */
+
+ var te13 = new qx.ui.basic.Label("#13");
+ te13.setLocation(20, 388);
+ d.add(te13);
+
+ var hbl13 = new qx.ui.layout.HorizontalBoxLayout;
+ hbl13.setLeft(50);
+ hbl13.setTop(388);
+ hbl13.setRight(335);
+ hbl13.setWidth(null);
+ hbl13.setHeight("auto");
+ hbl13.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl13.setSpacing(4);
+ hbl13.setPadding(2);
+ d.add(hbl13);
+
+ var t13_1 = new qx.ui.basic.Terminator;
+ t13_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t13_1.setWidth(200);
+ t13_1.setHeight(10);
+ t13_1.setBackgroundColor("green");
+ hbl13.add(t13_1);
+
+ var t13_2 = new qx.ui.form.TextField("http://qooxdoo.org");
+ t13_2.setWidth("1*");
+ t13_2.setStyleProperty("fontSize", "16px");
+ hbl13.add(t13_2);
+
+ var t13_3 = new qx.ui.form.Button(null, "icon/16/actions/dialog-ok.png");
+ hbl13.add(t13_3);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HtmlTable_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HtmlTable_1.html
new file mode 100644
index 0000000000..ff20fa94d7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HtmlTable_1.html
@@ -0,0 +1,142 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <style type="text/css">*{ font-size: 10px; font-family: Verdana }</style>
+
+ <div id="demoDescription">
+ <p>Test table.</p>
+ </div>
+
+ <textarea id="info" style="position:absolute; top:48px; left:20px; width:600px;height:50px;border:1px solid black"></textarea>
+ <div id="view" style="position:absolute;top:148px;left:20px;width:400px;height:500px;border:1px solid black"></div>
+ <div id="scroller" style="position: absolute; top:148px; left:420px;height:500px;width:24px;border:1px solid black;overflow:scroll"><div id="scrollerContent" style="width:1px;height:5000px"></div></div>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var updateCount = 0;
+
+ var tableHeight = 512;
+
+ var entryCount = 1000;
+
+ var rowHeight = 16;
+ var rowCount = Math.floor(tableHeight / rowHeight);
+
+ var view = document.getElementById("view");
+ var info = document.getElementById("info");
+ var scroller = document.getElementById("scroller");
+ var scrollerContent = document.getElementById("scrollerContent");
+
+
+
+ view.style.height = scroller.style.height = tableHeight + "px";
+ scrollerContent.style.height = Math.round(entryCount / rowCount * tableHeight) + "px";
+
+
+
+
+ var data = [];
+
+ for (var i=0; i<1000; i++) {
+ data.push({ col1 : "hello" + i, col2 : "world" + i, col3 : "foo" + i, col4 : "bar" + i, col5 : "baz" + i });
+ };
+
+ var cache = [];
+
+ var undef = "undefined";
+
+ var HTML =
+ {
+ table_start : "<table><tbody>",
+ table_end : "</tbody></table>",
+
+ tr_start : "<tr>",
+ tr_start_open : "<tr ",
+ tr_start_close : ">",
+ tr_end : "<tr>",
+
+ td_start : "<td>",
+ td_end : "</td>"
+ };
+
+ function arrayAppend(arr, a) {
+ Array.prototype.push.apply(arr, a);
+ };
+
+ function getCellHtml(cdata)
+ {
+ var html = [ HTML.td_start, cdata, HTML.td_end ];
+
+ return html;
+ };
+
+ function getRowHtml(rdata, nr)
+ {
+ if (typeof cache[nr] != undef) {
+ return cache[nr];
+ };
+
+ var html = [];
+ html.push(HTML.tr_start_open);
+
+ if (nr % 2 == 0)
+ {
+ html.push("style='background-color:#fff'");
+ };
+
+ html.push(HTML.tr_start_close);
+
+ for (var row in rdata) {
+ arrayAppend(html, getCellHtml(rdata[row]));
+ };
+
+ html.push(HTML.tr_stop);
+
+ cache[nr] = html;
+
+ return html;
+ };
+
+ function buildTableHtml(start, len)
+ {
+ var ttstart = (new Date).valueOf();
+
+ var html = [];
+
+ html.push(HTML.table_start);
+
+ for (var i=start, s=start+len; i<s; i++) {
+ arrayAppend(html, getRowHtml(data[i], i));
+ };
+
+ html.push(HTML.table_end);
+ view.innerHTML = html.join("");
+
+ updateCount++;
+
+ var ttend = (new Date).valueOf();
+ info.value = "Update: " + updateCount + "\nRows: " + start + " - " + (start+len) + "\n" + (ttend-ttstart) + "ms\n";
+ };
+
+ function doscroll() {
+ buildTableHtml(Math.floor(scroller.scrollTop/rowHeight), rowCount);
+ };
+
+ qx.html.EventRegistration.addEventListener(scroller, "scroll", doscroll);
+ doscroll();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HtmlTable_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HtmlTable_2.html
new file mode 100644
index 0000000000..2a075005b1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/HtmlTable_2.html
@@ -0,0 +1,140 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test table with fixed column widths: 100, 50, 10, 30 and 20 pixel.</p>
+ </div>
+
+ <textarea id="info" style="position:absolute; top:48px; left:20px; width:600px;height:50px;border:1px solid black"></textarea>
+ <div id="view" style="position:absolute;top:148px;left:20px;width:400px;height:500px;border:1px solid black"></div>
+ <div id="scroller" style="position: absolute; top:148px; left:420px;height:500px;width:24px;border:1px solid black;overflow:scroll"><div id="scrollerContent" style="width:1px;height:5000px"></div></div>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var updateCount = 0;
+
+ var tableHeight = 512;
+
+ var entryCount = 1000;
+
+ var rowHeight = 16;
+ var rowCount = Math.floor(tableHeight / rowHeight);
+
+ var view = document.getElementById("view");
+ var info = document.getElementById("info");
+ var scroller = document.getElementById("scroller");
+ var scrollerContent = document.getElementById("scrollerContent");
+
+
+
+ view.style.height = scroller.style.height = tableHeight + "px";
+ scrollerContent.style.height = Math.round(entryCount / rowCount * tableHeight) + "px";
+
+
+
+
+ var data = [];
+
+ for (var i=0; i<1000; i++) {
+ data.push({ col1 : "hello" + i, col2 : "world" + i, col3 : "foo" + i, col4 : "bar" + i, col5 : "baz" + i });
+ };
+
+ var cache = [];
+
+ var undef = "undefined";
+
+ var HTML =
+ {
+ table_start : '<table cellspacing="0" cellpadding="0" style="table-layout:fixed;width:210px"><colgroup><col width="100"/><col width="50"/><col width="10"/><col width="30"/><col width="20"/></colgroup><tbody>',
+ table_end : "</tbody></table>",
+
+ tr_start : "<tr>",
+ tr_start_open : "<tr ",
+ tr_start_close : ">",
+ tr_end : "<tr>",
+
+ td_start : '<td style="overflow:hidden;height:15px;border-right:1px solid red;border-bottom:1px solid red;padding-left:2px;padding-right:2px">',
+ td_end : "</td>"
+ };
+
+ function arrayAppend(arr, a) {
+ Array.prototype.push.apply(arr, a);
+ };
+
+ function getCellHtml(cdata)
+ {
+ var html = [ HTML.td_start, cdata, HTML.td_end ];
+
+ return html;
+ };
+
+ function getRowHtml(rdata, nr)
+ {
+ if (typeof cache[nr] != undef) {
+ return cache[nr];
+ };
+
+ var html = [];
+ html.push(HTML.tr_start_open);
+
+ if (nr % 2 == 0)
+ {
+ html.push("style='background-color:#fff'");
+ };
+
+ html.push(HTML.tr_start_close);
+
+ for (var row in rdata) {
+ arrayAppend(html, getCellHtml(rdata[row]));
+ };
+
+ html.push(HTML.tr_stop);
+
+ cache[nr] = html;
+
+ return html;
+ };
+
+ function buildTableHtml(start, len)
+ {
+ var ttstart = (new Date).valueOf();
+
+ var html = [];
+
+ html.push(HTML.table_start);
+
+ for (var i=start, s=start+len; i<s; i++) {
+ arrayAppend(html, getRowHtml(data[i], i));
+ };
+
+ html.push(HTML.table_end);
+ view.innerHTML = html.join("");
+
+ updateCount++;
+
+ var ttend = (new Date).valueOf();
+ info.value = "Update: " + updateCount + "\nRows: " + start + " - " + (start+len) + "\n" + (ttend-ttstart) + "ms\n";
+ };
+
+ function doscroll() {
+ buildTableHtml(Math.floor(scroller.scrollTop/rowHeight), rowCount);
+ };
+
+ qx.html.EventRegistration.addEventListener(scroller, "scroll", doscroll);
+ doscroll();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/IconHtml_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/IconHtml_1.html
new file mode 100644
index 0000000000..186a306ea3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/IconHtml_1.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.embed.IconHtmlEmbed.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var l1 = new qx.ui.embed.IconHtmlEmbed("Hello World", "icon/32/apps/office-organizer.png", 32, 32);
+
+ l1.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(l1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Image_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Image_1.html
new file mode 100644
index 0000000000..33b0c2d188
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Image_1.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This is a test for the qx.ui.basic.Image constructor. It supports automatic preloading through qx.io.image.Preloader, with error and load
+ QxEvents which will be fired, and cross-browser PNG with extended alpha channels.</p>
+
+ <p>PNG file in HTML (in Internet Explorer this should not be transparent):</p>
+ <img src="../../../../../framework/source/resource/icon/CrystalClear/48/categories/applications-games.png" width="48" height="48"/>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var i1 = new qx.ui.basic.Image("icon/64/apps/accessories-archiver.png", 48, 48);
+ with(i1)
+ {
+ setTop(48);
+ setLeft(20);
+ };
+
+ d.add(i1);
+
+
+
+ var i2 = new qx.ui.basic.Image("icon/64/apps/accessories-archiver.png", 48, 48);
+ with(i2)
+ {
+ setTop(48);
+ setLeft(100);
+ };
+
+ d.add(i2);
+
+
+
+
+ var i3 = new qx.ui.basic.Image("icon/64/apps/accessories-archiver.png", 96, 96);
+ with(i3)
+ {
+ setTop(120);
+ setLeft(60);
+ setResizeToInner(true);
+ };
+
+ /*
+ i3.addEventListener("load", function() {
+ new QxDebug("Bigger Symbol", "Preferred (Original) Size: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+ */
+
+ d.add(i3);
+
+
+
+
+ var i4 = new qx.ui.basic.Image("icon/64/apps/accessories-archiver.png", 24, 24);
+ with(i4)
+ {
+ setTop(120);
+ setLeft(20);
+ setResizeToInner(true);
+ };
+
+ /*
+ i4.addEventListener("load", function() {
+ new QxDebug("Smaller Symbol", "Preferred (Original) Size: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+ */
+
+ d.add(i4);
+
+
+
+
+ var i5 = new qx.ui.basic.Image("http://www.google.com/images/google_sm.gif");
+ with(i5)
+ {
+ setTop(300);
+ setLeft(20);
+ };
+
+ /*
+ i5.addEventListener("load", function() {
+ new QxDebug("Google Image", "Preferred (Original) Size: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+ */
+
+ d.add(i5);
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 300, 48);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Image_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Image_2.html
new file mode 100644
index 0000000000..97752e49ec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Image_2.html
@@ -0,0 +1,150 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Some advanced tests for qx.ui.basic.Image. Click on the fourth and fivth image to test the reflow possibilities.
+ The debug log gives you information of the preferred dimensions.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var i1 = new qx.ui.basic.Image("icon/64/places/folder.png");
+
+ i1.setLeft(20);
+ i1.setTop(48);
+
+ i1.addEventListener("load", function() {
+ this.debug("Image 1: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+
+
+ var i2 = new qx.ui.basic.Image("icon/64/places/folder.png");
+
+ i2.setLeft(120);
+ i2.setTop(48);
+ i2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i2.setPadding(2, 4);
+
+ i2.addEventListener("load", function() {
+ this.debug("Image 2: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+
+
+ var i3 = new qx.ui.basic.Image("icon/64/places/folder.png");
+
+ i3.setLeft(220);
+ i3.setTop(48);
+ i3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i3.setPadding(8);
+ i3.setOpacity(0.5);
+
+ i3.addEventListener("load", function() {
+ this.debug("Image 3: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+
+
+ var i4 = new qx.ui.basic.Image("icon/64/places/folder.png");
+
+ i4.setLeft(320);
+ i4.setTop(48);
+ i4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i4.setPadding(2, 4);
+
+ i4.addEventListener("load", function() {
+ this.debug("Image 4: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+ i4.addEventListener("click", function() {
+ this.setSource(this.getSource() == "icon/64/places/folder.png" ? "icon/32/actions/system-run.png" : "icon/64/places/folder.png");
+ });
+
+
+
+
+
+ var i5w1 = new qx.ui.layout.CanvasLayout;
+ i5w1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i5w1.setPadding(8);
+ i5w1.setLeft(420);
+ i5w1.setTop(48);
+ i5w1.setWidth("auto");
+ i5w1.setHeight("auto");
+
+ var i5w2 = new qx.ui.layout.CanvasLayout;
+ i5w2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i5w2.setPadding(8);
+ i5w2.setLeft(0);
+ i5w2.setTop(0);
+ i5w2.setWidth("auto");
+ i5w2.setHeight("auto");
+
+ var i5w3 = new qx.ui.layout.CanvasLayout;
+ i5w3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ i5w3.setPadding(8);
+ i5w3.setLeft(0);
+ i5w3.setTop(0);
+ i5w3.setWidth("auto");
+ i5w3.setHeight("auto");
+
+ var i5 = new qx.ui.basic.Image("icon/64/places/folder.png");
+
+ i5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i5.setPadding(2, 4);
+
+ i5.addEventListener("load", function() {
+ this.debug("Image 4: " + this.getPreferredBoxWidth() + "x" + this.getPreferredBoxHeight());
+ });
+
+ i5.addEventListener("click", function() {
+ this.setSource(this.getSource() == "icon/64/places/folder.png" ? "icon/32/actions/system-run.png" : "icon/64/places/folder.png");
+ });
+
+ i5w1.add(i5w2);
+ i5w2.add(i5w3);
+ i5w3.add(i5);
+ d.add(i5w1);
+
+
+
+ var i6 = new qx.ui.basic.Image("icon/128/apps/graphics-image-viewer.png");
+ i6.setLeft(20);
+ i6.setRight(400);
+ i6.setTop(200);
+ i6.setHeight(150);
+ i6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i6.setWidth(null);
+
+ var i7 = new qx.ui.basic.Image("icon/128/apps/graphics-image-viewer.png");
+ i7.setLeft(20);
+ i7.setRight(400);
+ i7.setTop(400);
+ i7.setHeight(150);
+ i7.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ i7.setResizeToInner(true);
+ i7.setWidth(null);
+
+
+
+ d.add(i1, i2, i3, i4, i6, i7);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Keyhandler_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Keyhandler_1.html
new file mode 100644
index 0000000000..2860d0749b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Keyhandler_1.html
@@ -0,0 +1,117 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+
+ <style type="text/css">
+ #keylogger {
+ position: absolute;
+ width: 500px;
+ height: 500px;
+ left: 30px;
+ top: 40px;
+ color: black;
+ background-color: #EEE;
+ padding: 5px;
+ border: 1px inset;
+ overflow: scroll;
+ /* display:none; */
+ }
+
+ table {
+ width: 100%;
+ }
+
+ td {
+ text-align: center;
+ }
+ </style>
+
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Keyhandler Test</p>
+ <p>Displays qoooxdoo's normalized key events.</p>
+ </div>
+
+
+ <div id="keylogger">
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var tableHead = "<table><tr><th>Event</th><th>key identifier</th><th>key code</th><th>char code</th><th>Shift</th><th>Ctrl</th><th>Alt</th></tr>";
+ var keyEvents = [];
+ var maxLogSize = 50;
+ var logDiv = document.getElementById("keylogger");
+
+ function initializeLogger() {
+ logDiv.innerHTML = tableHead + "</table>";
+ keyEvents = [];
+ }
+
+ function logKeyEvent(keyEvent) {
+ var eventCopy = {
+ type: keyEvent.getType(),
+ iden: keyEvent.getKeyIdentifier(),
+ keyCode: keyEvent.getKeyCode(),
+ charCode: keyEvent.getCharCode(),
+ shift: keyEvent.getDomEvent().shiftKey,
+ alt: keyEvent.getDomEvent().altKey,
+ ctrl: keyEvent.getDomEvent().ctrlKey
+ }
+ keyEvents.unshift(eventCopy);
+ keyEvents = keyEvents.slice(0, maxLogSize);
+ str = [tableHead];
+ for (var i=0; i<keyEvents.length; i++) {
+ var e = keyEvents[i];
+ str.push("<tr><td>");
+ str.push(e.type);
+ str.push("</td><td>");
+ str.push(e.iden);
+ str.push("</td><td>");
+ str.push(e.keyCode);
+ str.push("</td><td>");
+ str.push(e.charCode);
+ str.push("</td><td>");
+ str.push(e.shift);
+ str.push("</td><td>");
+ str.push(e.ctrl);
+ str.push("</td><td>");
+ str.push(e.alt);
+ str.push("</td></tr>");
+ }
+ str.push("</table>");
+ logDiv.innerHTML = str.join("");
+ logDiv.scrollTop = 0;
+ }
+
+ initializeLogger();
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.addEventListener("keydown", logKeyEvent);
+ d.addEventListener("keypress", logKeyEvent);
+ d.addEventListener("keyinput", logKeyEvent);
+ d.addEventListener("keyup", logKeyEvent);
+
+ var button = new qx.ui.form.Button("clear");
+ button.set({
+ left: 550,
+ top: 40
+ });
+ button.addEventListener("execute", initializeLogger);
+ button.addToDocument();
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_1.html
new file mode 100644
index 0000000000..f0b8492caf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_1.html
@@ -0,0 +1,172 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Some tests for qx.ui.basic.Label. Click on the third and fifth button like widget to test the reflow possibilities.
+ The debug log gives you information of the preferred dimensions.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c1.setLeft(20);
+ c1.setTop(48);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c1.setPadding(2, 4);
+
+
+
+
+ var c2 = new qx.ui.basic.Label("<h1>Welcome to the qooxdoo universe</h1><p>Enjoy the new era of web interface development.</p>");
+
+ c2.setLeft(20);
+ c2.setTop(100);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c2.setPadding(8);
+
+
+
+
+ var c3 = new qx.ui.basic.Label("Delete temporary data", null, null, false);
+
+ c3.setLeft(20);
+ c3.setTop(200);
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c3.setPadding(4, 6);
+ c3.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ c3.addEventListener("click", function() {
+ this.getHtml() == "Delete temporary data" ? this.setHtml("Thank you") : this.setHtml("Delete temporary data");
+ });
+
+
+
+
+ var c4 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c4.setLeft(20);
+ c4.setTop(250);
+ c4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c4.setPadding(2, 4);
+ c4.setStyleProperty("fontSize", "16px");
+ c4.setStyleProperty("fontWeight", "bold");
+ c4.setStyleProperty("fontStyle", "italic");
+ c4.setStyleProperty("textDecoration", "underline");
+ c4.setStyleProperty("textTransform", "uppercase");
+ c4.setFontPropertiesProfile("extended");
+
+
+
+
+
+ var c5 = new qx.ui.basic.Label("Delete temporary data", null, null, false);
+
+ c5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c5.setPadding(4, 6);
+ c5.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ c5.addEventListener("click", function() {
+ this.getHtml() == "Delete temporary data" ? this.setHtml("Thank you<br/>All your personal data was just deleted.<br/>Have Fun!") : this.setHtml("Delete temporary data");
+ });
+
+
+ var c5w = new qx.ui.layout.CanvasLayout;
+ c5w.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c5w.setPadding(8);
+ c5w.setLeft(20);
+ c5w.setTop(350);
+ c5w.setWidth("auto");
+ c5w.setHeight("auto");
+
+ c5w.add(c5);
+ d.add(c5w);
+
+
+
+
+ var c6 = new qx.ui.basic.Label("This is a long label", "h");
+
+ c6.setTop(450);
+ c6.setLeft(20);
+ c6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+
+ var c7 = new qx.ui.basic.Label("This is a long label with long-words and more text", "l", null, false);
+
+ c7.setTop(490);
+ c7.setLeft(20);
+ c7.setPadding(4);
+ c7.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c7.setBackgroundColor("white");
+
+ c7.addEventListener("click", function(e)
+ {
+ switch(this.getWidth())
+ {
+ case 50:
+ this.setWidth(100);
+ break;
+
+ case 100:
+ this.setWidth(150);
+ break;
+
+ case 150:
+ this.setWidth(200);
+ break;
+
+ case 200:
+ this.setWidth("auto");
+ break;
+
+ case "auto":
+ this.setWidth(50);
+ break;
+ };
+ });
+
+
+ var parent8 = new qx.ui.layout.VerticalBoxLayout();
+ parent8.set({ top:48, left:500, width:150, height:150, spacing:5,
+ border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ parent8.setPadding(5);
+ parent8.addEventListener("click", function() {
+ this.setWidth((this.getWidth() == 150) ? 200 : 150);
+ });
+
+ var clickHint = new qx.ui.basic.Label("Click me");
+ clickHint.set({ width:"100%", height:"auto", wrap:true,
+ border:qx.renderer.border.BorderPresets.getInstance().thinOutset });
+ parent8.add(clickHint);
+
+ var wrapLabel1 = new qx.ui.basic.Label("This is a label having a auto-height that needs wrapping");
+ wrapLabel1.set({ width:"100%", height:"auto", wrap:true,
+ border:qx.renderer.border.BorderPresets.getInstance().thinOutset });
+ parent8.add(wrapLabel1);
+
+ var wrapLabel2 = new qx.ui.basic.Label("This is a label having a auto-height that needs wrapping");
+ wrapLabel2.set({ width:"100%", height:"auto", wrap:true,
+ border:qx.renderer.border.BorderPresets.getInstance().thinOutset });
+ parent8.add(wrapLabel2);
+
+
+ d.add(c1, c2, c3, c4, c5w, c6, c7, parent8);
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_2.html
new file mode 100644
index 0000000000..bfc2fccbe2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_2.html
@@ -0,0 +1,40 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ qx.ui.basic.Label Stress Test
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c;
+
+ for (var i=0; i<10; i++)
+ {
+ for (var j=0; j<20; j++)
+ {
+ c = new qx.ui.basic.Label("Test " + i + "|" + j);
+
+ c.setLeft(20+(i*60));
+ c.setTop(48+(j*30));
+
+ d.add(c);
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_3.html
new file mode 100644
index 0000000000..33156a1fcf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_3.html
@@ -0,0 +1,177 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests for qx.ui.basic.Label. Click on the third and fifth button like widget to test the reflow possibilities.
+ The debug log gives you information of the preferred dimensions.</p>
+ <p>Tests for qx.renderer.font.Font added</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c1.setLeft(20);
+ c1.setTop(48);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c1.setPadding(2, 4);
+
+ c1.addEventListener("mouseover", function(e) {
+ this.setFont("20px bold");
+ });
+
+ c1.addEventListener("mouseout", function(e) {
+ this.setFont(null);
+ });
+
+
+
+ var c2 = new qx.ui.basic.Label("<h1>Welcome to the qooxdoo universe</h1><p>Enjoy the new era of web interface development.</p>");
+
+ c2.setLeft(20);
+ c2.setTop(100);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c2.setPadding(8);
+
+
+
+
+ var c3 = new qx.ui.basic.Label("Delete temporary data", null, null, false);
+
+ c3.setLeft(20);
+ c3.setTop(200);
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c3.setPadding(4, 6);
+ c3.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ c3.addEventListener("click", function()
+ {
+ if (this.getHtml() == "Delete temporary data")
+ {
+ this.setHtml("Thank you");
+ this.setColor("red");
+ this.setFont("bold");
+ }
+ else
+ {
+ this.setHtml("Delete temporary data");
+ this.setColor(null);
+ this.setFont(null);
+ };
+ });
+
+
+
+
+ /*
+ var c4f = new qx.renderer.font.Font(16, "Times New Roman");
+ c4f.setBold(true);
+ c4f.setItalic(true);
+ c4f.setUnderline(true);
+ */
+
+ var c4 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c4.setLeft(20);
+ c4.setTop(250);
+ c4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c4.setPadding(2, 4);
+ // c4.setFont(c4f);
+
+ // implicit usage of qx.renderer.font.FontCache
+ c4.setFont("16px Times New Roman bold italic underline");
+
+
+
+
+
+ var c5 = new qx.ui.basic.Label("Delete temporary data", null, null, false);
+
+ c5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c5.setPadding(4, 6);
+ c5.setBackgroundColor(new qx.renderer.color.Color("white"));
+
+ // re-use instance from above
+ // c5.setFont("16px Times New Roman bold italic underline");
+
+ // this is also possible and will be automatically converted to a single space seperated string
+ c5.setFont(["16px", "Times New Roman", "bold", "italic", "underline"]);
+
+ c5.addEventListener("click", function() {
+ this.getHtml() == "Delete temporary data" ? this.setHtml("Thank you<br/>All your personal data was just deleted.<br/>Have Fun!") : this.setHtml("Delete temporary data");
+ });
+
+
+ var c5w = new qx.ui.layout.CanvasLayout;
+ c5w.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c5w.setPadding(8);
+ c5w.setLeft(20);
+ c5w.setTop(350);
+ c5w.setWidth("auto");
+ c5w.setHeight("auto");
+
+ c5w.add(c5);
+ d.add(c5w);
+
+
+
+
+ var c6 = new qx.ui.basic.Label("This is a long label", "h");
+
+ c6.setTop(450);
+ c6.setLeft(20);
+ c6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+
+
+ var c7 = new qx.ui.basic.Label("This is a long label with long-words and more text", "l", null, false);
+
+ c7.setTop(490);
+ c7.setLeft(20);
+ c7.setPadding(4);
+ c7.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c7.setBackgroundColor("white");
+
+ c7.addEventListener("click", function(e)
+ {
+ switch(this.getWidth())
+ {
+ case 50:
+ this.setWidth(100);
+ break;
+
+ case 100:
+ this.setWidth(150);
+ break;
+
+ case 150:
+ this.setWidth(200);
+ break;
+
+ case 200:
+ this.setWidth("auto");
+ break;
+
+ case "auto":
+ this.setWidth(50);
+ break;
+ };
+ });
+
+ d.add(c1, c2, c3, c4, c5w, c6, c7);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_4.html
new file mode 100644
index 0000000000..30890ee68e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Label_4.html
@@ -0,0 +1,101 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing mnemonic support.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.ui.basic.Label("Hello qooxdoo!");
+
+ c1.setLeft(20);
+ c1.setTop(48);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c1.setPadding(2, 4);
+ c1.setMnemonic("q");
+
+ d.add(c1);
+
+
+
+ var c2 = new qx.ui.basic.Label("A qx.ui.basic.Label with some more text", "T");
+
+ c2.setLeft(20);
+ c2.setTop(98);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c2.setPadding(2, 4);
+
+ d.add(c2);
+
+
+
+
+ var c3 = new qx.ui.basic.Label("A qx.ui.basic.Label with some more text", "C");
+
+ c3.setLeft(20);
+ c3.setTop(148);
+ c3.setWidth(80);
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c3.setPadding(2, 4);
+
+ d.add(c3);
+
+
+
+ var c4 = new qx.ui.basic.Label("Well done guy", "Q");
+
+ c4.setLeft(20);
+ c4.setTop(198);
+ c4.setWidth(70);
+ c4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c4.setPadding(2, 4);
+
+ d.add(c4);
+
+
+
+ var c5 = new qx.ui.basic.Label("Well done guy", "Q");
+
+ c5.setLeft(20);
+ c5.setTop(248);
+ c5.setWidth("10%");
+ c5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ c5.setPadding(2, 4);
+
+ d.add(c5);
+
+
+
+
+
+ var a1 = new qx.ui.basic.Atom("Hello World", "icon/48/apps/graphics-snapshot.png")
+
+ a1.setLocation(250, 48);
+ a1.setWidth(100);
+ a1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ a1.setHorizontalChildrenAlign("left");
+
+ a1.getLabelObject().setMnemonic("H");
+ a1.getLabelObject().setWidth(50);
+
+ d.add(a1);
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Leak_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Leak_1.html
new file mode 100644
index 0000000000..e8e487ec8e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Leak_1.html
@@ -0,0 +1,71 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Leak-Test</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ // Does not leak
+ // *****
+
+ // var i1 = new qx.io.image.Preloader(qx.manager.object.ImageManager.buildUri("icon/48/hardwareinfo.png"));
+
+
+ // Leaks: +2MB
+ // *****
+
+ var w1 = new qx.ui.basic.Terminator;
+ qx.ui.core.ClientDocument.getInstance().add(w1);
+
+
+
+
+
+ // Does not leak
+ // *****
+ /*
+ var w1 = new qx.ui.basic.Terminator;
+ w1.setTop(48);
+ w1.setLeft(20);
+ qx.ui.core.ClientDocument.getInstance().add(w1);
+ */
+
+
+ // Leaks +2MB
+ // *****
+ /*
+ var i1 = new qx.ui.basic.Image("icon/48/hardwareinfo.png");
+ with(i1)
+ {
+ setTop(48);
+ setLeft(20);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(i1);
+ */
+
+
+
+
+
+
+ //var t1 = new QxTarget;
+
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Link_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Link_1.html
new file mode 100644
index 0000000000..be852fb8b8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Link_1.html
@@ -0,0 +1,29 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing link widget.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var l1 = new qx.ui.embed.LinkEmbed("Open Google", "http://www.google.com");
+
+ l1.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(l1);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_1.html
new file mode 100644
index 0000000000..1552c7b02d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_1.html
@@ -0,0 +1,57 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(qx.ui.core.ClientDocument.getInstance(), 20, 448);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_10.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_10.html
new file mode 100644
index 0000000000..110f1028e7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_10.html
@@ -0,0 +1,86 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView in a qx.ui.window.Window.</p>
+ <p>I am sorry, but this seems not to be fixable with the current layouter stuff in qooxdoo.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var w = new qx.ui.window.Window("ListView");
+
+ w.setWidth(400);
+ w.setHeight(250);
+ w.setLocation(50, 50);
+
+ qx.ui.core.ClientDocument.getInstance().add(w);
+
+
+ /*
+ var cont = new qx.ui.layout.CanvasLayout;
+
+ cont.setEdge(0);
+ cont.setBackgroundColor("white");
+
+ w.add(cont);
+ */
+
+
+
+
+
+
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBackgroundColor("white");
+ lv.setEdge(0);
+ lv.setWidth(null);
+ lv.setHeight(null);
+
+ w.add(lv);
+ //cont.add(lv);
+
+
+
+
+ w.open();
+
+
+
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(qx.ui.core.ClientDocument.getInstance(), 20, 448);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_2.html
new file mode 100644
index 0000000000..18583c37df
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_2.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells with an additional link.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }, open : { uri : "http://www.google.com/search?q=" + i, html : "Open " + i }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" },
+ open : { label : "", width : 100, type : "link" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_3.html
new file mode 100644
index 0000000000..8a504135a4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_3.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Now with icons inside the header cells.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", icon : "icon/16/categories/applications.png", width : 100, type : "text" },
+ size: { label : "Size", icon : "icon/16/devices/media-floppy.png", width : 50, type : "text", align : "right" },
+ type : { label : "Type", icon : "icon/16/apps/accessories-notes.png", width : 80, type : "text" },
+ modified : { label : "Last Modified", icon : "icon/16/apps/preferences.png", width : 150, type : "text" },
+ rights : { label : "Rights", icon : "icon/16/apps/system-users.png", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_4.html
new file mode 100644
index 0000000000..1b20de033b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_4.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>This qx.ui.listview.ListView will be resized with the window.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setLocation(20, 48);
+ lv.setRight(335);
+ lv.setBottom(48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_5.html
new file mode 100644
index 0000000000..df9bcb0644
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_5.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>This qx.ui.listview.ListView will be resized with the window.</p>
+ <p>Using percents for columns.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : "30%", type : "text" },
+ size: { label : "Size", width : "10%", type : "text", align : "right" },
+ type : { label : "Type", width : "15%", type : "text" },
+ modified : { label : "Last Modified", width : "20%", type : "text" },
+ rights : { label : "Rights", width: "15%", type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setLocation(20, 48);
+ lv.setRight(335);
+ lv.setBottom(48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_6.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_6.html
new file mode 100644
index 0000000000..1e917e584c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_6.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Supports minimum and maximum width of columns.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, minWidth : "auto", type : "text" },
+ size: { label : "Size", width : 50, minWidth : 50, type : "text" },
+ type : { label : "Type", width : 80, minWidth : 80, type : "text" },
+ modified : { label : "Last Modified", width : 100, minWidth : 100, maxWidth : 100, type : "text" },
+ rights : { label : "Rights", width: 80, minWidth : 50, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_7.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_7.html
new file mode 100644
index 0000000000..4532582a9c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_7.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>Added some buttons to fill/clear the list dynamically.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ var lc =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(500);
+ lv.setHeight(350);
+ lv.setLocation(20, 48);
+
+ qx.ui.core.ClientDocument.getInstance().add(lv);
+
+ function add(nu)
+ {
+ nu = nu||10;
+
+ for (var i=0, t; i<nu; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + ld.length }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ lv.updateSort();
+ lv.update();
+ };
+
+ function remove(nu)
+ {
+ nu = Math.min(ld.length, nu || 10);
+
+ ld.splice(ld.length-nu, nu);
+
+ lv.updateSort();
+ lv.update();
+ };
+
+ function clear()
+ {
+ ld.removeAll();
+ lv.update();
+ };
+
+ var btnAdd10 = new qx.ui.form.Button("Add 10", "icon/16/actions/dialog-ok.png");
+ var btnAdd50 = new qx.ui.form.Button("Add 50", "icon/16/actions/dialog-ok.png");
+ var btnAdd100 = new qx.ui.form.Button("Add 100", "icon/16/actions/dialog-ok.png");
+ var btnAdd1000 = new qx.ui.form.Button("Add 1000", "icon/16/actions/dialog-ok.png");
+
+ var btnRemove10 = new qx.ui.form.Button("Remove 10", "icon/16/actions/dialog-ok.png");
+ var btnRemove50 = new qx.ui.form.Button("Remove 50", "icon/16/actions/dialog-ok.png");
+ var btnRemove100 = new qx.ui.form.Button("Remove 100", "icon/16/actions/dialog-ok.png");
+ var btnRemove1000 = new qx.ui.form.Button("Remove 1000", "icon/16/actions/dialog-ok.png");
+
+ var btnClear = new qx.ui.form.Button("Clear", "icon/16/actions/dialog-ok.png");
+
+ btnAdd10.setLocation(550, 48);
+ btnAdd50.setLocation(550, 78);
+ btnAdd100.setLocation(550, 108);
+ btnAdd1000.setLocation(550, 138);
+
+ btnRemove10.setLocation(550, 188);
+ btnRemove50.setLocation(550, 218);
+ btnRemove100.setLocation(550, 248);
+ btnRemove1000.setLocation(550, 278);
+
+ btnClear.setLocation(550, 328);
+
+ btnAdd10.addEventListener("execute", function(e) { add(10); });
+ btnAdd50.addEventListener("execute", function(e) { add(50); });
+ btnAdd100.addEventListener("execute", function(e) { add(100); });
+ btnAdd1000.addEventListener("execute", function(e) { add(1000); });
+
+ btnRemove10.addEventListener("execute", function(e) { remove(10); });
+ btnRemove50.addEventListener("execute", function(e) { remove(50); });
+ btnRemove100.addEventListener("execute", function(e) { remove(100); });
+ btnRemove1000.addEventListener("execute", function(e) { remove(1000); });
+
+ btnClear.addEventListener("execute", function(e) { clear(); });
+
+ qx.ui.core.ClientDocument.getInstance().add(btnAdd10, btnAdd50, btnAdd100, btnAdd1000, btnRemove10, btnRemove50, btnRemove100, btnRemove1000, btnClear);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_8.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_8.html
new file mode 100644
index 0000000000..8ed5eb8eba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_8.html
@@ -0,0 +1,121 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>And with drag and drop between the two qx.ui.listview.ListViews.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc1 =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lc2 =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+
+ function handleDrag(e)
+ {
+ e.addData("qx.ui.listview.ListViewEntries", qx.lang.Array.copy(e.getCurrentTarget().getManager().getSelectedItems()));
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleDrop(e)
+ {
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ switch(e.getAction())
+ {
+ case "move":
+ sourceView.getPane().getManager().setSelectedItems([]);
+ sourceView.getPane().getManager().setAnchorItem(null);
+ sourceView.getPane().getManager().setLeadItem(null);
+
+ for (var i=0, l=data.length; i<l; i++)
+ {
+ qx.lang.Array.remove(sourceView.getData(), data[i]);
+ destView.getData().push(data[i]);
+ };
+
+ destView.getPane().getManager().setSelectedItems(data);
+
+ sourceView.updateSort();
+ destView.updateSort();
+
+ sourceView.update();
+ destView.update();
+ };
+ };
+
+
+
+
+
+ var sourceView = new qx.ui.listview.ListView(ld, lc1);
+
+ sourceView.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ sourceView.setBackgroundColor("white");
+ sourceView.setWidth(600);
+ sourceView.setHeight(250);
+ sourceView.setLocation(20, 48);
+
+ sourceView.getPane().getManager().setDragSelection(false);
+ sourceView.getPane().addEventListener("dragstart", handleDrag);
+
+ qx.ui.core.ClientDocument.getInstance().add(sourceView);
+
+
+
+
+ var destView = new qx.ui.listview.ListView([], lc2);
+
+ destView.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ destView.setBackgroundColor("white");
+ destView.setWidth(600);
+ destView.setHeight(250);
+ destView.setLocation(20, 318);
+
+ destView.getPane().getManager().setDragSelection(false);
+ destView.getPane().setDropDataTypes(["qx.ui.listview.ListViewEntries"]);
+ destView.getPane().addEventListener("dragdrop", handleDrop);
+
+ qx.ui.core.ClientDocument.getInstance().add(destView);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_9.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_9.html
new file mode 100644
index 0000000000..9810398670
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ListView_9.html
@@ -0,0 +1,119 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing qx.ui.listview.ListView with text cells.</p>
+ <p>And with drag and drop between the two qx.ui.listview.ListViews.</p>
+ <p>Reduced columns for second listview.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<1000; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ name : { text : "File " + i }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }});
+ };
+
+ var lc1 =
+ {
+ name : { label : "Name", width : 100, type : "text", sortable : true, sortProp : "text" },
+ size: { label : "Size", width : 50, type : "text", sortable : true, sortProp : "text", sortMethod : qx.util.Compare.byIntegerString },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ };
+
+ var lc2 =
+ {
+ name : { label : "Name", width : 200, type : "text", sortable : true, sortProp : "text" },
+ type : { label : "Type", width : 80, type : "text", sortable : true, sortProp : "text" }
+ };
+
+
+ function handleDrag(e)
+ {
+ e.addData("qx.ui.listview.ListViewEntries", qx.lang.Array.copy(e.getCurrentTarget().getManager().getSelectedItems()));
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleDrop(e)
+ {
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ switch(e.getAction())
+ {
+ case "move":
+ sourceView.getPane().getManager().setSelectedItems([]);
+ sourceView.getPane().getManager().setAnchorItem(null);
+ sourceView.getPane().getManager().setLeadItem(null);
+
+ for (var i=0, l=data.length; i<l; i++)
+ {
+ qx.lang.Array.remove(sourceView.getData(), data[i]);
+ destView.getData().push(data[i]);
+ };
+
+ destView.getPane().getManager().setSelectedItems(data);
+
+ sourceView.updateSort();
+ destView.updateSort();
+
+ sourceView.update();
+ destView.update();
+ };
+ };
+
+
+
+
+
+ var sourceView = new qx.ui.listview.ListView(ld, lc1);
+
+ sourceView.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ sourceView.setBackgroundColor("white");
+ sourceView.setWidth(600);
+ sourceView.setHeight(250);
+ sourceView.setLocation(20, 48);
+
+ sourceView.getPane().getManager().setDragSelection(false);
+ sourceView.getPane().addEventListener("dragstart", handleDrag);
+
+ qx.ui.core.ClientDocument.getInstance().add(sourceView);
+
+
+
+
+ var destView = new qx.ui.listview.ListView([], lc2);
+
+ destView.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ destView.setBackgroundColor("white");
+ destView.setWidth(600);
+ destView.setHeight(250);
+ destView.setLocation(20, 318);
+
+ destView.getPane().getManager().setDragSelection(false);
+ destView.getPane().setDropDataTypes(["qx.ui.listview.ListViewEntries"]);
+ destView.getPane().addEventListener("dragdrop", handleDrop);
+
+ qx.ui.core.ClientDocument.getInstance().add(destView);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_1.html
new file mode 100644
index 0000000000..d24e00f3d0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_1.html
@@ -0,0 +1,128 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>List implementation. Now testing auto dimensions.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var l1 = new qx.ui.form.List;
+
+ l1.set({ top : 48, left: 20, height: 200, width: "auto", overflow : "scrollY" });
+
+ var item;
+ for( var i=1; i<=35; i++ )
+ {
+ // item = new qx.ui.form.ListItem("Item No " + i);
+ item = new qx.ui.form.ListItem("Item No " + i, "icon/" + ((i % 4) ? "16" : "48") + "/places/folder.png");
+
+ !(i % 9) && (item.setEnabled(false));
+
+ l1.add(item);
+ };
+
+ d.add(l1);
+
+ var l2 = new qx.ui.form.List;
+
+ l2.set({ top : 48, left: 400, height: 200, width: "auto" });
+ l2.getManager().setMultiSelection(false);
+ //l2.setOverflow("scrollY");
+ l2.setHeight("auto");
+
+ var l2l = [ "red", "violett", "rose", "blue", "green", "cyan", "magenta", "yellow", "brown", "orange", "black", "white", "grey", "gray", "brown" ];
+
+ for (var i=0; i<l2l.length; i++) {
+ l2.add(new qx.ui.form.ListItem(l2l[i]));
+ };
+
+ d.add(l2);
+
+
+
+
+ var c1 = new qx.ui.form.CheckBox("Enable Multi-Selection");
+ var c2 = new qx.ui.form.CheckBox("Enable Drag-Selection");
+ var c3 = new qx.ui.form.CheckBox("Allow Deselection");
+ var c4 = new qx.ui.form.CheckBox("Enable Inline Find");
+
+ c1.setLocation(180, 48);
+ c2.setLocation(180, 68);
+ c3.setLocation(180, 88);
+ c4.setLocation(180, 108);
+
+ d.add(c1, c2, c3, c4);
+
+ c1.setChecked(true);
+ c2.setChecked(true);
+ c3.setChecked(true);
+ c4.setChecked(true);
+
+ c1.addEventListener("changeChecked", function(e) {
+ l1.getManager().setMultiSelection(e.getData());
+ });
+
+ c2.addEventListener("changeChecked", function(e) {
+ l1.getManager().setDragSelection(e.getData());
+ });
+
+ c3.addEventListener("changeChecked", function(e) {
+ l1.getManager().setCanDeselect(e.getData());
+ });
+
+ c4.addEventListener("changeChecked", function(e) {
+ l1.setEnableInlineFind(e.getData());
+ });
+
+
+
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Label", "label");
+ var rd2 = new qx.ui.form.RadioButton("Show Icon", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Both", "both");
+
+ rd1.set( { left: 180, top: 128 } );
+ rd2.set( { left: 180, top: 148 } );
+ rd3.set( { left: 180, top: 168 } );
+
+ d.add(rd1, rd2, rd3);
+
+ rd3.setChecked(true);
+
+ var rbm = new qx.manager.selection.RadioManager( name, [rd1, rd2, rd3]);
+
+ rbm.addEventListener("changeSelected", function(e)
+ {
+ for( var i=0; i<l1.getChildrenLength(); i++ ) {
+ l1.getChildren()[i].setShow(e.getData().getValue());
+ };
+ });
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 348);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 200, 348);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_2.html
new file mode 100644
index 0000000000..480d7d0a18
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_2.html
@@ -0,0 +1,111 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>List implementation</p>
+ <p>Drag and Drop Handling added</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ // Create list to drag from
+
+
+ var sourceList = new qx.ui.form.List();
+ sourceList.setWidth(100);
+ sourceList.setHeight(250);
+ sourceList.setLeft(20);
+ sourceList.setTop(48);
+
+ // Set vertical scroll bar to always visible
+ sourceList.setOverflow("scrollY");
+ // Set selection mode to single explicitly
+ // sourceList.getManager().setMultiSelection(false);
+ // Set drag selection mode to off
+ sourceList.getManager().setDragSelection(false);
+
+ // Add items to source list
+
+ for (var i = 1; i <= 10; i++)
+ {
+ var item = new qx.ui.form.ListItem("Item " + i);
+ item.addEventListener("dragstart", handleStartDrag);
+ sourceList.add(item);
+ };
+
+ doc.add(sourceList);
+
+
+
+ // Create list to drop to
+
+ var destList = new qx.ui.form.List();
+ destList.setWidth(100);
+ destList.setHeight(250);
+ destList.setLeft(320);
+ destList.setTop(48);
+
+ // Set vertical scroll bar to always visible
+ destList.setOverflow("scrollY");
+ // Set selection mode to single explicitly
+ // destList.getManager().setMultiSelection(false);
+ // Set drag selection mode to off
+ destList.getManager().setDragSelection(false);
+
+ doc.add(destList);
+
+ // Define event handlers
+
+ function handleStartDrag(e)
+ {
+ e.addData("ListItems", qx.lang.Array.copy(sourceList.getManager().getSelectedItems()));
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleListDrop(e)
+ {
+ var type = e.getDropDataTypes()[0];
+ var data = e.getData(type);
+
+ // this.debug("Drag&Drop Action: " + e.getAction());
+
+ switch(e.getAction())
+ {
+ case "move":
+ sourceList.getManager().setSelectedItems([]);
+ sourceList.getManager().setAnchorItem(null);
+ sourceList.getManager().setLeadItem(null);
+
+ for (var i=0, l=data.length; i<l; i++) {
+ destList.add(data[i]);
+ };
+
+ destList.getManager().setSelectedItems(data);
+ break;
+ };
+ };
+
+
+
+ // Set event properties for destination list
+
+ destList.setDropDataTypes(["ListItems"]);
+ destList.addEventListener("dragdrop", handleListDrop);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_3.html
new file mode 100644
index 0000000000..bf9241083c
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/List_3.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.form.List Item Sorting demo</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var list = new qx.ui.form.List(); list.set({top:50,left:50,height:150,width:100});
+
+ list.add(new qx.ui.form.ListItem('Will',null,'1'));
+ list.add(new qx.ui.form.ListItem('Anna',null,'2'));
+ list.add(new qx.ui.form.ListItem('Tom',null,'3'));
+ list.add(new qx.ui.form.ListItem('Diana',null,'4'));
+ list.add(new qx.ui.form.ListItem('Pete',null,'5'));
+ list.add(new qx.ui.form.ListItem('Carol',null,'6'));
+
+ var btn1 = new qx.ui.form.Button('Sort By Label'); btn1.set({top:50,left:200});
+ btn1.addEventListener('click',function(e){
+ list.sortItemsByString();
+ });
+
+ var btn2 = new qx.ui.form.Button('Sort By Label Reverse'); btn2.set({top:80,left:200});
+ btn2.addEventListener('click',function(e){
+ list.sortItemsByString(true);
+ });
+
+ var btn3 = new qx.ui.form.Button('Sort By Value'); btn3.set({top:140,left:200});
+ btn3.addEventListener('click',function(e){
+ list.sortItemsByValue();
+ });
+
+ var btn4 = new qx.ui.form.Button('Sort By Value Reverse'); btn4.set({top:170,left:200});
+ btn4.addEventListener('click',function(e){
+ list.sortItemsByValue(true);
+ });
+
+ qx.ui.core.ClientDocument.getInstance().add(btn1,btn2,btn3,btn4);
+ qx.ui.core.ClientDocument.getInstance().add(list);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Menu_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Menu_1.html
new file mode 100644
index 0000000000..ee000b62ed
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Menu_1.html
@@ -0,0 +1,129 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.menu.Menu Implementation</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists");
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting");
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font");
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo");
+ var mb1_06 = new qx.ui.menu.Button("Redo");
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png");
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png");
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png");
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png");
+ var mb1_11 = new qx.ui.menu.Button("Select All");
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search");
+ var mb1_13 = new qx.ui.menu.Button("Search Again");
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+
+
+
+
+
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.html.Location.getPageBoxLeft(el));
+ m1.setTop(qx.html.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ d.add(w1);
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 180, 48);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 380, 48);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Menu_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Menu_2.html
new file mode 100644
index 0000000000..bc43c2fbaf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Menu_2.html
@@ -0,0 +1,205 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.menu.Menu Implementation.</p>
+ <p>Added qx.client.Command support tests.</p>
+ <p>Create the menu instances on the first opening.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var q1 = new qx.client.Command("Ctrl+Z");
+ q1.addEventListener("execute", function(e) {
+ alert("Undo");
+ });
+
+ var q2 = new qx.client.Command("Ctrl+Y");
+ q2.addEventListener("execute", function(e) {
+ alert("Redo");
+ });
+
+ var q3 = new qx.client.Command("Ctrl+X");
+ q3.addEventListener("execute", function(e) {
+ alert("Cut");
+ });
+
+ var q4 = new qx.client.Command("Ctrl+C");
+ q4.addEventListener("execute", function(e) {
+ alert("Copy");
+ });
+
+ var q5 = new qx.client.Command("Ctrl+V");
+ q5.addEventListener("execute", function(e) {
+ alert("Paste");
+ });
+
+ var q6 = new qx.client.Command("Del");
+ q6.addEventListener("execute", function(e) {
+ alert("Delete");
+ });
+
+ var q7 = new qx.client.Command("Ctrl+A");
+ q7.addEventListener("execute", function(e) {
+ alert("Select All");
+ });
+
+ var q8 = new qx.client.Command("Ctrl+F");
+ q8.addEventListener("execute", function(e) {
+ alert("Search");
+ });
+
+ var q9 = new qx.client.Command("Ctrl+G");
+ q9.addEventListener("execute", function(e) {
+ alert("Search Again");
+ });
+
+ var q10 = new qx.client.Command();
+ q10.addEventListener("execute", function(e) {
+ alert("Syntax Highlighting");
+ });
+
+ var q11 = new qx.client.Command("Esc");
+ q11.addEventListener("execute", function(e) {
+ alert("Escape");
+ });
+
+ var q12 = new qx.client.Command("Space");
+ q12.addEventListener("execute", function(e) {
+ alert("Space");
+ });
+
+
+ var m1, m2, m3;
+
+ function createMenus()
+ {
+ m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("New Window");
+ var mb2_02 = new qx.ui.menu.Button("Overlapping");
+ var mb2_03 = new qx.ui.menu.Button("Split Vertical");
+ var mb2_04 = new qx.ui.menu.Button("Split Horizontal");
+ var mb2_05 = new qx.ui.menu.Button("Next Window");
+ var mb2_06 = new qx.ui.menu.Button("Previous Window");
+
+ m2.add(mb2_01, mb2_02, mb2_03, mb2_04, mb2_05, mb2_06);
+
+
+
+
+ m3 = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_04, mb3_05);
+
+
+
+ m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("View/Lists", null, q12);
+ var mb1_02 = new qx.ui.menu.Button("Syntax Highlighting", null, q10);
+ var ms1 = new qx.ui.menu.Separator();
+ var mb1_03 = new qx.ui.menu.Button("Window Font", null, q11);
+ var mb1_04 = new qx.ui.menu.Button("Printer Font", null, null, m3);
+ var ms2 = new qx.ui.menu.Separator();
+ var mb1_05 = new qx.ui.menu.Button("Undo", null, q1);
+ var mb1_06 = new qx.ui.menu.Button("Redo", null, q2);
+ var ms3 = new qx.ui.menu.Separator();
+ var mb1_07 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png", q3);
+ var mb1_08 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png", q4);
+ var mb1_09 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png", q5);
+ var mb1_10 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png", q6);
+ var mb1_11 = new qx.ui.menu.Button("Select All", null, q7);
+ var ms4 = new qx.ui.menu.Separator();
+ var mb1_12 = new qx.ui.menu.Button("Search", null, q8);
+ var mb1_13 = new qx.ui.menu.Button("Search Again", null, q9);
+ var ms5 = new qx.ui.menu.Separator();
+ var mb1_14 = new qx.ui.menu.Button("View", null, null, m2);
+ var mb1_15 = new qx.ui.menu.Button("Editor Settings...");
+ var mb1_16 = new qx.ui.menu.Button("Editor Plugins");
+ var mb1_17 = new qx.ui.menu.Button("Framework Settings");
+
+ m1.add(mb1_01, mb1_02, ms1, mb1_03, mb1_04, ms2, mb1_05, mb1_06, ms3, mb1_07, mb1_08, mb1_09, mb1_10, mb1_11, ms4, mb1_12, mb1_13, ms5, mb1_14, mb1_15, mb1_16, mb1_17);
+
+
+ d.add(m1, m2, m3);
+ };
+
+
+
+
+
+ var w1 = new qx.ui.form.Button("Open");
+
+ w1.setTop(48);
+ w1.setLeft(20);
+
+ w1.addEventListener("click", function(e)
+ {
+ if (!m1) {
+ createMenus();
+ };
+
+ if (m1.isSeeable())
+ {
+ m1.hide();
+ }
+ else
+ {
+ var el = this.getElement();
+
+ m1.setLeft(qx.html.Location.getPageBoxLeft(el));
+ m1.setTop(qx.html.Location.getPageBoxBottom(el));
+
+ m1.show();
+ };
+
+ e.setPropagationStopped(true);
+ });
+
+ w1.addEventListener("mousedown", function(e)
+ {
+ e.setPropagationStopped(true);
+ });
+
+
+ d.add(w1);
+
+
+
+
+
+
+
+
+
+ // Icon Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 180, 48);
+
+ // Color Themes
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 380, 48);
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Node_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Node_1.html
new file mode 100644
index 0000000000..a19a9a7b53
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Node_1.html
@@ -0,0 +1,39 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>qx.ui.embed.NodeEmbed makes a dom node a widget.</p>
+ </div>
+
+ <div id="text1" style="display:none">Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui <strong>qooxdoo</strong> blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.</div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var n = new qx.ui.embed.NodeEmbed("text1");
+
+ n.setLocation(20, 48);
+ n.setRight(335);
+ n.setBottom(48);
+ n.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ n.setBackgroundColor("white");
+ n.setColor("blue");
+ n.setPadding(10);
+
+ d.add(n);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Popups_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Popups_1.html
new file mode 100644
index 0000000000..07c1204cc3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Popups_1.html
@@ -0,0 +1,106 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for the qx.ui.popup.Popup widget. qx.ui.popup.Popups are planned as the source constructor for tooltips, menus, ...</p>
+ <p>There is also a qx.manager.object.PopupManager which hides all registered qx.ui.popup.Popup instances which are configured to auto hide.
+ This is a nice method to omit to show more than one qx.ui.popup.Popup together (omit multiple QxTooltips, ...).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var w1 = new qx.ui.form.Button("Press");
+ with(w1)
+ {
+ setTop(48);
+ setLeft(20);
+ setBackgroundColor(new qx.renderer.color.Color("#BDD2EF"));
+ setWidth(100);
+ setHeight(100);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setHorizontalAlign("center");
+ };
+ d.add(w1);
+
+
+ var w2 = new qx.ui.form.Button("Press");
+ with(w2)
+ {
+ setTop(48);
+ setLeft(140);
+ setBackgroundColor(new qx.renderer.color.Color("#D1DFAD"));
+ setWidth(100);
+ setHeight(100);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setHorizontalAlign("center");
+ };
+ d.add(w2);
+
+
+
+
+
+
+
+
+ var p1 = new qx.ui.popup.Popup;
+ d.add(p1);
+
+ var a1 = new qx.ui.basic.Atom("Hello World #1", "icon/16/apps/graphics-image-viewer.png");
+ p1.add(a1);
+
+ with(p1)
+ {
+ setBackgroundColor(new qx.renderer.color.Color("#FFFAD3"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ };
+
+ w1.addEventListener("click", function(e)
+ {
+ p1.setTop(e.getPageY() + 3);
+ p1.setLeft(e.getPageX() + 3);
+ p1.show();
+ p1.bringToFront();
+ });
+
+
+
+ var p2 = new qx.ui.popup.Popup;
+ d.add(p2);
+
+ var a2 = new qx.ui.basic.Atom("Hello World #2", "icon/32/apps/accessories-clock.png");
+ p2.add(a2);
+
+ with(p2)
+ {
+ setBackgroundColor(new qx.renderer.color.Color("#DFFAD3"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ };
+
+ w2.addEventListener("click", function(e)
+ {
+ p2.setTop(e.getPageY() + 3);
+ p2.setLeft(e.getPageX() + 3);
+ p2.show();
+ p2.bringToFront();
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Popups_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Popups_2.html
new file mode 100644
index 0000000000..b4d4e8c585
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Popups_2.html
@@ -0,0 +1,102 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for the qx.ui.popup.Popup widget. qx.ui.popup.Popups are planned as the source constructor for tooltips, menus, ...</p>
+ <p>There is also a qx.manager.object.PopupManager which hides all registered qx.ui.popup.Popup instances which are configured to auto hide.
+ This is a nice method to omit to show more than one qx.ui.popup.Popup together (omit multiple QxTooltips, ...).</p>
+ <p>In this example we use a qx.ui.popup.PopupAtom. This is a popup with an automatically included qx.ui.basic.Atom, which
+ allowes you to easily use it for messages to the user or something like this.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var w1 = new qx.ui.form.Button("Press");
+ with(w1)
+ {
+ setTop(48);
+ setLeft(20);
+ setBackgroundColor(new qx.renderer.color.Color("#BDD2EF"));
+ setWidth(100);
+ setHeight(100);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setHorizontalAlign("center");
+ };
+ d.add(w1);
+
+
+ var w2 = new qx.ui.form.Button("Press");
+ with(w2)
+ {
+ setTop(48);
+ setLeft(140);
+ setBackgroundColor(new qx.renderer.color.Color("#D1DFAD"));
+ setWidth(100);
+ setHeight(100);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ setHorizontalAlign("center");
+ };
+ d.add(w2);
+
+
+
+
+
+
+
+
+ var p1 = new qx.ui.popup.PopupAtom("Hello World #1", "icon/16/apps/graphics-image-viewer.png");
+ d.add(p1);
+
+ with(p1)
+ {
+ setBackgroundColor(new qx.renderer.color.Color("#FFFAD3"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ };
+
+ w1.addEventListener("click", function(e)
+ {
+ p1.setTop(e.getPageY() + 3);
+ p1.setLeft(e.getPageX() + 3);
+ p1.show();
+ p1.bringToFront();
+ });
+
+
+
+ var p2 = new qx.ui.popup.PopupAtom("Hello World #2", "icon/32/apps/accessories-clock.png");
+ d.add(p2);
+
+ with(p2)
+ {
+ setBackgroundColor(new qx.renderer.color.Color("#DFFAD3"));
+ setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ setPadding(2, 4);
+ };
+
+ w2.addEventListener("click", function(e)
+ {
+ p2.setTop(e.getPageY() + 3);
+ p2.setLeft(e.getPageX() + 3);
+ p2.show();
+ p2.bringToFront();
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_1.html
new file mode 100644
index 0000000000..69744f4dd6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_1.html
@@ -0,0 +1,116 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls a simple echo-style service on the server. The server
+ method accepts a string and sends back a string that says
+ "Client said: [input string]".
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ var async = new qx.ui.form.CheckBox("Asynchronous (must be checked if cross-domain is selected)");
+ layout1.add(async);
+
+ var crossDomain = new qx.ui.form.CheckBox("Cross Domain");
+ layout1.add(crossDomain);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ layout1.add(new qx.ui.basic.Label("Method:"));
+ var method = new qx.ui.form.TextField("echo");
+ layout1.add(method);
+
+ var layout2 = new qx.ui.layout.HorizontalBoxLayout();
+ layout2.setHeight("auto");
+ layout2.setVerticalChildrenAlign("middle");
+ layout2.setSpacing(4);
+ var message = new qx.ui.form.TextField("Hello");
+ message.setWidth(200);
+ layout2.add(message);
+ var send = new qx.ui.form.Button("Send to server");
+ layout2.add(send);
+ var abort = new qx.ui.form.Button("Abort");
+ abort.setEnabled(false);
+ layout2.add(abort);
+ layout1.add(layout2);
+
+ // We'll be setting url and service upon execute; no need to do it now.
+ var rpc = new qx.io.remote.Rpc();
+ rpc.setTimeout(10000);
+ var mycall = null;
+
+ send.addEventListener("execute", function() {
+ // Allow the user to reset the URL and Service on each call
+ rpc.setUrl(url.getValue());
+ rpc.setServiceName(service.getValue());
+ rpc.setCrossDomain(crossDomain.isChecked());
+
+ if (async.isChecked()) {
+ send.setEnabled(false);
+ abort.setEnabled(true);
+ mycall = rpc.callAsync(function(result, ex, id) {
+ mycall = null;
+ if (ex == null) {
+ alert("Async(" + id + ") result: " + result);
+ } else {
+ alert("Async(" + id + ") exception: " + ex);
+ }
+ send.setEnabled(true);
+ abort.setEnabled(false);
+ }, method.getValue(), message.getValue());
+ } else {
+ try {
+ var result = rpc.callSync(method.getValue(), message.getValue());
+ alert("Sync result: " + result);
+ } catch (ex) {
+ alert("Sync exception: " + ex);
+ }
+ }
+ });
+
+ abort.addEventListener("execute", function() {
+ rpc.abort(mycall);
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_2.html
new file mode 100644
index 0000000000..b00fc4d7b7
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_2.html
@@ -0,0 +1,134 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>Test for RPC functionality.</p>
+ <p>
+ This tests the ability to issue multiple asynchronous RPC calls to the
+ same service/method, and determine from which request we have received a
+ response. We issue multiple 'sleep' calls, for decreasing amounts of
+ time, and ensure that we can associate the resonses from the
+ later-issued requests to the earlier-received responses.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ /*
+ * Sigh. Both IE and Firefox follow (too strictly) RFC2616 and limit
+ * the number of simultaneous asyncronous HTTP requests to 2. We'll
+ * allow testing just 2 simultaneous requests or issuing 6 simultaneous
+ * requests. In the former case, we'll get expected results. In the
+ * latter, we'll see two at a time being processed.
+ *
+ * Note that this applies to both XmlHTTPTransport and IframeTransport.
+ * It is an HTTP limitation, not a limitation of a particular method of
+ * issuing a request.
+ */
+ var tooMany = new qx.ui.form.CheckBox("Issue more requests than IE's and Firefox's implementations of HTTP will process simultaneously");
+ layout1.add(tooMany);
+
+ var crossDomain = new qx.ui.form.CheckBox("Cross Domain");
+ layout1.add(crossDomain);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var layout2 = new qx.ui.layout.HorizontalBoxLayout();
+ layout2.setHeight("auto");
+ layout2.setVerticalChildrenAlign("middle");
+ layout2.setSpacing(4);
+ var start = new qx.ui.form.Button("Start Test");
+ layout2.add(start);
+ var abort = new qx.ui.form.Button("Abort");
+ layout2.add(abort);
+ layout1.add(layout2);
+
+ // ensure there's room in the queue for all of our requests
+ qx.io.remote.RequestQueue.getInstance().setMaxConcurrentRequests(8);
+
+ // We'll be setting url and service upon execute; no need to do it now.
+ var rpc = new qx.io.remote.Rpc();
+ rpc.setTimeout(60000);
+ var mycall;
+ var mycalls = [];
+
+ start.addEventListener("execute", function() {
+ t0 = new Date().getTime();
+
+ rpc.setCrossDomain(crossDomain.isChecked());
+
+ rpc.setUrl(url.getValue());
+ rpc.setServiceName(service.getValue());
+
+ var seqnum;
+ for (i=(tooMany.isChecked() ? 30 : 10); i > 0; i-=5) {
+ /*
+ * Always issue an asynchronous request! Issuing a synchronous
+ * request can lock up the entire browser until a response is
+ * received. Bad browser developers! Bad!
+ */
+ mycall = rpc.callAsync(function(result, ex, seqnum) {
+ mycalls[seqnum] = null;
+ t = new Date().getTime() - t0;
+ if (ex == null) {
+ layout1.warn(t + ": response " + seqnum + ": " + result);
+ } else {
+ layout1.warn(t + ": exception " + seqnum + ": " + ex);
+ }
+ }, "sleep", i.toString()); // FIXME: Why is this sent as a string?
+
+ t = new Date().getTime() - t0;
+ seqnum = mycall.getSequenceNumber();
+ mycalls[seqnum] = mycall;
+ layout1.warn(t + ": request " + seqnum + " = " + i.toString());
+ }
+ });
+
+ abort.addEventListener("execute", function() {
+ for (seqnum in mycalls) {
+ if (mycalls[seqnum] !== null) {
+ rpc.abort(mycalls[seqnum]);
+ mycalls[seqnum] = null;
+ }
+ }
+ mycalls = [];
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_3.html
new file mode 100644
index 0000000000..5e9d61660a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_3.html
@@ -0,0 +1,240 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls a whole set of functions to test each of the primitive
+ data types. The comparison results should all end with ": true", and
+ the last test generates an Application Error (#1000). No other test
+ generates that error, so receiving it means the complete set of tests
+ was run.
+ </p>
+ <p>
+ These functions all use the synchronous interface. You should not use
+ the synchronous interface because with some browsers, the entire browser
+ environment locks up during a synchronous call. If the server hangs for
+ a minute or two, so will the browser! You have been warned.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() { var layout1 = new
+ qx.ui.layout.VerticalBoxLayout(); layout1.setTop(40); layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service path:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var start = new qx.ui.form.Button("Start test");
+ layout1.add(start);
+
+ var rpc;
+ var mycall = null;
+ var test;
+
+ start.addEventListener("execute", function() {
+ try
+ {
+ var rpc = new qx.io.remote.Rpc(url.getValue(), service.getValue());
+ rpc.setTimeout(10000);
+
+ test = "getCurrentTimestamp";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: now=" + result.now);
+ layout1.warn("result: jsonDate=" + result.json.toString());
+
+ test = "getInteger";
+ layout1.warn("Calling '" + test + "'");
+ var result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a number, got " + typeof(result) + ": " + (typeof(result) == "number" && isFinite(result) ? "true" : "false"));
+
+ test = "isInteger";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, 1);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an integer: " + result);
+
+ test = "getString";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + (typeof(result) == "string"));
+
+ test = "isString";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, "Hello World");
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + result);
+
+ test = "getNull";
+ layout1.warn("Calling '" + test + "'");
+ var result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + (typeof(result) == "object" && result === null ? "true" : "false"));
+
+ test = "isNull";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, null);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + result);
+
+ test = "getArrayInteger";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+
+ test = "getArrayString";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+
+ var dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, dataArray);
+ layout1.warn("result: {" + result + "}");
+
+ dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = "Element " + i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, dataArray);
+ layout1.warn("result: {" + result + "}");
+
+ test = "getFloat";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a float: " + (typeof(result) == "number"));
+
+ test = "getObject";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an object: " + (typeof(result) == "object"));
+
+ test = "isObject";
+ layout1.warn("Calling '" + test + "'");
+ obj = new Object();
+ obj.s = "Hi there.";
+ obj.n = 23;
+ obj.o = new Object();
+ obj.o.s = "This is a test.";
+ result = rpc.callSync(test, obj);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns an object: " + result);
+
+ test = "getTrue";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = true: " + (typeof(result) == "boolean"));
+
+ test = "getFalse";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = false: " + (typeof(result) == "boolean"));
+
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, true);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, false);
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+
+ Date.prototype.classname = "Date";
+ var date = new Date();
+ test = "getParam";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, date);
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a date object, got " + (result.classname == date.classname));
+ layout1.warn("Returns matching time " + date.getTime() + " = " + result.getTime() + " :" + (result.getTime() == date.getTime()));
+
+ dataArray = new Array();
+ dataArray[0] = true;
+ dataArray[1] = false;
+ dataArray[2] = 1;
+ dataArray[3] = 1.1;
+ dataArray[4] = "Hello World";
+ dataArray[5] = new Array(5);
+ dataArray[6] = new Object();
+ dataArray[7] = new Date();
+
+ test = "getParams";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test, dataArray[0], dataArray[1], dataArray[2], dataArray[3], dataArray[4], dataArray[5], dataArray[6], dataArray[7]);
+ layout1.warn("result: {" + result + "}");
+
+ for (i=0; i< dataArray.length; i++)
+ {
+ layout1.warn("Returned parameter (" + i + ") value '" + result[i] + "' matches '" + dataArray[i] + "': " + (result[i].toString() == dataArray[i].toString()));
+ layout1.warn("Returned parameter (" + i + ") type '" + typeof(result[i]) + "' matches '" + typeof(dataArray[i]) + "': " + (typeof(result[i]) == typeof(dataArray[i])));
+ };
+
+ test = "getError";
+ layout1.warn("Calling '" + test + "'");
+ result = rpc.callSync(test);
+ // should never get here; we should receive an exception
+ layout1.warn("ERROR: Should have received an exception! Got: " + result);
+
+ }
+ catch (ex)
+ {
+ alert("Exception on test " + test + ": " + ex);
+ }
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_4.html
new file mode 100644
index 0000000000..3ceb52f358
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_4.html
@@ -0,0 +1,470 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls a whole set of functions to test each of the primitive
+ data types. The comparison results should all end with ": true", and
+ the last test generates an Application Error (#1000). No other test
+ generates that error, so receiving it means the complete set of tests
+ was run.
+ </p>
+ <p>
+ These functions all use the asynchronous interface. This is the
+ interface that your applications should use. See the warning in
+ RPC_3.html regarding use of the synchronous interface.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ var crossDomain = new qx.ui.form.CheckBox("Cross Domain");
+ layout1.add(crossDomain);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service path:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var start = new qx.ui.form.Button("Start test");
+ layout1.add(start);
+
+ var mycall = null;
+ var test;
+ var testNum;
+
+ start.addEventListener("execute", function() {
+ var obj;
+ var date;
+ var dataArray;
+
+ /*
+ * Create an array of each of the tests. Each array element is itself
+ * an array of two function: the first to issue the test request, and
+ * the second to validate the result.
+ */
+ var tests =
+ [
+ [
+ function()
+ {
+ test = "getCurrentTimestamp";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: now=" + result.now);
+ layout1.warn("result: jsonDate=" + result.json.toString());
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a number, got " + typeof(result) + ": " + (typeof(result) == "number" && isFinite(result) ? "true" : "false"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, 1);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an integer: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + (typeof(result) == "string"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, "Hello World");
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a string: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getNull";
+ layout1.warn("Calling '" + test + "'");
+ var mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + (typeof(result) == "object" && mycall === null ? "true" : "false"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isNull";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, null);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns null: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getArrayInteger";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getArrayString";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + ((typeof(result) == "object") && (result instanceof Array)));
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array(5);
+
+ for (i=0; i<5; i++)
+ {
+ dataArray[i] = "Element " + i;
+ };
+
+ test = "isArray";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an array: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getFloat";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a float: " + (typeof(result) == "number"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getObject";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns an object: " + (typeof(result) == "object"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isObject";
+ layout1.warn("Calling '" + test + "'");
+ obj = new Object();
+ obj.s = "Hi there.";
+ obj.n = 23;
+ obj.o = new Object();
+ obj.o.s = "This is a test.";
+ mycall = rpc.callAsync(handler, test, obj);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns an object: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, false);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "isBoolean";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, true);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean: " + result);
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getTrue";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = true: " + (typeof(result) == "boolean"));
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getFalse";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result.toString() + "}");
+ layout1.warn("Returns a boolean = false: " + (typeof(result) == "boolean"));
+ }
+ ],
+
+ [
+ function()
+ {
+ Date.prototype.classname = "Date";
+ date = new Date();
+ test = "getParam";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, date);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+ layout1.warn("Returns a date object, got " + (result.classname == date.classname));
+ layout1.warn("Returns matching time " + date.getTime() + " = " + result.getTime() + " :" + (result.getTime() == date.getTime()));
+ }
+ ],
+
+ [
+ function()
+ {
+ dataArray = new Array();
+ dataArray[0] = true;
+ dataArray[1] = false;
+ dataArray[2] = 1;
+ dataArray[3] = 1.1;
+ dataArray[4] = "Hello World";
+ dataArray[5] = new Array(5);
+ dataArray[6] = new Object();
+ dataArray[7] = new Date();
+
+ test = "getParams";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test, dataArray[0], dataArray[1], dataArray[2], dataArray[3], dataArray[4], dataArray[5], dataArray[6], dataArray[7]);
+ },
+
+ function(result)
+ {
+ layout1.warn("result: {" + result + "}");
+
+ for (i=0; i< dataArray.length; i++)
+ {
+ layout1.warn("Returned parameter (" + i + ") value '" + result[i] + "' matches '" + dataArray[i] + "': " + (result[i].toString() == dataArray[i].toString()));
+ layout1.warn("Returned parameter (" + i + ") type '" + typeof(result[i]) + "' matches '" + typeof(dataArray[i]) + "': " + (typeof(result[i]) == typeof(dataArray[i])));
+ };
+ }
+ ],
+
+ [
+ function()
+ {
+ test = "getError";
+ layout1.warn("Calling '" + test + "'");
+ mycall = rpc.callAsync(handler, test);
+ },
+
+ function(result)
+ {
+ // should never get here; we should receive an exception
+ layout1.warn("ERROR: Should have received an exception! Got: " + result);
+ }
+ ]
+ ];
+
+ /*
+ * This is the generic handler, used by each of the tests. It
+ * ascertains whether an exception occured and alert()s with the
+ * exception if so; otherwise it calls the result validation function
+ * and then starts the next test.
+ */
+ handler = function(result, ex, id) {
+ mycall = null;
+ if (ex !== null) {
+ alert("Async(" + id + ") exception: " + ex);
+ } else {
+ // display results of the completed test
+ tests[testNum][1](result); // [][1] = validate response
+
+ // start the next test
+ ++testNum;
+
+ // Are we done?
+ if (testNum < tests.length) {
+ // Nope. Run the next test.
+ tests[testNum][0]();
+ }
+ }
+ }
+
+ // Determine which transport to use
+ rpc = new qx.io.remote.Rpc(url.getValue(), service.getValue());
+ rpc.setTimeout(10000);
+ rpc.setCrossDomain(crossDomain.isChecked());
+
+ // start the first test
+ testNum = 0;
+ tests[testNum][0](); // [][0] = request
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_5.html
new file mode 100644
index 0000000000..b23cdd2c86
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/RPC_5.html
@@ -0,0 +1,95 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+ <script type="text/javascript" src=".qxrpc"></script>
+ <!-- With the above script, the service URL for a J2EE application can be
+ automatically determined, no matter on what path it's deployed. -->
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p><strong>Only works together with a RPC backend!</strong></p>
+ <p>Test for RPC functionality.</p>
+ <p>
+ This test calls remote function getParams(), passing a defined field in
+ an object, and an undefined field in an object. Depending on the
+ setting of qx.core.Settings.jsonEncodeUndefined, the undefined field
+ should or should not be sent. We also send some (ignored) server data
+ in this test, if requested.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+// qx.Settings.setCustomOfClass("qx.io.remote.Exchange", "enableDebug", true);
+ qx.Settings.setCustomOfClass("qx.io.Json", "enableDebug", true);
+
+ qx.core.Init.getInstance().defineMain(function() {
+ var layout1 = new qx.ui.layout.VerticalBoxLayout();
+ layout1.setTop(40);
+ layout1.setLeft(20);
+ layout1.setSpacing(4);
+
+ var encodeUndefined = new qx.ui.form.CheckBox("Encode 'undefined' as null");
+ layout1.add(encodeUndefined);
+
+ var sendServerData = new qx.ui.form.CheckBox("Send server data");
+ layout1.add(sendServerData);
+
+ layout1.add(new qx.ui.basic.Label("URL:"));
+ var defaultURL = qx.io.remote.Rpc.makeServerURL();
+ if (defaultURL == null) {
+ defaultURL = "/services/";
+ }
+ var url = new qx.ui.form.TextField(defaultURL);
+ layout1.add(url);
+
+ layout1.add(new qx.ui.basic.Label("Service:"));
+ var service = new qx.ui.form.TextField("qooxdoo.test");
+ layout1.add(service);
+
+ var start = new qx.ui.form.Button("Start test");
+ layout1.add(start);
+
+ // We'll be setting url and service upon execute; no need to do it now.
+ var rpc = new qx.io.remote.Rpc();
+ rpc.setTimeout(10000);
+ var mycall = null;
+
+ start.addEventListener("execute", function() {
+ // Allow the user to reset the URL and Service on each call
+ rpc.setUrl(url.getValue());
+ rpc.setServiceName(service.getValue());
+ rpc.setCrossDomain(false);
+
+ if (sendServerData.isChecked()) {
+ rpc.setServerData(new Date());
+ } else {
+ rpc.setServerData(undefined);
+ }
+
+ qx.Settings.setCustomOfClass("qx.io.Json", "encodeUndefined",
+ encodeUndefined.isChecked());
+
+ try {
+ obj = new Object();
+ obj.def = "defined";
+ var result = rpc.callSync("getParams", obj.undef, obj.def);
+ alert("Sync result: " + result);
+ } catch (ex) {
+ alert("Sync exception: " + ex);
+ }
+ });
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ d.add(layout1);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/SplitPane_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/SplitPane_1.html
new file mode 100644
index 0000000000..8fd7b92af5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/SplitPane_1.html
@@ -0,0 +1,91 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test for Splitpane functionality with enabled live resize.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var frame = new qx.ui.layout.CanvasLayout;
+ frame.setLocation(20, 48);
+ frame.setBottom(48);
+ frame.setRight(300);
+ frame.setBackgroundColor("#134275");
+ frame.setPadding(20);
+ frame.addToDocument();
+
+ // the splitpane itself
+ var splitpane = new qx.ui.splitpane.HorizontalSplitPane("1*", "2*");
+ splitpane.setEdge(0);
+ frame.add(splitpane);
+
+ // left Widget
+ var leftWidget = new qx.ui.form.TextArea("LeftWidget");
+ leftWidget.setWrap(true);
+ leftWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ leftWidget.setWidth("100%");
+ leftWidget.setHeight("100%");
+
+ // rightWidget (another splitpane)
+ var rightWidget = new qx.ui.splitpane.VerticalSplitPane;
+ rightWidget.setHeight("100%");
+ rightWidget.setWidth("100%");
+
+ // add widgets to splitpane
+ splitpane.addLeft(leftWidget);
+ splitpane.addRight(rightWidget);
+
+
+
+ // right top widget
+ var topWidget = new qx.ui.form.TextArea("Right Top Widget");
+ topWidget.setBackgroundColor(new qx.renderer.color.Color("white"));
+ topWidget.setHeight("100%");
+ topWidget.setWidth("100%");
+
+ // right bottom widget
+ var bottomWidget = new qx.ui.embed.Iframe("http://www.qooxdoo.org");
+ bottomWidget.setHeight("100%");
+ bottomWidget.setWidth("100%");
+
+ // add widgets to right splitpane
+ rightWidget.addTop(topWidget);
+ rightWidget.addBottom(bottomWidget);
+
+
+
+
+ var toggleButton = new qx.ui.form.Button("Toggle Layout", "icon/16/actions/view-refresh.png");
+ toggleButton.setBottom(48);
+ toggleButton.setLeft(20);
+ toggleButton.addToDocument();
+ toggleButton.addEventListener("execute", function(e)
+ {
+ if (splitpane.getOrientation() == "horizontal")
+ {
+ splitpane.setOrientation("vertical");
+ rightWidget.setOrientation("horizontal");
+ }
+ else
+ {
+ splitpane.setOrientation("horizontal");
+ rightWidget.setOrientation("vertical");
+ }
+ });
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_1.html
new file mode 100644
index 0000000000..5a4c52aef2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_1.html
@@ -0,0 +1,50 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>The default table using divs and nodeValue.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_2.html
new file mode 100644
index 0000000000..281039465e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_2.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>a table using divs and Array.join.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ qx.ui.table.TablePane.USE_ARRAY_JOIN = true;
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_3.html
new file mode 100644
index 0000000000..e03cff3a1f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_3.html
@@ -0,0 +1,52 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table using table elements and nodeValue.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // qx.ui.table.TablePane.USE_TABLE = true;
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_4.html
new file mode 100644
index 0000000000..a8dad6ded5
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_4.html
@@ -0,0 +1,53 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table using table elements and Array.join.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ qx.ui.table.TablePane.USE_TABLE = true;
+ qx.ui.table.TablePane.USE_ARRAY_JOIN = true;
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_5.html
new file mode 100644
index 0000000000..6a7ad4d228
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Table_5.html
@@ -0,0 +1,55 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>A table having few rows.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ //qx.log.Logger.ROOT_LOGGER.addAppender(new qx.log.WindowAppender);
+
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 20; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ left:10, top:30, right:300, bottom:30, border:qx.renderer.border.BorderPresets.getInstance().thinInset });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ setColumnWidth(0, 80);
+ setColumnWidth(1, 200);
+ setColumnWidth(2, 150);
+ };
+
+ d.add(table);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_1.html
new file mode 100644
index 0000000000..1d434c1211
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_1.html
@@ -0,0 +1,227 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introduce qx.ui.menu.Menu which opens on qx.ui.toolbar.ToolBarMenuButtons.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48);
+ setLeft(20);
+ setRight(335);
+ };
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1 = new qx.ui.menu.Button("Folder");
+ var ms1 = new qx.ui.menu.Separator;
+ var mb2 = new qx.ui.menu.Button("Word Document");
+ var mb3 = new qx.ui.menu.Button("Text File");
+ var mb4 = new qx.ui.menu.Button("Image");
+
+ m1.add(mb1, ms1, mb2, mb3, mb4);
+ d.add(m1);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb5 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png");
+ var mb6 = new qx.ui.menu.Button("Move", "icon/16/actions/edit-cut.png");
+ var mb7 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png");
+
+ m2.add(mb5, mb6, mb7);
+ d.add(m2);
+
+
+
+
+ var btns1 = [
+ { type : "menu", icon : "actions/document-new", label : "New", menu : m1 },
+ { type : "menu", icon : "apps/accessories-text-editor", label : "Edit", menu : m2 }
+ ];
+
+ var btns2 = [
+ { type : "button", icon : "actions/go-up", label : "Upload" },
+ { type : "button", icon : "actions/go-down", label : "Download" }
+ ];
+
+ var btns3 = [
+ { type : "button", icon : "apps/accessories-tip", label : "Tip" },
+ { type : "button", icon : "actions/help-faq", label : "Help" }
+ ];
+
+ var bars = [ btns1, btns2, btns3 ];
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ var useParts = true;
+
+
+ for (var j=0; j<bars.length; j++)
+ {
+ var btns = bars[j];
+
+ if (useParts) {
+ var tbp = new qx.ui.toolbar.Part;
+ };
+
+ for (var i=0; i<btns.length; i++)
+ {
+ var btn = btns[i];
+
+ switch(btn.type)
+ {
+ case "separator":
+ var o = new qx.ui.toolbar.Separator;
+ break;
+
+ case "menu":
+ var o = new qx.ui.toolbar.MenuButton(btn.label, btn.menu, "icon/22/" + btn.icon + ".png", 22, 22);
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ // uncomment this to omit changes on one button
+ // if (btn.icon != "upload")
+ d.addEventListener("changeLayout", changeLayout, o );
+ break;
+
+ case "button":
+ var o = new qx.ui.toolbar.Button(btn.label, "icon/22/" + btn.icon + ".png");
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ // uncomment this to omit changes on one button
+ // if (btn.icon != "upload")
+ d.addEventListener("changeLayout", changeLayout, o );
+ break;
+ };
+
+ if (useParts)
+ {
+ tbp.add(o);
+ }
+ else
+ {
+ tb.add(o);
+ };
+ };
+
+ if (useParts) {
+ tb.add(tbp);
+ };
+ };
+
+ d.add(tb);
+
+
+ var rd1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var rd2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Label", "label");
+
+ with(rd1)
+ {
+ setTop(140);
+ setLeft(20);
+ setChecked(true);
+ };
+
+ with(rd2)
+ {
+ setTop(160);
+ setLeft(20);
+ };
+
+ with(rd3)
+ {
+ setTop(180);
+ setLeft(20);
+ };
+
+
+ var rbm = new qx.manager.selection.RadioManager();
+
+ rbm.add(rd1);
+ rbm.add(rd2);
+ rbm.add(rd3);
+
+
+ // beautiful decoupling: radio boxes don't know about toolbar buttons
+ rbm.addEventListener("changeSelected", function(e) {
+ d.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ d.add(rd1, rd2, rd3);
+
+
+
+
+
+ // Alignment
+ var ra1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var ra2 = new qx.ui.form.RadioButton("Centered", "center");
+ var ra3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+
+ with(ra1)
+ {
+ setTop(140);
+ setLeft(220);
+ setChecked(true);
+ };
+
+ with(ra2)
+ {
+ setTop(160);
+ setLeft(220);
+ };
+
+ with(ra3)
+ {
+ setTop(180);
+ setLeft(220);
+ };
+
+
+ var ram = new qx.manager.selection.RadioManager();
+
+ ram.add(ra1);
+ ram.add(ra2);
+ ram.add(ra3);
+
+ d.add(ra1, ra2, ra3);
+
+ ram.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+
+
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 248);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 248);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_2.html
new file mode 100644
index 0000000000..c967dd2cd3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_2.html
@@ -0,0 +1,113 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Create ten toolbars. Stress Test.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var btns1 = [
+ { type : "button", icon : "document-new", text : "New" },
+ { type : "separator" },
+ { type : "button", icon : "edit-copy", text : "Copy" },
+ { type : "button", icon : "edit-cut", text : "Cut" },
+ { type : "button", icon : "edit-paste", text : "Paste" }
+ ];
+
+ var btns2 = [
+ { type : "button", icon : "go-up", text : "Upload" },
+ { type : "button", icon : "go-down", text : "Download" }
+ ];
+
+ var btns3 = [
+ { type : "button", icon : "help-faq", text : "Hilfe" }
+ ];
+
+ var bars = [ btns1, btns2, btns3 ];
+
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ };
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ };
+
+ var useParts = true;
+
+ for (var k=0; k<10; k++)
+ {
+ var tb = new qx.ui.toolbar.ToolBar;
+ with(tb)
+ {
+ setTop(48+(k*50));
+ setLeft(20);
+ setRight(335);
+ };
+
+ for (var j=0; j<bars.length; j++)
+ {
+ var btns = bars[j];
+
+ if (useParts) {
+ var tbp = new qx.ui.toolbar.Part;
+ };
+
+ for (var i=0; i<btns.length; i++)
+ {
+ var btn = btns[i];
+
+ switch(btn.type)
+ {
+ case "separator":
+ var o = new qx.ui.toolbar.Separator;
+ break;
+
+ case "button":
+ var o = new qx.ui.toolbar.Button(btn.text, "icon/22/actions/" + btn.icon + ".png");
+
+ // beautiful decoupling: toolbar buttons don't know about radio boxes
+
+ d.addEventListener("changeLayout", changeLayout, o);
+ d.addEventListener("changeSize", changeSize, o);
+ break;
+ };
+
+ if (useParts)
+ {
+ tbp.add(o);
+ }
+ else
+ {
+ tb.add(o);
+ };
+ };
+
+ if (useParts) {
+ tb.add(tbp);
+ };
+ };
+
+ d.add(tb);
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_3.html
new file mode 100644
index 0000000000..e9c9320287
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_3.html
@@ -0,0 +1,39 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing the new flash support for qx.ui.toolbar.ToolBarButtons (inherited from qx.ui.basic.Atom).</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var tb = new qx.ui.toolbar.ToolBar;
+
+ tb.setTop(48);
+ tb.setLeft(20);
+ tb.setRight(335);
+
+ d.add(tb);
+
+ for (var i=1; i<8; i++)
+ {
+ var tbb = new qx.ui.toolbar.Button("Flash #" + i, "icon/22/actions/view-refresh.png", 22, 22, "./image/flash/color/file" + i + ".swf");
+ tb.add(tbb);
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_4.html
new file mode 100644
index 0000000000..290eb5d380
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/ToolBar_4.html
@@ -0,0 +1,193 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Again a nice example which shows how to use qx.ui.toolbar.ToolBar as a menubar system.</p>
+ <p>Added some parts and a new flex zone which aligns the help button to the right edge</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var c1 = new qx.client.Command();
+ c1.addEventListener("execute", function(e) {
+ this.debug("Execute: " + e.getData().getLabel());
+ });
+
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb1_01 = new qx.ui.menu.Button("New", null, c1);
+ var mb1_02 = new qx.ui.menu.Button("Open", null, c1);
+ var mb1_03 = new qx.ui.menu.Button("Save", null, c1);
+ var mb1_04 = new qx.ui.menu.Button("Save as", null, c1);
+ var mb1_05 = new qx.ui.menu.Button("Close", null, c1);
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved", null, c1);
+
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb2_01 = new qx.ui.menu.Button("Undo", null, c1);
+ var mb2_02 = new qx.ui.menu.Button("Redo", null, c1);
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png", c1);
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png", c1);
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png", c1);
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png", c1);
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All", null, c1);
+ var mb2_08 = new qx.ui.menu.Button("Find", null, c1);
+ var mb2_09 = new qx.ui.menu.Button("Find Again", null, c1);
+
+
+
+
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+ var m3_subd = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", c1, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", c1, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", c1, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+ var mb3_b2 = new qx.ui.menu.Separator();
+ var mb3_07 = new qx.ui.menu.Button("Advanced", null, null, m3_subd);
+
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06, mb3_b2, mb3_07);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt", null, c1);
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt", null, c1);
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt", null, c1);
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt", null, c1);
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt", null, c1);
+
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt", null, c1);
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt", null, c1);
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt", null, c1);
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt", null, c1);
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt", null, c1);
+
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt", null, c1);
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt", null, c1);
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt", null, c1);
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt", null, c1);
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt", null, c1);
+
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+ var mb3_subd_02_suba = new qx.ui.menu.Menu();
+
+ var mb3_subd_02_suba_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02_suba_02 = new qx.ui.menu.Button("Second", null, c1);
+ var mb3_subd_02_suba_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ mb3_subd_02_suba.add(mb3_subd_02_suba_01, mb3_subd_02_suba_02, mb3_subd_02_suba_03);
+
+ var mb3_subd_01 = new qx.ui.menu.Button("First", null, c1);
+ var mb3_subd_02 = new qx.ui.menu.Button("Second", null, c1, mb3_subd_02_suba);
+ var mb3_subd_03 = new qx.ui.menu.Button("Third", null, c1);
+
+ m3_subd.add(mb3_subd_01, mb3_subd_02, mb3_subd_03);
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, c1, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...", null, c1);
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions", null, c1);
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences", null, c1);
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window", null, c1);
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", c1, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally", c1);
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically", c1);
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window", null, c1);
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window", null, c1);
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+
+ var m5 = new qx.ui.menu.Menu;
+
+ var mb5_01 = new qx.ui.menu.Button("Help", null, c1);
+ var mb5_02 = new qx.ui.menu.Button("About", null, c1);
+
+ m5.add(mb5_01, mb5_02);
+
+ d.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m3_subd, mb3_subd_02_suba, m4, m4_suba, m5);
+
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+
+ mb1.setTop(48);
+ mb1.setRight(335);
+ mb1.setLeft(20);
+
+ var mp1 = new qx.ui.toolbar.Part;
+ var mp2 = new qx.ui.toolbar.Part;
+ var mp3 = new qx.ui.toolbar.Part;
+
+ mb1.add(mp1, mp2, new qx.ui.basic.HorizontalSpacer, mp3);
+
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4);
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5);
+
+ mp1.add(mbb1, mbb2);
+ mp2.add(mbb3, mbb4);
+ mp3.add(mbb5);
+
+ d.add(mb1);
+
+
+
+
+ // Icon & Color Themes
+ qx.manager.object.ImageManager.getInstance().createThemeList(d, 20, 348);
+ qx.manager.object.ColorManager.getInstance().createThemeList(d, 220, 348);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_1.html
new file mode 100644
index 0000000000..e8256aa2b3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_1.html
@@ -0,0 +1,196 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qooxdoo's transport implementation using some data for an addressbook.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/persons/anita.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/harald.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/lisbeth.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/paul.xml"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/actions/dialog-ok.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ inf.setReadOnly(true);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ code.setReadOnly(true);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.form.TextArea;
+ area.setDimension("100%", "100%");
+ fsr.add(area);
+
+
+
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", qx.util.Mime.TEXT);
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ req.setCrossDomain(false);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_2.html
new file mode 100644
index 0000000000..07244865fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_2.html
@@ -0,0 +1,189 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing different file sizes with timeouts and other built-in transport features.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/filesize/40kb.xml"));
+ cm1.add(new qx.ui.form.ListItem("data/filesize/400kb.xml"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/actions/dialog-ok.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.basic.Label("Disabled because of large filesize");
+ fsr.add(area);
+
+
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", qx.util.Mime.TEXT);
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ // Force to testing iframe implementation
+ // req.setCrossDomain(true);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_3.html
new file mode 100644
index 0000000000..b59fc914e6
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_3.html
@@ -0,0 +1,114 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing multiple parallel requests of files with different sizes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var lab1 = new qx.ui.basic.Label("40KB");
+ var lab2 = new qx.ui.basic.Label("400KB");
+
+ var spin1 = new qx.ui.form.Spinner(0, 3, 50);
+ var spin2 = new qx.ui.form.Spinner(0, 3, 20);
+
+
+
+
+ var grid = new qx.ui.layout.GridLayout;
+
+ grid.setLocation(20, 48);
+ grid.setDimension("auto", "auto");
+ grid.setHorizontalSpacing(10);
+ grid.setVerticalSpacing(4);
+ grid.setBorder(qx.renderer.border.BorderPresets.getInstance().thinOutset);
+ grid.setBackgroundColor("white");
+ grid.setPadding(10);
+
+ grid.setColumnCount(2);
+ grid.setRowCount(2);
+
+ grid.setColumnWidth(0, 50);
+ grid.setColumnWidth(1, 50);
+
+ grid.setRowHeight(0, 18);
+ grid.setRowHeight(1, 22);
+
+ qx.ui.core.ClientDocument.getInstance().add(grid);
+
+ grid.add(lab1, 0, 0);
+ grid.add(lab2, 1, 0);
+
+ grid.add(spin1, 0, 1);
+ grid.add(spin2, 1, 1);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/actions/dialog-ok.png");
+ btn.setLocation(20, 120);
+ qx.ui.core.ClientDocument.getInstance().add(btn);
+
+
+
+ var area = new qx.ui.form.TextArea("");
+ area.setLocation(20, 154);
+ area.setDimension(192, 400);
+ qx.ui.core.ClientDocument.getInstance().add(area);
+
+
+
+ btn.addEventListener("execute", function(e)
+ {
+ var s1 = parseInt(spin1.getValue());
+ var s2 = parseInt(spin2.getValue());
+
+ while ((s1+s2) > 0)
+ {
+ if (s1 > 0)
+ {
+ makeRequest(40);
+ s1--;
+ };
+
+ if (s2 > 0)
+ {
+ makeRequest(400);
+ s2--;
+ };
+ };
+ });
+
+ function makeRequest(size)
+ {
+ var req = new qx.io.remote.Request("data/filesize/" + size + "kb.xml", "GET", qx.util.Mime.XML);
+
+ req.addEventListener("completed", function(e) {
+ area.setValue(area.getValue() + "Request " + size + "kb: completed\n");
+ });
+
+ req.addEventListener("failed", function(e) {
+ area.setValue(area.getValue() + "Request " + size + "kb: failed\n");
+ });
+
+ req.addEventListener("timeout", function(e) {
+ area.setValue(area.getValue() + "Request " + size + "kb: timeout\n");
+ });
+
+ req.send();
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_4.html
new file mode 100644
index 0000000000..93349c45d2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_4.html
@@ -0,0 +1,198 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qooxdoo's transport implementation using some data for an addressbook.</p>
+ <p>Using text content in this case.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/persons/anita.txt"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/harald.txt"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/lisbeth.txt"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/paul.txt"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/actions/dialog-ok.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ inf.setReadOnly(true);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ code.setReadOnly(true);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.form.TextArea;
+ area.setDimension("100%", "100%");
+ fsr.add(area);
+
+
+
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", qx.util.Mime.TEXT);
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ // Force to testing iframe implementation
+ // req.setCrossDomain(true);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setValue(e.getData().getContent());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_5.html
new file mode 100644
index 0000000000..6c7ffb34cd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_5.html
@@ -0,0 +1,198 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qooxdoo's transport implementation using some data for an addressbook.</p>
+ <p>Using html content in this case.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/persons/anita.html"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/harald.html"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/lisbeth.html"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/paul.html"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/actions/dialog-ok.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ inf.setReadOnly(true);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ code.setReadOnly(true);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.embed.HtmlEmbed("&#160;");
+ area.setDimension("100%", "100%");
+ fsr.add(area);
+
+
+
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", qx.util.Mime.HTML);
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ // Force to testing iframe implementation
+ // req.setCrossDomain(true);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setHtml(e.getData().getContent());
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setHtml(e.getData().getContent());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setHtml(e.getData().getContent());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ area.setHtml(e.getData().getContent());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_6.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_6.html
new file mode 100644
index 0000000000..22fac63463
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Transport_6.html
@@ -0,0 +1,222 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Simple test for qooxdoo's transport implementation using some data for an addressbook.</p>
+ <p>Using javascript/json content in this case.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var lay = new qx.ui.layout.VerticalBoxLayout;
+ lay.setLocation(20, 48);
+ lay.setRight(335);
+ lay.setBottom(48);
+ qx.ui.core.ClientDocument.getInstance().add(lay);
+
+
+
+ var fsq = new qx.ui.groupbox.GroupBox("Request");
+ fsq.setHeight("auto");
+ lay.add(fsq);
+
+
+ var hlay = new qx.ui.layout.HorizontalBoxLayout;
+ hlay.setVerticalChildrenAlign("middle");
+ hlay.setSpacing(4);
+ hlay.auto();
+ fsq.add(hlay);
+
+
+ var cm1 = new qx.ui.form.ComboBox();
+ cm1.add(new qx.ui.form.ListItem("data/persons/anita.js"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/harald.js"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/lisbeth.js"));
+ cm1.add(new qx.ui.form.ListItem("data/persons/paul.js"));
+ cm1.setSelected(cm1.getList().getFirstChild());
+ cm1.setWidth(200);
+ cm1.addEventListener("changeSelected", upd);
+
+ hlay.add(cm1);
+
+
+
+ var async = new qx.ui.form.CheckBox("Async");
+ async.setChecked(true);
+ hlay.add(async);
+
+
+ var spin = new qx.ui.form.Spinner(1);
+ hlay.add(spin);
+
+
+
+ var btn = new qx.ui.form.Button("Send", "icon/16/actions/dialog-ok.png");
+ btn.addEventListener("execute", upd);
+ hlay.add(btn);
+
+
+ var inf = new qx.ui.form.TextField("State");
+ inf.setWidth(80);
+ inf.setReadOnly(true);
+ hlay.add(inf);
+
+
+ var code = new qx.ui.form.TextField("Code");
+ code.setWidth(30);
+ code.setReadOnly(true);
+ hlay.add(code);
+
+
+ var typ = new qx.ui.form.TextField("Type");
+ typ.setWidth(80);
+ typ.setReadOnly(true);
+ hlay.add(typ);
+
+
+ var len = new qx.ui.form.TextField("Length");
+ len.setWidth(50);
+ len.setReadOnly(true);
+ hlay.add(len);
+
+
+ var checken = new qx.ui.form.CheckBox("enabled");
+ checken.setChecked(true);
+ hlay.add(checken);
+
+ checken.addEventListener("changeChecked", function(e) {
+ qx.io.remote.RequestQueue.getInstance().setEnabled(e.getData());
+ });
+
+
+
+
+
+ var fsr = new qx.ui.groupbox.GroupBox("Result");
+ fsr.setHeight("1*");
+ lay.add(fsr);
+
+ var area = new qx.ui.layout.VerticalBoxLayout;
+ area.setSpacing(6);
+ area.setDimension("100%", "100%");
+ fsr.add(area);
+
+
+
+ var fgivenname = new qx.ui.basic.Label("Given Name");
+ var fname = new qx.ui.basic.Label("Name");
+ var fage = new qx.ui.basic.Label("Age");
+ var fstreet = new qx.ui.basic.Label("Street");
+ var fplz = new qx.ui.basic.Label("PLZ");
+ var fcity = new qx.ui.basic.Label("City");
+ var fcountry = new qx.ui.basic.Label("Country");
+ var fphone = new qx.ui.basic.Label("Phone");
+
+ area.add(fgivenname, fname, fage, fstreet, fplz, fcity, fcountry, fphone);
+
+
+
+
+
+
+
+ function upd(e)
+ {
+ var val = cm1.getSelected();
+
+ if (!val) {
+ return;
+ };
+
+ var req;
+ for( var i=0, max=parseInt(spin.getValue()); i<max; i++ )
+ {
+ req = new qx.io.remote.Request(val.getLabel(), "GET", qx.util.Mime.JSON);
+
+ req.setAsynchronous(async.getChecked());
+ req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
+
+ req.setParameter("test1", "value1");
+ req.setParameter("test2", "value2");
+ req.setParameter("test3", "value3");
+
+ // Force to testing iframe implementation
+ // req.setCrossDomain(true);
+
+ // This combination couldn't be handled currently
+ // req.setCrossDomain(true);
+ // req.setAsynchronous(false);
+
+ req.addEventListener("sending", function(e) {
+ inf.setValue("Sending");
+ });
+
+ req.addEventListener("receiving", function(e) {
+ inf.setValue("Receiving");
+ });
+
+ req.addEventListener("completed", function(e)
+ {
+ inf.setValue("Completed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+
+ var vContent = e.getData().getContent();
+
+ fgivenname.setHtml(vContent.givenName.toString());
+ fname.setHtml(vContent.name.toString());
+ fage.setHtml(vContent.age.toString());
+ fstreet.setHtml(vContent.street.toString());
+ fplz.setHtml(vContent.plz.toString());
+ fcity.setHtml(vContent.city.toString());
+ fcountry.setHtml(vContent.country.toString());
+ fphone.setHtml(vContent.phone.toString());
+
+ qx.ui.core.Widget.flushGlobalQueues();
+ });
+
+ req.addEventListener("failed", function(e)
+ {
+ inf.setValue("Failed");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("timeout", function(e)
+ {
+ inf.setValue("Timeout");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.addEventListener("aborted", function(e)
+ {
+ inf.setValue("Aborted");
+ typ.setValue(e.getData().getResponseHeader("Content-Type"));
+ len.setValue(e.getData().getResponseHeader("Content-Length"));
+ code.setValue(e.getData().getStatusCode().toString());
+ });
+
+ req.send();
+ };
+ };
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_1.html
new file mode 100644
index 0000000000..e419453600
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_1.html
@@ -0,0 +1,69 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>
+ An example of using the Virtual Tree widget with addBranch() and addLeaf()
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // tree
+ var tree = new qx.ui.treevirtual.TreeVirtual("Tree");
+ with (tree)
+ {
+ set({
+ left : 10,
+ top : 30,
+ width : 400,
+ bottom : 30,
+ border : qx.renderer.border.BorderPresets.getInstance().thinInset
+ });
+ setColumnWidth(0, 400);
+ };
+
+ d.add(tree);
+
+ // tree data model
+ var dataModel = tree.getDataModel();
+
+ var te;
+
+ var te1 = dataModel.addBranch(null, "Desktop", true);
+
+ dataModel.addBranch(te1, "Files", true);
+
+ te = dataModel.addBranch(te1, "Workspace", true);
+ dataModel.addLeaf(te, "Windows (C:)");
+ dataModel.addLeaf(te, "Documents (D:)");
+
+ dataModel.addBranch(te1, "Network", true);
+ dataModel.addBranch(te1, "Trash", true);
+
+ var te2 = dataModel.addBranch(null, "Inbox", true);
+
+ dataModel.addBranch(te2, "Presets", true);
+ dataModel.addBranch(te2, "Sent", true);
+ dataModel.addBranch(te2, "Trash", true);
+ dataModel.addBranch(te2, "Data", true);
+ dataModel.addBranch(te2, "Edit", true);
+
+ dataModel.setData();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_2.html
new file mode 100644
index 0000000000..8c965f93de
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_2.html
@@ -0,0 +1,98 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>An example of using the Virtual Tree widget providing the array of tree
+ nodes en bulk instead of issuing a series of addBranch() and addLeaf()
+ calls. This example also colors some nodes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // tree
+ var tree = new qx.ui.treevirtual.TreeVirtual("Tree");
+ with (tree)
+ {
+ set({
+ left : 10,
+ top : 30,
+ width : 400,
+ bottom : 30,
+ border : qx.renderer.border.BorderPresets.getInstance().thinInset
+ });
+ setColumnWidth(0, 400);
+ };
+
+ d.add(tree);
+
+ // tree data model
+ var dataModel = tree.getDataModel();
+
+ var treeData = [];
+
+ var node = // the root node (not displayed)
+ {
+ opened : true,
+ children : [ 1 ]
+ };
+ treeData.push(node);
+
+ var node =
+ {
+ type : qx.ui.treevirtual.SimpleTreeDataModel.Type.BRANCH,
+ parentNodeId : 0,
+ label : "My Root",
+ bSelected : false,
+ opened : true,
+ icon : "icon/16/places/folder.png",
+ iconSelected : "icon/16/folder_open.png",
+ labelStyle : "background-color:red;color:white",
+ children : [ 2 ]
+ };
+ treeData.push(node);
+
+ var node =
+ {
+ type : qx.ui.treevirtual.SimpleTreeDataModel.Type.BRANCH,
+ parentNodeId : 1,
+ label : "A sub-folder",
+ bSelected : false,
+ opened : true,
+ icon : "icon/16/places/folder.png",
+ iconSelected : "icon/16/folder_open.png",
+ cellStyle : "background-color:cyan",
+ children : [ 3 ]
+ };
+ treeData.push(node);
+
+ var node =
+ {
+ type : qx.ui.treevirtual.SimpleTreeDataModel.Type.LEAF,
+ parentNodeId : 2,
+ label : "Third-level leaf",
+ bSelected : false,
+ opened : false,
+ icon : "icon/16/actions/document-new.png",
+ iconSelected : "icon/16/actions/document-open.png",
+ children : [ ]
+ };
+ treeData.push(node);
+
+ dataModel.setData(treeData);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_3.html
new file mode 100644
index 0000000000..b92df15d4f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_3.html
@@ -0,0 +1,84 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test large trees. This one adds a Spam branch with 3000 leaf nodes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ // tree
+ var tree = new qx.ui.treevirtual.TreeVirtual("Tree");
+ with (tree)
+ {
+ set({
+ left : 10,
+ top : 30,
+ width : 400,
+ bottom : 30,
+ border : qx.renderer.border.BorderPresets.getInstance().thinInset
+ });
+ setColumnWidth(0, 400);
+ setAlwaysShowOpenCloseSymbol(true);
+ };
+
+ d.add(tree);
+
+ // tree data model
+ var dataModel = tree.getDataModel();
+
+ var te1 = dataModel.addBranch(null, "Desktop", true);
+ dataModel.setState(te1,
+ {
+ labelStyle : "background-color: red; color: white;"
+ });
+
+ var te;
+
+ dataModel.addBranch(te1, "Files", true);
+
+ te = dataModel.addBranch(te1, "Workspace", true);
+ dataModel.addLeaf(te, "Windows (C:)");
+ dataModel.addLeaf(te, "Documents (D:)");
+
+ dataModel.addBranch(te1, "Network", true);
+
+ te = dataModel.addBranch(te1, "Trash", true);
+ dataModel.setState(te,
+ {
+ cellStyle : "background-color: cyan;"
+ });
+
+
+ var te2 = dataModel.addBranch(null, "Inbox", true);
+
+ te = dataModel.addBranch(te2, "Spam", false);
+
+ for (var i = 1; i < 3000; i++)
+ {
+ dataModel.addLeaf(te, "Spam Message #" + i);
+ }
+
+ dataModel.addBranch(te2, "Sent", true);
+ dataModel.addBranch(te2, "Trash", true);
+ dataModel.addBranch(te2, "Data", true);
+ dataModel.addBranch(te2, "Edit", true);
+
+ dataModel.setData();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_4.html
new file mode 100644
index 0000000000..3b150f52ba
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_4.html
@@ -0,0 +1,186 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Show use of events upon tree opening and closing, including adding
+ nodes dynamically upon tree open and removing the open/close button upon
+ tree open if the branch contains no children.
+ </p><p>
+ Allows controlling selection mode. Labels of selected items are
+ displayed.
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ // tree
+ var tree = new qx.ui.treevirtual.TreeVirtual("Tree");
+ with (tree)
+ {
+ set({
+ left : 10,
+ top : 30,
+ width : 400,
+ bottom : 30,
+ border : qx.renderer.border.BorderPresets.getInstance().thinInset
+ });
+ setColumnWidth(0, 400);
+ setAlwaysShowOpenCloseSymbol(true);
+ };
+
+ // Add the tree to the document
+ tree.addToDocument();
+
+ // tree data model
+ var dataModel = tree.getDataModel();
+
+ var te1 = dataModel.addBranch(null, "Desktop", true);
+
+ var te;
+ dataModel.addBranch(te1, "Files", true);
+
+ te = dataModel.addBranch(te1, "Workspace", true);
+ dataModel.addLeaf(te, "Windows (C:)");
+ dataModel.addLeaf(te, "Documents (D:)");
+
+ dataModel.addBranch(te1, "Network", true);
+ dataModel.addBranch(te1, "Trash", true);
+
+ var te2 = dataModel.addBranch(null, "Inbox", true);
+
+ te = dataModel.addBranch(te2, "Spam", false);
+ for (var i = 1; i < 3000; i++)
+ {
+ dataModel.addLeaf(te, "Spam Message #" + i);
+ }
+
+ dataModel.addBranch(te2, "Sent", false);
+ dataModel.addBranch(te2, "Trash", false);
+ dataModel.addBranch(te2, "Data", false);
+ dataModel.addBranch(te2, "Edit", false);
+
+ dataModel.setData();
+
+ var newItem = 1;
+
+ /*
+ * Each time we get a treeOpenWithContent event, add yet another leaf node
+ * to the node being opened.
+ */
+ tree.addEventListener("treeOpenWithContent",
+ function(e)
+ {
+ alert('treeOpenWithContent ');
+ var node = e.getData();
+ dataModel.addLeaf(node.nodeId,
+ newItem.toString(),
+ false);
+ newItem++;
+ });
+
+ tree.addEventListener("treeClose",
+ function(e)
+ {
+ alert('treeClose ');
+ });
+
+ /*
+ * We handle opening an empty folder specially. We demonstrate how to
+ * disable the open/close symbol once we've determined there's nothing in
+ * it. This feature might be used to dynamically retrieve the contents of
+ * the folder, and if nothing is available, indicate it by removing the
+ * open/close symbol.
+ */
+ tree.addEventListener("treeOpenWhileEmpty",
+ function(e)
+ {
+ alert('treeOpenWhileEmpty');
+ var node = e.getData();
+ tree.setState(node.nodeId, { opened : null });
+ });
+
+
+ tree.addEventListener("changeSelection",
+ function(e)
+ {
+ var text = "Selected labels:";
+ var selectedNodes = e.getData();
+ for (i = 0; i < selectedNodes.length; i++)
+ {
+ text += "\n " + selectedNodes[i].label;
+ }
+ alert('changeSelection: ' + text);
+ });
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+ commandFrame.set({ top: 48, left: 520, right: 290, height: "auto" });
+ commandFrame.addToDocument();
+
+ // Create a combo box for the selection type
+ var o = new qx.ui.basic.Atom("Selection Mode: ");
+ o.set({ top: 6, left: 0 });
+ commandFrame.add(o);
+
+ o = new qx.ui.form.ComboBox();
+ o.set({ top: 20, left: 4, width: "100%" });
+ o.setEditable(false);
+
+ // Add the various selection types
+ var item = new qx.ui.form.ListItem("No Selection");
+ o.add(item);
+ var item = new qx.ui.form.ListItem("Single Selection");
+ o.add(item);
+ o.setSelected(item);
+ var item = new qx.ui.form.ListItem("Single Interval Selection");
+ o.add(item);
+ var item = new qx.ui.form.ListItem("Multiple Interval Selection");
+ o.add(item);
+
+ // We want to be notified if the selection changes
+ o.addEventListener(
+ "changeSelected",
+ function()
+ {
+ switch(this.getValue())
+ {
+ case "No Selection":
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.NONE);
+ break;
+
+ case "Single Selection":
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.SINGLE);
+ break;
+
+ case "Single Interval Selection":
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.SINGLE_INTERVAL);
+ break;
+
+ case "Multiple Interval Selection":
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.MULTIPLE_INTERVAL);
+ break;
+ }
+ });
+
+ commandFrame.add(o);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_5.html
new file mode 100644
index 0000000000..08c73e12ea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_5.html
@@ -0,0 +1,176 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Demonstrate use of multiple columns in a tree.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ // tree
+ var tree = new qx.ui.treevirtual.TreeVirtual([ "Tree", "Permissions" ]);
+ with (tree)
+ {
+ set({
+ left : 10,
+ top : 30,
+ width : 506,
+ bottom : 30,
+ border : qx.renderer.border.BorderPresets.getInstance().thinInset
+ });
+ setAlwaysShowOpenCloseSymbol(true);
+ setColumnWidth(0, 400);
+ setColumnWidth(1, 100);
+ };
+
+ tree.addToDocument();
+
+ // tree data model
+ var dataModel = tree.getDataModel();
+
+ var te1 = dataModel.addBranch(null, "Desktop", true);
+ dataModel.setState(te1,
+ {
+ labelStyle :
+ "background-color: red; " +
+ "color: white;" +
+ "font-weight: bold;"
+ });
+
+ var te1_1;
+
+ dataModel.addBranch(te1, "Files", true);
+
+ te1_1 = dataModel.addBranch(te1, "Workspace", true);
+ te = dataModel.addLeaf(te1_1, "Windows (C:)");
+ dataModel.setColumnData(te, 1, "-rwxr-xr-x");
+ te = dataModel.addLeaf(te1_1, "Documents (D:)");
+ dataModel.setColumnData(te, 1, "-rwxr-xr-x");
+
+ dataModel.addBranch(te1, "Network", true);
+
+ te = dataModel.addBranch(te1, "Trash", true);
+ dataModel.setState(te,
+ {
+ cellStyle : "background-color: cyan;"
+ });
+
+
+ var te2 = dataModel.addBranch(null, "Inbox", true);
+
+ te = dataModel.addBranch(te2, "Spam", false);
+
+ for (var i = 1; i < 3000; i++)
+ {
+ dataModel.addLeaf(te, "Spam Message #" + i);
+ }
+
+ dataModel.addBranch(te2, "Sent", false);
+ dataModel.addBranch(te2, "Trash", false);
+ dataModel.addBranch(te2, "Data", false);
+ dataModel.addBranch(te2, "Edit", false);
+
+ dataModel.setData();
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+ commandFrame.set({ top: 48, left: 520, width: "auto", height: "auto" });
+ commandFrame.addToDocument();
+
+ var o = new qx.ui.basic.Atom("Current Selection: ");
+ o.set({ left: 0, top: 6 });
+ commandFrame.add(o);
+
+ o = new qx.ui.form.TextField();
+ o.set({ left: 4, right: 0, top: 20, readOnly: true });
+ commandFrame.add(o);
+ tree.addEventListener(
+ "changeSelection",
+ function(e)
+ {
+ // Get the list of selected nodes. We're in single-selection mode, so
+ // there will be only one of them.
+ var nodes = e.getData();
+ this.setValue(tree.getHierarchy(nodes[0].nodeId).join('/'));
+ buttonRemove.setEnabled(true);
+ },
+ o);
+
+ var buttonRemove = new qx.ui.form.Button("Remove");
+ buttonRemove.set({ top: 42, left: 0, enabled: false });
+ commandFrame.add(buttonRemove);
+ buttonRemove.addEventListener(
+ "execute",
+ function(e)
+ {
+ selectedNodes = tree.getSelectedNodes();
+ for (var i = 0; i < selectedNodes.length; i++)
+ {
+ dataModel.prune(selectedNodes[i].nodeId);
+ dataModel.setData();
+ }
+ });
+
+ o = new qx.ui.form.CheckBox("Use tree lines?");
+ o.set({ top: 80, left: 0, checked: true });
+ commandFrame.add(o);
+ o.addEventListener("changeChecked",
+ function(e)
+ {
+ tree.setUseTreeLines(e.getData());
+ });
+
+ o = new qx.ui.form.CheckBox("Jens Lautenbacher mode?");
+ o.set({ top: 100, left: 0, checked: false });
+ commandFrame.add(o);
+ o.addEventListener("changeChecked",
+ function(e)
+ {
+ tree.setJensLautenbacherMode(e.getData());
+ });
+
+ o = new qx.ui.form.CheckBox("Always show open/close symbol?");
+ o.set({ top: 120, left: 0, checked: true });
+ commandFrame.add(o);
+ o.addEventListener("changeChecked",
+ function(e)
+ {
+ tree.setAlwaysShowOpenCloseSymbol(e.getData());
+ });
+
+ o = new qx.ui.form.CheckBox("Remove open/close if found empty?");
+ o.set({ top: 140, left: 0, checked: true });
+ commandFrame.add(o);
+ tree.addEventListener("treeOpenWhileEmpty",
+ function(e)
+ {
+ if (this.getChecked())
+ {
+ var node = e.getData();
+ tree.setState(node.nodeId, { opened : null });
+ }
+ },
+ o);
+
+ o = new qx.ui.form.CheckBox("Open/close click selects row?");
+ o.set({ top: 160, left: 0, checked: false });
+ commandFrame.add(o);
+ o.addEventListener("changeChecked",
+ function(e)
+ {
+ tree.setOpenCloseClickSelectsRow(e.getData());
+ });
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_6.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_6.html
new file mode 100644
index 0000000000..65b5b9d397
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/TreeVirtual_6.html
@@ -0,0 +1,135 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Demonstrate providing initially-selected tree nodes.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ // tree
+ var tree = new qx.ui.treevirtual.TreeVirtual("Tree");
+ with (tree)
+ {
+ set({
+ left : 10,
+ top : 30,
+ width : 400,
+ bottom : 30,
+ border : qx.renderer.border.BorderPresets.getInstance().thinInset
+ });
+ setColumnWidth(0, 400);
+ setAlwaysShowOpenCloseSymbol(true);
+ };
+
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.MULTIPLE_INTERVAL);
+
+ // Add the tree to the document
+ tree.addToDocument();
+
+ // tree data model
+ var dataModel = tree.getDataModel();
+
+ var te1 = dataModel.addBranch(null, "Desktop", true);
+
+ var x;
+ var te;
+ dataModel.addBranch(te1, "Files", true);
+
+ te = dataModel.addBranch(te1, "Workspace", true);
+ x = dataModel.addLeaf(te, "Windows (C:)");
+ tree.setState(x, { bSelected : true });
+ x = dataModel.addLeaf(te, "Documents (D:)");
+ tree.setState(x, { bSelected : true });
+
+ dataModel.addBranch(te1, "Network", true);
+ dataModel.addBranch(te1, "Trash", true);
+
+ var te2 = dataModel.addBranch(null, "Inbox", true);
+
+ te = dataModel.addBranch(te2, "Spam", false);
+ for (var i = 1; i < 3000; i++)
+ {
+ dataModel.addLeaf(te, "Spam Message #" + i);
+ }
+
+ dataModel.addBranch(te2, "Sent", false);
+ dataModel.addBranch(te2, "Trash", false);
+ dataModel.addBranch(te2, "Data", false);
+ dataModel.addBranch(te2, "Edit", false);
+
+ dataModel.setData();
+
+ var newItem = 1;
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+ commandFrame.set({ top: 48, left: 520, right: 290, height: "auto" });
+ commandFrame.addToDocument();
+
+ // Create a combo box for the selection type
+ var o = new qx.ui.basic.Atom("Selection Mode: ");
+ o.set({ top: 6, left: 0 });
+ commandFrame.add(o);
+
+ o = new qx.ui.form.ComboBox();
+ o.set({ top: 20, left: 4, width: "100%" });
+ o.setEditable(false);
+
+ // Add the various selection types
+ var item = new qx.ui.form.ListItem("No Selection");
+ o.add(item);
+ var item = new qx.ui.form.ListItem("Single Selection");
+ o.add(item);
+ var item = new qx.ui.form.ListItem("Single Interval Selection");
+ o.add(item);
+ var item = new qx.ui.form.ListItem("Multiple Interval Selection");
+ o.add(item);
+ o.setSelected(item);
+
+ // We want to be notified if the selection changes
+ o.addEventListener(
+ "changeSelected",
+ function()
+ {
+ switch(this.getValue())
+ {
+ case "No Selection":
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.NONE);
+ break;
+
+ case "Single Selection":
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.SINGLE);
+ break;
+
+ case "Single Interval Selection":
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.SINGLE_INTERVAL);
+ break;
+
+ case "Multiple Interval Selection":
+ tree.setSelectionMode(
+ qx.ui.treevirtual.TreeVirtual.SelectionMode.MULTIPLE_INTERVAL);
+ break;
+ }
+ });
+
+ commandFrame.add(o);
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_1.html
new file mode 100644
index 0000000000..1a7155ce11
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_1.html
@@ -0,0 +1,171 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Introducing qx.ui.tree.Tree. A first small example.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+ var te1 = new qx.ui.tree.TreeFolder("Desktop");
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ posteingang = te2;
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+
+ var vShowItems = new qx.ui.form.Button("Show Items");
+
+ with(vShowItems) {
+ setTop(100);
+ setLeft(0);
+ };
+
+ commandFrame.add(vShowItems);
+
+ vShowItems.addEventListener("execute", function(e) {
+ alert(t.getItems());
+ });
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_2.html
new file mode 100644
index 0000000000..4c05981f8a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_2.html
@@ -0,0 +1,294 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>This example is bigger than the previous one.</p>
+ </div>
+
+ <div id="control" style="display:none">
+ <p>
+ <strong>Create</strong>:
+ <br/>
+ Push into:
+ <a href="javascript://" onclick="void(root.add(new qx.ui.tree.TreeFile('Foo Bar')))">Root</a>
+ <a href="javascript://" onclick="void(inbox.add(new qx.ui.tree.TreeFile('Foo Bar')))">Inbox</a>
+ <a href="javascript://" onclick="void(workspace.add(new qx.ui.tree.TreeFile('Foo Bar')))">Workspace</a>
+ <a href="javascript://" onclick="void(desktop.add(new qx.ui.tree.TreeFile('Foo Bar')))">Desktop</a>
+ <a href="javascript://" onclick="void(edit.add(new qx.ui.tree.TreeFile('Foo Bar')))">Edit</a>
+ <a href="javascript://" onclick="void(spam.add(new qx.ui.tree.TreeFile('Foo Bar')))">Spam</a>
+ </p>
+
+ <hr/>
+
+ <p>
+ <strong>Inbox</strong>:
+ <a href="javascript://" onclick="void(inbox.getParent().remove(inbox))">Delete</a>
+ <br/>
+ Push into:
+ <a href="javascript://" onclick="void(root.add(inbox))">Root</a>
+ <a href="javascript://" onclick="void(workspace.add(inbox))">Workspace</a>
+ <a href="javascript://" onclick="void(desktop.add(inbox))">Desktop</a>
+ <a href="javascript://" onclick="void(edit.add(inbox))">Edit</a>
+ <a href="javascript://" onclick="void(spam.add(inbox))">Spam</a>
+ </p>
+
+ <p>
+ <strong>Workspace</strong>:
+ <a href="javascript://" onclick="void(workspace.getParent().remove(workspace))">Delete</a>
+ <br/>
+ Push into:
+ <a href="javascript://" onclick="void(root.add(workspace))">Root</a>
+ <a href="javascript://" onclick="void(inbox.add(workspace))">Inbox</a>
+ <a href="javascript://" onclick="void(desktop.add(workspace))">Desktop</a>
+ <a href="javascript://" onclick="void(edit.add(workspace))">Edit</a>
+ <a href="javascript://" onclick="void(spam.add(workspace))">Spam</a>
+ <br/>
+ Push into before:
+ <a href="javascript://" onclick="void(root.addBefore(workspace, desktop))">Root (before:Desktop)</a>
+ <a href="javascript://" onclick="void(root.addBefore(workspace, inbox))">Root (before:Inbox)</a>
+ <a href="javascript://" onclick="void(inbox.addBefore(workspace, spam))">Inbox (before:Spam)</a>
+ <a href="javascript://" onclick="void(inbox.addBefore(workspace, edit))">Inbox (before:Edit)</a>
+ <br/>
+ Push into after:
+ <a href="javascript://" onclick="void(root.addAfter(workspace, desktop))">Root (after:Desktop)</a>
+ <a href="javascript://" onclick="void(root.addAfter(workspace, inbox))">Root (after:Inbox)</a>
+ <a href="javascript://" onclick="void(inbox.addAfter(workspace, spam))">Inbox (after:Spam)</a>
+ <a href="javascript://" onclick="void(inbox.addAfter(workspace, edit))">Inbox (after:Edit)</a>
+ <br/>
+ Add at:
+ <a href="javascript://" onclick="void(root.addAt(workspace, 0))">Root (at:0)</a>
+ <a href="javascript://" onclick="void(root.addAt(workspace, 1))">Root (at:1)</a>
+ <a href="javascript://" onclick="void(root.addAt(workspace, 2))">Root (at:2)</a>
+ <a href="javascript://" onclick="void(inbox.addAt(workspace, 0))">Inbox (at:0)</a>
+ <a href="javascript://" onclick="void(inbox.addAt(workspace, 3))">Inbox (at:3)</a>
+ <a href="javascript://" onclick="void(inbox.addAt(workspace, 5))">Inbox (at:5)</a>
+ </p>
+ </div>
+
+ <script type="text/javascript">
+ var desktop, workspace, root, inbox, edit, spam;
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ root = t;
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+ var te1 = new qx.ui.tree.TreeFolder("Desktop");
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ workspace = te1_2;
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ inbox = te2;
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ edit = te2_5;
+
+ var te2_5_1 = new qx.ui.tree.TreeFolder("Chat");
+ var te2_5_2 = new qx.ui.tree.TreeFolder("Pustefix");
+ var te2_5_3 = new qx.ui.tree.TreeFolder("TINC");
+
+ var te2_5_3_1 = new qx.ui.tree.TreeFolder("Announce");
+ var te2_5_3_2 = new qx.ui.tree.TreeFolder("Devel");
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_6 = new qx.ui.tree.TreeFolder("Lists");
+
+ var te2_6_1 = new qx.ui.tree.TreeFolder("Relations");
+ var te2_6_2 = new qx.ui.tree.TreeFolder("Company");
+ var te2_6_3 = new qx.ui.tree.TreeFolder("Questions");
+ var te2_6_4 = new qx.ui.tree.TreeFolder("Internal");
+ var te2_6_5 = new qx.ui.tree.TreeFolder("Products");
+ var te2_6_6 = new qx.ui.tree.TreeFolder("Press");
+ var te2_6_7 = new qx.ui.tree.TreeFolder("Development");
+ var te2_6_8 = new qx.ui.tree.TreeFolder("Competition");
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.tree.TreeFolder("Personal");
+
+ var te2_7_1 = new qx.ui.tree.TreeFolder("Bugs");
+ var te2_7_2 = new qx.ui.tree.TreeFolder("Family");
+ var te2_7_3 = new qx.ui.tree.TreeFolder("Projects");
+ var te2_7_4 = new qx.ui.tree.TreeFolder("Holiday");
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.tree.TreeFolder("Big");
+
+ for (var i=0;i<10; i++) {
+ te2_8.add(new qx.ui.tree.TreeFolder("Item " + i));
+ };
+
+ var te2_9 = new qx.ui.tree.TreeFolder("Spam");
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+
+
+
+
+
+
+
+ var ct1 = new qx.ui.basic.Label(document.getElementById("control").innerHTML);
+
+ with(ct1)
+ {
+ setWidth(300);
+ setRight(335);
+
+ setHeight(null);
+ setTop(48);
+ setBottom(48);
+
+ setOverflow("hidden");
+ setStyleProperty("whiteSpace", "normal");
+
+ setBackgroundColor("white");
+ setBorder(qx.renderer.border.BorderPresets.getInstance().groove);
+ setPadding(10);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(ct1);
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_3.html
new file mode 100644
index 0000000000..28e6569855
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_3.html
@@ -0,0 +1,201 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Nothing special, like the previous example but here the tree lines are by default off.</p>
+ <p>This allows you to easily compare the performance costs for the tree lines: Just compare this and the previous example.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+ setUseTreeLines(false);
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+ var te1 = new qx.ui.tree.TreeFolder("Desktop");
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ posteingang = te2;
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ editieren = te2_5;
+
+ var te2_5_1 = new qx.ui.tree.TreeFolder("Chat");
+ var te2_5_2 = new qx.ui.tree.TreeFolder("Pustefix");
+ var te2_5_3 = new qx.ui.tree.TreeFolder("TINC");
+
+ var te2_5_3_1 = new qx.ui.tree.TreeFolder("Announce");
+ var te2_5_3_2 = new qx.ui.tree.TreeFolder("Devel");
+
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_6 = new qx.ui.tree.TreeFolder("Lists");
+
+ var te2_6_1 = new qx.ui.tree.TreeFolder("Relations");
+ var te2_6_2 = new qx.ui.tree.TreeFolder("Company");
+ var te2_6_3 = new qx.ui.tree.TreeFolder("Questions");
+ var te2_6_4 = new qx.ui.tree.TreeFolder("Internal");
+ var te2_6_5 = new qx.ui.tree.TreeFolder("Products");
+ var te2_6_6 = new qx.ui.tree.TreeFolder("Press");
+ var te2_6_7 = new qx.ui.tree.TreeFolder("Development");
+ var te2_6_8 = new qx.ui.tree.TreeFolder("Competition");
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.tree.TreeFolder("Personal");
+
+ var te2_7_1 = new qx.ui.tree.TreeFolder("Bugs");
+ var te2_7_2 = new qx.ui.tree.TreeFolder("Family");
+ var te2_7_3 = new qx.ui.tree.TreeFolder("Projects");
+ var te2_7_4 = new qx.ui.tree.TreeFolder("Holiday");
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.tree.TreeFolder("Big");
+
+ for (var i=0;i<50; i++) {
+ te2_8.add(new qx.ui.tree.TreeFolder("Item " + i));
+ };
+
+ var te2_9 = new qx.ui.tree.TreeFolder("Spam");
+ spam = te2_9;
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ t.add(te2);
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(false);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_4.html
new file mode 100644
index 0000000000..f5d92844bb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_4.html
@@ -0,0 +1,40 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test an empty tree</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_5.html
new file mode 100644
index 0000000000..03ceb54281
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_5.html
@@ -0,0 +1,148 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Drag and Drop between trees and inside a tree.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ function handleDragStart(e)
+ {
+ e.addData("qx.ui.tree.AbstractTreeElement", e.getCurrentTarget());
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleDragDrop(e)
+ {
+ var vType = e.getDropDataTypes()[0];
+ var vSource = e.getData(vType);
+ var vTarget = e.getCurrentTarget();
+
+ vSource.getTree().getManager().deselectAll();
+ vTarget.add(vSource);
+
+ e.stopPropagation();
+ };
+
+ function supportsDrop(vDragCache) {
+ return !vDragCache.sourceWidget.contains(this);
+ };
+
+ function handleDragOver(e)
+ {
+ var l = e.getTarget().getLabelObject();
+ l.setStyleProperty("textDecoration", "underline");
+ };
+
+ function handleDragOut(e)
+ {
+ var l = e.getTarget().getLabelObject();
+ l.removeStyleProperty("textDecoration");
+ };
+
+
+
+ var treeSource = new qx.ui.tree.Tree("Source");
+
+ with(treeSource)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+
+ addEventListener("dragdrop", handleDragDrop);
+ addEventListener("dragover", handleDragOver);
+ addEventListener("dragout", handleDragOut);
+
+ setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(treeSource);
+
+ for (var i=1, f; i<4; i++)
+ {
+ f = new qx.ui.tree.TreeFolder("Folder " + i);
+
+ f.addEventListener("dragstart", handleDragStart);
+ f.addEventListener("dragdrop", handleDragDrop);
+ f.addEventListener("dragover", handleDragOver);
+ f.addEventListener("dragout", handleDragOut);
+
+ f.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ f.supportsDrop = supportsDrop;
+
+ treeSource.add(f);
+
+ for (var j=1, g; j<4; j++)
+ {
+ g = new qx.ui.tree.TreeFolder("Subfolder " + j);
+
+ g.addEventListener("dragstart", handleDragStart);
+ g.addEventListener("dragdrop", handleDragDrop);
+ g.addEventListener("dragover", handleDragOver);
+ g.addEventListener("dragout", handleDragOut);
+
+ g.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ g.supportsDrop = supportsDrop;
+
+ f.add(g);
+
+ for (var k=1, h; k<4; k++)
+ {
+ h = new qx.ui.tree.TreeFile("File " + k);
+
+ h.addEventListener("dragstart", handleDragStart);
+
+ g.add(h);
+ };
+ };
+ };
+
+
+
+
+ var treeDest = new qx.ui.tree.Tree("Dest");
+
+ with(treeDest)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(240);
+ setWidth(200);
+ setBottom(48);
+
+ addEventListener("dragdrop", handleDragDrop);
+ addEventListener("dragover", handleDragOver);
+ addEventListener("dragout", handleDragOut);
+
+ setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(treeDest);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_6.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_6.html
new file mode 100644
index 0000000000..67f0dc42b2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_6.html
@@ -0,0 +1,231 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Drag and Drop between trees and inside a tree.</p>
+ <p>Added support for positioned move/insert (not complete yet!)</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var vLastIndex = null;
+
+ function handleDragStart(e)
+ {
+ e.addData("qx.ui.tree.AbstractTreeElement", e.getCurrentTarget());
+ e.addAction("move");
+ e.startDrag();
+ };
+
+ function handleDragDrop(e)
+ {
+ var vType = e.getDropDataTypes()[0];
+ var vSource = e.getData(vType);
+ var vTarget = e.getCurrentTarget();
+
+ vSource.getTree().getManager().deselectAll();
+
+ // this.debug("Add At: " + vLastIndex);
+
+ vLastIndex == null ? vTarget.addAtEnd(vSource) : vTarget.addBefore(vSource, vLastIndex);
+ vLastIndex = null;
+
+ e.stopPropagation();
+ treeMarkerLine.setStyleProperty("display", "none");
+ };
+
+ function supportsDrop(vDragCache) {
+ return !vDragCache.sourceWidget.contains(this);
+ };
+
+ function handleDragOver(e)
+ {
+ var l = e.getTarget().getLabelObject();
+ l.setStyleProperty("textDecoration", "underline");
+ };
+
+ function handleDragOut(e)
+ {
+ var l = e.getTarget().getLabelObject();
+ l.removeStyleProperty("textDecoration");
+ };
+
+ function handleDragEnd(e)
+ {
+ vLastIndex = null;
+ treeMarkerLine.setStyleProperty("display", "none");
+ };
+
+ function handleDragMove(e)
+ {
+ vLastIndex = null;
+
+ var vTarget = e.getTarget();
+
+ if (!vTarget || !(vTarget instanceof qx.ui.tree.TreeFolder))
+ {
+ treeMarkerLine.setStyleProperty("display", "none");
+ return;
+ };
+
+ var vContainer = vTarget.getContainerObject();
+
+ if (!vContainer)
+ {
+ treeMarkerLine.setStyleProperty("display", "none");
+ return;
+ };
+
+ var vChildren = vContainer.getVisibleChildren();
+ var vChildrenLength = vChildren.length;
+ var vEventTop = e.getPageY();
+
+ for (var i=0, vChild, vTop; i<vChildrenLength; i++)
+ {
+ vChild = vChildren[i];
+
+ vTop = qx.html.Location.getPageBoxTop(vChild.getElement());
+ if ((vTop - vEventTop) > -4 && (vTop - vEventTop) < 4)
+ {
+ if (vEventTop > vTop && vChild.isFirstChild()) {
+ continue;
+ };
+
+ treeMarkerLine._applyRuntimeTop(vTop+1);
+ treeMarkerLine._applyRuntimeLeft(QxDom.getComputedPageBoxLeft(vChild.getLabelObject().getElement()) - 20);
+
+ treeMarkerLine.removeStyleProperty("display");
+
+ // this.debug("Index: " + vLastIndex + " :: " + vEventTop + " <> " + vTop);
+ vLastIndex = vChild;
+
+ return;
+ };
+ };
+
+ treeMarkerLine.setStyleProperty("display", "none");
+ };
+
+
+
+ var treeMarkerLine = new qx.ui.basic.Terminator;
+
+ treeMarkerLine.setHeight(2);
+ treeMarkerLine.setBackgroundColor("#335EA8");
+ treeMarkerLine.setWidth(20);
+ treeMarkerLine.setZIndex(1e7);
+ treeMarkerLine.setAnonymous(true);
+ treeMarkerLine.setStyleProperty("display", "none");
+
+ qx.ui.core.ClientDocument.getInstance().add(treeMarkerLine);
+
+
+
+ var treeSource = new qx.ui.tree.Tree("Source");
+
+ with(treeSource)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+
+ addEventListener("dragdrop", handleDragDrop);
+ addEventListener("dragover", handleDragOver);
+ addEventListener("dragout", handleDragOut);
+ addEventListener("dragmove", handleDragMove);
+
+ setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(treeSource);
+
+ for (var i=1, f; i<3; i++)
+ {
+ f = new qx.ui.tree.TreeFolder("Folder " + i);
+
+ f.addEventListener("dragstart", handleDragStart);
+ f.addEventListener("dragdrop", handleDragDrop);
+ f.addEventListener("dragover", handleDragOver);
+ f.addEventListener("dragout", handleDragOut);
+ f.addEventListener("dragend", handleDragEnd);
+
+ f.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ f.supportsDrop = supportsDrop;
+
+ treeSource.add(f);
+
+ for (var j=1, g; j<6; j++)
+ {
+ g = new qx.ui.tree.TreeFolder("Subfolder " + j);
+
+ g.addEventListener("dragstart", handleDragStart);
+ g.addEventListener("dragdrop", handleDragDrop);
+ g.addEventListener("dragover", handleDragOver);
+ g.addEventListener("dragout", handleDragOut);
+ g.addEventListener("dragend", handleDragEnd);
+
+ g.setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ g.supportsDrop = supportsDrop;
+
+ f.add(g);
+
+ for (var k=1, h; k<9; k++)
+ {
+ h = new qx.ui.tree.TreeFile("File " + k);
+
+ h.addEventListener("dragstart", handleDragStart);
+
+ g.add(h);
+ };
+ };
+ };
+
+
+
+
+
+
+ var treeDest = new qx.ui.tree.Tree("Dest");
+
+ with(treeDest)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(240);
+ setWidth(200);
+ setBottom(48);
+
+ addEventListener("dragdrop", handleDragDrop);
+ addEventListener("dragover", handleDragOver);
+ addEventListener("dragout", handleDragOut);
+ addEventListener("dragmove", handleDragMove);
+
+ setDropDataTypes(["qx.ui.tree.AbstractTreeElement"]);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(treeDest);
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_7.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_7.html
new file mode 100644
index 0000000000..057160a268
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Tree_7.html
@@ -0,0 +1,233 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Trying dynamic Folder and File creation and deletion.</p>
+ </div>
+
+ <script type="text/javascript">
+
+ function createItems (t) {
+ var te1 = new qx.ui.tree.TreeFolder("Desktop");
+ t.add(te1);
+
+ desktop = te1;
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+
+
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)");
+
+ te1_2.add(te1_2_1, te1_2_2);
+
+ arbeitsplatz = te1_2;
+
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ posteingang = te2;
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ t.add(te2);
+ }
+
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var t = new qx.ui.tree.Tree("Root");
+
+ with(t)
+ {
+ setBackgroundColor(255);
+ setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ setOverflow("scrollY");
+
+ setHeight(null);
+ setTop(48);
+ setLeft(20);
+ setWidth(200);
+ setBottom(48);
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(t);
+
+
+
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+
+ with(commandFrame)
+ {
+ setTop(48);
+ setLeft(250);
+
+ setWidth("auto");
+ setHeight("auto");
+ };
+
+ qx.ui.core.ClientDocument.getInstance().add(commandFrame);
+
+
+
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+
+ with(tCurrentLabel)
+ {
+ setLeft(0);
+ setTop(0);
+ };
+
+ commandFrame.add(tCurrentLabel);
+
+
+
+ var tCurrentInput = new qx.ui.form.TextField;
+
+ with(tCurrentInput)
+ {
+ setLeft(0);
+ setRight(0);
+ setTop(20);
+
+ setReadOnly(true);
+ };
+
+ commandFrame.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ if(e.getData()[0]) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ this.debug('classname: ' + e.getData()[0].classname);
+ }
+ else {
+ tCurrentInput.setValue('');
+ }
+ });
+
+
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+
+ with(tDoubleClick) {
+ setTop(60);
+ setLeft(0);
+ };
+
+ commandFrame.add(tDoubleClick);
+
+ tDoubleClick.addEventListener("changeChecked", function(e) { t.setUseDoubleClick(e.getData()); });
+
+
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+
+ with(tTreeLines) {
+ setTop(80);
+ setLeft(0);
+ setChecked(true);
+ };
+
+ commandFrame.add(tTreeLines);
+
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+
+
+
+
+ var vShowItems = new qx.ui.form.Button("Show Items");
+
+ with(vShowItems) {
+ setTop(100);
+ setLeft(0);
+ };
+
+ commandFrame.add(vShowItems);
+
+ vShowItems.addEventListener("execute", function(e) {
+ alert(t.getItems());
+ });
+
+
+ var vDestroyTreeContent = new qx.ui.form.Button("Destroy tree content");
+
+ with(vDestroyTreeContent) {
+ setTop(180);
+ setLeft(0);
+ };
+
+ commandFrame.add(vDestroyTreeContent);
+
+ vDestroyTreeContent.addEventListener("execute", function(e) {
+ t.destroyContent();
+ });
+
+
+ var vCreateItems = new qx.ui.form.Button("Create items");
+
+ with(vCreateItems) {
+ setTop(140);
+ setLeft(0);
+ };
+
+ commandFrame.add(vCreateItems);
+
+ vCreateItems.addEventListener("execute", function(e) {
+ createItems(t);
+ });
+
+ var vDestroySelectedItem = new qx.ui.form.Button("Destroy selected item");
+
+ with(vDestroySelectedItem) {
+ setTop(220);
+ setLeft(0);
+ };
+
+ commandFrame.add(vDestroySelectedItem);
+
+ vDestroySelectedItem.addEventListener("execute", function(e) {
+ var vItem = t.getManager().getSelectedItem();
+ if(vItem) {
+ vItem.destroy();
+ }
+ });
+
+
+ var vDestroyContenSelectedItem = new qx.ui.form.Button("Destroy content of selected item");
+
+ with(vDestroyContenSelectedItem) {
+ setTop(260);
+ setLeft(0);
+ };
+
+ commandFrame.add(vDestroyContenSelectedItem);
+
+ vDestroyContenSelectedItem.addEventListener("execute", function(e) {
+ var vItem = t.getManager().getSelectedItem();
+ if(vItem && vItem instanceof qx.ui.tree.TreeFolder) {
+ vItem.destroyContent();
+ }
+ });
+
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Umlauts_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Umlauts_1.html
new file mode 100644
index 0000000000..f321919cbb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Umlauts_1.html
@@ -0,0 +1,26 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Test some Umlauts methods from the String.prototype.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ alert("Umlauts Short: " + qx.util.Normalization.umlautsShort("äöüÄÖÜß"))
+ alert("Umlauts Long: " + qx.util.Normalization.umlautsLong("äöüÄÖÜß"))
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_1.html
new file mode 100644
index 0000000000..5c820b0bda
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_1.html
@@ -0,0 +1,1257 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.VerticalBoxLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var cl_white = new qx.renderer.color.Color("white");
+ var cl_blue = new qx.renderer.color.Color("blue");
+ var cl_yellow = new qx.renderer.color.Color("yellow");
+ var cl_green = new qx.renderer.color.Color("green");
+ var cl_orange = new qx.renderer.color.Color("orange");
+ var cl_purple = new qx.renderer.color.Color("purple");
+ var cl_aqua = new qx.renderer.color.Color("aqua");
+ var cl_fuchsia = new qx.renderer.color.Color("fuchsia");
+
+ /* ***********************************************
+
+ EXAMPLE ONE:
+ TOP ALIGN
+
+ *********************************************** */
+
+ var hbl1 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl1.setTop(48);
+ hbl1.setLeft(20);
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setWidth("auto")
+ hbl1.setBottom(48);
+
+ hbl1.setSpacing(4);
+ hbl1.setPadding(8);
+
+ hbl1.setHorizontalChildrenAlign("right");
+
+
+ var w1_1 = new qx.ui.layout.CanvasLayout;
+ w1_1.setHeight(25);
+ w1_1.setWidth(25);
+ w1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_1.setBackgroundColor(cl_white);
+ // w1_1.setMaxWidth(40);
+
+ var w1_2 = new qx.ui.layout.CanvasLayout;
+ w1_2.setHeight(25);
+ w1_2.setWidth(25);
+ w1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_2.setBackgroundColor(cl_blue);
+ w1_2.setRight(10);
+
+ var w1_3 = new qx.ui.layout.CanvasLayout;
+ w1_3.setHeight(25);
+ w1_3.setWidth("100%");
+ w1_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_3.setBackgroundColor(cl_yellow);
+
+ var w1_4 = new qx.ui.layout.CanvasLayout;
+ w1_4.setHeight(25);
+ w1_4.setWidth(25);
+ w1_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_4.setBackgroundColor(cl_green);
+
+ var w1_5 = new qx.ui.layout.CanvasLayout;
+ w1_5.setHeight(40);
+ // w1_5.setWidth(25);
+ w1_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_5.setBackgroundColor(cl_orange);
+
+ var w1_6 = new qx.ui.layout.CanvasLayout;
+ w1_6.setHeight(25);
+ w1_6.setWidth(25);
+ w1_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_6.setBackgroundColor(cl_purple);
+ w1_6.setLeft(15);
+ w1_6.setTop(-25);
+
+ var w1_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w1_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w1_9 = new qx.ui.layout.CanvasLayout;
+ w1_9.setHeight(25);
+ w1_9.setWidth(25);
+ w1_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_9.setBackgroundColor(cl_aqua);
+
+ var w1_10 = new qx.ui.layout.CanvasLayout;
+ w1_10.setHeight(25);
+ w1_10.setWidth(25);
+ w1_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_10.setBackgroundColor(cl_fuchsia);
+
+ var hbl1_click = 0;
+ hbl1.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl1_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setWidth("auto");
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl1_click = 0;
+ return;
+ };
+
+ hbl1_click++;
+ });
+
+ w1_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w1_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w1_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w1_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w1_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w1_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w1_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w1_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w1_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w1_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl1.add(w1_1, w1_2, w1_3, w1_4, w1_5, w1_6, w1_7, w1_8, w1_9, w1_10);
+ d.add(hbl1);
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE TWO:
+ BOTTOM ALIGN
+
+ *********************************************** */
+
+ var hbl2 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl2.setLeft(110);
+ hbl2.setTop(48);
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setWidth("auto");
+ hbl2.setBottom(48);
+
+ hbl2.setSpacing(4);
+ hbl2.setPadding(8);
+
+ hbl2.setVerticalChildrenAlign("bottom");
+ hbl2.setHorizontalChildrenAlign("center");
+
+
+ var w2_1 = new qx.ui.layout.CanvasLayout;
+ w2_1.setHeight(25);
+ w2_1.setWidth(25);
+ w2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_1.setBackgroundColor(cl_white);
+ // w2_1.setMaxWidth(40);
+
+ var w2_2 = new qx.ui.layout.CanvasLayout;
+ w2_2.setHeight(25);
+ w2_2.setWidth(25);
+ w2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_2.setBackgroundColor(cl_blue);
+ w2_2.setRight(10);
+
+ var w2_3 = new qx.ui.layout.CanvasLayout;
+ w2_3.setHeight(25);
+ w2_3.setWidth("100%");
+ w2_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_3.setBackgroundColor(cl_yellow);
+
+ var w2_4 = new qx.ui.layout.CanvasLayout;
+ w2_4.setHeight(25);
+ w2_4.setWidth(25);
+ w2_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_4.setBackgroundColor(cl_green);
+
+ var w2_5 = new qx.ui.layout.CanvasLayout;
+ w2_5.setHeight(40);
+ // w2_5.setWidth(25);
+ w2_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_5.setBackgroundColor(cl_orange);
+
+ var w2_6 = new qx.ui.layout.CanvasLayout;
+ w2_6.setHeight(25);
+ w2_6.setWidth(25);
+ w2_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_6.setBackgroundColor(cl_purple);
+ w2_6.setLeft(15);
+ w2_6.setTop(-25);
+
+ var w2_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w2_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w2_9 = new qx.ui.layout.CanvasLayout;
+ w2_9.setHeight(25);
+ w2_9.setWidth(25);
+ w2_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_9.setBackgroundColor(cl_aqua);
+
+ var w2_10 = new qx.ui.layout.CanvasLayout;
+ w2_10.setHeight(25);
+ w2_10.setWidth(25);
+ w2_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_10.setBackgroundColor(cl_fuchsia);
+ w2_10.foo = true;
+
+
+ var hbl2_click = 0;
+ hbl2.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl2_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setWidth("auto");
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl2_click = 0;
+ return;
+ };
+
+ hbl2_click++;
+ });
+
+ w2_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w2_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w2_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w2_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w2_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w2_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w2_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w2_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w2_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w2_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl2.add(w2_1, w2_2, w2_3, w2_4, w2_5, w2_6, w2_7, w2_8, w2_9, w2_10);
+ d.add(hbl2);
+
+
+ /* ***********************************************
+
+ EXAMPLE THREE:
+ CENTER ALIGN
+
+ *********************************************** */
+
+ var hbl3 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl3.setLeft(200);
+ hbl3.setTop(48);
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setWidth("auto");
+ hbl3.setBottom(48);
+
+ hbl3.setSpacing(4);
+ hbl3.setPadding(8);
+
+ hbl3.setVerticalChildrenAlign("middle");
+
+
+
+ var w3_1 = new qx.ui.layout.CanvasLayout;
+ w3_1.setHeight(25);
+ w3_1.setWidth(25);
+ w3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_1.setBackgroundColor(cl_white);
+ // w3_1.setMaxWidth(40);
+
+ var w3_2 = new qx.ui.layout.CanvasLayout;
+ w3_2.setHeight(25);
+ w3_2.setWidth(25);
+ w3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_2.setBackgroundColor(cl_blue);
+ w3_2.setRight(10);
+
+ var w3_3 = new qx.ui.layout.CanvasLayout;
+ w3_3.setHeight(25);
+ w3_3.setWidth("100%");
+ w3_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_3.setBackgroundColor(cl_yellow);
+
+ var w3_4 = new qx.ui.layout.CanvasLayout;
+ w3_4.setHeight(25);
+ w3_4.setWidth(25);
+ w3_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_4.setBackgroundColor(cl_green);
+
+ var w3_5 = new qx.ui.layout.CanvasLayout;
+ w3_5.setHeight(40);
+ // w3_5.setWidth(25);
+ w3_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_5.setBackgroundColor(cl_orange);
+
+ var w3_6 = new qx.ui.layout.CanvasLayout;
+ w3_6.setHeight(25);
+ w3_6.setWidth(25);
+ w3_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_6.setBackgroundColor(cl_purple);
+ w3_6.setLeft(15);
+ w3_6.setTop(-25);
+
+ var w3_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w3_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w3_9 = new qx.ui.layout.CanvasLayout;
+ w3_9.setHeight(25);
+ w3_9.setWidth(25);
+ w3_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_9.setBackgroundColor(cl_aqua);
+
+ var w3_10 = new qx.ui.layout.CanvasLayout;
+ w3_10.setHeight(25);
+ w3_10.setWidth(25);
+ w3_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl3_click = 0;
+ hbl3.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl3_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setWidth("auto");
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl3_click = 0;
+ return;
+ };
+
+ hbl3_click++;
+ });
+
+ w3_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w3_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w3_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w3_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w3_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w3_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w3_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w3_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w3_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w3_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl3.add(w3_1, w3_2, w3_3, w3_4, w3_5, w3_6, w3_7, w3_8, w3_9, w3_10);
+ d.add(hbl3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FOUR:
+ TOP ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl4 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl4.setLeft(290);
+ hbl4.setTop(48);
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setHeight(null);
+ hbl4.setBottom(48);
+
+ hbl4.setSpacing(4);
+ hbl4.setPadding(8);
+ hbl4.setReverseChildrenOrder(true);
+ hbl4.setHorizontalChildrenAlign("right");
+
+ hbl4.setWidth(80);
+
+
+
+ var w4_1 = new qx.ui.layout.CanvasLayout;
+ w4_1.setHeight(25);
+ w4_1.setWidth(25);
+ w4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_1.setBackgroundColor(cl_white);
+ // w4_1.setMaxWidth(40);
+
+ var w4_2 = new qx.ui.layout.CanvasLayout;
+ w4_2.setHeight(25);
+ w4_2.setWidth(25);
+ w4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_2.setBackgroundColor(cl_blue);
+ w4_2.setRight(10);
+
+ var w4_3 = new qx.ui.layout.CanvasLayout;
+ w4_3.setHeight(25);
+ w4_3.setWidth("100%");
+ w4_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_3.setBackgroundColor(cl_yellow);
+
+ var w4_4 = new qx.ui.layout.CanvasLayout;
+ w4_4.setHeight(25);
+ w4_4.setWidth(25);
+ w4_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_4.setBackgroundColor(cl_green);
+
+ var w4_5 = new qx.ui.layout.CanvasLayout;
+ w4_5.setHeight(40);
+ // w4_5.setWidth(25);
+ w4_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_5.setBackgroundColor(cl_orange);
+
+ var w4_6 = new qx.ui.layout.CanvasLayout;
+ w4_6.setHeight(25);
+ w4_6.setWidth(25);
+ w4_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_6.setBackgroundColor(cl_purple);
+ w4_6.setLeft(15);
+ w4_6.setTop(-25);
+
+ var w4_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w4_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w4_9 = new qx.ui.layout.CanvasLayout;
+ w4_9.setHeight(25);
+ w4_9.setWidth(25);
+ w4_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_9.setBackgroundColor(cl_aqua);
+
+ var w4_10 = new qx.ui.layout.CanvasLayout;
+ w4_10.setHeight(25);
+ w4_10.setWidth(25);
+ w4_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl4_click = 0;
+ hbl4.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl4_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setWidth(80);
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl4_click = 0;
+ return;
+ };
+
+ hbl4_click++;
+ });
+
+ w4_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w4_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w4_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w4_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w4_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w4_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w4_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w4_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w4_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w4_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl4.add(w4_1, w4_2, w4_3, w4_4, w4_5, w4_6, w4_7, w4_8, w4_9, w4_10);
+ d.add(hbl4);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FIVE:
+ BOTTOM ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl5 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl5.setLeft(380);
+ hbl5.setTop(48);
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setHeight(null);
+ hbl5.setBottom(48);
+
+ hbl5.setSpacing(4);
+ hbl5.setPadding(8);
+
+ hbl5.setVerticalChildrenAlign("bottom");
+ hbl5.setReverseChildrenOrder(true);
+ hbl5.setHorizontalChildrenAlign("center");
+
+ hbl5.setWidth(80);
+
+
+ var w5_1 = new qx.ui.layout.CanvasLayout;
+ w5_1.setHeight(25);
+ w5_1.setWidth(25);
+ w5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_1.setBackgroundColor(cl_white);
+ // w5_1.setMaxWidth(40);
+
+ var w5_2 = new qx.ui.layout.CanvasLayout;
+ w5_2.setHeight(25);
+ w5_2.setWidth(25);
+ w5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_2.setBackgroundColor(cl_blue);
+ w5_2.setRight(10);
+
+ var w5_3 = new qx.ui.layout.CanvasLayout;
+ w5_3.setHeight(25);
+ w5_3.setWidth("100%");
+ w5_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_3.setBackgroundColor(cl_yellow);
+
+ var w5_4 = new qx.ui.layout.CanvasLayout;
+ w5_4.setHeight(25);
+ w5_4.setWidth(25);
+ w5_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_4.setBackgroundColor(cl_green);
+
+ var w5_5 = new qx.ui.layout.CanvasLayout;
+ w5_5.setHeight(40);
+ // w5_5.setWidth(25);
+ w5_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_5.setBackgroundColor(cl_orange);
+
+ var w5_6 = new qx.ui.layout.CanvasLayout;
+ w5_6.setHeight(25);
+ w5_6.setWidth(25);
+ w5_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_6.setBackgroundColor(cl_purple);
+ w5_6.setLeft(15);
+ w5_6.setTop(-25);
+
+ var w5_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w5_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w5_9 = new qx.ui.layout.CanvasLayout;
+ w5_9.setHeight(25);
+ w5_9.setWidth(25);
+ w5_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_9.setBackgroundColor(cl_aqua);
+
+ var w5_10 = new qx.ui.layout.CanvasLayout;
+ w5_10.setHeight(25);
+ w5_10.setWidth(25);
+ w5_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl5_click = 0;
+ hbl5.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl5_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setWidth(80);
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl5_click = 0;
+ return;
+ };
+
+ hbl5_click++;
+ });
+
+ w5_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w5_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w5_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w5_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w5_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w5_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w5_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w5_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w5_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w5_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl5.add(w5_1, w5_2, w5_3, w5_4, w5_5, w5_6, w5_7, w5_8, w5_9, w5_10);
+ d.add(hbl5);
+
+
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE SIX:
+ CENTER ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl6 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl6.setLeft(470);
+ hbl6.setTop(48);
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setHeight(null);
+ hbl6.setBottom(48);
+
+ hbl6.setSpacing(4);
+ hbl6.setPadding(8);
+
+ hbl6.setVerticalChildrenAlign("middle");
+ hbl6.setReverseChildrenOrder(true);
+ hbl6.setWidth(80);
+
+
+ var w6_1 = new qx.ui.layout.CanvasLayout;
+ w6_1.setHeight(25);
+ w6_1.setWidth(25);
+ w6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_1.setBackgroundColor(cl_white);
+ // w6_1.setMaxWidth(40);
+
+ var w6_2 = new qx.ui.layout.CanvasLayout;
+ w6_2.setHeight(25);
+ w6_2.setWidth(25);
+ w6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_2.setBackgroundColor(cl_blue);
+ w6_2.setRight(10);
+
+ var w6_3 = new qx.ui.layout.CanvasLayout;
+ w6_3.setHeight(25);
+ w6_3.setWidth("100%");
+ w6_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_3.setBackgroundColor(cl_yellow);
+
+ var w6_4 = new qx.ui.layout.CanvasLayout;
+ w6_4.setHeight(25);
+ w6_4.setWidth(25);
+ w6_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_4.setBackgroundColor(cl_green);
+
+ var w6_5 = new qx.ui.layout.CanvasLayout;
+ w6_5.setHeight(40);
+ // w6_5.setWidth(25);
+ w6_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_5.setBackgroundColor(cl_orange);
+
+ var w6_6 = new qx.ui.layout.CanvasLayout;
+ w6_6.setHeight(25);
+ w6_6.setWidth(25);
+ w6_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_6.setBackgroundColor(cl_purple);
+ w6_6.setLeft(15);
+ w6_6.setTop(-25);
+
+ var w6_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w6_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w6_9 = new qx.ui.layout.CanvasLayout;
+ w6_9.setHeight(25);
+ w6_9.setWidth(25);
+ w6_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_9.setBackgroundColor(cl_aqua);
+
+ var w6_10 = new qx.ui.layout.CanvasLayout;
+ w6_10.setHeight(25);
+ w6_10.setWidth(25);
+ w6_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl6_click = 0;
+ hbl6.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl6_click)
+ {
+ case 0:
+ this.setBottom(null);
+ this.setHeight("auto");
+ break;
+
+ case 1:
+ this.setWidth(30);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setWidth(80);
+ break;
+
+ case 4:
+ this.setHeight(200);
+ break;
+
+ case 5:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl6_click = 0;
+ return;
+ };
+
+ hbl6_click++;
+ });
+
+ w6_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w6_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w6_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w6_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w6_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w6_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w6_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w6_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w6_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w6_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl6.add(w6_1, w6_2, w6_3, w6_4, w6_5, w6_6, w6_7, w6_8, w6_9, w6_10);
+ d.add(hbl6);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_2.html
new file mode 100644
index 0000000000..e0c55bc67d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_2.html
@@ -0,0 +1,1227 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.VerticalBoxLayout widget.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var cl_white = new qx.renderer.color.Color("white");
+ var cl_blue = new qx.renderer.color.Color("blue");
+ var cl_yellow = new qx.renderer.color.Color("yellow");
+ var cl_green = new qx.renderer.color.Color("green");
+ var cl_orange = new qx.renderer.color.Color("orange");
+ var cl_purple = new qx.renderer.color.Color("purple");
+ var cl_aqua = new qx.renderer.color.Color("aqua");
+ var cl_fuchsia = new qx.renderer.color.Color("fuchsia");
+
+ /* ***********************************************
+
+ EXAMPLE ONE:
+ TOP ALIGN
+
+ *********************************************** */
+
+ var hbl1 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl1.setTop(48);
+ hbl1.setLeft(20);
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setWidth("auto");
+ hbl1.setBottom(48);
+
+ hbl1.setSpacing(4);
+ hbl1.setPadding(8);
+
+ hbl1.setHorizontalChildrenAlign("right");
+
+
+ var w1_1 = new qx.ui.layout.CanvasLayout;
+ w1_1.setHeight(25);
+ w1_1.setWidth(25);
+ w1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_1.setBackgroundColor(cl_white);
+ // w1_1.setMaxWidth(40);
+
+ var w1_2 = new qx.ui.layout.CanvasLayout;
+ w1_2.setHeight(25);
+ w1_2.setWidth(25);
+ w1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_2.setBackgroundColor(cl_blue);
+ w1_2.setRight(10);
+
+ var w1_3 = new qx.ui.layout.CanvasLayout;
+ w1_3.setHeight(25);
+ w1_3.setWidth("100%");
+ w1_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_3.setBackgroundColor(cl_yellow);
+
+ var w1_4 = new qx.ui.layout.CanvasLayout;
+ w1_4.setHeight(25);
+ w1_4.setWidth(25);
+ w1_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_4.setBackgroundColor(cl_green);
+
+ var w1_5 = new qx.ui.layout.CanvasLayout;
+ w1_5.setHeight("15%");
+ // w1_5.setWidth(25);
+ w1_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_5.setBackgroundColor(cl_orange);
+
+ var w1_6 = new qx.ui.layout.CanvasLayout;
+ w1_6.setHeight(25);
+ w1_6.setWidth(25);
+ w1_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_6.setBackgroundColor(cl_purple);
+ w1_6.setLeft(15);
+ w1_6.setTop(-25);
+
+ var w1_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w1_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w1_9 = new qx.ui.layout.CanvasLayout;
+ w1_9.setHeight(25);
+ w1_9.setWidth(25);
+ w1_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_9.setBackgroundColor(cl_aqua);
+
+ var w1_10 = new qx.ui.layout.CanvasLayout;
+ w1_10.setHeight(25);
+ w1_10.setWidth(25);
+ w1_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w1_10.setBackgroundColor(cl_fuchsia);
+
+ var hbl1_click = 0;
+ hbl1.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl1_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth(80);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl1_click = 0;
+ return;
+ };
+
+ hbl1_click++;
+ });
+
+ w1_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w1_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w1_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w1_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w1_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w1_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w1_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w1_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w1_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w1_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl1.add(w1_1, w1_2, w1_3, w1_4, w1_5, w1_6, w1_7, w1_8, w1_9, w1_10);
+ d.add(hbl1);
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE TWO:
+ BOTTOM ALIGN
+
+ *********************************************** */
+
+ var hbl2 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl2.setLeft(110);
+ hbl2.setTop(48);
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setWidth("auto");
+ hbl2.setBottom(48);
+
+ hbl2.setSpacing(4);
+ hbl2.setPadding(8);
+
+ hbl2.setVerticalChildrenAlign("bottom");
+ hbl2.setHorizontalChildrenAlign("center");
+
+
+ var w2_1 = new qx.ui.layout.CanvasLayout;
+ w2_1.setHeight(25);
+ w2_1.setWidth(25);
+ w2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_1.setBackgroundColor(cl_white);
+ // w2_1.setMaxWidth(40);
+
+ var w2_2 = new qx.ui.layout.CanvasLayout;
+ w2_2.setHeight(25);
+ w2_2.setWidth(25);
+ w2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_2.setBackgroundColor(cl_blue);
+ w2_2.setRight(10);
+
+ var w2_3 = new qx.ui.layout.CanvasLayout;
+ w2_3.setHeight(25);
+ w2_3.setWidth("100%");
+ w2_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_3.setBackgroundColor(cl_yellow);
+
+ var w2_4 = new qx.ui.layout.CanvasLayout;
+ w2_4.setHeight(25);
+ w2_4.setWidth(25);
+ w2_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_4.setBackgroundColor(cl_green);
+
+ var w2_5 = new qx.ui.layout.CanvasLayout;
+ w2_5.setHeight("15%");
+ // w2_5.setWidth(25);
+ w2_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_5.setBackgroundColor(cl_orange);
+
+ var w2_6 = new qx.ui.layout.CanvasLayout;
+ w2_6.setHeight(25);
+ w2_6.setWidth(25);
+ w2_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_6.setBackgroundColor(cl_purple);
+ w2_6.setLeft(15);
+ w2_6.setTop(-25);
+
+ var w2_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w2_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w2_9 = new qx.ui.layout.CanvasLayout;
+ w2_9.setHeight(25);
+ w2_9.setWidth(25);
+ w2_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_9.setBackgroundColor(cl_aqua);
+
+ var w2_10 = new qx.ui.layout.CanvasLayout;
+ w2_10.setHeight(25);
+ w2_10.setWidth(25);
+ w2_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w2_10.setBackgroundColor(cl_fuchsia);
+ w2_10.foo = true;
+
+
+ var hbl2_click = 0;
+ hbl2.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl2_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth(80);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl2_click = 0;
+ return;
+ };
+
+ hbl2_click++;
+ });
+
+ w2_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w2_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w2_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w2_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w2_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w2_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w2_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w2_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w2_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w2_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl2.add(w2_1, w2_2, w2_3, w2_4, w2_5, w2_6, w2_7, w2_8, w2_9, w2_10);
+ d.add(hbl2);
+
+
+ /* ***********************************************
+
+ EXAMPLE THREE:
+ CENTER ALIGN
+
+ *********************************************** */
+
+ var hbl3 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl3.setLeft(200);
+ hbl3.setTop(48);
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setWidth("auto");
+ hbl3.setBottom(48);
+
+ hbl3.setSpacing(4);
+ hbl3.setPadding(8);
+
+ hbl3.setVerticalChildrenAlign("middle");
+
+
+
+ var w3_1 = new qx.ui.layout.CanvasLayout;
+ w3_1.setHeight(25);
+ w3_1.setWidth(25);
+ w3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_1.setBackgroundColor(cl_white);
+ // w3_1.setMaxWidth(40);
+
+ var w3_2 = new qx.ui.layout.CanvasLayout;
+ w3_2.setHeight(25);
+ w3_2.setWidth(25);
+ w3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_2.setBackgroundColor(cl_blue);
+ w3_2.setRight(10);
+
+ var w3_3 = new qx.ui.layout.CanvasLayout;
+ w3_3.setHeight(25);
+ w3_3.setWidth("100%");
+ w3_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_3.setBackgroundColor(cl_yellow);
+
+ var w3_4 = new qx.ui.layout.CanvasLayout;
+ w3_4.setHeight(25);
+ w3_4.setWidth(25);
+ w3_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_4.setBackgroundColor(cl_green);
+
+ var w3_5 = new qx.ui.layout.CanvasLayout;
+ w3_5.setHeight("15%");
+ // w3_5.setWidth(25);
+ w3_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_5.setBackgroundColor(cl_orange);
+
+ var w3_6 = new qx.ui.layout.CanvasLayout;
+ w3_6.setHeight(25);
+ w3_6.setWidth(25);
+ w3_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_6.setBackgroundColor(cl_purple);
+ w3_6.setLeft(15);
+ w3_6.setTop(-25);
+
+ var w3_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w3_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w3_9 = new qx.ui.layout.CanvasLayout;
+ w3_9.setHeight(25);
+ w3_9.setWidth(25);
+ w3_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_9.setBackgroundColor(cl_aqua);
+
+ var w3_10 = new qx.ui.layout.CanvasLayout;
+ w3_10.setHeight(25);
+ w3_10.setWidth(25);
+ w3_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w3_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl3_click = 0;
+ hbl3.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl3_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth(80);
+ break;
+
+ case 2:
+ this.setWidth("auto");
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl3_click = 0;
+ return;
+ };
+
+ hbl3_click++;
+ });
+
+ w3_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w3_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w3_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w3_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w3_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w3_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w3_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w3_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w3_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w3_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl3.add(w3_1, w3_2, w3_3, w3_4, w3_5, w3_6, w3_7, w3_8, w3_9, w3_10);
+ d.add(hbl3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FOUR:
+ TOP ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl4 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl4.setLeft(290);
+ hbl4.setTop(48);
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setHeight(null);
+ hbl4.setBottom(48);
+
+ hbl4.setSpacing(4);
+ hbl4.setPadding(8);
+ hbl4.setReverseChildrenOrder(true);
+ hbl4.setHorizontalChildrenAlign("right");
+
+ hbl4.setWidth(80);
+
+
+
+ var w4_1 = new qx.ui.layout.CanvasLayout;
+ w4_1.setHeight(25);
+ w4_1.setWidth(25);
+ w4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_1.setBackgroundColor(cl_white);
+ // w4_1.setMaxWidth(40);
+
+ var w4_2 = new qx.ui.layout.CanvasLayout;
+ w4_2.setHeight(25);
+ w4_2.setWidth(25);
+ w4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_2.setBackgroundColor(cl_blue);
+ w4_2.setRight(10);
+
+ var w4_3 = new qx.ui.layout.CanvasLayout;
+ w4_3.setHeight(25);
+ w4_3.setWidth("100%");
+ w4_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_3.setBackgroundColor(cl_yellow);
+
+ var w4_4 = new qx.ui.layout.CanvasLayout;
+ w4_4.setHeight(25);
+ w4_4.setWidth(25);
+ w4_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_4.setBackgroundColor(cl_green);
+
+ var w4_5 = new qx.ui.layout.CanvasLayout;
+ w4_5.setHeight("15%");
+ // w4_5.setWidth(25);
+ w4_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_5.setBackgroundColor(cl_orange);
+
+ var w4_6 = new qx.ui.layout.CanvasLayout;
+ w4_6.setHeight(25);
+ w4_6.setWidth(25);
+ w4_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_6.setBackgroundColor(cl_purple);
+ w4_6.setLeft(15);
+ w4_6.setTop(-25);
+
+ var w4_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w4_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w4_9 = new qx.ui.layout.CanvasLayout;
+ w4_9.setHeight(25);
+ w4_9.setWidth(25);
+ w4_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_9.setBackgroundColor(cl_aqua);
+
+ var w4_10 = new qx.ui.layout.CanvasLayout;
+ w4_10.setHeight(25);
+ w4_10.setWidth(25);
+ w4_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w4_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl4_click = 0;
+ hbl4.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl4_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth("auto");
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl4_click = 0;
+ return;
+ };
+
+ hbl4_click++;
+ });
+
+ w4_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w4_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w4_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w4_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w4_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w4_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w4_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w4_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w4_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w4_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl4.add(w4_1, w4_2, w4_3, w4_4, w4_5, w4_6, w4_7, w4_8, w4_9, w4_10);
+ d.add(hbl4);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE FIVE:
+ BOTTOM ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl5 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl5.setLeft(380);
+ hbl5.setTop(48);
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setHeight(null);
+ hbl5.setBottom(48);
+
+ hbl5.setSpacing(4);
+ hbl5.setPadding(8);
+
+ hbl5.setVerticalChildrenAlign("bottom");
+ hbl5.setReverseChildrenOrder(true);
+ hbl5.setHorizontalChildrenAlign("center");
+
+ hbl5.setWidth(80);
+
+
+ var w5_1 = new qx.ui.layout.CanvasLayout;
+ w5_1.setHeight(25);
+ w5_1.setWidth(25);
+ w5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_1.setBackgroundColor(cl_white);
+ // w5_1.setMaxWidth(40);
+
+ var w5_2 = new qx.ui.layout.CanvasLayout;
+ w5_2.setHeight(25);
+ w5_2.setWidth(25);
+ w5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_2.setBackgroundColor(cl_blue);
+ w5_2.setRight(10);
+
+ var w5_3 = new qx.ui.layout.CanvasLayout;
+ w5_3.setHeight(25);
+ w5_3.setWidth("100%");
+ w5_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_3.setBackgroundColor(cl_yellow);
+
+ var w5_4 = new qx.ui.layout.CanvasLayout;
+ w5_4.setHeight(25);
+ w5_4.setWidth(25);
+ w5_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_4.setBackgroundColor(cl_green);
+
+ var w5_5 = new qx.ui.layout.CanvasLayout;
+ w5_5.setHeight("15%");
+ // w5_5.setWidth(25);
+ w5_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_5.setBackgroundColor(cl_orange);
+
+ var w5_6 = new qx.ui.layout.CanvasLayout;
+ w5_6.setHeight(25);
+ w5_6.setWidth(25);
+ w5_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_6.setBackgroundColor(cl_purple);
+ w5_6.setLeft(15);
+ w5_6.setTop(-25);
+
+ var w5_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w5_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w5_9 = new qx.ui.layout.CanvasLayout;
+ w5_9.setHeight(25);
+ w5_9.setWidth(25);
+ w5_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_9.setBackgroundColor(cl_aqua);
+
+ var w5_10 = new qx.ui.layout.CanvasLayout;
+ w5_10.setHeight(25);
+ w5_10.setWidth(25);
+ w5_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w5_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl5_click = 0;
+ hbl5.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl5_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth("auto");
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl5_click = 0;
+ return;
+ };
+
+ hbl5_click++;
+ });
+
+ w5_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w5_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w5_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w5_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w5_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w5_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w5_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w5_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w5_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w5_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl5.add(w5_1, w5_2, w5_3, w5_4, w5_5, w5_6, w5_7, w5_8, w5_9, w5_10);
+ d.add(hbl5);
+
+
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE SIX:
+ CENTER ALIGN, REVERTED CHILDREN ORDER
+
+ *********************************************** */
+
+ var hbl6 = new qx.ui.layout.VerticalBoxLayout;
+
+ hbl6.setLeft(470);
+ hbl6.setTop(48);
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setHeight(null);
+ hbl6.setBottom(48);
+
+ hbl6.setSpacing(4);
+ hbl6.setPadding(8);
+
+ hbl6.setVerticalChildrenAlign("middle");
+ hbl6.setReverseChildrenOrder(true);
+ hbl6.setWidth(80);
+
+
+ var w6_1 = new qx.ui.layout.CanvasLayout;
+ w6_1.setHeight(25);
+ w6_1.setWidth(25);
+ w6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_1.setBackgroundColor(cl_white);
+ // w6_1.setMaxWidth(40);
+
+ var w6_2 = new qx.ui.layout.CanvasLayout;
+ w6_2.setHeight(25);
+ w6_2.setWidth(25);
+ w6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_2.setBackgroundColor(cl_blue);
+ w6_2.setRight(10);
+
+ var w6_3 = new qx.ui.layout.CanvasLayout;
+ w6_3.setHeight(25);
+ w6_3.setWidth("100%");
+ w6_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_3.setBackgroundColor(cl_yellow);
+
+ var w6_4 = new qx.ui.layout.CanvasLayout;
+ w6_4.setHeight(25);
+ w6_4.setWidth(25);
+ w6_4.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_4.setBackgroundColor(cl_green);
+
+ var w6_5 = new qx.ui.layout.CanvasLayout;
+ w6_5.setHeight("15%");
+ // w6_5.setWidth(25);
+ w6_5.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_5.setBackgroundColor(cl_orange);
+
+ var w6_6 = new qx.ui.layout.CanvasLayout;
+ w6_6.setHeight(25);
+ w6_6.setWidth(25);
+ w6_6.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_6.setBackgroundColor(cl_purple);
+ w6_6.setLeft(15);
+ w6_6.setTop(-25);
+
+ var w6_7 = new qx.ui.basic.Image("icon/32/apps/accessories-clock.png");
+
+ var w6_8 = new qx.ui.basic.Image("icon/32/actions/format-color.png");
+
+ var w6_9 = new qx.ui.layout.CanvasLayout;
+ w6_9.setHeight(25);
+ w6_9.setWidth(25);
+ w6_9.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_9.setBackgroundColor(cl_aqua);
+
+ var w6_10 = new qx.ui.layout.CanvasLayout;
+ w6_10.setHeight(25);
+ w6_10.setWidth(25);
+ w6_10.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ w6_10.setBackgroundColor(cl_fuchsia);
+
+
+ var hbl6_click = 0;
+ hbl6.addEventListener("click", function(e)
+ {
+ if (e.getTarget()!=this) {
+ return;
+ };
+
+ switch(hbl6_click)
+ {
+ case 0:
+ this.setWidth(30);
+ break;
+
+ case 1:
+ this.setWidth("auto");
+ break;
+
+ case 2:
+ this.setWidth(80);
+ break;
+
+ case 3:
+ this.setHeight(200);
+ break;
+
+ case 4:
+ this.setHeight(null);
+ this.setBottom(48);
+ hbl6_click = 0;
+ return;
+ };
+
+ hbl6_click++;
+ });
+
+ w6_1.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(65);
+ this.setWidth(65);
+ this.setBorder(new qx.renderer.border.Border(6, "double", "black"));
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ };
+ });
+
+ w6_2.addEventListener("click", function(e) {
+ this.getMarginBottom() == 0 ? this.setMarginBottom(10) : this.setMarginBottom(0);
+ });
+
+ w6_3.addEventListener("click", function(e) {
+ this.getMinHeight() == -Infinity ? this.setMinHeight(100) : this.setMinHeight(-Infinity);
+ });
+
+ w6_4.addEventListener("click", function(e) {
+ this.getHeight() == 25 ? this.setHeight(50) : this.setHeight(25);
+ });
+
+ w6_5.addEventListener("click", function(e) {
+ this.getHeight() == 40 ? this.setHeight(80) : this.setHeight(40);
+ });
+
+ w6_6.addEventListener("click", function(e) {
+ this.getTop() == -25 ? this.setTop(25) : this.setTop(-25);
+ });
+
+ w6_7.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/apps/accessories-clock.png" ? this.setSource("icon/64/apps/accessories-clock.png") : this.setSource("icon/32/apps/accessories-clock.png");
+ });
+
+ w6_8.addEventListener("click", function(e) {
+ this.getSource() == "icon/32/actions/format-color.png" ? this.setSource("icon/16/actions/format-color.png") : this.setSource("icon/32/actions/format-color.png");
+ });
+
+ w6_9.addEventListener("click", function(e)
+ {
+ if (this.getLeft() == null)
+ {
+ this.setLeft(20);
+ this.setTop(-10);
+ }
+ else
+ {
+ this.setLeft(null);
+ this.setTop(null);
+ };
+ });
+
+ w6_10.addEventListener("click", function(e)
+ {
+ if (this.getHeight() == 25)
+ {
+ this.setHeight(10);
+ this.setWidth(10);
+ this.setTop(-5);
+ this.setRight(15);
+ }
+ else
+ {
+ this.setHeight(25);
+ this.setWidth(25);
+ this.setTop(null);
+ this.setRight(null);
+ };
+ });
+
+
+
+ hbl6.add(w6_1, w6_2, w6_3, w6_4, w6_5, w6_6, w6_7, w6_8, w6_9, w6_10);
+ d.add(hbl6);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_3.html
new file mode 100644
index 0000000000..7e9efb07b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/VerticalBoxLayout_3.html
@@ -0,0 +1,552 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ Tests for the new implementation of the qx.ui.layout.VerticalBoxLayout widget.<br/>
+ <br/>
+ 1. Simple testing, one static and one flex child<br/>
+ 2. Two flex children with the same priority<br/>
+ 3. The same as #2, but the second has the doubled priority compared to the first<br/>
+ <br/>
+
+ 4. The same as #3, but now the second child has a max-height of 50px<br/>
+ 5. The same as #4, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 6. The same as #3, but now the second has a min height of 300px<br/>
+ 7. The same as #6, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 8. Three children with the priorities: 1, 2 and 3. The second has a maxHeight of 50px<br/>
+ 9. The same as #8, but now with enabled "advancedFlexAllocation"<br/>
+ <br/>
+
+ 10. Three children with the priorities: 1, 2 and 3. Added a few mouse actions.<br/>
+ 11. Three children with the priorities: 1, a static height of 80px and 3.<br/>
+ 12. The same as #11, but configured as 'auto' height.
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ /* ***********************************************
+
+ EXAMPLE 1:
+
+ *********************************************** */
+
+ var te1 = new qx.ui.basic.Label("#1");
+ te1.setLocation(20, 48);
+ d.add(te1);
+
+ var hbl1 = new qx.ui.layout.VerticalBoxLayout;
+ hbl1.setTop(78);
+ hbl1.setLeft(20);
+ hbl1.setBottom(48);
+ hbl1.setHeight(null);
+ hbl1.setWidth("auto");
+ hbl1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl1.setSpacing(4);
+ hbl1.setPadding(2);
+ d.add(hbl1);
+
+ var t1_1 = new qx.ui.basic.Terminator;
+ t1_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1_1.setHeight(20);
+ t1_1.setWidth(10);
+ t1_1.setBackgroundColor("green");
+ hbl1.add(t1_1);
+
+ t1_1.addEventListener("click", function() {
+ this.setHeight(this.getHeight() == 20 ? 100 : 20);
+ });
+
+ var t1_2 = new qx.ui.basic.Terminator;
+ t1_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t1_2.setHeight("1*");
+ t1_2.setWidth(10);
+ t1_2.setBackgroundColor("blue");
+ hbl1.add(t1_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 2:
+
+ *********************************************** */
+
+ var te2 = new qx.ui.basic.Label("#2");
+ te2.setLocation(40, 48);
+ d.add(te2);
+
+ var hbl2 = new qx.ui.layout.VerticalBoxLayout;
+ hbl2.setTop(78);
+ hbl2.setLeft(40);
+ hbl2.setBottom(48);
+ hbl2.setHeight(null);
+ hbl2.setWidth("auto");
+ hbl2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl2.setSpacing(4);
+ hbl2.setPadding(2);
+ d.add(hbl2);
+
+ var t2_1 = new qx.ui.basic.Terminator;
+ t2_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2_1.setHeight("1*");
+ t2_1.setWidth(10);
+ t2_1.setBackgroundColor("green");
+ hbl2.add(t2_1);
+
+ var t2_2 = new qx.ui.basic.Terminator;
+ t2_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t2_2.setHeight("1*");
+ t2_2.setWidth(10);
+ t2_2.setBackgroundColor("blue");
+ hbl2.add(t2_2);
+
+
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 3:
+
+ *********************************************** */
+
+ var te3 = new qx.ui.basic.Label("#3");
+ te3.setLocation(60, 48);
+ d.add(te3);
+
+ var hbl3 = new qx.ui.layout.VerticalBoxLayout;
+ hbl3.setTop(78);
+ hbl3.setLeft(60);
+ hbl3.setBottom(48);
+ hbl3.setHeight(null);
+ hbl3.setWidth("auto");
+ hbl3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl3.setSpacing(4);
+ hbl3.setPadding(2);
+ d.add(hbl3);
+
+ var t3_1 = new qx.ui.basic.Terminator;
+ t3_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3_1.setHeight("1*");
+ t3_1.setWidth(10);
+ t3_1.setBackgroundColor("green");
+ hbl3.add(t3_1);
+
+ var t3_2 = new qx.ui.basic.Terminator;
+ t3_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t3_2.setHeight("2*");
+ t3_2.setWidth(10);
+ t3_2.setBackgroundColor("blue");
+ hbl3.add(t3_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 4:
+
+ *********************************************** */
+
+ var te4 = new qx.ui.basic.Label("#4");
+ te4.setLocation(100, 48);
+ d.add(te4);
+
+ var hbl4 = new qx.ui.layout.VerticalBoxLayout;
+ hbl4.setTop(78);
+ hbl4.setLeft(100);
+ hbl4.setBottom(48);
+ hbl4.setHeight(null);
+ hbl4.setWidth("auto");
+ hbl4.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl4.setSpacing(4);
+ hbl4.setPadding(2);
+ d.add(hbl4);
+
+ var t4_1 = new qx.ui.basic.Terminator;
+ t4_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4_1.setHeight("1*");
+ t4_1.setWidth(10);
+ t4_1.setBackgroundColor("green");
+ hbl4.add(t4_1);
+
+ var t4_2 = new qx.ui.basic.Terminator;
+ t4_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t4_2.setHeight("2*");
+ t4_2.setWidth(10);
+ t4_2.setMaxHeight(50);
+ t4_2.setBackgroundColor("blue");
+ hbl4.add(t4_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 5:
+
+ *********************************************** */
+
+ var te5 = new qx.ui.basic.Label("#5");
+ te5.setLocation(120, 48);
+ d.add(te5);
+
+ var hbl5 = new qx.ui.layout.VerticalBoxLayout;
+ hbl5.setTop(78);
+ hbl5.setLeft(120);
+ hbl5.setBottom(48);
+ hbl5.setHeight(null);
+ hbl5.setWidth("auto");
+ hbl5.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl5.setSpacing(4);
+ hbl5.setPadding(2);
+ hbl5.setUseAdvancedFlexAllocation(true);
+ d.add(hbl5);
+
+ var t5_1 = new qx.ui.basic.Terminator;
+ t5_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5_1.setHeight("1*");
+ t5_1.setWidth(10);
+ t5_1.setBackgroundColor("green");
+ hbl5.add(t5_1);
+
+ var t5_2 = new qx.ui.basic.Terminator;
+ t5_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t5_2.setHeight("2*");
+ t5_2.setWidth(10);
+ t5_2.setMaxHeight(50);
+ t5_2.setBackgroundColor("blue");
+ hbl5.add(t5_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 6:
+
+ *********************************************** */
+
+ var te6 = new qx.ui.basic.Label("#6");
+ te6.setLocation(160, 48);
+ d.add(te6);
+
+ var hbl6 = new qx.ui.layout.VerticalBoxLayout;
+ hbl6.setTop(78);
+ hbl6.setLeft(160);
+ hbl6.setBottom(48);
+ hbl6.setHeight(null);
+ hbl6.setWidth("auto");
+ hbl6.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl6.setSpacing(4);
+ hbl6.setPadding(2);
+ d.add(hbl6);
+
+ var t6_1 = new qx.ui.basic.Terminator;
+ t6_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6_1.setHeight("1*");
+ t6_1.setWidth(10);
+ t6_1.setBackgroundColor("green");
+ hbl6.add(t6_1);
+
+ var t6_2 = new qx.ui.basic.Terminator;
+ t6_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t6_2.setHeight("2*");
+ t6_2.setWidth(10);
+ t6_2.setMinHeight(300);
+ t6_2.setBackgroundColor("blue");
+ hbl6.add(t6_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 7:
+
+ *********************************************** */
+
+ var te7 = new qx.ui.basic.Label("#7");
+ te7.setLocation(180, 48);
+ d.add(te7);
+
+ var hbl7 = new qx.ui.layout.VerticalBoxLayout;
+ hbl7.setTop(78);
+ hbl7.setLeft(180);
+ hbl7.setBottom(48);
+ hbl7.setHeight(null);
+ hbl7.setWidth("auto");
+ hbl7.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl7.setSpacing(4);
+ hbl7.setPadding(2);
+ hbl7.setUseAdvancedFlexAllocation(true);
+ d.add(hbl7);
+
+ var t7_1 = new qx.ui.basic.Terminator;
+ t7_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t7_1.setHeight("1*");
+ t7_1.setWidth(10);
+ t7_1.setBackgroundColor("green");
+ hbl7.add(t7_1);
+
+ var t7_2 = new qx.ui.basic.Terminator;
+ t7_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t7_2.setHeight("2*");
+ t7_2.setWidth(10);
+ t7_2.setMinHeight(300);
+ t7_2.setBackgroundColor("blue");
+ hbl7.add(t7_2);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 8:
+
+ *********************************************** */
+
+ var te8 = new qx.ui.basic.Label("#8");
+ te8.setLocation(220, 48);
+ d.add(te8);
+
+ var hbl8 = new qx.ui.layout.VerticalBoxLayout;
+ hbl8.setTop(78);
+ hbl8.setLeft(220);
+ hbl8.setBottom(48);
+ hbl8.setHeight(null);
+ hbl8.setWidth("auto");
+ hbl8.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl8.setSpacing(4);
+ hbl8.setPadding(2);
+ d.add(hbl8);
+
+ var t8_1 = new qx.ui.basic.Terminator;
+ t8_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_1.setHeight("1*");
+ t8_1.setWidth(10);
+ t8_1.setBackgroundColor("green");
+ hbl8.add(t8_1);
+
+ var t8_2 = new qx.ui.basic.Terminator;
+ t8_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_2.setHeight("2*");
+ t8_2.setWidth(10);
+ t8_2.setBackgroundColor("blue");
+ t8_2.setMaxHeight(50);
+ hbl8.add(t8_2);
+
+ var t8_3 = new qx.ui.basic.Terminator;
+ t8_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t8_3.setHeight("3*");
+ t8_3.setWidth(10);
+ t8_3.setBackgroundColor("red");
+ hbl8.add(t8_3);
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 9:
+
+ *********************************************** */
+
+ var te9 = new qx.ui.basic.Label("#9");
+ te9.setLocation(240, 48);
+ d.add(te9);
+
+ var hbl9 = new qx.ui.layout.VerticalBoxLayout;
+ hbl9.setTop(78);
+ hbl9.setLeft(240);
+ hbl9.setBottom(48);
+ hbl9.setHeight(null);
+ hbl9.setWidth("auto");
+ hbl9.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl9.setSpacing(4);
+ hbl9.setPadding(2);
+ hbl9.setUseAdvancedFlexAllocation(true);
+ d.add(hbl9);
+
+ var t9_1 = new qx.ui.basic.Terminator;
+ t9_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_1.setHeight("1*");
+ t9_1.setWidth(10);
+ t9_1.setBackgroundColor("green");
+ hbl9.add(t9_1);
+
+ var t9_2 = new qx.ui.basic.Terminator;
+ t9_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_2.setHeight("2*");
+ t9_2.setWidth(10);
+ t9_2.setBackgroundColor("blue");
+ t9_2.setMaxHeight(50);
+ hbl9.add(t9_2);
+
+ var t9_3 = new qx.ui.basic.Terminator;
+ t9_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t9_3.setHeight("3*");
+ t9_3.setWidth(10);
+ t9_3.setBackgroundColor("red");
+ hbl9.add(t9_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 10:
+
+ *********************************************** */
+
+ var te10 = new qx.ui.basic.Label("#10");
+ te10.setLocation(280, 48);
+ d.add(te10);
+
+ var hbl10 = new qx.ui.layout.VerticalBoxLayout;
+ hbl10.setTop(78);
+ hbl10.setLeft(280);
+ hbl10.setBottom(48);
+ hbl10.setHeight(null);
+ hbl10.setWidth("auto");
+ hbl10.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl10.setSpacing(4);
+ hbl10.setPadding(2);
+ hbl10.setUseAdvancedFlexAllocation(true);
+ d.add(hbl10);
+
+ var t10_1 = new qx.ui.basic.Terminator;
+ t10_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_1.setHeight("1*");
+ t10_1.setWidth(10);
+ t10_1.setBackgroundColor("green");
+ t10_1.addEventListener("click", function(e) { this.setHeight(this.getHeight() == "1*" ? "4*" : "1*"); });
+ hbl10.add(t10_1);
+
+ var t10_2 = new qx.ui.basic.Terminator;
+ t10_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_2.setHeight("2*");
+ t10_2.setWidth(10);
+ t10_2.setBackgroundColor("blue");
+ t10_2.addEventListener("click", function(e) { this.setHeight(this.getHeight() == "2*" ? "1*" : "2*"); });
+ hbl10.add(t10_2);
+
+ var t10_3 = new qx.ui.basic.Terminator;
+ t10_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t10_3.setHeight("3*");
+ t10_3.setWidth(10);
+ t10_3.setBackgroundColor("red");
+ t10_3.addEventListener("click", function(e) { this.setHeight(this.getHeight() == "3*" ? "6*" : "3*"); });
+ hbl10.add(t10_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 11:
+
+ *********************************************** */
+
+ var te11 = new qx.ui.basic.Label("#11");
+ te11.setLocation(300, 48);
+ d.add(te11);
+
+ var hbl11 = new qx.ui.layout.VerticalBoxLayout;
+ hbl11.setTop(78);
+ hbl11.setLeft(300);
+ hbl11.setBottom(48);
+ hbl11.setHeight(null);
+ hbl11.setWidth("auto");
+ hbl11.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl11.setSpacing(4);
+ hbl11.setPadding(2);
+ d.add(hbl11);
+
+ var t11_1 = new qx.ui.basic.Terminator;
+ t11_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_1.setHeight("1*");
+ t11_1.setWidth(10);
+ t11_1.setBackgroundColor("green");
+ hbl11.add(t11_1);
+
+ var t11_2 = new qx.ui.basic.Terminator;
+ t11_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_2.setHeight(80);
+ t11_2.setWidth(10);
+ t11_2.setBackgroundColor("blue");
+ hbl11.add(t11_2);
+
+ var t11_3 = new qx.ui.basic.Terminator;
+ t11_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t11_3.setHeight("3*");
+ t11_3.setWidth(10);
+ t11_3.setBackgroundColor("red");
+ hbl11.add(t11_3);
+
+
+
+
+ /* ***********************************************
+
+ EXAMPLE 12:
+
+ *********************************************** */
+
+ var te12 = new qx.ui.basic.Label("#13");
+ te12.setLocation(320, 48);
+ d.add(te12);
+
+ var hbl12 = new qx.ui.layout.VerticalBoxLayout;
+ hbl12.setTop(78);
+ hbl12.setLeft(320);
+ hbl12.setWidth("auto");
+ hbl12.setHeight("auto");
+ hbl12.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ hbl12.setSpacing(4);
+ hbl12.setPadding(2);
+ d.add(hbl12);
+
+ var t12_1 = new qx.ui.basic.Terminator;
+ t12_1.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_1.setHeight("1*");
+ t12_1.setWidth(10);
+ t12_1.setBackgroundColor("green");
+ hbl12.add(t12_1);
+
+ var t12_2 = new qx.ui.basic.Terminator;
+ t12_2.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_2.setHeight(80);
+ t12_2.setWidth(10);
+ t12_2.setBackgroundColor("blue");
+ hbl12.add(t12_2);
+
+ var t12_3 = new qx.ui.basic.Terminator;
+ t12_3.setBorder(qx.renderer.border.BorderPresets.getInstance().black);
+ t12_3.setHeight("3*");
+ t12_3.setWidth(10);
+ t12_3.setBackgroundColor("red");
+ hbl12.add(t12_3);
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_1.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_1.html
new file mode 100644
index 0000000000..211bcabc51
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_1.html
@@ -0,0 +1,179 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Who Framed Roger Rabbit?</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w0 = new qx.ui.layout.CanvasLayout;
+ w0.set({left:20, top:48, right: 335, bottom: 48, backgroundColor:"Background", border:qx.renderer.border.BorderPresets.getInstance().inset});
+ w0.setOverflow("hidden");
+ d.add(w0);
+
+ var w1 = new qx.ui.window.Window("First Window");
+ w1.setSpace(20, 400, 20, 250);
+ w0.add(w1);
+
+ var w2 = new qx.ui.window.Window("Second Window", "icon/16/categories/applications-graphics.png");
+ w2.setSpace(200, 300, 80, 350);
+ w0.add(w2);
+
+ var w3 = new qx.ui.window.Window("Third Window", "icon/16/categories/applications-internet.png");
+ w3.setSpace(100, 300, 200, 200);
+ w3.setMaxWidth(450);
+ w3.setMaxHeight(300);
+ w0.add(w3);
+
+
+
+
+ var a1 = new qx.ui.basic.Atom("Welcome to your first own Window.<br/>Have fun!", "icon/32/apps/accessories-archiver.png");
+ a1.set({ top: 4, left: 4 });
+ w1.add(a1);
+
+
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 10, top: 52, right: 10, bottom: 10 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Explore");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Internet");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Future");
+
+ t1_1.setChecked(true);
+
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ w1.add(tf1);
+
+
+
+ var at1 = new qx.ui.basic.Atom("Second Window", "icon/22/apps/accessories-clock.png");
+ at1.setLocation(4, 4);
+ w2.add(at1);
+
+
+ var at2 = new qx.ui.basic.Atom("Third Window", "icon/48/categories/applications-graphics.png");
+ at2.setLocation(4, 4);
+ w3.add(at2);
+
+
+
+
+
+
+ var fs1 = new qx.ui.groupbox.GroupBox("Settings");
+ fs1.setLocation(4, 30);
+ fs1.setRight(4);
+ fs1.setBottom(4);
+
+
+ var chk1 = new qx.ui.form.CheckBox("Show Icon");
+ chk1.setLocation(0, 0);
+ chk1.setChecked(true);
+ chk1.addEventListener("changeChecked", function(e) {
+ w2.setShowIcon(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Caption");
+ chk2.setLocation(0, 20);
+ chk2.setChecked(true);
+ chk2.addEventListener("changeChecked", function(e) {
+ w2.setShowCaption(e.getData());
+ });
+
+
+
+ var chk3 = new qx.ui.form.CheckBox("Resizeable");
+ chk3.setLocation(0, 50);
+ chk3.setChecked(true);
+ chk3.addEventListener("changeChecked", function(e) {
+ w2.setResizeable(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Moveable");
+ chk4.setLocation(0, 70);
+ chk4.setChecked(true);
+ chk4.addEventListener("changeChecked", function(e) {
+ w2.setMoveable(e.getData());
+ });
+
+
+
+ var chk5 = new qx.ui.form.CheckBox("Show Close");
+ chk5.setLocation(0, 100);
+ chk5.setChecked(true);
+ chk5.addEventListener("changeChecked", function(e) {
+ w2.setShowClose(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Show Maximize/Restore");
+ chk6.setLocation(0, 120);
+ chk6.setChecked(true);
+ chk6.addEventListener("changeChecked", function(e) {
+ w2.setShowMaximize(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Show Minimize");
+ chk7.setLocation(0, 140);
+ chk7.setChecked(true);
+ chk7.addEventListener("changeChecked", function(e) {
+ w2.setShowMinimize(e.getData());
+ });
+
+
+
+ var chk8 = new qx.ui.form.CheckBox("Allow Close");
+ chk8.setLocation(0, 170);
+ chk8.setChecked(true);
+ chk8.addEventListener("changeChecked", function(e) {
+ w2.setAllowClose(e.getData());
+ });
+
+ var chk9 = new qx.ui.form.CheckBox("Allow Maximize");
+ chk9.setLocation(0, 190);
+ chk9.setChecked(true);
+ chk9.addEventListener("changeChecked", function(e) {
+ w2.setAllowMaximize(e.getData());
+ });
+
+ var chk10 = new qx.ui.form.CheckBox("Allow Minimize");
+ chk10.setLocation(0, 210);
+ chk10.setChecked(true);
+ chk10.addEventListener("changeChecked", function(e) {
+ w2.setAllowMinimize(e.getData());
+ });
+
+
+ fs1.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8, chk9, chk10);
+ w2.add(fs1);
+
+
+ w1.open();
+ w2.open();
+ w3.open();
+ });
+ </script>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_2.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_2.html
new file mode 100644
index 0000000000..60b220ab96
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_2.html
@@ -0,0 +1,54 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Testing auto dimension possibility of qx.ui.window.Window.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+ var w1 = new qx.ui.window.Window("First Window");
+ w1.getPane().setPadding(10);
+ w1.setLocation(100, 100);
+ w1.setWidth("auto");
+ w1.setHeight("auto");
+
+ d.add(w1);
+
+ var a1 = new qx.ui.basic.Atom("Welcome to your first own Window.<br/>Have fun!", "icon/32/actions/favorite-add.png");
+ a1.set({ top: 0, left: 100 });
+ w1.add(a1);
+
+ var chk1 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk1.set({ top: 45, left: 0 });
+
+ chk1.addEventListener("changeChecked", function(e) {
+ w1.setShowStatusbar(e.getData());
+ });
+
+ var btn1 = new qx.ui.form.Button("Yes", "icon/16/actions/dialog-ok.png");
+ btn1.set({ top: 70, left : 0 });
+
+ var btn2 = new qx.ui.form.Button("No", "icon/16/actions/dialog-cancel.png");
+ btn2.set({ top: 70, right : 0 });
+
+ w1.add(chk1, btn1, btn2);
+
+ w1.open();
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_3.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_3.html
new file mode 100644
index 0000000000..6358dce19a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_3.html
@@ -0,0 +1,99 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Modal dialog with qx.ui.form.TextField and qx.ui.form.TextArea</p>
+ </div>
+
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var txtfld;
+
+ var dialogEditFrage = new qx.ui.window.Window("Edit", "icon/16/apps/accessories-text-editor.png");
+
+ with(dialogEditFrage) {
+ setSpace(300, 400, 100, 300);
+ setModal(true);
+
+ setShowClose(false);
+
+ var qx_widget = new qx.ui.basic.Atom('Question');
+ with(qx_widget)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:10,left:10,width:'20%'});
+ };
+ add(qx_widget);
+
+ qx_widget = txtfld = new qx.ui.form.TextArea();
+ with (qx_widget) {
+ set({top:10,right:10,width:'70%'})
+ };
+ add(qx_widget);
+
+ qx_widget = new qx.ui.basic.Atom('Type');
+ with(qx_widget)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:70,left:10,width:'20%'});
+ };
+ add(qx_widget);
+
+ qx_widget = new qx.ui.form.TextField();
+ with (qx_widget) {
+ set({top:70,right:10,width:'70%'})
+ };
+ add(qx_widget);
+
+
+ var btnOK = new qx.ui.form.Button("OK", "icon/16/actions/dialog-ok.png");
+ var btnCancel = new qx.ui.form.Button("Cancel", "icon/16/actions/dialog-cancel.png");
+ var btnSetText = new qx.ui.form.Button("Reload", "icon/16/actions/view-refresh.png");
+
+ btnOK.set({ bottom : 10, right : 10 });
+ btnCancel.set({ bottom : 10, left : 10 });
+ btnSetText.set({ bottom : 10, left : 100 });
+
+ btnCancel.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+ btnOK.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+
+ btnSetText.addEventListener("execute", function(e) {
+ txtfld.setValue("Some Text here!");
+ txtfld.setFocused(true);
+ });
+
+ add(btnOK, btnCancel, btnSetText);
+ }
+
+
+ var btnOpen = new qx.ui.form.Button("Open the dialog");
+ btnOpen.set({ top : 50, left : 20 });
+ btnOpen.addEventListener("click", function(e) {
+ dialogEditFrage.open();
+ });
+
+ d.add(btnOpen,dialogEditFrage);
+ });
+
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_4.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_4.html
new file mode 100644
index 0000000000..6930d54081
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_4.html
@@ -0,0 +1,104 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Dialog with qx.ui.form.TextField and qx.ui.form.TextArea</p>
+ <p>Testing minimize handling.</p>
+ </div>
+
+
+ <script type="text/javascript" language="JavaScript">
+
+ qx.core.Init.getInstance().defineMain(function() {
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var txtfld;
+
+ var dialogEditFrage = new qx.ui.window.Window("Edit", "icon/16/apps/accessories-text-editor.png");
+ with(dialogEditFrage) {
+ setSpace(300, 400, 100, 300);
+
+ setShowClose(false);
+
+ var qx_widget = new qx.ui.basic.Atom('Question');
+ with(qx_widget)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:10,left:10,width:'20%'});
+ };
+ add(qx_widget);
+
+ qx_widget = txtfld = new qx.ui.form.TextArea();
+ with (qx_widget) {
+ set({top:10,right:10,width:'70%'})
+ }
+ add(qx_widget);
+
+ qx_widget = new qx.ui.basic.Atom('Type');
+ with(qx_widget)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:70,left:10,width:'20%'});
+ };
+ add(qx_widget);
+
+ qx_widget = new qx.ui.form.TextField();
+ with (qx_widget) {
+ set({top:70,right:10,width:'70%'})
+ }
+ add(qx_widget);
+
+
+ var btnOK = new qx.ui.form.Button("OK", "icon/16/actions/dialog-ok.png");
+ var btnCancel = new qx.ui.form.Button("Cancel", "icon/16/actions/dialog-cancel.png");
+ var btnSetText = new qx.ui.form.Button("Reload", "icon/16/actions/view-refresh.png");
+
+ btnOK.set({ bottom : 10, right : 10 });
+ btnCancel.set({ bottom : 10, left : 10 });
+ btnSetText.set({ bottom : 10, left : 100 });
+
+ btnCancel.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+ btnOK.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+
+ btnSetText.addEventListener("execute", function(e) {
+ txtfld.setValue("Some Text here!");
+ txtfld.setFocused(true);
+ });
+
+ add(btnOK, btnCancel, btnSetText);
+ }
+
+
+ var btnOpen = new qx.ui.form.Button("Open the dialog");
+ btnOpen.set({ top : 50, left : 20 });
+ btnOpen.addEventListener("click", function(e) {
+ dialogEditFrage.open();
+ });
+
+ var btnRestore = new qx.ui.form.Button("Restore the dialog");
+ btnRestore.set({ top : 80, left : 20 });
+ btnRestore.addEventListener("click", function(e) {
+ dialogEditFrage.restore();
+ });
+
+ d.add(btnOpen,btnRestore,dialogEditFrage);
+ });
+
+ </script>
+
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_5.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_5.html
new file mode 100644
index 0000000000..f4112b5939
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_5.html
@@ -0,0 +1,221 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Some tests for zIndex handling for different widgets.</p>
+ </div>
+
+ <script type="text/javascript">
+ qx.core.Init.getInstance().defineMain(function()
+ {
+ var d = qx.ui.core.ClientDocument.getInstance();
+
+
+ var btnaler = new qx.ui.form.Button("Open Alert", "icon/16/status/dialog-error.png");
+ btnaler.setLocation(450, 50);
+ qx.ui.core.ClientDocument.getInstance().add(btnaler);
+
+
+ var aler = new qx.ui.popup.PopupAtom("Attention", "icon/128/status/dialog-error.png");
+ aler.setLocation(40, 70);
+ aler.setBackgroundColor("yellow");
+ aler.setOpacity(0.5);
+ qx.ui.core.ClientDocument.getInstance().add(aler);
+
+ btnaler.addEventListener("execute", function(e)
+ {
+ aler.show();
+ });
+
+
+
+ var bar = new qx.ui.basic.Terminator;
+ bar.setLocation(0, 0);
+ bar.setWidth(50);
+ bar.setBottom(0);
+ bar.setBackgroundColor("black");
+ bar.setOpacity(0.5);
+ bar.setZIndex(1e7);
+ qx.ui.core.ClientDocument.getInstance().add(bar);
+
+
+
+
+ var w1 = new qx.ui.window.Window("Application Window");
+ w1.setSpace(20, 400, 48, 250);
+ d.add(w1);
+
+
+
+ var m1 = new qx.ui.menu.Menu;
+
+ var mb11 = new qx.ui.menu.Button("Open");
+ var mb12 = new qx.ui.menu.Button("Save");
+ var mb13 = new qx.ui.menu.Button("Close");
+ var mb14 = new qx.ui.menu.Button("Exit");
+
+ m1.add(mb11, mb12, mb13, mb14);
+
+ var m2 = new qx.ui.menu.Menu;
+
+ var mb21 = new qx.ui.menu.Button("Cut");
+ var mb22 = new qx.ui.menu.Button("Copy");
+ var mb23 = new qx.ui.menu.Button("Paste");
+
+ m2.add(mb21, mb22, mb23);
+
+ var m3 = new qx.ui.menu.Menu;
+
+ var mb31 = new qx.ui.menu.Button("Toolbars");
+ var mb32 = new qx.ui.menu.Button("Options");
+
+ m3.add(mb31, mb32);
+
+ var m4 = new qx.ui.menu.Menu;
+
+ var mb41 = new qx.ui.menu.Button("Help");
+ var mb42 = new qx.ui.menu.Button("Info");
+
+ m4.add(mb41, mb42);
+
+ qx.ui.core.ClientDocument.getInstance().add(m1, m2, m3, m4);
+
+
+
+
+
+
+
+ var t1 = new qx.ui.toolbar.ToolBar;
+
+ t1.setLocation(0, 0);
+ t1.setRight(0);
+
+ var tb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var tb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var tb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var tb4 = new qx.ui.toolbar.MenuButton("Help", m4);
+
+ t1.add(tb1, tb2, tb3, tb4);
+
+ w1.add(t1);
+
+ var tt1 = new qx.ui.popup.ToolTip("File Menu Button");
+ var tt2 = new qx.ui.popup.ToolTip("Edit Menu Button");
+ var tt3 = new qx.ui.popup.ToolTip("View Menu Button");
+ var tt4 = new qx.ui.popup.ToolTip("Help Menu Button");
+
+ tb1.setToolTip(tt1);
+ tb2.setToolTip(tt2);
+ tb3.setToolTip(tt3);
+ tb4.setToolTip(tt4);
+
+ qx.ui.core.ClientDocument.getInstance().add(tt1, tt2, tt3, tt4);
+
+
+
+
+
+
+
+
+ var c1 = new qx.ui.form.ComboBox;
+
+ c1.setLocation(0, 35);
+
+ c1.getList().add(new qx.ui.form.ListItem("Item 1"));
+ c1.getList().add(new qx.ui.form.ListItem("Item 2"));
+ c1.getList().add(new qx.ui.form.ListItem("Item 3"));
+ c1.getList().add(new qx.ui.form.ListItem("Item 4"));
+ c1.getList().add(new qx.ui.form.ListItem("Item 5"));
+
+ w1.add(c1);
+
+
+
+
+
+ var square = new qx.ui.basic.Terminator;
+ square.setDimension(50, 50);
+ square.setLocation(0, 70);
+ square.setBackgroundColor("blue");
+ w1.add(square);
+
+
+ var p1 = new qx.ui.popup.PopupAtom("Hello World");
+ p1.setBorder(4, "solid", "red");
+ p1.setBackgroundColor("yellow");
+ p1.setLocation(0, 70);
+ p1.setAutoHide(false);
+ w1.add(p1);
+
+ var p2 = new qx.ui.popup.PopupAtom("Hello World");
+ p2.setBorder(4, "solid", "yellow");
+ p2.setBackgroundColor("red");
+ p2.setLocation(30, 70);
+ p2.setAutoHide(false);
+ w1.add(p2);
+
+
+ var btn1 = new qx.ui.form.Button("Show1");
+ btn1.setLocation(140, 70);
+ w1.add(btn1);
+
+ var btn2 = new qx.ui.form.Button("Hide1");
+ btn2.setLocation(190, 70);
+ w1.add(btn2);
+
+ btn1.addEventListener("execute", function(e) {
+ p1.show();
+ });
+
+ btn2.addEventListener("execute", function(e) {
+ p1.hide();
+ });
+
+
+
+ var btn3 = new qx.ui.form.Button("Show2");
+ btn3.setLocation(250, 70);
+ w1.add(btn3);
+
+ var btn4 = new qx.ui.form.Button("Hide2");
+ btn4.setLocation(300, 70);
+ w1.add(btn4);
+
+ btn3.addEventListener("execute", function(e) {
+ p2.show();
+ });
+
+ btn4.addEventListener("execute", function(e) {
+ p2.hide();
+ });
+
+
+
+ w1.open();
+
+
+
+
+
+ var w2 = new qx.ui.window.Window("Test 2");
+ w2.setDimension(400, 200);
+ w2.setLocation(200, 200);
+ qx.ui.core.ClientDocument.getInstance().add(w2);
+ w2.show();
+
+ });
+ </script>
+</body>
+</html> \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_6.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_6.html
new file mode 100644
index 0000000000..9f84b0e6ec
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/Window_6.html
@@ -0,0 +1,109 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Sample</title>
+ <link type="text/css" rel="stylesheet" href="../../css/layout.css"/>
+ <!--[if IE]>
+ <link type="text/css" rel="stylesheet" href="../../css/layout_ie.css"/>
+ <![endif]-->
+ <script type="text/javascript" src="../../script/sample.js"></script>
+</head>
+<body>
+ <script type="text/javascript" src="../../script/layout.js"></script>
+
+ <div id="demoDescription">
+ <p>Dialog with qx.ui.form.TextField and qx.ui.form.TextArea</p>
+ <p>Testing initial focus handling.</p>
+ </div>
+
+
+ <script type="text/javascript" language="JavaScript">
+
+
+ qx.core.Init.getInstance().defineMain(function() {
+
+ var d = qx.ui.core.ClientDocument.getInstance();
+ var txtfld;
+
+ var dialogEditFrage = new qx.ui.window.Window("Edit", "icon/16/apps/accessories-text-editor.png");
+
+
+ with(dialogEditFrage) {
+ setSpace(300, 400, 100, 300);
+
+ setShowClose(false);
+
+ var qxObj = new qx.ui.basic.Atom('Question');
+ with(qxObj)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:10,left:10,width:'20%'});
+ };
+ add(qxObj);
+
+ qxObj = txtfld = new qx.ui.form.TextArea();
+ with (qxObj) {
+ set({top:10,right:10,width:'70%'})
+ }
+ add(qxObj);
+
+ txtfld.addEventListener("appear", function(e) {
+ this.focus();
+ });
+
+ qxObj = new qx.ui.basic.Atom('Type');
+ with(qxObj)
+ {
+ setHorizontalChildrenAlign('right');
+ set({top:70,left:10,width:'20%'});
+ };
+ add(qxObj);
+
+ qxObj = new qx.ui.form.TextField();
+ with (qxObj) {
+ set({top:70,right:10,width:'70%'})
+ }
+ add(qxObj);
+
+
+ var btnOK = new qx.ui.form.Button("OK", "icon/16/actions/dialog-ok.png");
+ var btnCancel = new qx.ui.form.Button("Cancel", "icon/16/actions/dialog-cancel.png");
+ var btnSetFocus = new qx.ui.form.Button("Set Focus To First Field", "icon/16/actions/view-refresh.png");
+
+ btnOK.set({ bottom : 10, right : 10 });
+ btnCancel.set({ bottom : 10, left : 10 });
+ btnSetFocus.set({ bottom : 10, left : 100 });
+
+ btnCancel.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+ btnOK.addEventListener("execute", function(e) {
+ dialogEditFrage.close();
+ });
+
+ btnSetFocus.addEventListener("execute", function(e) {
+ txtfld.focus();
+ });
+
+ add(btnOK, btnCancel, btnSetFocus);
+ }
+
+ var btnOpen = new qx.ui.form.Button("Open the dialog");
+ btnOpen.set({ top : 50, left : 20 });
+ btnOpen.addEventListener("click", function(e) {
+ dialogEditFrage.open();
+ });
+
+ var btnRestore = new qx.ui.form.Button("Restore the dialog");
+ btnRestore.set({ top : 80, left : 20 });
+ btnRestore.addEventListener("click", function(e) {
+ dialogEditFrage.restore();
+ });
+
+ d.add(btnOpen,btnRestore,dialogEditFrage);
+ });
+
+ </script>
+
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/bigFont.css b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/bigFont.css
new file mode 100644
index 0000000000..568085d899
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/bigFont.css
@@ -0,0 +1,3 @@
+.box {
+ font-size: large;
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/boldFont.css b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/boldFont.css
new file mode 100644
index 0000000000..c7f3aca388
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/boldFont.css
@@ -0,0 +1,3 @@
+.box {
+ font-weight: bold;
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/filesize/400kb.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/filesize/400kb.xml
new file mode 100644
index 0000000000..0f448c2f85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/filesize/400kb.xml
@@ -0,0 +1,10224 @@
+<?xml version="1.0" encoding="ISO-8859-15"?>
+<all>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+</all>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/filesize/40kb.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/filesize/40kb.xml
new file mode 100644
index 0000000000..8cc7bd573f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/filesize/40kb.xml
@@ -0,0 +1,1003 @@
+<?xml version="1.0" encoding="ISO-8859-15"?>
+<all>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+<data>abcdefghijklmnopqrstuvwxyz</data>
+</all>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.html
new file mode 100644
index 0000000000..44c7219ef4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.html
@@ -0,0 +1,11 @@
+<html>
+ <body>
+ <h1>Anita Hummel</h1>
+ <p>42</p>
+ <p>Getho Bals</p>
+ <p>22432</p>
+ <p>Paris</p>
+ <p>France</p>
+ <p>0044.44930209</p>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.js
new file mode 100644
index 0000000000..6f348b6aea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.js
@@ -0,0 +1,10 @@
+{
+ "name" : "Hummel",
+ "givenName" : "Anita",
+ "age" : 42,
+ "street" : "Getho Bals",
+ "plz" : 22432,
+ "city" : "Paris",
+ "country" : "France",
+ "phone" : "0044.44930209"
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.txt b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.txt
new file mode 100644
index 0000000000..a8a98376eb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.txt
@@ -0,0 +1,8 @@
+name = Hummel
+givenName = Anita
+age = 42
+street = Getho Bals
+plz = 22432
+city = Paris
+country = France
+phone = 0044.44930209
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.xml
new file mode 100644
index 0000000000..ecad1f77aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/anita.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<result>
+ <name>Hummel</name>
+ <givenName>Anita</givenName>
+ <age>42</age>
+ <street>Getho Bals</street>
+ <plz>22432</plz>
+ <city>Paris</city>
+ <country>France</country>
+ <phone>0044.44930209</phone>
+</result>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.html
new file mode 100644
index 0000000000..610c1584aa
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.html
@@ -0,0 +1,11 @@
+<html>
+ <body>
+ <h1>Harald Schmidt</h1>
+ <p>65</p>
+ <p>Karlsruher Allee</p>
+ <p>78392</p>
+ <p>Stuttgart</p>
+ <p>Germany</p>
+ <p>0049.750930302</p>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.js
new file mode 100644
index 0000000000..f593737448
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.js
@@ -0,0 +1,10 @@
+{
+ "name" : "Schmidt",
+ "givenName" : "Harald",
+ "age" : 65,
+ "street" : "Karlsruher Allee",
+ "plz" : 78392,
+ "city" : "Stuttgart",
+ "country" : "Germany",
+ "phone" : "0049.750930302"
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.txt b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.txt
new file mode 100644
index 0000000000..215a27dd9e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.txt
@@ -0,0 +1,8 @@
+name = Schmidt
+givenName = Harald
+age = 65
+street = Karlsruher Allee
+plz = 78392
+city = Stuttgart
+country = Germany
+phone = 0049.750930302
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.xml
new file mode 100644
index 0000000000..425a8fdc21
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/harald.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<result>
+ <name>Schmidt</name>
+ <givenName>Harald</givenName>
+ <age>65</age>
+ <street>Karlsruher Allee</street>
+ <plz>78392</plz>
+ <city>Stuttgart</city>
+ <country>Germany</country>
+ <phone>0049.750930302</phone>
+</result>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.html
new file mode 100644
index 0000000000..e2a5a55504
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.html
@@ -0,0 +1,11 @@
+<html>
+ <body>
+ <h1>Lisbeth Meyer</h1>
+ <p>74</p>
+ <p>Burlington Plaza</p>
+ <p>32323</p>
+ <p>New York</p>
+ <p>United States</p>
+ <p>0030.302020234</p>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.js
new file mode 100644
index 0000000000..40dfd03463
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.js
@@ -0,0 +1,10 @@
+{
+ "name" : "Meyer",
+ "givenName" : "Lisbeth",
+ "age" : 74,
+ "street" : "Burlington Plaza",
+ "plz" : 32323,
+ "city" : "New York",
+ "country" : "United States",
+ "phone" : "0030.302020234"
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.txt b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.txt
new file mode 100644
index 0000000000..def297f12a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.txt
@@ -0,0 +1,8 @@
+name = Meyer
+givenName = Lisbeth
+age = 74
+street = Burlington Plaza
+plz = 32323
+city = New York
+country = United States
+phone = 0030.302020234
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.xml
new file mode 100644
index 0000000000..a67a98d4ae
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/lisbeth.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<result>
+ <name>Meyer</name>
+ <givenName>Lisbeth</givenName>
+ <age>74</age>
+ <street>Burlington Plaza</street>
+ <plz>32323</plz>
+ <city>New York</city>
+ <country>United States</country>
+ <phone>0030.302020234</phone>
+</result>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.html
new file mode 100644
index 0000000000..f43ad8b091
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.html
@@ -0,0 +1,11 @@
+<html>
+ <body>
+ <h1>Paul Fuettner</h1>
+ <p>27</p>
+ <p>Bismarckstrasse</p>
+ <p>33990</p>
+ <p>Garbsen</p>
+ <p>Germany</p>
+ <p>0049.57232067</p>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.js
new file mode 100644
index 0000000000..9739f477bb
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.js
@@ -0,0 +1,10 @@
+{
+ "name" : "Fuettner",
+ "givenName" : "Paul",
+ "age" : 27,
+ "street" : "Bismarckstrasse",
+ "plz" : 33990,
+ "city" : "Garbsen",
+ "country" : "Germany",
+ "phone" : "0049.57232067"
+}
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.txt b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.txt
new file mode 100644
index 0000000000..c79abc65a1
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.txt
@@ -0,0 +1,8 @@
+name = Fuettner
+givenName = Paul
+age = 27
+street = Bismarckstrasse
+plz = 33990
+city = Garbsen
+country = Germany
+phone = 0049.57232067
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.xml b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.xml
new file mode 100644
index 0000000000..3ddfa44b29
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/data/persons/paul.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<result>
+ <name>Fuettner</name>
+ <givenName>Paul</givenName>
+ <age>27</age>
+ <street>Bismarckstrasse</street>
+ <plz>33990</plz>
+ <city>Garbsen</city>
+ <country>Germany</country>
+ <phone>0049.57232067</phone>
+</result>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file1.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file1.swf
new file mode 100644
index 0000000000..2e6d69a3fd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file1.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file10.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file10.swf
new file mode 100644
index 0000000000..eeafa9a8f3
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file10.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file2.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file2.swf
new file mode 100644
index 0000000000..51c8f0ff76
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file2.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file3.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file3.swf
new file mode 100644
index 0000000000..0b6b56be85
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file3.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file4.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file4.swf
new file mode 100644
index 0000000000..746baa8cd9
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file4.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file5.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file5.swf
new file mode 100644
index 0000000000..a3333e1c31
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file5.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file6.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file6.swf
new file mode 100644
index 0000000000..2cad550081
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file6.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file7.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file7.swf
new file mode 100644
index 0000000000..b5f4eb4ddf
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file7.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file8.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file8.swf
new file mode 100644
index 0000000000..54c9a11edc
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file8.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file9.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file9.swf
new file mode 100644
index 0000000000..cc41ff1c10
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/color/file9.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/fo_tester.fla b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/fo_tester.fla
new file mode 100644
index 0000000000..afd4bb6134
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/fo_tester.fla
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/fo_tester.swf b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/fo_tester.swf
new file mode 100644
index 0000000000..8e0b966bca
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/flash/fo_tester.swf
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/grid_dialog_box.png b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/grid_dialog_box.png
new file mode 100644
index 0000000000..2bc24a8018
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/image/grid_dialog_box.png
Binary files differ
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/index.html
new file mode 100644
index 0000000000..ac16317e80
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/html/test/index.html
@@ -0,0 +1,8 @@
+<html>
+ <head>
+ <script type="text/javascript">window.location.href="Atom_1.html";</script>
+ </head>
+ <body>
+ <a href="Atom1.html">Continue...</a>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/index.html
new file mode 100644
index 0000000000..73fbb2015a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/index.html
@@ -0,0 +1,122 @@
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
+ <title>qooxdoo demo</title>
+ <style type="text/css">
+ *{
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ }
+
+ body{
+ font-size: 12px;
+ font-family: Arial, "Bitstream Vera Sans", Verdana, sans-serif;
+ margin: 0;
+ padding: 0;
+ }
+
+ p{
+ margin: 6px 0;
+ }
+
+ #demoHead,
+ #demoFoot{
+ position: absolute;
+ left: 0px;
+ right: 0px;
+ width: 100%;
+ background: #134275;
+ padding: 5px 8px;
+ color: #DEFF83;
+ font-weight: bold;
+ overflow: hidden;
+ z-index: 1000000000;
+ }
+
+ #demoHead{
+ top: 0px;
+ }
+
+ #demoHead span{
+ font-weight: normal;
+ color: white;
+ }
+
+ img{
+ box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ }
+
+ #content{
+ margin: 40px 20px 0;
+ width: 400px;
+ }
+
+ h1{
+ font-size: 22px;
+ margin-bottom: 20px;
+ color: #134275;
+ }
+
+ h2{
+ font-size: 16px;
+ color: #134275;
+ margin-bottom: 10px;
+ }
+
+ h3{
+ font-size: 14px;
+ color: #1D65B3;
+ }
+
+ a{
+ color: #335EA8;
+ }
+
+ li{
+ margin-left: 16px;
+ list-style: square;
+ margin-bottom: 20px;
+ }
+
+ p{
+ font-size: 12px;
+ }
+
+ ul ul{
+ margin-top: 20px;
+ }
+
+ p.note{
+ padding: 10px;
+ background: #F3FFD1;
+ color: #444444;
+ margin: 20px 0;
+ }
+ </style>
+</head>
+<body>
+ <div id="demoHead">qooxdoo: <span>The new era of web interface development</span></div>
+
+ <div id="content" style="position:absolute;top:0px;left:0px">
+
+ <h1>qooxdoo <span>samples</demo></h1>
+ <ul>
+ <li>
+ <h2><a href="html/example/index.html">Example</a></h2>
+ <p>Easily to understand examples. The basic features of each qooxdoo widget is demonstrated in a separate example. This section is probably the one you are looking for!</p>
+ </li>
+ <li>
+ <h2><a href="html/test/index.html">Test</a></h2>
+ <p>These tests demonstrate internal functionality of qooxdoo. Not really useful for the typical qooxdoo user, but needed for developers to test some complex layout stuff, performance related problems and more. The tests may not always be up-to-date and functioning!</p>
+ </li>
+ <li>
+ <h2><a href="html/performance/index.html">Performance</a></h2>
+ <p>These tests are used to test performance of different javascript/qooxdoo rountines and allows them to compare them with each other</p>
+ </li>
+ </ul>
+ </div>
+</body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/translation/C.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/translation/C.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/source/translation/C.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/tool/layout.py b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/tool/layout.py
new file mode 100755
index 0000000000..b37ff7090a
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/sample/tool/layout.py
@@ -0,0 +1,149 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import sys, os, optparse, codecs
+
+
+
+basic = u"""
+qx.log.Logger.ROOT_LOGGER.removeAllAppenders();
+qx.log.Logger.ROOT_LOGGER.addAppender(new qx.log.DivAppender("demoDebug"));
+
+document.write('<div id="demoHead">qooxdoo: <span>The new era of web development</span></div>');
+document.write('<div id="demoFoot">');
+document.write('[<a href="javascript:qx.dev.Pollution.consoleInfo(\"window\");">Global Pollution</a>] &#160;');
+document.write('[<a href="javascript:qx.core.Object.summary();">Object Summary</a>] &#160;');
+document.write('</div>');
+document.write('<div id="demoDebug"></div>');
+document.write('<div id="demoFrame">&#160;</div>');
+
+(function(sitemap)
+{
+ document.write('<select id="demoFiles" onchange="if(this.options[this.selectedIndex].value)window.location.href=this.options[this.selectedIndex].value">');
+ var url = window.location.pathname.split('/');
+ var basename = window.location.href.substring(0, window.location.href.lastIndexOf("/"));
+ var cat = url[url.length-2];
+ var file = url[url.length-1];
+
+ var pages = sitemap[cat];
+ pages.sort();
+
+ var index = pages.indexOf(file);
+
+ for( var i=0; i<pages.length; i++ )
+ {
+ var href = window.location.href;
+ var page = cat + "/" + pages[i];
+ var pageuri = "../" + page;
+ var pageid = pages[i].replace(".html", "").replace("_", " ");
+ document.write('<option value="' + pageuri + '"');
+ if(href.lastIndexOf(page) === href.length-page.length) {
+ document.write(' selected="selected"');
+
+ }
+ document.write('>' + pageid + '</option>');
+ }
+ document.write('</select>');
+
+ document.write('<div id="demoJump">');
+ if (index > 0) {
+ document.write("<button onclick='window.location.href=\\"" + basename + '/' + pages[index-1] + "\\"'>&lt;</button>");
+ }
+ if (index < pages.length-1) {
+ document.write("<button onclick='window.location.href=\\"" + basename + '/' + pages[index+1] + "\\"'>&gt;</button>");
+ }
+ document.write('</div>');
+
+})(%s);
+
+(function()
+{
+ var url = location.href;
+ var pos = url.indexOf("/html/")+6;
+ var split = url.substring(pos).split("/");
+ var category = split[0];
+ category = category.charAt(0).toUpperCase() + category.substring(1);
+ var pagename = split[1].replace(".html", "").replace(/_/g, " ");
+ pagename = pagename.charAt(0).toUpperCase() + pagename.substring(1);
+
+ document.title = "qooxdoo » Demo » Sample » " + category + " » " + pagename;
+
+ if (window.location.href.indexOf("demo.qooxdoo.org") != -1)
+ {
+ document.write('<script type="text/javascript">var a_vars = []; var pagename=""; var phpmyvisitesSite = 5; var phpmyvisitesURL = "http://counter.qooxdoo.org/phpmyvisites.php";</script>');
+ document.write('<script type="text/javascript" src="http://counter.qooxdoo.org/phpmyvisites.js"></script>');
+ document.write('<script type="text/javascript" src="http://www.google-analytics.com/urchin.js"></script>');
+ document.write('<script type="text/javascript">_uacct = "UA-415440-1"; function urchinStart() { urchinTracker() }; if(window.addEventListener)window.addEventListener("load", urchinStart, false); else if(window.attachEvent)window.attachEvent("onload", urchinStart);</script>');
+ }
+})();
+"""
+
+
+def main(dist, scan):
+ res = ""
+ res += "{"
+
+ firstCategory = True
+ # for category in os.listdir(scan):
+ for category in [ "example", "test", "performance" ]:
+ if category == ".svn":
+ continue
+
+ if not firstCategory:
+ res += ","
+
+ res += category + ":["
+
+ firstItem = True
+ for item in os.listdir(os.path.join(scan, category)):
+ if item == ".svn":
+ continue
+
+ if os.path.splitext(item)[1] != ".html":
+ continue
+
+ if item == "index.html":
+ continue
+
+ if not firstItem:
+ res += ","
+
+ res += '"%s"' % item
+
+ firstItem = False
+
+ res += "]"
+ firstCategory = False
+
+ res += "}"
+
+ distdir = os.path.dirname(dist)
+
+ if not os.path.exists(distdir):
+ os.makedirs(distdir)
+
+ content = basic % res
+
+ outputFile = codecs.open(dist, encoding="utf-8", mode="w", errors="replace")
+ outputFile.write(content)
+ outputFile.flush()
+ outputFile.close()
+
+
+
+
+if __name__ == '__main__':
+ try:
+ parser = optparse.OptionParser()
+
+ (options, args) = parser.parse_args()
+
+ dist = args[0]
+ scan = args[1]
+
+ main(dist, scan)
+
+ except KeyboardInterrupt:
+ print
+ print " * Keyboard Interrupt"
+ sys.exit(1)
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/Makefile b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/Makefile
new file mode 100644
index 0000000000..027d0cc7dd
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/Makefile
@@ -0,0 +1,106 @@
+################################################################################
+#
+# qooxdoo - the new era of web development
+#
+# http://qooxdoo.org
+#
+# Copyright:
+# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org
+#
+# License:
+# LGPL: http://www.gnu.org/licenses/lgpl.html
+# EPL: http://www.eclipse.org/org/documents/epl-v10.php
+# See the LICENSE file in the project's top-level directory for details.
+#
+# Authors:
+# * Sebastian Werner (wpbasti)
+# * Andreas Ecker (ecker)
+# * Fabian Jakobs (fjakobs)
+#
+################################################################################
+
+################################################################################
+# BASIC SETTINGS
+################################################################################
+
+#
+# Location of your qooxdoo distribution
+# Could be relative from this location or absolute
+#
+QOOXDOO_PATH = ../../..
+
+#
+# The same as above, but from the webserver point of view
+# Starting point is the application HTML file of the source folder.
+# In most cases just add a "/.." compared to above
+#
+QOOXDOO_URI = ../../../..
+
+#
+# Namespace of your application e.g. custom
+#
+APPLICATION_NAMESPACE = showcase
+
+#
+# Titles used in your API viewer and during the build process
+#
+APPLICATION_MAKE_TITLE = SHOWCASE
+APPLICATION_API_TITLE = ShowCase
+
+#
+# Additional files (space separated list)
+#
+APPLICATION_FILES = index.html
+
+#
+# Locales to include
+#
+APPLICATION_LOCALES = de de_DE en en_US es es_ES fr fr_FR
+
+#
+# full locales used for the online version
+#
+#APPLICATION_LOCALES = ar de de_AT de_DE en en_US es es_ES fr fr_FR it ru sv tr zh
+
+
+
+################################################################################
+# ADVANCED SETTINGS
+################################################################################
+
+#
+# Enable resource filtering in API viewer
+#
+APPLICATION_RESOURCE_FILTER = true
+
+#
+# We don't need the full source code
+#
+APPLICATION_COMPLETE_SOURCE = false
+
+#
+# Disable line breaks
+#
+APPLICATION_LINEBREAKS_BUILD = false
+APPLICATION_LINEBREAKS_SOURCE = false
+
+#
+# qooxdoo.org sync
+#
+APPLICATION_PUBLISH_PATH = root@qooxdoo.org:/var/www/qooxdoo/demo/$(FRAMEWORK_VERSION)/$(APPLICATION_NAMESPACE)
+
+
+
+
+
+################################################################################
+# INCLUDE CORE
+################################################################################
+
+ifneq ($(QOOXDOO_PATH),PLEASE_DEFINE_QOOXDOO_PATH)
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/targets.mk
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/application.mk
+endif
+
+error:
+ @echo " * Please configure QOOXDOO_PATH"
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/class/showcase/Application.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/class/showcase/Application.js
new file mode 100644
index 0000000000..0224160b91
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/class/showcase/Application.js
@@ -0,0 +1,1504 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Til Schneider (til132)
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#embed(qx.icontheme/16/*)
+#embed(qx.icontheme/22/*)
+#embed(qx.icontheme/32/*)
+#embed(qx.icontheme/48/*)
+
+#load(qx.theme.icon.Nuvola)
+#load(qx.theme.icon.NuoveXT)
+#load(qx.theme.icon.CrystalClear)
+#load(qx.theme.icon.VistaInspirate)
+
+#load(qx.theme.color.System)
+#load(qx.theme.color.WindowsClassic)
+#load(qx.theme.color.WindowsLunaBlue)
+#load(qx.theme.color.WindowsLunaGreen)
+#load(qx.theme.color.WindowsLunaSilver)
+
+************************************************************************ */
+
+qx.OO.defineClass("showcase.Application", qx.component.AbstractApplication,
+function () {
+ qx.component.AbstractApplication.call(this);
+});
+
+qx.Proto.main = function(e)
+{
+ qx.core.Object.call(this);
+
+ var barView = new qx.ui.pageview.buttonview.ButtonView;
+
+ barView.setLocation(10, 10);
+ barView.setRight(10);
+ barView.setBottom(10);
+
+ barView.addToDocument();
+
+ this._createPage(barView, "Form", "icon/32/apps/accessories-text-editor.png", this._createFormDemo(), "threedface");
+ this._createPage(barView, "Tooltip", "icon/32/actions/system-run.png", this._createTooltipDemo());
+ this._createPage(barView, "Menu and Toolbar", "icon/32/devices/video-display.png", this._createToolbarDemo());
+ this._createPage(barView, "Tab", "icon/32/places/user-desktop.png", this._createTabDemo(), "threedface", true);
+ this._createPage(barView, "Tree", "icon/32/actions/view-pane-tree.png", this._createTreeDemo(), "threedface");
+ this._createPage(barView, "List", "icon/32/actions/view-pane-detailed.png", this._createListDemo(), "threedface");
+ this._createPage(barView, "ListView", "icon/32/actions/view-pane-icon.png", this._createListViewDemo(), "threedface");
+ this._createPage(barView, "Table", "icon/32/actions/view-pane-column.png", this._createTableDemo(), "threedface", true);
+ this._createPage(barView, "Localization", "icon/32/apps/accessories-archiver.png", this._createLocalizationDemo(), "threedface");
+ this._createPage(barView, "Native Window", "icon/32/devices/video-display.png", this._createNativeWindowDemo(), "threedface");
+ this._createPage(barView, "Internal Window", "icon/32/apps/preferences-desktop-theme.png", this._createInternalWindowDemo(), null, true);
+ this._createPage(barView, "Themes", "icon/32/apps/preferences-desktop-wallpaper.png", this._createThemesDemo());
+};
+
+
+qx.Proto._createPage = function(barView, title, iconUrl, widget, backgroundColor, scrolls) {
+ var bt = new qx.ui.pageview.buttonview.Button(title, iconUrl);
+ if (barView.getBar().isEmpty()) {
+ bt.setChecked(true);
+ }
+
+ barView.getBar().add(bt);
+
+ var page = new qx.ui.pageview.buttonview.Page(bt);
+ barView.getPane().add(page);
+
+ page.set({ left:0, right:0, top:0, bottom:0 });
+
+ widget.setLocation(0, 0);
+ widget.set({ left:0, right:0, bottom:0, right:0 });
+ if (!scrolls) {
+ widget.set({ height:null, width:null, overflow:"auto" });
+ }
+
+ if (backgroundColor) {
+ page.setBackgroundColor(backgroundColor);
+ }
+
+ page.add(widget);
+
+ return page;
+}
+
+
+qx.Proto._createFormDemo = function() {
+ var main = new qx.ui.layout.VerticalBoxLayout;
+ main.setPadding(10);
+
+ var groupWidth = 285;
+
+ // fields
+ var group1 = new qx.ui.groupbox.GroupBox("Some controls", "icon/16/apps/preferences.png");
+ group1.setDimension("auto", "auto");
+ main.add(group1);
+
+ var gl = new qx.ui.layout.GridLayout;
+ group1.add(gl);
+
+ gl.setDimension(groupWidth - 26, "auto");
+ gl.setColumnCount(2);
+ gl.setRowCount(6);
+ gl.setVerticalSpacing(4);
+ gl.setHorizontalSpacing(6);
+
+ gl.setColumnWidth(0, 70);
+ gl.setColumnWidth(1, 180);
+
+ //gl.setColumnHorizontalAlignment(0, "right");
+ gl.setColumnVerticalAlignment(0, "middle");
+
+ gl.setRowHeight(0, 20);
+ gl.setRowHeight(1, 20);
+ gl.setRowHeight(2, 20);
+ gl.setRowHeight(3, 20);
+ gl.setRowHeight(4, 70);
+ gl.setRowHeight(5, 20);
+
+ gl.add(new qx.ui.basic.Label("Name"), 0, 0);
+ gl.add(new qx.ui.form.TextField, 1, 0);
+ gl.add(new qx.ui.basic.Label("Amount"), 0, 1);
+ gl.add(new qx.ui.form.Spinner, 1, 1);
+ gl.add(new qx.ui.basic.Label("Type"), 0, 2);
+
+ var combo = new qx.ui.form.ComboBox;
+ combo.add(new qx.ui.form.ListItem("CD")); //, "icon/16/cd.png"));
+ combo.add(new qx.ui.form.ListItem("Clock")); //, "icon/16/apps/accessories-clock.png"));
+ combo.add(new qx.ui.form.ListItem("Modem")); //, "icon/16/apps/internet-download-manager.png"));
+ combo.add(new qx.ui.form.ListItem("Network")); //, "icon/16/categories/applications-internet.png"));
+ combo.add(new qx.ui.form.ListItem("Sound")); //, "icon/16/apps/multimedia-volume-control.png"));
+ combo.add(new qx.ui.form.ListItem("PDA")); //, "icon/16/pda.png"));
+ combo.add(new qx.ui.form.ListItem("Printer")); //, "icon/16/devices/printer.png"));
+ combo.add(new qx.ui.form.ListItem("Scanner")); //, "icon/16/devices/scanner.png"));
+ combo.add(new qx.ui.form.ListItem("TV")); //, "icon/16/devices/video-display.png"));
+ gl.add(combo, 1, 2);
+
+ gl.add(new qx.ui.basic.Label("E-Mail"), 0, 3);
+ gl.add(new qx.ui.form.TextField, 1, 3);
+
+ var label6 = new qx.ui.basic.Label("Comment");
+ label6.setVerticalAlign("top");
+ label6.setVerticalAlign("top");
+ gl.add(label6, 0, 4);
+
+ gl.add(new qx.ui.form.TextArea, 1, 4);
+
+ var input7 = new qx.ui.form.Button("Submit", "icon/16/actions/dialog-ok.png");
+ input7.setHorizontalAlign("right");
+ gl.add(input7, 1, 5);
+
+ // Checkboxes
+ var group2 = new qx.ui.groupbox.GroupBox("Some settings");
+ group2.setDimension(groupWidth, "auto");
+ main.add(group2);
+
+ var bl = new qx.ui.layout.VerticalBoxLayout;
+ group2.add(bl);
+
+ bl.add(new qx.ui.form.CheckBox("Permit others to view my favorites"));
+
+ var chb = new qx.ui.form.CheckBox("Use the very high bitrate");
+ chb.setChecked(true);
+ bl.add(chb);
+
+ // Radio buttons
+ var group3 = new qx.ui.groupbox.GroupBox("Network speed", "icon/16/categories/applications-internet.png");
+ group3.setDimension(groupWidth, "auto");
+ main.add(group3);
+
+ var bl = new qx.ui.layout.VerticalBoxLayout;
+ group3.add(bl);
+
+ var radio1 = new qx.ui.form.RadioButton("Modem");
+ var radio2 = new qx.ui.form.RadioButton("DSL");
+ var radio3 = new qx.ui.form.RadioButton("Direct link");
+ radio2.setChecked(true);
+ bl.add(radio1, radio2, radio3);
+ new qx.manager.selection.RadioManager("network", [radio1, radio2, radio3]);
+
+ return main;
+}
+
+
+qx.Proto._createTooltipDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.setSpacing(10);
+
+ var c1 = new qx.ui.basic.Atom("Hover me", "icon/32/actions/system-run.png");
+ c1.setPadding(5);
+ c1.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c1.setBackgroundColor(new qx.renderer.color.Color("#BDD2EF"));
+ c1.setToolTip(new qx.ui.popup.ToolTip("Look at this"));
+ main.add(c1);
+
+ var c2 = new qx.ui.basic.Atom("Hover me", "icon/32/apps/accessories-archiver.png");
+ c2.setPadding(5);
+ c2.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c2.setBackgroundColor(new qx.renderer.color.Color("#D1DFAD"));
+ c2.setToolTip(new qx.ui.popup.ToolTip("Images are also possible", "icon/16/actions/help-about.png"));
+ main.add(c2);
+
+ var c3 = new qx.ui.basic.Atom("Hover me", "icon/32/apps/accessories-disk-usage.png");
+ c3.setPadding(5);
+ c3.setBorder(qx.renderer.border.BorderPresets.getInstance().outset);
+ c3.setBackgroundColor(new qx.renderer.color.Color("#D1A4AD"));
+ var tip3 = new qx.ui.popup.ToolTip('Such a great tooltip with a show timeout of 50ms.<br>And <b>H</b><span style="color:red">T</span><i>M</i><u>L</u>', "icon/32/apps/accessories-disk-usage.png");
+ tip3.setShowInterval(50);
+ c3.setToolTip(tip3);
+ main.add(c3);
+
+ return main;
+}
+
+
+qx.Proto._createToolbarDemo = function() {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ var main = new qx.ui.layout.VerticalBoxLayout;
+ main.setPadding(10);
+
+ // Menu
+ var m1 = new qx.ui.menu.Menu;
+ var mb1_01 = new qx.ui.menu.Button("New", "icon/16/actions/document-new.png");
+ var mb1_02 = new qx.ui.menu.Button("Open", "icon/16/actions/document-open.png");
+ var mb1_03 = new qx.ui.menu.Button("Save", "icon/16/actions/document-save.png");
+ var mb1_04 = new qx.ui.menu.Button("Save as", "icon/16/actions/document-save-as.png");
+ var mb1_05 = new qx.ui.menu.Button("Close", "icon/16/actions/stop.png");
+ var mb1_06 = new qx.ui.menu.Button("Restore last saved", "icon/16/actions/view-refresh.png");
+ m1.add(mb1_01, mb1_02, mb1_03, mb1_04, mb1_05, mb1_06);
+
+ var m2 = new qx.ui.menu.Menu;
+ var mb2_01 = new qx.ui.menu.Button("Undo", "icon/16/actions/edit-undo.png");
+ var mb2_02 = new qx.ui.menu.Button("Redo", "icon/16/actions/edit-redo.png");
+ var mb2_b1 = new qx.ui.menu.Separator();
+ var mb2_03 = new qx.ui.menu.Button("Cut", "icon/16/actions/edit-cut.png");
+ var mb2_04 = new qx.ui.menu.Button("Copy", "icon/16/actions/edit-copy.png");
+ var mb2_05 = new qx.ui.menu.Button("Paste", "icon/16/actions/edit-paste.png");
+ var mb2_06 = new qx.ui.menu.Button("Delete", "icon/16/actions/edit-delete.png");
+ var mb2_b2 = new qx.ui.menu.Separator();
+ var mb2_07 = new qx.ui.menu.Button("Select All");
+ var mb2_08 = new qx.ui.menu.Button("Find", "icon/16/actions/edit-find.png");
+ var mb2_09 = new qx.ui.menu.Button("Find Again");
+ mb2_05.setEnabled(false);
+ mb2_06.setEnabled(false);
+ mb2_09.setEnabled(false);
+ m2.add(mb2_01, mb2_02, mb2_b1, mb2_03, mb2_04, mb2_05, mb2_06, mb2_b2, mb2_07, mb2_08, mb2_09);
+
+ var m3 = new qx.ui.menu.Menu;
+ var m3_suba = new qx.ui.menu.Menu;
+ var m3_subb = new qx.ui.menu.Menu;
+ var m3_subc = new qx.ui.menu.Menu;
+ var m3_subd = new qx.ui.menu.Menu;
+
+ var mb3_01 = new qx.ui.menu.CheckBox("File List", null, false);
+ var mb3_02 = new qx.ui.menu.CheckBox("Syntax Highlighting", null, true);
+ var mb3_03 = new qx.ui.menu.CheckBox("Statusbar", null, true);
+ var mb3_b1 = new qx.ui.menu.Separator();
+ var mb3_04 = new qx.ui.menu.Button("Printer Font", null, null, m3_suba);
+ var mb3_05 = new qx.ui.menu.Button("Editor Font", null, null, m3_subb);
+ var mb3_06 = new qx.ui.menu.Button("Export Font", null, null, m3_subc);
+ var mb3_b2 = new qx.ui.menu.Separator();
+ var mb3_07 = new qx.ui.menu.Button("Advanced", null, null, m3_subd);
+ m3.add(mb3_01, mb3_02, mb3_03, mb3_b1, mb3_04, mb3_05, mb3_06, mb3_b2, mb3_07);
+
+ var mb3_suba_01 = new qx.ui.menu.Button("Tahoma, 11pt");
+ var mb3_suba_02 = new qx.ui.menu.Button("Tahoma, 12pt");
+ var mb3_suba_03 = new qx.ui.menu.Button("Tahoma, 13pt");
+ var mb3_suba_04 = new qx.ui.menu.Button("Tahoma, 14pt");
+ var mb3_suba_05 = new qx.ui.menu.Button("Tahoma, 15pt");
+ m3_suba.add(mb3_suba_01, mb3_suba_02, mb3_suba_03, mb3_suba_04, mb3_suba_05);
+
+ var mb3_subb_01 = new qx.ui.menu.Button("Verdana, 11pt");
+ var mb3_subb_02 = new qx.ui.menu.Button("Verdana, 12pt");
+ var mb3_subb_03 = new qx.ui.menu.Button("Verdana, 13pt");
+ var mb3_subb_04 = new qx.ui.menu.Button("Verdana, 14pt");
+ var mb3_subb_05 = new qx.ui.menu.Button("Verdana, 15pt");
+ m3_subb.add(mb3_subb_01, mb3_subb_02, mb3_subb_03, mb3_subb_04, mb3_subb_05);
+
+ var mb3_subc_01 = new qx.ui.menu.Button("Courier, 11pt");
+ var mb3_subc_02 = new qx.ui.menu.Button("Courier, 12pt");
+ var mb3_subc_03 = new qx.ui.menu.Button("Courier, 13pt");
+ var mb3_subc_04 = new qx.ui.menu.Button("Courier, 14pt");
+ var mb3_subc_05 = new qx.ui.menu.Button("Courier, 15pt");
+ m3_subc.add(mb3_subc_01, mb3_subc_02, mb3_subc_03, mb3_subc_04, mb3_subc_05);
+
+ var mb3_subd_02_suba = new qx.ui.menu.Menu();
+ var mb3_subd_02_suba_01 = new qx.ui.menu.Button("First");
+ var mb3_subd_02_suba_02 = new qx.ui.menu.Button("Second");
+ var mb3_subd_02_suba_03 = new qx.ui.menu.Button("Third");
+ mb3_subd_02_suba.add(mb3_subd_02_suba_01, mb3_subd_02_suba_02, mb3_subd_02_suba_03);
+
+ var mb3_subd_01 = new qx.ui.menu.Button("First");
+ var mb3_subd_02 = new qx.ui.menu.Button("Second", null, null, mb3_subd_02_suba);
+ var mb3_subd_03 = new qx.ui.menu.Button("Third");
+
+ m3_subd.add(mb3_subd_01, mb3_subd_02, mb3_subd_03);
+
+ var m4 = new qx.ui.menu.Menu;
+ var m4_suba = new qx.ui.menu.Menu;
+
+ var mb4_01 = new qx.ui.menu.Button("View", null, null, m4_suba);
+ var mb4_b1 = new qx.ui.menu.Separator();
+ var mb4_02 = new qx.ui.menu.Button("Editor Preferences...", "icon/16/apps/preferences.png");
+ var mb4_03 = new qx.ui.menu.Button("Editor Extensions", "icon/16/apps/accessories-disk-usage.png");
+ var mb4_04 = new qx.ui.menu.Button("Framework Preferences");
+
+ m4.add(mb4_01, mb4_b1, mb4_02, mb4_03, mb4_04);
+
+ var mb4_suba_01 = new qx.ui.menu.Button("New Window");
+ var mb4_suba_b1 = new qx.ui.menu.Separator();
+ var mb4_suba_02 = new qx.ui.menu.RadioButton("Overlapping", null, true);
+ var mb4_suba_03 = new qx.ui.menu.RadioButton("Split Horizontally");
+ var mb4_suba_04 = new qx.ui.menu.RadioButton("Split Vertically");
+ var mb4_suba_b2 = new qx.ui.menu.Separator();
+ var mb4_suba_05 = new qx.ui.menu.Button("Next Window");
+ var mb4_suba_06 = new qx.ui.menu.Button("Previous Window");
+
+ m4_suba.add(mb4_suba_01, mb4_suba_b1, mb4_suba_02, mb4_suba_03, mb4_suba_04, mb4_suba_b2, mb4_suba_05, mb4_suba_06);
+
+ var mb4_manager = new qx.manager.selection.RadioManager("windowMode", [ mb4_suba_02, mb4_suba_03, mb4_suba_04 ]);
+
+ var m5 = new qx.ui.menu.Menu;
+ var mb5_01 = new qx.ui.menu.Button("Help", "icon/16/actions/help-about.png");
+ var mb5_02 = new qx.ui.menu.Button("About", "icon/16/actions/system-run.png");
+ m5.add(mb5_01, mb5_02);
+
+ doc.add(m1, m2, m3, m3_suba, m3_subb, m3_subc, m3_subd, mb3_subd_02_suba, m4, m4_suba, m5);
+
+ var mb1 = new qx.ui.toolbar.ToolBar;
+ var mbb1 = new qx.ui.toolbar.MenuButton("File", m1);
+ var mbb2 = new qx.ui.toolbar.MenuButton("Edit", m2);
+ var mbb3 = new qx.ui.toolbar.MenuButton("View", m3);
+ var mbb4 = new qx.ui.toolbar.MenuButton("Options", m4);
+ var mbb5 = new qx.ui.toolbar.MenuButton("Help", m5);
+ mb1.add(mbb1, mbb2, mbb3, mbb4, mbb5);
+ main.add(mb1);
+
+ // Toolbar
+ function changeLayout(e) {
+ this.setShow(e.getData());
+ }
+
+ function changeSize(e) {
+ var v = e.getData();
+ var o = v == 22 ? 32 : 22;
+
+ this.setIcon(this.getIcon().replace(o, v));
+ }
+
+ function createButton(text, icon, clazz, checked) {
+ if (! clazz) {
+ clazz = qx.ui.toolbar.Button;
+ }
+
+ var button = new clazz(text, "icon/22/actions/" + icon + ".png");
+ doc.addEventListener("changeLayout", changeLayout, button);
+ doc.addEventListener("changeSize", changeSize, button);
+
+ if (checked) {
+ button.setChecked(true);
+ }
+
+ return button;
+ }
+
+ var tb = new qx.ui.toolbar.ToolBar;
+ main.add(tb);
+
+ var part = new qx.ui.toolbar.Part;
+ tb.add(part);
+ part.add(createButton("New", "document-new"));
+ part.add(new qx.ui.toolbar.Separator);
+ part.add(createButton("Copy", "edit-copy"));
+ part.add(createButton("Cut", "edit-cut"));
+ part.add(createButton("Paste", "edit-paste"));
+
+ var part = new qx.ui.toolbar.Part;
+ tb.add(part);
+ part.add(createButton("Check", "edit-add", qx.ui.toolbar.CheckBox, true));
+
+ var part = new qx.ui.toolbar.Part;
+ tb.add(part);
+ var radio1 = createButton("Radio1", "view-pane-column", qx.ui.toolbar.RadioButton);
+ var radio2 = createButton("Radio2", "view-pane-detailed", qx.ui.toolbar.RadioButton, true);
+ var radio3 = createButton("Radio3", "view-pane-icon", qx.ui.toolbar.RadioButton);
+ part.add(radio1, radio2, radio3);
+ new qx.manager.selection.RadioManager(null, [radio1, radio2, radio3]);
+
+ // Toolbar manipulation
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.setDimension("auto", "auto");
+ hor.set({ spacing:10, marginTop:20 });
+ main.add(hor);
+
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.setDimension("auto", "auto");
+ hor.add(vert);
+
+ var radio1 = new qx.ui.form.RadioButton("Show Icons and Label", "both");
+ var radio2 = new qx.ui.form.RadioButton("Show Icons", "icon");
+ var radio3 = new qx.ui.form.RadioButton("Show Label", "label");
+ radio1.setChecked(true);
+ vert.add(radio1, radio2, radio3);
+ var rbm = new qx.manager.selection.RadioManager(null, [radio1, radio2, radio3]);
+ rbm.addEventListener("changeSelected", function(e) {
+ doc.dispatchEvent( new qx.event.type.DataEvent("changeLayout", e.getData().getValue() ) );
+ });
+
+ // Alignment
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.setDimension("auto", "auto");
+ hor.add(vert);
+
+ var radio1 = new qx.ui.form.RadioButton("Left Aligned", "left");
+ var radio2 = new qx.ui.form.RadioButton("Centered", "center");
+ var radio3 = new qx.ui.form.RadioButton("Right Aligned", "right");
+ radio1.setChecked(true);
+ vert.add(radio1, radio2, radio3);
+ var rbm = new qx.manager.selection.RadioManager(null, [radio1, radio2, radio3]);
+ rbm.addEventListener("changeSelected", function(e) {
+ tb.setHorizontalChildrenAlign(e.getData().getValue());
+ });
+
+ // Icon Sizes
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.setDimension("auto", "auto");
+ hor.add(vert);
+
+ var button = new qx.ui.form.Button("Icons: 22 Pixel", "icon/16/actions/format-color.png");
+ button.setHorizontalAlign("center");
+ button.addEventListener("execute", function(e) {
+ doc.dispatchEvent(new qx.event.type.DataEvent("changeSize", 22));
+ });
+ vert.add(button);
+
+ var button = new qx.ui.form.Button("Icons: 32 Pixel", "icon/16/actions/format-color.png");
+ button.setHorizontalAlign("center");
+ button.addEventListener("execute", function(e) {
+ doc.dispatchEvent(new qx.event.type.DataEvent("changeSize", 32));
+ });
+ vert.add(button);
+
+ return main;
+}
+
+
+qx.Proto._createTabDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"100%", height:"100%", spacing:10 });
+
+ // Tab view
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ width:"1*" });
+ main.add(tf1);
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Edit");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Find");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Backup");
+ t1_1.setChecked(true);
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ p1_2.add(new qx.ui.form.TextField("Find Anywhere"));
+ p1_3.add(new qx.ui.form.TextField("Backup Input"));
+
+ var c1 = new qx.ui.form.CheckBox("Place bar on top");
+ var c2 = new qx.ui.form.CheckBox("Align tabs to left");
+
+ c1.setTop(0);
+ c1.setChecked(true);
+
+ c2.setTop(20);
+ c2.setChecked(true);
+
+ p1_1.add(c1, c2);
+
+ c1.addEventListener("changeChecked", function(e) {
+ tf1.setPlaceBarOnTop(e.getData());
+ });
+
+ c2.addEventListener("changeChecked", function(e) {
+ tf1.setAlignTabsToLeft(e.getData());
+ });
+
+ // Inner tab view
+ var tf2 = new qx.ui.pageview.tabview.TabView;
+ tf2.set({ left: 0, top: 50, right: 0, bottom: 0 });
+ p1_2.add(tf2);
+
+ var t2_1 = new qx.ui.pageview.tabview.Button("Search for Files", "icon/16/actions/document-open.png");
+ var t2_2 = new qx.ui.pageview.tabview.Button("Search the Web", "icon/16/categories/applications-internet.png");
+ var t2_3 = new qx.ui.pageview.tabview.Button("Search in Mails", "icon/16/apps/internet-email-client.png");
+ t2_1.setChecked(true);
+ tf2.getBar().add(t2_1, t2_2, t2_3);
+
+ var p2_1 = new qx.ui.pageview.tabview.Page(t2_1);
+ var p2_2 = new qx.ui.pageview.tabview.Page(t2_2);
+ var p2_3 = new qx.ui.pageview.tabview.Page(t2_3);
+ tf2.getPane().add(p2_1, p2_2, p2_3);
+
+ var t2_1 = new qx.ui.form.TextField("Files...");
+ var t2_2 = new qx.ui.form.TextField("Web...");
+ var t2_3 = new qx.ui.form.TextField("Mails...");
+
+ t2_1.set({ top: 2, left: 0, width: 140 });
+ t2_2.set({ top: 2, left: 0, width: 140 });
+ t2_3.set({ top: 2, left: 0, width: 140 });
+
+ p2_1.add(t2_1);
+ p2_2.add(t2_2);
+ p2_3.add(t2_3);
+
+ var b2_1 = new qx.ui.form.Button("Search", "icon/16/actions/edit-find.png");
+ var b2_2 = new qx.ui.form.Button("Search", "icon/16/actions/edit-find.png");
+ var b2_3 = new qx.ui.form.Button("Search", "icon/16/actions/edit-find.png");
+
+ b2_1.set({ top: 0, left: 150 });
+ b2_2.set({ top: 0, left: 150 });
+ b2_3.set({ top: 0, left: 150 });
+
+ p2_1.add(b2_1);
+ p2_2.add(b2_2);
+ p2_3.add(b2_3);
+
+ function dosearch(e) {
+ alert("Searching...");
+ }
+
+ b2_1.addEventListener("click", dosearch);
+ b2_2.addEventListener("click", dosearch);
+ b2_3.addEventListener("click", dosearch);
+
+ // Bar view
+ var bs = new qx.ui.pageview.buttonview.ButtonView;
+ bs.set({ width:"1*", barPosition:"left" });
+ main.add(bs);
+
+ var bsb1 = new qx.ui.pageview.buttonview.Button("Display", "icon/16/devices/video-display.png");
+ var bsb2 = new qx.ui.pageview.buttonview.Button("Colorize", "icon/16/actions/format-color.png");
+ var bsb3 = new qx.ui.pageview.buttonview.Button("Icons", "icon/16/apps/preferences-desktop-theme.png");
+ var bsb4 = new qx.ui.pageview.buttonview.Button("Applications", "icon/16/actions/system-run.png");
+ var bsb5 = new qx.ui.pageview.buttonview.Button("System", "icon/16/devices/video-display.png");
+
+ bsb1.setChecked(true);
+
+ bsb1.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb2.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb3.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb4.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+ bsb5.set({ iconPosition: "left", horizontalChildrenAlign: "left" });
+
+ bs.getBar().add(bsb1, bsb2, bsb3, bsb4, bsb5);
+ bs.getBar().setHorizontalChildrenAlign("center");
+ bs.getBar().setVerticalChildrenAlign("bottom");
+
+ var p1 = new qx.ui.pageview.buttonview.Page(bsb1);
+ var p2 = new qx.ui.pageview.buttonview.Page(bsb2);
+ var p3 = new qx.ui.pageview.buttonview.Page(bsb3);
+ var p4 = new qx.ui.pageview.buttonview.Page(bsb4);
+ var p5 = new qx.ui.pageview.buttonview.Page(bsb5);
+ bs.getPane().add(p1, p2, p3, p4, p5);
+
+ p1.add(new qx.ui.form.TextField("Display Input"));
+ p2.add(new qx.ui.form.TextField("Paint Input"));
+ p3.add(new qx.ui.form.TextField("Icons Input"));
+ p4.add(new qx.ui.form.TextField("Applications Input"));
+ p5.add(new qx.ui.form.TextField("System Input"));
+
+ var r1 = new qx.ui.form.RadioButton("Top", "top");
+ var r2 = new qx.ui.form.RadioButton("Right", "right");
+ var r3 = new qx.ui.form.RadioButton("Bottom", "bottom");
+ var r4 = new qx.ui.form.RadioButton("Left", "left", null, true);
+
+ r1.setTop(50);
+ r2.setTop(70);
+ r3.setTop(90);
+ r4.setTop(110);
+
+ p1.add(r1, r2, r3, r4);
+
+ var rm = new qx.manager.selection.RadioManager(null, [r1, r2, r3, r4]);
+
+ rm.addEventListener("changeSelected", function(e) {
+ bs.setBarPosition(e.getData().getValue());
+ });
+
+ return main;
+}
+
+
+qx.Proto._createTreeDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"100%", spacing:10 });
+
+ // Workaround: qx.ui.tree.Tree causes an exception when added to a qx.ui.core.Parent that
+ // has no qx.ui.core.Parent. -> So we give the parent a pseudo parent
+ var workaround = new qx.ui.layout.HorizontalBoxLayout;
+ workaround.add(main);
+
+ var t = new qx.ui.tree.Tree("Root");
+ t.set({ backgroundColor:255, border:qx.renderer.border.BorderPresets.getInstance().inset,
+ overflow:"scrollY", height:"100%", width:200 });
+ main.add(t);
+
+ var te1 = new qx.ui.tree.TreeFolder("Desktop", "icon/16/actions/go-home.png", "icon/16/actions/go-home.png");
+ t.add(te1);
+
+ var te1_1 = new qx.ui.tree.TreeFolder("Files");
+ var te1_2 = new qx.ui.tree.TreeFolder("Workspace");
+ var te1_3 = new qx.ui.tree.TreeFolder("Network");
+ var te1_4 = new qx.ui.tree.TreeFolder("Trash");
+ te1.add(te1_1, te1_2, te1_3, te1_4);
+ var te1_2_1 = new qx.ui.tree.TreeFile("Windows (C:)", "icon/16/devices/drive-harddisk.png");
+ var te1_2_2 = new qx.ui.tree.TreeFile("Documents (D:)", "icon/16/devices/drive-harddisk.png");
+ te1_2.add(te1_2_1, te1_2_2);
+
+ var te2 = new qx.ui.tree.TreeFolder("Inbox");
+ t.add(te2);
+
+ var te2_1 = new qx.ui.tree.TreeFolder("Presets");
+ var te2_2 = new qx.ui.tree.TreeFolder("Sent");
+ var te2_3 = new qx.ui.tree.TreeFolder("Trash", "icon/16/places/user-trash.png", "icon/16/places/user-trash.png");
+ var te2_4 = new qx.ui.tree.TreeFolder("Data");
+ var te2_5 = new qx.ui.tree.TreeFolder("Edit");
+
+ var te2_5_1 = new qx.ui.tree.TreeFolder("Chat");
+ var te2_5_2 = new qx.ui.tree.TreeFolder("Pustefix");
+ var te2_5_3 = new qx.ui.tree.TreeFolder("TINC");
+ te2_5.add(te2_5_1, te2_5_2, te2_5_3);
+
+ var te2_5_3_1 = new qx.ui.tree.TreeFolder("Announce");
+ var te2_5_3_2 = new qx.ui.tree.TreeFolder("Devel");
+ te2_5_3.add(te2_5_3_1, te2_5_3_2);
+
+ var te2_6 = new qx.ui.tree.TreeFolder("Lists");
+
+ var te2_6_1 = new qx.ui.tree.TreeFolder("Relations");
+ var te2_6_2 = new qx.ui.tree.TreeFolder("Company");
+ var te2_6_3 = new qx.ui.tree.TreeFolder("Questions");
+ var te2_6_4 = new qx.ui.tree.TreeFolder("Internal");
+ var te2_6_5 = new qx.ui.tree.TreeFolder("Products");
+ var te2_6_6 = new qx.ui.tree.TreeFolder("Press");
+ var te2_6_7 = new qx.ui.tree.TreeFolder("Development");
+ var te2_6_8 = new qx.ui.tree.TreeFolder("Competition");
+
+ te2_6.add(te2_6_1, te2_6_2, te2_6_3, te2_6_4, te2_6_5, te2_6_6, te2_6_7, te2_6_8);
+
+ var te2_7 = new qx.ui.tree.TreeFolder("Personal");
+
+ var te2_7_1 = new qx.ui.tree.TreeFolder("Bugs");
+ var te2_7_2 = new qx.ui.tree.TreeFolder("Family");
+ var te2_7_3 = new qx.ui.tree.TreeFolder("Projects");
+ var te2_7_4 = new qx.ui.tree.TreeFolder("Holiday");
+
+ te2_7.add(te2_7_1, te2_7_2, te2_7_3, te2_7_4);
+
+ var te2_8 = new qx.ui.tree.TreeFolder("Big");
+
+ for (var i = 0; i < 50; i++) {
+ te2_8.add(new qx.ui.tree.TreeFolder("Item " + i));
+ }
+
+ var te2_9 = new qx.ui.tree.TreeFolder("Spam");
+
+ te2.add(te2_1, te2_2, te2_3, te2_4, te2_5, te2_6, te2_7, te2_8, te2_9);
+
+ // Command frame
+ var commandFrame = new qx.ui.groupbox.GroupBox("Control");
+ commandFrame.set({ width:"auto", height:"auto" });
+ main.add(commandFrame);
+
+ var command = new qx.ui.layout.VerticalBoxLayout;
+ command.set({ width:"auto", height:"auto", paddingRight:12 });
+ commandFrame.add(command);
+
+ var tCurrentLabel = new qx.ui.basic.Atom("Current Folder: ");
+ command.add(tCurrentLabel);
+
+ var tCurrentInput = new qx.ui.form.TextField;
+ tCurrentInput.set({ readOnly:true, marginBottom:20 });
+ command.add(tCurrentInput);
+
+ t.getManager().addEventListener("changeSelection", function(e) {
+ tCurrentInput.setValue(e.getData()[0]._labelObject.getHtml());
+ });
+
+ var tDoubleClick = new qx.ui.form.CheckBox("Use double click?");
+ tDoubleClick.addEventListener("changeChecked", function(e) {
+ t.setUseDoubleClick(e.getData());
+ });
+ command.add(tDoubleClick);
+
+ var tTreeLines = new qx.ui.form.CheckBox("Use tree lines?");
+ tTreeLines.setChecked(true);
+ tTreeLines.addEventListener("changeChecked", function(e) { t.setUseTreeLines(e.getData()); });
+ command.add(tTreeLines);
+
+ return main;
+}
+
+
+qx.Proto._createListDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"100%", spacing:10 });
+
+ // List
+ var list = new qx.ui.form.List;
+ list.set({ height:"100%", width:150, overflow:"scrollY" });
+ main.add(list)
+
+ var item;
+ for(var i = 1; i <= 35; i++) {
+ var iconName;
+ switch (parseInt(Math.random() * 5)) {
+ case 0: iconName = "places/folder.png"; break;
+ case 1: iconName = "devices/drive-harddisk.png"; break;
+ case 2: iconName = "apps/accessories-tip.png"; break;
+ case 3: iconName = "devices/scanner.png"; break;
+ case 4: iconName = "apps/accessories-tip.png"; break;
+ }
+ item = new qx.ui.form.ListItem("Item No " + i, "icon/" + ((i % 4) ? "16" : "48") + "/" + iconName);
+
+ if (!(i % 9)) (item.setEnabled(false));
+
+ list.add(item);
+ }
+
+ // Control
+ var control = new qx.ui.layout.VerticalBoxLayout;
+ control.set({ width:"auto", height:"auto" });
+ main.add(control);
+
+ var c1 = new qx.ui.form.CheckBox("Enable Multi-Selection");
+ var c2 = new qx.ui.form.CheckBox("Enable Drag-Selection");
+ var c3 = new qx.ui.form.CheckBox("Allow Deselection");
+ var c4 = new qx.ui.form.CheckBox("Enable Inline Find");
+ control.add(c1, c2, c3, c4);
+
+ c1.setChecked(true);
+ c2.setChecked(true);
+ c3.setChecked(true);
+ c4.setChecked(true);
+
+ c1.addEventListener("changeChecked", function(e) {
+ list.getManager().setMultiSelection(e.getData());
+ });
+ c2.addEventListener("changeChecked", function(e) {
+ list.getManager().setDragSelection(e.getData());
+ });
+ c3.addEventListener("changeChecked", function(e) {
+ list.getManager().setCanDeselect(e.getData());
+ });
+ c4.addEventListener("changeChecked", function(e) {
+ list.setEnableInlineFind(e.getData());
+ });
+
+ var rd1 = new qx.ui.form.RadioButton("Show Label", "label");
+ var rd2 = new qx.ui.form.RadioButton("Show Icon", "icon");
+ var rd3 = new qx.ui.form.RadioButton("Show Both", "both");
+ rd3.setChecked(true);
+ control.add(rd1, rd2, rd3);
+ var rbm = new qx.manager.selection.RadioManager( name, [rd1, rd2, rd3]);
+
+ rbm.addEventListener("changeSelected", function(e) {
+ for (var i = 0; i < list.getChildrenLength(); i++) {
+ list.getChildren()[i].setShow(e.getData().getValue());
+ }
+ });
+
+ return main;
+}
+
+
+qx.Proto._createListViewDemo = function() {
+ var main = new qx.ui.layout.HorizontalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"100%", spacing:10 });
+
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i = 0, t; i < 1000; i++) {
+ t = Math.round(Math.random() * 4);
+ ld.push({ name : { html : "E-Mail " + i, icon : "icon/16/apps/internet-email-client.png", iconWidth : 16, iconHeight : 16 }, size : { text : Math.round(Math.random()*100) + "kb" }, type : { text : lt[t] }, modified : { text : "Nov " + Math.round(Math.random() * 30 + 1) + " 2005" }, rights: { text : "-rw-r--r--" }, open : { uri : "http://www.google.com/search?q=" + i, html : "Open " + i }});
+ }
+
+ var lc = {
+ name : { label : "Name", width : 120, type : "iconHtml" },
+ size: { label : "Size", width : 50, type : "text", align : "right" },
+ type : { label : "Type", width : 80, type : "text" },
+ modified : { label : "Last Modified", width : 150, type : "text" },
+ rights : { label : "Rights", width: 80, type : "text" }
+ }
+
+ var lv = new qx.ui.listview.ListView(ld, lc);
+ main.add(lv);
+
+ lv.setBorder(qx.renderer.border.BorderPresets.getInstance().shadow);
+ lv.setBackgroundColor("white");
+ lv.setWidth(600);
+ lv.setHeight(350);
+
+ return main;
+}
+
+
+qx.Proto._createTableDemo = function() {
+ // table model
+ var tableModel = new qx.ui.table.SimpleTableModel();
+ tableModel.setColumns([ "ID", "A number", "A date", "Boolean test" ]);
+ var rowData = [];
+ var now = new Date().getTime();
+ var dateRange = 400 * 24 * 60 * 60 * 1000; // 400 days
+ for (var row = 0; row < 100; row++) {
+ var date = new Date(now + Math.random() * dateRange - dateRange / 2);
+ rowData.push([ row, Math.random() * 10000, date, (Math.random() > 0.5) ]);
+ }
+ tableModel.setData(rowData);
+ tableModel.setColumnEditable(1, true);
+ tableModel.setColumnEditable(2, true);
+
+ // table
+ var table = new qx.ui.table.Table(tableModel);
+ with (table) {
+ set({ width:"100%", height:"100%" });
+ setMetaColumnCounts([1, -1]);
+ getSelectionModel().setSelectionMode(qx.ui.table.SelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ getTableColumnModel().setDataCellRenderer(3, new qx.ui.table.BooleanDataCellRenderer());
+ }
+
+ return table;
+}
+
+
+qx.Proto._createLocalizationDemo = function() {
+ var main = new qx.ui.layout.CanvasLayout();
+ main.set({ width: "auto", height: "auto", paddingLeft: 10, paddingTop: 10, paddingBottom:10, paddingRight:10 })
+
+ var controls = new qx.ui.layout.VerticalBoxLayout();
+ controls.set({top: 40, width: "auto", height: "auto", spacing: 20});
+
+ var locales = qx.locale.Manager.getInstance().getAvailableLocales().sort();
+
+ // locale selection
+ var hb2 = new qx.ui.layout.HorizontalBoxLayout(); hb2.set({top:0, left:0, spacing:3});
+ var l2 = new qx.ui.basic.Label(this.tr("Choose a locale: "));
+ var select = new qx.ui.form.ComboBox();
+ for (var i=0; i<locales.length; i++) {
+ select.add(new qx.ui.form.ListItem(locales[i]));
+ }
+
+ var defaultListItem = select.getList().findStringExact("en");
+ if (defaultListItem) {
+ select.setSelected(defaultListItem);
+ }
+ select.addEventListener("changeSelected", function(e) {
+ var locale = e.getData().getLabel();
+ qx.locale.Manager.getInstance().setLocale(locale);
+ });
+ hb2.add(l2, select);
+ main.add(hb2);
+
+ // DateChooserButton
+ var hb1 = new qx.ui.layout.HorizontalBoxLayout(); hb1.set({height: "auto", spacing:3});
+ var l1 = new qx.ui.basic.Label(this.tr("A date: "));
+ var tf1 = new qx.ui.form.TextField(); tf1.set({ width: 130, height:20});
+ var dcb1 = new qx.ui.component.DateChooserButton(); dcb1.set({ width: 20 });
+ dcb1.setTargetWidget(tf1);
+ hb1.add(l1, tf1, dcb1);
+ controls.add(hb1);
+
+
+ // DateChooser
+ var chooser = new qx.ui.component.DateChooser;
+ chooser.setWidth("auto");
+ chooser.setHeight("auto");
+ controls.add(chooser);
+
+
+ // Commands
+ var undo_cmd = new qx.client.Command("Ctrl+Z");
+ var redo_cmd = new qx.client.Command("Ctrl+Y");
+ var cut_cmd = new qx.client.Command("Ctrl+X");
+ var copy_cmd = new qx.client.Command("Ctrl+C");
+ var paste_cmd = new qx.client.Command("Ctrl+V");
+ var delete_cmd = new qx.client.Command("Del");
+ var select_all_cmd = new qx.client.Command("Ctrl+A");
+ var search_cmd = new qx.client.Command("Ctrl+F");
+ var search_again_cmd = new qx.client.Command("F3");
+
+ var m1 = new qx.ui.menu.Menu;
+ m1.add(new qx.ui.menu.Button(this.tr("Undo"), null, undo_cmd));
+ m1.add(new qx.ui.menu.Button(this.tr("Redo"), null, redo_cmd));
+ m1.add(new qx.ui.menu.Separator());
+ m1.add(new qx.ui.menu.Button(this.tr("Cut"), "icon/16/actions/edit-cut.png", cut_cmd));
+ m1.add(new qx.ui.menu.Button(this.tr("Copy"), "icon/16/actions/edit-copy.png", copy_cmd));
+ m1.add(new qx.ui.menu.Button(this.tr("Paste"), "icon/16/actions/edit-paste.png", paste_cmd));
+ m1.add(new qx.ui.menu.Button(this.tr("Delete"), "icon/16/actions/edit-delete.png", delete_cmd));
+ m1.add(new qx.ui.menu.Button(this.tr("Select All"), null, select_all_cmd));
+ m1.add(new qx.ui.menu.Separator());
+ m1.add(new qx.ui.menu.Button(this.tr("Search"), null, search_cmd));
+ m1.add(new qx.ui.menu.Button(this.tr("Search Again"), null, search_again_cmd));
+ m1.addToDocument();
+
+ var w1 = new qx.ui.form.Button(this.tr("Command Menu (keyboard shortcuts)"));
+ w1.addEventListener("click", function(e) {
+ if (m1.isSeeable()) {
+ m1.hide();
+ } else {
+ var el = this.getElement();
+ m1.setLeft(qx.html.Location.getPageBoxLeft(el));
+ m1.setTop(qx.html.Location.getPageBoxBottom(el));
+ m1.show();
+ };
+ e.setPropagationStopped(true);
+ });
+ w1.addEventListener("mousedown", function(e) {
+ e.setPropagationStopped(true);
+ });
+ controls.add(w1);
+
+ // ColorPopup
+ var mybtn = new qx.ui.form.Button(this.tr("Open Color Popup"));
+ mybtn.addEventListener("execute", function() {
+ mypop.setTop(qx.html.Location.getPageBoxBottom(this.getElement()));
+ mypop.setLeft(qx.html.Location.getPageBoxLeft(this.getElement()));
+ mypop.show();
+ });
+ controls.add(mybtn);
+ var mytables =
+ {
+ core : {
+ label : this.tr("Basic Colors"),
+ values : [ "#000", "#333", "#666", "#999", "#CCC", "#FFF", "red", "green", "blue", "yellow", "teal", "maroon" ]
+ },
+ template : {
+ label : this.tr("Template Colors"),
+ values : [ "#B07B30", "#B07BC9", "#E3AEC9", "#7A2A53" ]
+ },
+ recent : {
+ label : this.tr("Recent Colors"),
+
+ // In this case we need named colors or rgb-value-strings, hex is not allowed currently
+ values : [ "rgb(122,195,134)", "orange" ]
+ }
+ }
+ var mypop = new qx.ui.component.ColorPopup(mytables);
+ mypop.setValue(new qx.renderer.color.Color("#23F3C1"));
+ mypop.addToDocument();
+
+
+ // ColorSelector
+ var mycolor = new qx.ui.component.ColorSelector;
+ controls.add(mycolor);
+
+ main.add(controls);
+
+ // Info Box
+ var fs = new qx.ui.groupbox.GroupBox(this.tr("Locale information"));
+ fs.set({ left: 300, top: 0, width: 400, height: "auto"});
+ var infoLabel = new qx.ui.basic.Label("");
+ fs.add(infoLabel);
+ main.add(fs);
+
+ var info = [];
+ info.push("<table style='font-size:11px'><tr><td>");
+ for (var i=0; i<13; i++) {
+ info.push("");
+ info.push("</td><td>");
+ info.push("");
+ info.push("</td></tr><td>");
+ }
+ info.push("");
+ info.push("</td><td>");
+ info.push("");
+ info.push("</td></tr></table>");
+
+ this.updateLocaleInformation = function() {
+ var i = 0;
+ info[(i++ * 2) + 1] = this.tr("Locale:");
+ info[(i++ * 2) + 1] = qx.locale.Manager.getInstance().getLocale();
+
+ info[(i++ * 2) + 1] = this.tr("Territory code:");
+ info[(i++ * 2) + 1] = qx.locale.Manager.getInstance().getTerritory();
+
+ info[(i++ * 2) + 1] = this.tr("Date format medium:");
+ info[(i++ * 2) + 1] = qx.locale.Date.getDateFormat("medium");
+ info[(i++ * 2) + 1] = this.tr("Date medium:");
+ info[(i++ * 2) + 1] = (new qx.util.format.DateFormat(qx.locale.Date.getDateFormat("medium"))).format(new Date());
+
+ info[(i++ * 2) + 1] = this.tr("Date format long:");
+ info[(i++ * 2) + 1] = qx.locale.Date.getDateFormat("long");
+ info[(i++ * 2) + 1] = this.tr("Date long:");
+ info[(i++ * 2) + 1] = (new qx.util.format.DateFormat(qx.locale.Date.getDateFormat("long"))).format(new Date());
+
+ info[(i++ * 2) + 1] = this.tr("Date format full:");
+ info[(i++ * 2) + 1] = qx.locale.Date.getDateFormat("full");
+ info[(i++ * 2) + 1] = this.tr("Date full:");
+ info[(i++ * 2) + 1] = (new qx.util.format.DateFormat(qx.locale.Date.getDateFormat("full"))).format(new Date());
+
+ info[(i++ * 2) + 1] = this.tr("Time format short:");
+ info[(i++ * 2) + 1] = qx.locale.Date.getTimeFormat("short");
+ info[(i++ * 2) + 1] = this.tr("Time short:");
+ info[(i++ * 2) + 1] = (new qx.util.format.DateFormat(qx.locale.Date.getTimeFormat("short"))).format(new Date());
+
+ info[(i++ * 2) + 1] = this.tr("Time format long:");
+ info[(i++ * 2) + 1] = qx.locale.Date.getTimeFormat("long");
+ info[(i++ * 2) + 1] = this.tr("Time long:");
+ info[(i++ * 2) + 1] = (new qx.util.format.DateFormat(qx.locale.Date.getTimeFormat("long"))).format(new Date());
+
+ info[(i++ * 2) + 1] = this.tr("Week start:");
+ info[(i++ * 2) + 1] = qx.locale.Date.getDayName("wide", qx.locale.Date.getWeekStart());
+
+ info[(i++ * 2) + 1] = this.tr("Format of %1:", 10000.12);
+ info[(i++ * 2) + 1] = qx.util.format.NumberFormat.getInstance().format(10000.12);
+
+ infoLabel.setHtml(info.join(""));
+ };
+
+ // update info box
+ qx.locale.Manager.getInstance().addEventListener("changeLocale", this.updateLocaleInformation, this);
+ this.updateLocaleInformation();
+
+ return main;
+}
+
+
+qx.Proto._createNativeWindowDemo = function() {
+ var main = new qx.ui.layout.VerticalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"auto", spacing:5 });
+
+ var win = new qx.client.NativeWindow("http://www.google.com");
+ win.setDimension(600, 400);
+
+ var openBt = new qx.ui.form.Button("Open Native Window", "icon/16/apps/system-users.png");
+ openBt.addEventListener("click", function() { win.open(); } );
+ main.add(openBt);
+
+ // Initial Settings
+ var fs1 = new qx.ui.groupbox.GroupBox("Initial Settings");
+ fs1.set({ width:250, height:"auto" });
+ main.add(fs1);
+
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.set({ width:"auto", height:"auto" });
+ fs1.add(vert);
+
+ var chk1 = new qx.ui.form.CheckBox("Resizeable");
+ chk1.setChecked(true);
+ chk1.addEventListener("changeChecked", function(e) {
+ win.setResizeable(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk2.setChecked(false);
+ chk2.addEventListener("changeChecked", function(e) {
+ win.setShowStatusbar(e.getData());
+ });
+
+ var chk3 = new qx.ui.form.CheckBox("Show Menubar");
+ chk3.setChecked(false);
+ chk3.addEventListener("changeChecked", function(e) {
+ win.setShowMenubar(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Show Location");
+ chk4.setChecked(false);
+ chk4.addEventListener("changeChecked", function(e) {
+ win.setShowLocation(e.getData());
+ });
+
+ var chk5 = new qx.ui.form.CheckBox("Show Toolbar");
+ chk5.setChecked(false);
+ chk5.addEventListener("changeChecked", function(e) {
+ win.setShowToolbar(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Allow Scrollbars");
+ chk6.setChecked(true);
+ chk6.addEventListener("changeChecked", function(e) {
+ win.setAllowScrollbars(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Modal");
+ chk7.setChecked(false);
+ chk7.addEventListener("changeChecked", function(e) {
+ win.setModal(e.getData());
+ });
+
+ var chk8 = new qx.ui.form.CheckBox("Dependent");
+ chk8.setChecked(true);
+ chk8.addEventListener("changeChecked", function(e) {
+ win.setDependent(e.getData());
+ });
+
+ vert.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8);
+
+ // Runtime Settings
+ var fs2 = new qx.ui.groupbox.GroupBox("Runtime Settings");
+ fs2.set({ width:250, height:"auto" });
+ main.add(fs2);
+
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.set({ width:"auto", height:"auto", spacing:2 });
+ fs2.add(vert);
+
+ var tf1 = new qx.ui.form.TextField("http://www.google.com");
+ tf1.setWidth(150);
+
+ var setUrlBt = new qx.ui.form.Button("Set Url", "icon/16/actions/dialog-ok.png");
+ setUrlBt.addEventListener("click", function() {
+ win.setUrl(tf1.getValue());
+ });
+
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.set({ width:"auto", height:"auto", spacing:5,
+ verticalChildrenAlign:"middle", marginBottom:10 });
+ vert.add(hor);
+ hor.add(tf1, setUrlBt);
+
+
+ var tf2 = new qx.ui.form.TextField("600");
+ tf2.setWidth(50);
+
+ var btn2 = new qx.ui.form.Button("Set Width", "icon/16/actions/dialog-ok.png");
+ btn2.addEventListener("click", function() {
+ win.setWidth(parseInt(tf2.getValue()));
+ });
+
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.set({ width:"auto", height:"auto", spacing:5,
+ verticalChildrenAlign:"middle" });
+ vert.add(hor);
+ hor.add(tf2, btn2);
+
+
+ var tf3 = new qx.ui.form.TextField("400");
+ tf3.setWidth(50);
+
+ var btn3 = new qx.ui.form.Button("Set Height", "icon/16/actions/dialog-ok.png");
+ btn3.addEventListener("click", function() {
+ win.setHeight(parseInt(tf3.getValue()));
+ });
+
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.set({ width:"auto", height:"auto", spacing:5,
+ verticalChildrenAlign:"middle", marginBottom:10 });
+ vert.add(hor);
+ hor.add(tf3, btn3);
+
+
+ var btn4 = new qx.ui.form.Button("Center to screen", "icon/16/devices/video-display.png");
+ btn4.setWidth("100%");
+ btn4.addEventListener("click", function() {
+ win.centerToScreen()
+ });
+
+ var btn5 = new qx.ui.form.Button("Center to screen area", "icon/16/devices/video-display.png");
+ btn5.setWidth("100%");
+ btn5.addEventListener("click", function() {
+ win.centerToScreenArea()
+ });
+
+ var btn6 = new qx.ui.form.Button("Center to opener", "icon/16/devices/video-display.png");
+ btn6.setWidth("100%");
+ btn6.addEventListener("click", function() {
+ win.centerToOpener()
+ });
+
+ vert.add(btn4, btn5, btn6);
+
+ return main;
+}
+
+
+qx.Proto._createInternalWindowDemo = function() {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ var main = new qx.ui.layout.CanvasLayout;
+ main.setOverflow("hidden");
+
+ // Create the windows
+ var w1 = new qx.ui.window.Window("First Window", "icon/16/apps/preferences-desktop-multimedia.png");
+ w1.setSpace(20, 400, 48, 250);
+ main.add(w1);
+
+ var w2 = new qx.ui.window.Window("Second Window", "icon/16/actions/format-color.png");
+ w2.setSpace(250, "auto", 120, "auto");
+ main.add(w2);
+
+ var w3 = new qx.ui.window.Window("Third Window", "icon/16/categories/applications-internet.png");
+ w3.setSpace(100, "auto", 200, "auto");
+ w3.set({ maxWidth:450, maxHeight:400 });
+ main.add(w3);
+
+ var wm1 = new qx.ui.window.Window("First Modal Dialog");
+ wm1.setSpace(150, 200, 150, 200);
+ wm1.setModal(true);
+ doc.add(wm1);
+
+ var wm2 = new qx.ui.window.Window("Second Modal Dialog");
+ wm2.setSpace(100, 200, 100, 150);
+ wm2.set({ modal:true, showClose:false });
+ doc.add(wm2);
+
+ // Fill window 1
+ var a1 = new qx.ui.basic.Atom("Welcome to your first own Window.<br/>Have fun!", "icon/32/apps/office-organizer.png");
+ a1.set({ top: 4, left: 4 });
+ w1.add(a1);
+
+ var tf1 = new qx.ui.pageview.tabview.TabView;
+ tf1.set({ left: 10, top: 52, right: 10, bottom: 10 });
+
+ var t1_1 = new qx.ui.pageview.tabview.Button("Explore");
+ var t1_2 = new qx.ui.pageview.tabview.Button("Internet");
+ var t1_3 = new qx.ui.pageview.tabview.Button("Future");
+
+ t1_1.setChecked(true);
+
+ tf1.getBar().add(t1_1, t1_2, t1_3);
+
+ var p1_1 = new qx.ui.pageview.tabview.Page(t1_1);
+ var p1_2 = new qx.ui.pageview.tabview.Page(t1_2);
+ var p1_3 = new qx.ui.pageview.tabview.Page(t1_3);
+
+ tf1.getPane().add(p1_1, p1_2, p1_3);
+
+ w1.add(tf1);
+
+ // Fill window 2
+ var at1 = new qx.ui.basic.Atom("Your second window", "icon/22/actions/edit-find.png");
+ at1.setLocation(8, 8);
+ w2.add(at1);
+
+ var fs1 = new qx.ui.groupbox.GroupBox("Settings");
+ fs1.set({ left:4, top:40, right:4, bottom:4 });
+
+ var chk1 = new qx.ui.form.CheckBox("Show Icon");
+ chk1.set({ left:0, top:0, checked:true });
+ chk1.addEventListener("changeChecked", function(e) {
+ w2.setShowIcon(e.getData());
+ });
+
+ var chk2 = new qx.ui.form.CheckBox("Show Caption");
+ chk2.set({ left:0, top:20, checked:true });
+ chk2.addEventListener("changeChecked", function(e) {
+ w2.setShowCaption(e.getData());
+ });
+
+ var chk3 = new qx.ui.form.CheckBox("Resizeable");
+ chk3.set({ left:0, top:50, checked:true });
+ chk3.addEventListener("changeChecked", function(e) {
+ w2.setResizeable(e.getData());
+ });
+
+ var chk4 = new qx.ui.form.CheckBox("Moveable");
+ chk4.set({ left:0, top:70, checked:true });
+ chk4.addEventListener("changeChecked", function(e) {
+ w2.setMoveable(e.getData());
+ });
+
+ var chk5 = new qx.ui.form.CheckBox("Show Close");
+ chk5.set({ left:140, top:0, checked:true });
+ chk5.addEventListener("changeChecked", function(e) {
+ w2.setShowClose(e.getData());
+ });
+
+ var chk6 = new qx.ui.form.CheckBox("Show Maximize/Restore");
+ chk6.set({ left:140, top:20, checked:true });
+ chk6.addEventListener("changeChecked", function(e) {
+ w2.setShowMaximize(e.getData());
+ });
+
+ var chk7 = new qx.ui.form.CheckBox("Show Minimize");
+ chk7.set({ left:140, top:40, checked:true });
+ chk7.addEventListener("changeChecked", function(e) {
+ w2.setShowMinimize(e.getData());
+ });
+
+ var chk8 = new qx.ui.form.CheckBox("Allow Close");
+ chk8.set({ left:140, top:70, checked:true });
+ chk8.addEventListener("changeChecked", function(e) {
+ w2.setAllowClose(e.getData());
+ });
+
+ var chk9 = new qx.ui.form.CheckBox("Allow Maximize");
+ chk9.set({ left:140, top:90, checked:true });
+ chk9.addEventListener("changeChecked", function(e) {
+ w2.setAllowMaximize(e.getData());
+ });
+
+ var chk10 = new qx.ui.form.CheckBox("Allow Minimize");
+ chk10.set({ left:140, top:110, checked:true });
+ chk10.addEventListener("changeChecked", function(e) {
+ w2.setAllowMinimize(e.getData());
+ });
+
+ var l1 = new qx.ui.basic.Atom("Move Method", "icon/16/apps/preferences-desktop-wallpaper.png");
+ l1.setLocation(0, 100);
+
+ var rb1 = new qx.ui.form.RadioButton("Frame", "frame");
+ rb1.setLocation(0, 120);
+
+ var rb2 = new qx.ui.form.RadioButton("Opaque", "opaque");
+ rb2.setLocation(0, 140);
+ rb2.setChecked(true);
+
+ var rb3 = new qx.ui.form.RadioButton("Translucent", "translucent");
+ rb3.setLocation(0, 160);
+
+ var rbm1 = new qx.manager.selection.RadioManager("move", [rb1, rb2, rb3]);
+
+ rbm1.addEventListener("changeSelected", function(e) {
+ w2.setMoveMethod(e.getData().getValue());
+ });
+
+ var l2 = new qx.ui.basic.Atom("Resize Method", "icon/16/apps/preferences-desktop-wallpaper.png");
+ l2.setLocation(0, 190);
+
+ var rb4 = new qx.ui.form.RadioButton("Frame", "frame");
+ rb4.setLocation(0, 210);
+ rb4.setChecked(true);
+
+ var rb5 = new qx.ui.form.RadioButton("Opaque", "opaque");
+ rb5.setLocation(0, 230);
+
+ var rb6 = new qx.ui.form.RadioButton("Lazy Opaque", "lazyopaque");
+ rb6.setLocation(0, 250);
+
+ var rb7 = new qx.ui.form.RadioButton("Translucent", "translucent");
+ rb7.setLocation(0, 270);
+
+ var rbm2 = new qx.manager.selection.RadioManager("resize", [rb4, rb5, rb6, rb7]);
+
+ rbm2.addEventListener("changeSelected", function(e) {
+ w2.setResizeMethod(e.getData().getValue());
+ });
+
+ var chk11 = new qx.ui.form.CheckBox("Show Statusbar");
+ chk11.setLocation(140, 140);
+ chk11.setChecked(false);
+ chk11.addEventListener("changeChecked", function(e) {
+ w2.setShowStatusbar(e.getData());
+ });
+
+ var btnpack = new qx.ui.form.Button("Pack Window", "icon/16/devices/media-optical.png");
+ btnpack.setLocation(140, 170);
+ btnpack.addEventListener("execute", function(e) {
+ w2.pack();
+ });
+
+ fs1.add(chk1, chk2, chk3, chk4, chk5, chk6, chk7, chk8, chk9, chk10, l1, rb1, rb2, rb3, l2, rb4, rb5, rb6, rb7, chk11, btnpack);
+ w2.add(fs1);
+
+ // Fill window 3
+ var btn1 = new qx.ui.form.Button("Open Modal Dialog 1", "icon/16/actions/edit-find.png");
+ btn1.setLocation(4, 4);
+ w3.add(btn1);
+
+ btn1.addEventListener("execute", function(e) {
+ wm1.open();
+ });
+
+ // Fill modal window 1
+ var btn2 = new qx.ui.form.Button("Open Modal Dialog 2", "icon/16/actions/edit-find.png");
+ btn2.setLocation(4, 4);
+ wm1.add(btn2);
+
+ btn2.addEventListener("execute", function(e) {
+ wm2.open();
+ });
+
+ var chkm1 = new qx.ui.form.CheckBox("Modal", null, null, true);
+ chkm1.setLocation(4, 50);
+ wm1.add(chkm1);
+
+ chkm1.addEventListener("changeChecked", function(e) {
+ wm1.setModal(e.getData());
+ });
+
+ // Fill modal window 2
+ var icon1 = new qx.ui.basic.Image("icon/32/status/dialog-error.png");
+ var warn1 = new qx.ui.basic.Label("Do you want to delete<br/>all your personal data?");
+
+ icon1.setTop(10);
+ icon1.setLeft(10);
+
+ warn1.setTop(10);
+ warn1.setLeft(48);
+
+ var btn3 = new qx.ui.form.Button("Yes", "icon/16/actions/dialog-ok.png");
+ var btn4 = new qx.ui.form.Button("No", "icon/16/actions/dialog-cancel.png");
+
+ btn3.addEventListener("execute", function(e) {
+ alert("Thank you!");
+ wm2.close();
+ });
+
+ btn4.addEventListener("execute", function(e) {
+ alert("Sorry, please click 'Yes'!");
+ });
+
+ btn3.set({ bottom : 10, right : 10 });
+ btn4.set({ bottom : 10, left : 10 });
+
+ wm2.add(btn3, btn4, icon1, warn1);
+
+ // Icon & Color Themes
+ //qx.manager.object.ImageManager.getInstance().createThemeList(w3, 20, 248);
+ //qx.manager.object.ColorManager.getInstance().createThemeList(w3, 4, 58);
+
+ w1.open();
+ w2.open();
+ w3.open();
+
+ return main;
+}
+
+
+qx.Proto._createThemesDemo = function() {
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ // Theming window
+ var win = new qx.ui.window.Window("Theming window", "icon/16/apps/preferences-desktop-wallpaper.png");
+ //win.set({ width:"auto", height:"auto" });
+ doc.add(win);
+
+ var vert = new qx.ui.layout.VerticalBoxLayout;
+ vert.set({ width:"auto", height:"auto", spacing:5, left:0, top:0, right:0, bottom:0 });
+ vert.setPadding(10);
+ win.add(vert);
+
+ var info = new qx.ui.basic.Atom("Click on one of the buttons and then view the "
+ + "other tabs to see the changes", "icon/32/actions/system-run.png");
+ //info.set({ border:qx.renderer.border.BorderPresets.getInstance().inset, backgroundColor:"white" });
+ info.setPadding(5);
+ vert.add(info);
+
+ var hor = new qx.ui.layout.HorizontalBoxLayout;
+ hor.set({ width:"auto", height:"auto", spacing:5 });
+ vert.add(hor);
+
+ var can = new qx.ui.layout.CanvasLayout;
+ can.set({ width:"auto", height:"auto" });
+ hor.add(can);
+ qx.manager.object.ImageManager.getInstance().createThemeList(can, 0, 0);
+
+ var can = new qx.ui.layout.CanvasLayout;
+ can.set({ width:"auto", height:"auto" });
+ hor.add(can);
+ qx.manager.object.ColorManager.getInstance().createThemeList(can, 0, 0);
+
+ // Put the window in lower right corner
+ win.set({ width:"auto", height:"auto" });
+
+ // Open button
+ var main = new qx.ui.layout.VerticalBoxLayout;
+ main.setPadding(10);
+ main.set({ width:"auto", height:"auto" });
+
+ var openThemeWinBt = new qx.ui.form.Button("Open theming window", "icon/16/actions/edit-find.png");
+ openThemeWinBt.addEventListener("execute", function(e) {
+ win.open();
+
+ // the following breaks in the current layouter
+ /*
+ win.setLeft(doc.getClientWidth() - win.getBoxWidth() - 5);
+ win.setTop(doc.getClientHeight() - win.getBoxHeight() - 5);
+ */
+
+ win.setLeft(doc.getClientWidth() - 500);
+ win.setTop(doc.getClientHeight() - 300);
+ });
+ main.add(openThemeWinBt);
+
+ return main;
+}
+
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/index.html
new file mode 100644
index 0000000000..0882fb05d8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/index.html
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Showcase</title>
+ <script type="text/javascript" src="script/showcase.js"></script>
+ </head>
+ <body>
+ <script type="text/javascript">
+ if (!qx.IS_SOURCE) {
+ qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_ERROR);
+ }
+ qx.core.Init.getInstance().setApplication(showcase.Application);
+ </script>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/C.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/C.po
new file mode 100644
index 0000000000..0e540ee675
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/C.po
@@ -0,0 +1,138 @@
+# (Default)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:948
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1039
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/ar.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/ar.po
new file mode 100644
index 0000000000..cae15d338b
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/ar.po
@@ -0,0 +1,138 @@
+# Arabic
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 10:40+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:875
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:894
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:925
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:928
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:931
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:934
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:952
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:970
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:988
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1009
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1012
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1015
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1017
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1020
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1022
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1025
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1027
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1030
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1032
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1035
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1037
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1040
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1043
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de.po
new file mode 100644
index 0000000000..20e93bb628
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de.po
@@ -0,0 +1,139 @@
+# German
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2007-01-23 17:46+0100\n"
+"Last-Translator: Fabian Jakobs <fabian DOT jakobs AT 1und1 DOT de>\n"
+"Language-Team: German\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr "Lokalisierung wählen"
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr "Ein Datum:"
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr "Rückgängig"
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr "Wiederholen"
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr "Aussschneiden"
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr "Kopieren"
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr "Einfügen"
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr "Löschen"
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr "Alles auswählen"
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr "Suchen"
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr "Weiter suchen"
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr "Command-Menü (Tastenkürzel)"
+
+#: source/class/showcase/Application.js:948
+msgid "Open Color Popup"
+msgstr "Öffne Farbauswahl"
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr "Grundfarben"
+
+#: source/class/showcase/Application.js:962
+msgid "Template Colors"
+msgstr "Beispielfarben"
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr "Vorherige Farben"
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr "Lokalisierungsinformationen:"
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr "Sprachkennung:"
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr "Landeskennung:"
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr "Mittellanges Datumsformat:"
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr "Mittellanges Datum:"
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr "Langes Datumsformat:"
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr "Langes Datum:"
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr "Vollständiges Datumsformat:"
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr "Vollständiges Datum:"
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr "kurzes Zeitformat:"
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr "Zeit (kurz):"
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr "Langes Zeitformat:"
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr "Zeit (lang):"
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr "Wochenanfang:"
+
+#: source/class/showcase/Application.js:1039
+msgid "Format of %1:"
+msgstr "Format von %1:"
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de_AT.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de_AT.po
new file mode 100644
index 0000000000..6c61661cea
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de_AT.po
@@ -0,0 +1,138 @@
+# German (Austria)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 10:40+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:875
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:894
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:925
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:928
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:931
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:934
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:952
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:970
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:988
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1009
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1012
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1015
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1017
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1020
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1022
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1025
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1027
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1030
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1032
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1035
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1037
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1040
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1043
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de_DE.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de_DE.po
new file mode 100644
index 0000000000..dd69a16b34
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/de_DE.po
@@ -0,0 +1,138 @@
+# German (Germany)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:948
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1039
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/en.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/en.po
new file mode 100644
index 0000000000..2be1f6dace
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/en.po
@@ -0,0 +1,138 @@
+# English
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2006-12-20 11:10+0100\n"
+"Language-Team: German <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:948
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1039
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/en_US.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/en_US.po
new file mode 100644
index 0000000000..cce67ebe79
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/en_US.po
@@ -0,0 +1,138 @@
+# English (US)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:948
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1039
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/es.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/es.po
new file mode 100644
index 0000000000..194372a348
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/es.po
@@ -0,0 +1,141 @@
+# Spanish
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2007-01-25 08:03+0100\n"
+"Last-Translator: Carsten Rammoser <carsten@rammoser.com>\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr "Selecciona localisación:"
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr "Una fecha:"
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr "Deshacer"
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr "Rehacer"
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr "Cortar"
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr "Copiar"
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr "Pegar"
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr "Borrar"
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr "Seleccionar todo"
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr "Búsqueda"
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr "Buscar otra vez"
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr "Menú de comando (claves del teclado)"
+
+#: source/class/showcase/Application.js:948
+#, fuzzy
+msgid "Open Color Popup"
+msgstr "Abrir ventana de color"
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr "Colores básicos"
+
+#: source/class/showcase/Application.js:962
+#, fuzzy
+msgid "Template Colors"
+msgstr "Colores de fondo"
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr "Últimos colores"
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr "Información de la localisación"
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr "Localisación:"
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr "Código regional:"
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr "Formato de fecha mediano:"
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr "Fecha mediano:"
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr "Formato de fecha largo:"
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr "Fecha largo:"
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr "Formato de fecha completo:"
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr "Fecha completo:"
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr "Formato de hora corto:"
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr "Hora corto:"
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr "Formato de hora largo:"
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr "Hora largo:"
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr "Inicio de semana:"
+
+#: source/class/showcase/Application.js:1039
+#, fuzzy
+msgid "Format of %1:"
+msgstr "Formato de %1:"
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/es_ES.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/es_ES.po
new file mode 100644
index 0000000000..982136d5a2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/es_ES.po
@@ -0,0 +1,138 @@
+# Spanish (Spain)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:948
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1039
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/fr.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/fr.po
new file mode 100644
index 0000000000..09c3a9565d
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/fr.po
@@ -0,0 +1,138 @@
+# French
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:948
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1039
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/fr_FR.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/fr_FR.po
new file mode 100644
index 0000000000..cfde15f862
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/fr_FR.po
@@ -0,0 +1,138 @@
+# French (France)
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 12:54+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:871
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:890
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:917
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:918
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:920
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:923
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:948
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:958
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:984
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1005
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1008
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1011
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1013
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1016
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1018
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1021
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1023
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1026
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1028
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1031
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1033
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1036
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1039
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/it.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/it.po
new file mode 100644
index 0000000000..7dcc1edde0
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/it.po
@@ -0,0 +1,142 @@
+# Italian
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 10:40+0100\n"
+"PO-Revision-Date: 2006-12-22 22:06+0100\n"
+"Last-Translator: Alessandro Sala <alessandro.sala@mclink.net>\n"
+"Language-Team: Italiano <it@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: source/class/showcase/Application.js:875
+msgid "Choose a locale: "
+msgstr "Scegli una localizzazione:"
+
+#: source/class/showcase/Application.js:894
+msgid "A date: "
+msgstr "Una data:"
+
+#: source/class/showcase/Application.js:921
+msgid "Undo"
+msgstr "Annulla"
+
+#: source/class/showcase/Application.js:922
+msgid "Redo"
+msgstr "Ripeti"
+
+#: source/class/showcase/Application.js:924
+msgid "Cut"
+msgstr "Taglia"
+
+#: source/class/showcase/Application.js:925
+msgid "Copy"
+msgstr "Copia"
+
+#: source/class/showcase/Application.js:926
+msgid "Paste"
+msgstr "Incolla"
+
+#: source/class/showcase/Application.js:927
+msgid "Delete"
+msgstr "Cancella"
+
+#: source/class/showcase/Application.js:928
+msgid "Select All"
+msgstr "Seleziona tutto"
+
+#: source/class/showcase/Application.js:930
+msgid "Search"
+msgstr "Cerca"
+
+#: source/class/showcase/Application.js:931
+msgid "Search Again"
+msgstr "Carca ancora"
+
+#: source/class/showcase/Application.js:934
+msgid "Command Menu (keyboard shortcuts)"
+msgstr "Menu dei comandi (abbreviazioni da tastiera)"
+
+#: source/class/showcase/Application.js:952
+msgid "Open Color Popup"
+msgstr "Apri il selettore dei colori"
+
+#: source/class/showcase/Application.js:962
+msgid "Basic Colors"
+msgstr "Colori Base"
+
+#: source/class/showcase/Application.js:966
+msgid "Template Colors"
+msgstr "Colori Modello"
+
+#: source/class/showcase/Application.js:970
+msgid "Recent Colors"
+msgstr "Colori Recenti"
+
+#: source/class/showcase/Application.js:988
+msgid "Locale information"
+msgstr "Informazione sulla localizzazione"
+
+#: source/class/showcase/Application.js:1009
+msgid "Locale:"
+msgstr "Localizzazione:"
+
+#: source/class/showcase/Application.js:1012
+msgid "Territory code:"
+msgstr "Codice del territorio:"
+
+#: source/class/showcase/Application.js:1015
+msgid "Date format medium:"
+msgstr "Formato data medio:"
+
+#: source/class/showcase/Application.js:1017
+msgid "Date medium:"
+msgstr "Data in formato medio:"
+
+#: source/class/showcase/Application.js:1020
+msgid "Date format long:"
+msgstr "Formato data lungo:"
+
+#: source/class/showcase/Application.js:1022
+msgid "Date long:"
+msgstr "Data in formato lungo:"
+
+#: source/class/showcase/Application.js:1025
+msgid "Date format full:"
+msgstr "Formato data completo:"
+
+#: source/class/showcase/Application.js:1027
+msgid "Date full:"
+msgstr "Data in formato completo:"
+
+#: source/class/showcase/Application.js:1030
+msgid "Time format short:"
+msgstr "Formato orario breve:"
+
+#: source/class/showcase/Application.js:1032
+msgid "Time short:"
+msgstr "Orario in formato breve:"
+
+#: source/class/showcase/Application.js:1035
+msgid "Time format long:"
+msgstr "Formato orario lungo:"
+
+#: source/class/showcase/Application.js:1037
+msgid "Time long:"
+msgstr "Orario in formato lungo:"
+
+#: source/class/showcase/Application.js:1040
+msgid "Week start:"
+msgstr "Inizio della settimana:"
+
+#: source/class/showcase/Application.js:1043
+msgid "Format of %1:"
+msgstr "Formato di %1"
+
+#~ msgid "Locale: "
+#~ msgstr "Localizzazione:"
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/ru.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/ru.po
new file mode 100644
index 0000000000..3273aae25f
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/ru.po
@@ -0,0 +1,138 @@
+# Russian
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 10:40+0100\n"
+"PO-Revision-Date: 2006-12-21 08:25+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:875
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:894
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:925
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:928
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:931
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:934
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:952
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:970
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:988
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1009
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1012
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1015
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1017
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1020
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1022
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1025
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1027
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1030
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1032
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1035
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1037
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1040
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1043
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/sv.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/sv.po
new file mode 100644
index 0000000000..d7b4e79a24
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/sv.po
@@ -0,0 +1,138 @@
+# Swedish
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 10:40+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:875
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:894
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:925
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:928
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:931
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:934
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:952
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:970
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:988
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1009
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1012
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1015
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1017
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1020
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1022
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1025
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1027
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1030
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1032
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1035
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1037
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1040
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1043
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/tr.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/tr.po
new file mode 100644
index 0000000000..2c70c71517
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/tr.po
@@ -0,0 +1,138 @@
+# Turkish
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 10:40+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:875
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:894
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:925
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:928
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:931
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:934
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:952
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:970
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:988
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1009
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1012
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1015
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1017
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1020
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1022
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1025
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1027
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1030
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1032
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1035
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1037
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1040
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1043
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/zh.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/zh.po
new file mode 100644
index 0000000000..37f7df210e
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/showcase/source/translation/zh.po
@@ -0,0 +1,138 @@
+# Chinese
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: qooxdoo showcase\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-01-26 10:40+0100\n"
+"PO-Revision-Date: 2006-12-20 10:58+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: source/class/showcase/Application.js:875
+msgid "Choose a locale: "
+msgstr ""
+
+#: source/class/showcase/Application.js:894
+msgid "A date: "
+msgstr ""
+
+#: source/class/showcase/Application.js:921
+msgid "Undo"
+msgstr ""
+
+#: source/class/showcase/Application.js:922
+msgid "Redo"
+msgstr ""
+
+#: source/class/showcase/Application.js:924
+msgid "Cut"
+msgstr ""
+
+#: source/class/showcase/Application.js:925
+msgid "Copy"
+msgstr ""
+
+#: source/class/showcase/Application.js:926
+msgid "Paste"
+msgstr ""
+
+#: source/class/showcase/Application.js:927
+msgid "Delete"
+msgstr ""
+
+#: source/class/showcase/Application.js:928
+msgid "Select All"
+msgstr ""
+
+#: source/class/showcase/Application.js:930
+msgid "Search"
+msgstr ""
+
+#: source/class/showcase/Application.js:931
+msgid "Search Again"
+msgstr ""
+
+#: source/class/showcase/Application.js:934
+msgid "Command Menu (keyboard shortcuts)"
+msgstr ""
+
+#: source/class/showcase/Application.js:952
+msgid "Open Color Popup"
+msgstr ""
+
+#: source/class/showcase/Application.js:962
+msgid "Basic Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:966
+msgid "Template Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:970
+msgid "Recent Colors"
+msgstr ""
+
+#: source/class/showcase/Application.js:988
+msgid "Locale information"
+msgstr ""
+
+#: source/class/showcase/Application.js:1009
+msgid "Locale:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1012
+msgid "Territory code:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1015
+msgid "Date format medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1017
+msgid "Date medium:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1020
+msgid "Date format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1022
+msgid "Date long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1025
+msgid "Date format full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1027
+msgid "Date full:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1030
+msgid "Time format short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1032
+msgid "Time short:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1035
+msgid "Time format long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1037
+msgid "Time long:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1040
+msgid "Week start:"
+msgstr ""
+
+#: source/class/showcase/Application.js:1043
+msgid "Format of %1:"
+msgstr ""
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/Makefile b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/Makefile
new file mode 100644
index 0000000000..32800d03c8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/Makefile
@@ -0,0 +1,107 @@
+################################################################################
+#
+# qooxdoo - the new era of web development
+#
+# http://qooxdoo.org
+#
+# Copyright:
+# 2006-2007 1&1 Internet AG, Germany, http://www.1and1.org
+#
+# License:
+# LGPL: http://www.gnu.org/licenses/lgpl.html
+# EPL: http://www.eclipse.org/org/documents/epl-v10.php
+# See the LICENSE file in the project's top-level directory for details.
+#
+# Authors:
+# * Sebastian Werner (wpbasti)
+# * Andreas Ecker (ecker)
+# * Fabian Jakobs (fjakobs)
+#
+################################################################################
+
+################################################################################
+# BASIC SETTINGS
+################################################################################
+
+#
+# Location of your qooxdoo distribution
+# Could be relative from this location or absolute
+#
+QOOXDOO_PATH = ../../..
+
+#
+# The same as above, but from the webserver point of view
+# Starting point is the application HTML file of the source folder.
+# In most cases just add a "/.." compared to above
+#
+QOOXDOO_URI = ../../../..
+
+#
+# Namespace of your application e.g. custom
+#
+APPLICATION_NAMESPACE = webmail
+
+#
+# Titles used in your API viewer and during the build process
+#
+APPLICATION_MAKE_TITLE = WEBMAIL
+APPLICATION_API_TITLE = WebMail
+
+#
+# Additional files (space separated list)
+#
+APPLICATION_FILES = index.html
+
+#
+# XHTML support
+#
+APPLICATION_TEMPLATE_INPUT = index.xhtml.tmpl
+APPLICATION_TEMPLATE_OUTPUT = index.xhtml
+
+
+
+
+
+################################################################################
+# ADVANCED SETTINGS
+################################################################################
+
+#
+# Enable resource filtering in API viewer
+#
+APPLICATION_RESOURCE_FILTER = true
+
+#
+# We don't need the full source code
+#
+APPLICATION_COMPLETE_SOURCE = false
+
+#
+# Disable line breaks
+#
+APPLICATION_LINEBREAKS_BUILD = false
+APPLICATION_LINEBREAKS_SOURCE = false
+
+#
+# qooxdoo.org sync
+#
+APPLICATION_PUBLISH_PATH = root@qooxdoo.org:/var/www/qooxdoo/demo/$(FRAMEWORK_VERSION)/$(APPLICATION_NAMESPACE)
+
+
+
+
+
+################################################################################
+# INCLUDE CORE
+################################################################################
+
+ifneq ($(QOOXDOO_PATH),PLEASE_DEFINE_QOOXDOO_PATH)
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/targets.mk
+ include $(QOOXDOO_PATH)/frontend/framework/tool/make/application.mk
+endif
+
+error:
+ @echo " * Please configure QOOXDOO_PATH"
+
+distclean:
+ @rm -f source/index.xhtml
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/class/webmail/Application.js b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/class/webmail/Application.js
new file mode 100644
index 0000000000..e8e1ffb0a8
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/class/webmail/Application.js
@@ -0,0 +1,147 @@
+/* ************************************************************************
+
+ qooxdoo - the new era of web development
+
+ http://qooxdoo.org
+
+ Copyright:
+ 2004-2007 1&1 Internet AG, Germany, http://www.1and1.org
+
+ License:
+ LGPL: http://www.gnu.org/licenses/lgpl.html
+ EPL: http://www.eclipse.org/org/documents/epl-v10.php
+ See the LICENSE file in the project's top-level directory for details.
+
+ Authors:
+ * Sebastian Werner (wpbasti)
+ * Andreas Ecker (ecker)
+ * Fabian Jakobs (fjakobs)
+
+************************************************************************ */
+
+/* ************************************************************************
+
+#embed(qx.icontheme/16/categories/applications-internet.png)
+#embed(qx.icontheme/16/actions/mail.png)
+#embed(qx.icontheme/16/actions/system-run.png)
+#embed(qx.icontheme/16/apps/accessories-notes.png)
+
+************************************************************************ */
+
+
+/**
+ * A small example how a webmail application can look and feel using qooxdoo.
+ */
+qx.OO.defineClass("webmail.Application", qx.component.AbstractApplication,
+function () {
+ qx.component.AbstractApplication.call(this);
+});
+
+
+/*
+---------------------------------------------------------------------------
+ METHODS
+---------------------------------------------------------------------------
+*/
+
+qx.Proto.main = function(e)
+{
+ var doc = qx.ui.core.ClientDocument.getInstance();
+
+ var dockLayout = new qx.ui.layout.DockLayout;
+
+ dockLayout.setLocation(0, 0);
+ dockLayout.setDimension(800, 600);
+ dockLayout.setBackgroundColor("white");
+
+ doc.add(dockLayout);
+
+ var menubar = new qx.ui.menubar.MenuBar;
+ var toolbar = new qx.ui.toolbar.ToolBar;
+ var tree = new qx.ui.tree.Tree("Inbox");
+ var status = new qx.ui.basic.Atom("Status", "icon/16/categories/applications-internet.png");
+
+ tree.setWidth(200);
+ tree.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+ tree.add(new qx.ui.tree.TreeFolder("Drafts"));
+ tree.add(new qx.ui.tree.TreeFolder("Sent"));
+ tree.add(new qx.ui.tree.TreeFolder("Trash"));
+ tree.add(new qx.ui.tree.TreeFolder("Junk"));
+
+ status.setWidth(null);
+ status.setBorder(qx.renderer.border.BorderPresets.getInstance().thinInset);
+ status.setHorizontalChildrenAlign("left");
+ status.setPadding(2, 4);
+ status.setBackgroundColor("threedface");
+
+ dockLayout.addTop(menubar);
+ dockLayout.addTop(toolbar);
+ dockLayout.addBottom(status);
+ dockLayout.addLeft(tree);
+
+
+
+ var btns = [
+ { text : "New", icon : "icon/16/actions/mail.png" },
+ { text : "Send/Receive", icon : "icon/16/actions/system-run.png" },
+ { text : "Adressbook", icon : "icon/16/apps/accessories-notes.png" }
+ ];
+
+ for (var i=0; i<btns.length; i++) {
+ toolbar.add(new qx.ui.toolbar.Button(btns[i].text, btns[i].icon));
+ };
+
+
+
+ var filemnu = new qx.ui.menu.Menu;
+ var editmnu = new qx.ui.menu.Menu;
+ var optimnu = new qx.ui.menu.Menu;
+ var helpmnu = new qx.ui.menu.Menu;
+
+ filemnu.add(new qx.ui.menu.Button("New Mail"));
+ filemnu.add(new qx.ui.menu.Button("Exit"));
+
+ editmnu.add(new qx.ui.menu.Button("Cut"));
+ editmnu.add(new qx.ui.menu.Button("Copy"));
+ editmnu.add(new qx.ui.menu.Button("Paste"));
+
+ optimnu.add(new qx.ui.menu.Button("View"));
+ optimnu.add(new qx.ui.menu.Button("Settings"));
+
+ helpmnu.add(new qx.ui.menu.Button("Help"));
+ helpmnu.add(new qx.ui.menu.Button("About"));
+
+ var filemn = new qx.ui.menubar.Button("File", filemnu);
+ var editmn = new qx.ui.menubar.Button("Edit", editmnu);
+ var optimn = new qx.ui.menubar.Button("Options", optimnu);
+ var helpmn = new qx.ui.menubar.Button("Help", helpmnu);
+
+ menubar.add(filemn, editmn, optimn, new qx.ui.basic.HorizontalSpacer, helpmn);
+ doc.add(filemnu, editmnu, optimnu, helpmnu);
+
+
+
+ var ld = [];
+ var lt = [ "Image", "Text", "PDF", "Illustration", "Document" ];
+
+ for (var i=0, t; i<333; i++)
+ {
+ t=Math.round(Math.random()*4);
+ ld.push({ subject : { text : "Subject " + i }, from : { text : "qooxdoo User" }, date : { text : "01/26/2006" }});
+ };
+
+ var lc =
+ {
+ subject : { label : "Subject", width : 200, type : "text" },
+ from : { label : "From", width : 100, type : "text" },
+ date: { label : "Date", width : 100, type : "text" }
+ };
+
+ var view = new qx.ui.listview.ListView(ld, lc);
+
+ view.setLocation(200, 47);
+ view.setDimension(600, 530);
+ view.setBorder(qx.renderer.border.BorderPresets.getInstance().inset);
+
+ doc.add(view);
+}; \ No newline at end of file
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/index.html b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/index.html
new file mode 100644
index 0000000000..0eb9df08b4
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/index.html
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Web Mail</title>
+ <script type="text/javascript" src="script/webmail.js"></script>
+ </head>
+ <body>
+ <script type="text/javascript">
+ if (!qx.IS_SOURCE) {
+ qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_ERROR);
+ }
+ qx.core.Init.getInstance().setApplication(webmail.Application);
+ </script>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/index.xhtml.tmpl b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/index.xhtml.tmpl
new file mode 100644
index 0000000000..9eadf1c666
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/index.xhtml.tmpl
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>qooxdoo &raquo; Demo &raquo; Web Mail</title>
+ <!-- qooxdoo-script-block -->
+ </head>
+ <body>
+ <script type="text/javascript">
+ if (!qx.IS_SOURCE) {
+ qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_ERROR);
+ }
+ qx.core.Init.getInstance().setApplication(webmail.Application);
+ </script>
+ </body>
+</html>
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/C.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/C.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/C.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/de.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/de.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/de.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/en.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/en.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/en.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/es.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/es.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/es.po
diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/fr.po b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/fr.po
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/webapps/qooxdoo-0.6.5-sdk/frontend/application/webmail/source/translation/fr.po