rsence-pre 2.1.0.1.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. data/.yardopts +10 -0
  2. data/INSTALL.rdoc +330 -0
  3. data/LICENSE.txt +622 -0
  4. data/README.rdoc +98 -0
  5. data/VERSION +1 -0
  6. data/bin/rsence +25 -0
  7. data/bin/rsence-pre +25 -0
  8. data/conf/default_conf.yaml +346 -0
  9. data/conf/default_strings.yaml +76 -0
  10. data/conf/rsence_command_strings.yaml +444 -0
  11. data/docs/ExampleGuiPlugin.rdoc +193 -0
  12. data/docs/JavascriptBundles.rdoc +0 -0
  13. data/docs/PluginBundleInfo.rdoc +173 -0
  14. data/docs/PluginBundles.rdoc +96 -0
  15. data/docs/Values.rdoc +163 -0
  16. data/js/comm/autosync/autosync.js +17 -0
  17. data/js/comm/autosync/js.inc +0 -0
  18. data/js/comm/comm.js +203 -0
  19. data/js/comm/js.inc +0 -0
  20. data/js/comm/jsloader/js.inc +0 -0
  21. data/js/comm/jsloader/jsloader.js +112 -0
  22. data/js/comm/queue/js.inc +0 -0
  23. data/js/comm/queue/queue.js +184 -0
  24. data/js/comm/session/js.inc +0 -0
  25. data/js/comm/session/session.js +52 -0
  26. data/js/comm/sessionwatcher/js.inc +0 -0
  27. data/js/comm/sessionwatcher/sessionwatcher.js +44 -0
  28. data/js/comm/transporter/js.inc +0 -0
  29. data/js/comm/transporter/transporter.js +261 -0
  30. data/js/comm/urlresponder/js.inc +0 -0
  31. data/js/comm/urlresponder/urlresponder.js +149 -0
  32. data/js/comm/values/js.inc +0 -0
  33. data/js/comm/values/values.js +433 -0
  34. data/js/controls/button/button.js +72 -0
  35. data/js/controls/button/js.inc +0 -0
  36. data/js/controls/button/themes/bright/button.css +89 -0
  37. data/js/controls/button/themes/bright/button.html +7 -0
  38. data/js/controls/button/themes/bright/button_parts1-ie6.gif +0 -0
  39. data/js/controls/button/themes/bright/button_parts1.png +0 -0
  40. data/js/controls/button/themes/default/button.css +89 -0
  41. data/js/controls/button/themes/default/button.html +7 -0
  42. data/js/controls/button/themes/default/button_parts1-ie6.gif +0 -0
  43. data/js/controls/button/themes/default/button_parts1.png +0 -0
  44. data/js/controls/checkbox/checkbox.js +49 -0
  45. data/js/controls/checkbox/js.inc +0 -0
  46. data/js/controls/checkbox/themes/default/checkbox.css +69 -0
  47. data/js/controls/checkbox/themes/default/checkbox.html +5 -0
  48. data/js/controls/checkbox/themes/default/checkbox_parts1-ie6.gif +0 -0
  49. data/js/controls/checkbox/themes/default/checkbox_parts1.png +0 -0
  50. data/js/controls/dialogs/alert_sheet/alert_sheet.js +63 -0
  51. data/js/controls/dialogs/alert_sheet/js.inc +0 -0
  52. data/js/controls/dialogs/confirm_sheet/confirm_sheet.js +37 -0
  53. data/js/controls/dialogs/confirm_sheet/js.inc +0 -0
  54. data/js/controls/dialogs/sheet/js.inc +0 -0
  55. data/js/controls/dialogs/sheet/sheet.js +84 -0
  56. data/js/controls/dialogs/sheet/themes/default/sheet.css +64 -0
  57. data/js/controls/dialogs/sheet/themes/default/sheet.html +14 -0
  58. data/js/controls/dialogs/sheet/themes/default/sheet_bg-ie6.gif +0 -0
  59. data/js/controls/dialogs/sheet/themes/default/sheet_bg.png +0 -0
  60. data/js/controls/dialogs/sheet/themes/default/sheet_dim-ie6.gif +0 -0
  61. data/js/controls/dialogs/sheet/themes/default/sheet_dim.png +0 -0
  62. data/js/controls/dialogs/sheet/themes/default/sheet_parts1-ie6.gif +0 -0
  63. data/js/controls/dialogs/sheet/themes/default/sheet_parts1.png +0 -0
  64. data/js/controls/dialogs/sheet/themes/default/sheet_parts2-ie6.gif +0 -0
  65. data/js/controls/dialogs/sheet/themes/default/sheet_parts2.png +0 -0
  66. data/js/controls/dialogs/sheet/themes/default/sheet_warning-ie6.gif +0 -0
  67. data/js/controls/dialogs/sheet/themes/default/sheet_warning.png +0 -0
  68. data/js/controls/imageview/imageview.js +109 -0
  69. data/js/controls/imageview/js.inc +0 -0
  70. data/js/controls/imageview/themes/default/blank.gif +0 -0
  71. data/js/controls/passwordcontrol/js.inc +0 -0
  72. data/js/controls/passwordcontrol/passwordcontrol.js +23 -0
  73. data/js/controls/passwordcontrol/themes/default/passwordcontrol.css +0 -0
  74. data/js/controls/passwordcontrol/themes/default/passwordcontrol.html +18 -0
  75. data/js/controls/progress/progressbar/js.inc +0 -0
  76. data/js/controls/progress/progressbar/progressbar.js +40 -0
  77. data/js/controls/progress/progressbar/themes/default/progressbar.css +16 -0
  78. data/js/controls/progress/progressbar/themes/default/progressbar.html +2 -0
  79. data/js/controls/progress/progressindicator/js.inc +0 -0
  80. data/js/controls/progress/progressindicator/progressindicator.js +44 -0
  81. data/js/controls/radiobutton/js.inc +0 -0
  82. data/js/controls/radiobutton/radiobutton.js +43 -0
  83. data/js/controls/radiobutton/themes/default/radiobutton.css +69 -0
  84. data/js/controls/radiobutton/themes/default/radiobutton.html +5 -0
  85. data/js/controls/radiobutton/themes/default/radiobutton_parts1-ie6.gif +0 -0
  86. data/js/controls/radiobutton/themes/default/radiobutton_parts1.png +0 -0
  87. data/js/controls/sliders/slider/js.inc +0 -0
  88. data/js/controls/sliders/slider/slider.js +357 -0
  89. data/js/controls/sliders/slider/themes/default/hslider_tracks-ie6.gif +0 -0
  90. data/js/controls/sliders/slider/themes/default/hslider_tracks.png +0 -0
  91. data/js/controls/sliders/slider/themes/default/slider.css +108 -0
  92. data/js/controls/sliders/slider/themes/default/slider.html +5 -0
  93. data/js/controls/sliders/slider/themes/default/slider_thumbs-ie6.gif +0 -0
  94. data/js/controls/sliders/slider/themes/default/slider_thumbs.png +0 -0
  95. data/js/controls/sliders/vslider/js.inc +0 -0
  96. data/js/controls/sliders/vslider/themes/default/vslider.css +52 -0
  97. data/js/controls/sliders/vslider/themes/default/vslider.html +5 -0
  98. data/js/controls/sliders/vslider/themes/default/vslider_tracks-ie6.gif +0 -0
  99. data/js/controls/sliders/vslider/themes/default/vslider_tracks.png +0 -0
  100. data/js/controls/sliders/vslider/vslider.js +41 -0
  101. data/js/controls/stepper/js.inc +0 -0
  102. data/js/controls/stepper/stepper.js +213 -0
  103. data/js/controls/stepper/themes/default/stepper-ie6.gif +0 -0
  104. data/js/controls/stepper/themes/default/stepper.css +14 -0
  105. data/js/controls/stepper/themes/default/stepper.html +2 -0
  106. data/js/controls/stepper/themes/default/stepper.png +0 -0
  107. data/js/controls/stringview/js.inc +0 -0
  108. data/js/controls/stringview/stringview.js +49 -0
  109. data/js/controls/stringview/themes/default/stringview.css +8 -0
  110. data/js/controls/stringview/themes/default/stringview.html +1 -0
  111. data/js/controls/tab/js.inc +0 -0
  112. data/js/controls/tab/tab.js +280 -0
  113. data/js/controls/tab/themes/bright/tab.css +76 -0
  114. data/js/controls/tab/themes/bright/tab.html +6 -0
  115. data/js/controls/tab/themes/bright/tab_bg_color-ie6.gif +0 -0
  116. data/js/controls/tab/themes/bright/tab_bg_color.png +0 -0
  117. data/js/controls/tab/themes/bright/tab_border_pattern-ie6.gif +0 -0
  118. data/js/controls/tab/themes/bright/tab_border_pattern.png +0 -0
  119. data/js/controls/tab/themes/bright/tab_parts1-ie6.gif +0 -0
  120. data/js/controls/tab/themes/bright/tab_parts1.png +0 -0
  121. data/js/controls/tab/themes/default/tab.css +77 -0
  122. data/js/controls/tab/themes/default/tab.html +6 -0
  123. data/js/controls/tab/themes/default/tab_bg_color-ie6.gif +0 -0
  124. data/js/controls/tab/themes/default/tab_bg_color.png +0 -0
  125. data/js/controls/tab/themes/default/tab_border_pattern-ie6.gif +0 -0
  126. data/js/controls/tab/themes/default/tab_border_pattern.png +0 -0
  127. data/js/controls/tab/themes/default/tab_parts1-ie6.gif +0 -0
  128. data/js/controls/tab/themes/default/tab_parts1.png +0 -0
  129. data/js/controls/textarea/js.inc +0 -0
  130. data/js/controls/textarea/textarea.js +24 -0
  131. data/js/controls/textarea/themes/default/textarea.css +21 -0
  132. data/js/controls/textarea/themes/default/textarea.html +18 -0
  133. data/js/controls/textcontrol/js.inc +0 -0
  134. data/js/controls/textcontrol/textcontrol.js +374 -0
  135. data/js/controls/textcontrol/themes/default/textcontrol.css +107 -0
  136. data/js/controls/textcontrol/themes/default/textcontrol.html +18 -0
  137. data/js/controls/textcontrol/themes/default/textcontrol_parts1-ie6.gif +0 -0
  138. data/js/controls/textcontrol/themes/default/textcontrol_parts1.png +0 -0
  139. data/js/controls/textcontrol/themes/default/textcontrol_parts2-ie6.gif +0 -0
  140. data/js/controls/textcontrol/themes/default/textcontrol_parts2.png +0 -0
  141. data/js/controls/textcontrol/themes/default/textcontrol_parts3-ie6.gif +0 -0
  142. data/js/controls/textcontrol/themes/default/textcontrol_parts3.png +0 -0
  143. data/js/controls/uploader/js.inc +0 -0
  144. data/js/controls/uploader/themes/default/upload_progress.gif +0 -0
  145. data/js/controls/uploader/themes/default/uploader.css +108 -0
  146. data/js/controls/uploader/themes/default/uploader.html +27 -0
  147. data/js/controls/uploader/uploader.js +154 -0
  148. data/js/controls/validatorview/js.inc +0 -0
  149. data/js/controls/validatorview/themes/default/validator-ie6.gif +0 -0
  150. data/js/controls/validatorview/themes/default/validator.png +0 -0
  151. data/js/controls/validatorview/themes/default/validatorview.css +0 -0
  152. data/js/controls/validatorview/themes/default/validatorview.html +0 -0
  153. data/js/controls/validatorview/validatorview.js +62 -0
  154. data/js/controls/window/js.inc +0 -0
  155. data/js/controls/window/themes/default/window.css +219 -0
  156. data/js/controls/window/themes/default/window.html +17 -0
  157. data/js/controls/window/themes/default/window_bg_active-ie6.gif +0 -0
  158. data/js/controls/window/themes/default/window_bg_active.png +0 -0
  159. data/js/controls/window/themes/default/window_bg_inactive-ie6.gif +0 -0
  160. data/js/controls/window/themes/default/window_bg_inactive.png +0 -0
  161. data/js/controls/window/themes/default/window_buttons-ie6.gif +0 -0
  162. data/js/controls/window/themes/default/window_buttons.png +0 -0
  163. data/js/controls/window/themes/default/window_parts1-ie6.gif +0 -0
  164. data/js/controls/window/themes/default/window_parts1.png +0 -0
  165. data/js/controls/window/themes/default/window_parts2-ie6.gif +0 -0
  166. data/js/controls/window/themes/default/window_parts2.png +0 -0
  167. data/js/controls/window/window.js +286 -0
  168. data/js/core/class/class.js +318 -0
  169. data/js/core/class/js.inc +0 -0
  170. data/js/core/elem/elem.js +1383 -0
  171. data/js/core/elem/js.inc +0 -0
  172. data/js/core/event/event.js +153 -0
  173. data/js/core/event/js.inc +0 -0
  174. data/js/core/iefix/ie_css_element.htc +5 -0
  175. data/js/core/iefix/ie_css_style.htc +5 -0
  176. data/js/core/iefix/iefix.js +359 -0
  177. data/js/core/iefix/js.inc +0 -0
  178. data/js/core/rsence_ns/js.inc +0 -0
  179. data/js/core/rsence_ns/rsence_ns.js +21 -0
  180. data/js/datetime/calendar/calendar.js +198 -0
  181. data/js/datetime/calendar/js.inc +0 -0
  182. data/js/datetime/calendar/themes/default/calendar.css +108 -0
  183. data/js/datetime/calendar/themes/default/calendar.html +9 -0
  184. data/js/datetime/calendar/themes/default/calendar_arrows-ie6.gif +0 -0
  185. data/js/datetime/calendar/themes/default/calendar_arrows.png +0 -0
  186. data/js/datetime/datetimevalue/datetimevalue.js +247 -0
  187. data/js/datetime/datetimevalue/js.inc +0 -0
  188. data/js/datetime/timesheet/js.inc +0 -0
  189. data/js/datetime/timesheet/themes/default/timesheet.css +30 -0
  190. data/js/datetime/timesheet/themes/default/timesheet.html +2 -0
  191. data/js/datetime/timesheet/timesheet.js +183 -0
  192. data/js/datetime/timesheet_item/js.inc +0 -0
  193. data/js/datetime/timesheet_item/themes/default/timesheet_item.css +42 -0
  194. data/js/datetime/timesheet_item/themes/default/timesheet_item.html +8 -0
  195. data/js/datetime/timesheet_item/timesheet_item.js +248 -0
  196. data/js/datetime/timesheet_item_edit/js.inc +0 -0
  197. data/js/datetime/timesheet_item_edit/timesheet_item_edit.js +274 -0
  198. data/js/foundation/application/application.js +208 -0
  199. data/js/foundation/application/js.inc +0 -0
  200. data/js/foundation/control/control.js +339 -0
  201. data/js/foundation/control/controldefaults/controldefaults.js +56 -0
  202. data/js/foundation/control/controldefaults/js.inc +0 -0
  203. data/js/foundation/control/dummyvalue/dummyvalue.js +51 -0
  204. data/js/foundation/control/dummyvalue/js.inc +0 -0
  205. data/js/foundation/control/dyncontrol/dyncontrol.js +500 -0
  206. data/js/foundation/control/dyncontrol/js.inc +0 -0
  207. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.css +0 -0
  208. data/js/foundation/control/dyncontrol/themes/default/dyncontrol.html +0 -0
  209. data/js/foundation/control/eventresponder/eventresponder.js +750 -0
  210. data/js/foundation/control/eventresponder/js.inc +0 -0
  211. data/js/foundation/control/js.inc +0 -0
  212. data/js/foundation/control/valuematrix/js.inc +0 -0
  213. data/js/foundation/control/valuematrix/valuematrix.js +135 -0
  214. data/js/foundation/control/valueresponder/js.inc +0 -0
  215. data/js/foundation/control/valueresponder/valueresponder.js +79 -0
  216. data/js/foundation/eventmanager/eventmanager.js +991 -0
  217. data/js/foundation/eventmanager/js.inc +0 -0
  218. data/js/foundation/geom/point/js.inc +0 -0
  219. data/js/foundation/geom/point/point.js +202 -0
  220. data/js/foundation/geom/rect/js.inc +0 -0
  221. data/js/foundation/geom/rect/rect.js +651 -0
  222. data/js/foundation/json_renderer/js.inc +0 -0
  223. data/js/foundation/json_renderer/json_renderer.js +246 -0
  224. data/js/foundation/system/js.inc +0 -0
  225. data/js/foundation/system/system.js +381 -0
  226. data/js/foundation/thememanager/js.inc +0 -0
  227. data/js/foundation/thememanager/thememanager.js +393 -0
  228. data/js/foundation/value/js.inc +0 -0
  229. data/js/foundation/value/value.js +183 -0
  230. data/js/foundation/view/js.inc +0 -0
  231. data/js/foundation/view/markupview/js.inc +0 -0
  232. data/js/foundation/view/markupview/markupview.js +114 -0
  233. data/js/foundation/view/morphanimation/js.inc +0 -0
  234. data/js/foundation/view/morphanimation/morphanimation.js +237 -0
  235. data/js/foundation/view/view.js +1812 -0
  236. data/js/foundation/view/viewdefaults/js.inc +0 -0
  237. data/js/foundation/view/viewdefaults/viewdefaults.js +26 -0
  238. data/js/lists/checkboxlist/checkboxlist.js +171 -0
  239. data/js/lists/checkboxlist/js.inc +0 -0
  240. data/js/lists/listitems/js.inc +0 -0
  241. data/js/lists/listitems/listitems.js +88 -0
  242. data/js/lists/propertylist/js.inc +0 -0
  243. data/js/lists/propertylist/propertylist.js +326 -0
  244. data/js/lists/radiobuttonlist/js.inc +0 -0
  245. data/js/lists/radiobuttonlist/radiobuttonlist.js +116 -0
  246. data/js/util/reloadapp/js.inc +0 -0
  247. data/js/util/reloadapp/reloadapp.js +152 -0
  248. data/js/util/reloadapp/themes/default/reloadapp_warning-ie6.gif +0 -0
  249. data/js/util/reloadapp/themes/default/reloadapp_warning.png +0 -0
  250. data/js/util/sha/js.inc +0 -0
  251. data/js/util/sha/sha.js +426 -0
  252. data/js/views/centerview/centerview.js +75 -0
  253. data/js/views/centerview/js.inc +0 -0
  254. data/js/views/inlineview/inlineview.js +15 -0
  255. data/js/views/inlineview/js.inc +0 -0
  256. data/js/views/scrollview/js.inc +0 -0
  257. data/js/views/scrollview/scrollview.js +40 -0
  258. data/lib/conf/argv.rb +850 -0
  259. data/lib/conf/default.rb +219 -0
  260. data/lib/daemon/daemon.rb +387 -0
  261. data/lib/daemon/sigcomm.rb +64 -0
  262. data/lib/http/broker.rb +150 -0
  263. data/lib/http/rackup.rb +91 -0
  264. data/lib/http/request.rb +66 -0
  265. data/lib/http/response.rb +65 -0
  266. data/lib/plugins/dependencies.rb +285 -0
  267. data/lib/plugins/gui_plugin.rb +160 -0
  268. data/lib/plugins/guiparser.rb +123 -0
  269. data/lib/plugins/plugin.rb +438 -0
  270. data/lib/plugins/plugin_base.rb +162 -0
  271. data/lib/plugins/plugin_plugins.rb +81 -0
  272. data/lib/plugins/plugin_sqlite_db.rb +98 -0
  273. data/lib/plugins/pluginmanager.rb +635 -0
  274. data/lib/plugins/plugins.rb +169 -0
  275. data/lib/plugins/servlet.rb +108 -0
  276. data/lib/rsence.rb +32 -0
  277. data/lib/session/msg.rb +327 -0
  278. data/lib/session/sessionmanager.rb +522 -0
  279. data/lib/session/sessionstorage.rb +340 -0
  280. data/lib/transporter/transporter.rb +263 -0
  281. data/lib/util/gzstring.rb +9 -0
  282. data/lib/util/ruby19_fixes.rb +18 -0
  283. data/lib/values/hvalue.rb +378 -0
  284. data/lib/values/valuemanager.rb +172 -0
  285. data/plugins/client_pkg/client_pkg.rb +157 -0
  286. data/plugins/client_pkg/info.yaml +25 -0
  287. data/plugins/client_pkg/lib/client_pkg_build.rb +561 -0
  288. data/plugins/client_pkg/lib/client_pkg_cache.rb +50 -0
  289. data/plugins/client_pkg/lib/client_pkg_serve.rb +218 -0
  290. data/plugins/index_html/img/loading.gif +0 -0
  291. data/plugins/index_html/img/riassence.gif +0 -0
  292. data/plugins/index_html/index_html.rb +120 -0
  293. data/plugins/index_html/info.yaml +18 -0
  294. data/plugins/index_html/tmpl/index.html +15 -0
  295. data/plugins/main/info.yaml +18 -0
  296. data/plugins/main/js/main.js +84 -0
  297. data/plugins/main/main.rb +255 -0
  298. data/plugins/main/values.yaml +8 -0
  299. data/plugins/ticket/info.yaml +21 -0
  300. data/plugins/ticket/lib/common.rb +392 -0
  301. data/plugins/ticket/lib/favicon.rb +39 -0
  302. data/plugins/ticket/lib/file.rb +58 -0
  303. data/plugins/ticket/lib/img.rb +50 -0
  304. data/plugins/ticket/lib/objblob.rb +66 -0
  305. data/plugins/ticket/lib/rsrc.rb +34 -0
  306. data/plugins/ticket/lib/upload.rb +236 -0
  307. data/plugins/ticket/ticket.rb +333 -0
  308. data/setup/welcome/gui/welcome.yaml +92 -0
  309. data/setup/welcome/info.yaml +13 -0
  310. data/setup/welcome/text/welcome.html +9 -0
  311. data/setup/welcome/values.yaml +9 -0
  312. data/setup/welcome/welcome.rb +54 -0
  313. metadata +407 -0
@@ -0,0 +1,246 @@
1
+ /* RSence
2
+ * Copyright 2009 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+
10
+ /*** Constructs nodes from JSON structures as GUI
11
+ ** tree structures. Lowers the learning curve of GUI
12
+ ** development, because Javascript knowledge is not
13
+ ** required to define user interfaces.
14
+ ** The main purpose is to ease the development of
15
+ ** user interfaces by defining them as data on the
16
+ ** server, converting the data to JSON GUI trees and
17
+ ** letting the client handle the rest. The end result
18
+ ** is the same as defining the structures in
19
+ ** JavaScript code.
20
+ **
21
+ ** This class is still in development, so expect more
22
+ ** features and documentation as it matures.
23
+ ***/
24
+ //var//RSence.Foundation
25
+ COMM.JSONRenderer = HClass.extend({
26
+
27
+ version: 0.6,
28
+
29
+ /** = Description
30
+ * Renders JSON structured data, see some of the demos for usage examples.
31
+ *
32
+ * = Parameters:
33
+ * +_data+: The data structure used for building.
34
+ * +_parent+: The parent view (or app) (Optional)
35
+ **/
36
+ constructor: function(_data, _parent){
37
+ if((_data['type'] === 'GUITree') && (this.version >= _data['version'])){
38
+ this.data = _data;
39
+ this.parent = _parent;
40
+ this.render();
41
+ }
42
+ else{
43
+ throw("JSONRenderer: Only GUITree version "+this.version+" or older data can be handled.");
44
+ }
45
+ },
46
+ render: function(){
47
+ this.scopes = [window];
48
+ this.scopeDepth = 0;
49
+ this.view = this.renderNode( this.data, this.parent );
50
+ },
51
+ defineInScope: function( _definition ){
52
+ var _isArr = (_definition instanceof Array),
53
+ _isObj = (_definition instanceof Object);
54
+ if( _isArr || !_isObj ){
55
+ console.log("JSONRenderer; definition must be an Object, got: '"+(typeof _definition)+"'. Definition: ",_definition);
56
+ return;
57
+ }
58
+ var _extension = {},
59
+ _reserved = ['class','extend','implement'],
60
+ _className = _definition[_reserved[0]],
61
+ _extendName = _definition[_reserved[1]],
62
+ _implementName = _definition[_reserved[2]],
63
+ _extend = _extendName?this.findInScope(_extendName):false,
64
+ _implement = _implementName?this.findInScope(_implementName):false,
65
+ _scope = this.scopes[ this.scopeDepth ],
66
+ _key, _value;
67
+ if( _className === undefined ) {
68
+ console.log("JSONRenderer; class name missing in definition scope.");
69
+ return;
70
+ }
71
+ if( !_extend ){
72
+ _extend = HClass;
73
+ }
74
+ for( _key in _definition ){
75
+ if( _reserved.indexOf( _key ) === -1 ){
76
+ _value = _definition[_key];
77
+ _extension[_key] = this.extEval( _value );
78
+ }
79
+ }
80
+ _scope[ _className ] = _extend.extend( _extension );
81
+ if( _implement ){
82
+ _scope[ _className ].implement( _implement );
83
+ }
84
+ },
85
+ undefineInScope: function( ){
86
+
87
+ },
88
+ findInScope: function( _className ){
89
+ if(_className === undefined){
90
+ return false;
91
+ }
92
+ if(_className.indexOf('.') !== -1){
93
+ var _splitClass = _className.split('.'),
94
+ j = 1,
95
+ _classPart = _splitClass[0],
96
+ _classFull = this.findInScope( _classPart );
97
+ if( !_classFull ){
98
+ return false;
99
+ }
100
+ for( ; j < _splitClass.length ; j++ ){
101
+ _classPart = _splitClass[j];
102
+ _classFull = _classFull[ _classPart ];
103
+ if( !_classFull ){
104
+ return false;
105
+ }
106
+ }
107
+ return _classFull;
108
+ }
109
+ var _class = false,
110
+ _scopes = this.scopes,
111
+ i = _scopes.length-1,
112
+ _scope;
113
+ for( ; i > -1 ; i-- ){
114
+ _scope = _scopes[i];
115
+ if( _scope[ _className ] !== undefined ){
116
+ return _scope[ _className ];
117
+ }
118
+ }
119
+ return _class;
120
+ },
121
+ extEval: function(_block){
122
+ if( _block.indexOf("function(") === 0 ){
123
+ eval( '_block = '+_block );
124
+ }
125
+ return _block;
126
+ },
127
+ renderNode: function( _dataNode, _parent ){
128
+ var // Currently only window-level classes are supported
129
+ _className = _dataNode['class'],
130
+ _class = this.findInScope( _className ),
131
+
132
+ // Currently only HView -derived classes are supported, so
133
+ // the rect is mandatory.
134
+ _rect = _dataNode['rect'],
135
+ _hasRect = (_rect !== undefined) && (_rect instanceof Array || typeof _rect === 'string'),
136
+
137
+ // Checks, if any sub-views are defined.
138
+ _hasSubviews = _dataNode['subviews'] !== undefined,
139
+ _subViews = _hasSubviews?_dataNode['subviews']:null,
140
+
141
+ // Checks, if any options are defined.
142
+ _hasOptions = _dataNode['options'] !== undefined,
143
+ _options = _hasOptions?_dataNode['options']:null,
144
+
145
+ // JS Extension block
146
+ _hasExtension = _dataNode['extend'] !== undefined,
147
+ _extension = _hasExtension?_dataNode['extend']:null,
148
+
149
+ // JS Extension block
150
+ _hasBind = _dataNode['bind'] !== undefined,
151
+ _bind = _hasBind?_dataNode['bind']:null,
152
+
153
+ // JS Definition block
154
+ _hasDefinition = _dataNode['define'] !== undefined,
155
+ _definitions = _hasDefinition?_dataNode['define']:null,
156
+
157
+ // The HView-derived class instance, instance is by default the parent
158
+ _instance = _parent,
159
+
160
+ i,
161
+
162
+ _subView;
163
+ this.scopeDepth ++;
164
+ this.scopes.push({});
165
+ try{
166
+ if(_hasDefinition){
167
+ if(_definitions instanceof Array){
168
+ for( i = 0; i < _definitions.length; i++ ){
169
+ this.defineInScope( _definitions[i] );
170
+ }
171
+ }
172
+ else {
173
+ console.log('renderNode definitions not Array, definitions:',_definitions);
174
+ }
175
+ }
176
+ if(_class){
177
+ if(_hasExtension){
178
+ var _extBlock = {},
179
+ _name,
180
+ _block;
181
+ for(_name in _extension){
182
+ _block = _extension[_name];
183
+ if( typeof _block === 'string' ){
184
+ try {
185
+ _block = this.extEval( _block );
186
+ }
187
+ catch(e){
188
+ console.log('renderNode ext eval error:',e,', name:',_name,', block:',_block);
189
+ }
190
+ }
191
+ _extBlock[_name] = _block;
192
+ }
193
+ _class = _class.extend( _extBlock );
194
+ }
195
+ if(_hasOptions){
196
+ if(_hasBind){
197
+ _options.valueObj = COMM.Values.values[_bind];
198
+ }
199
+ else{
200
+ if(_options['valueObjId'] !== undefined){
201
+ var _valueObjId = _options['valueObjId'];
202
+ _options['valueObj'] = COMM.Values.values[_options['valueObjId']];
203
+ }
204
+ }
205
+ }
206
+ // For HApplication -derived classes
207
+ if(!_hasRect && _hasOptions){
208
+ _instance = _class.nu(_options);
209
+ }
210
+ // For HView and HControl -derived classes
211
+ else if(_hasRect){
212
+ _instance = _class.nu(_rect,_parent,_options);
213
+ }
214
+ if(!_hasOptions){
215
+ if(_hasBind){
216
+ COMM.Values.values[_bind].bind(_instance);
217
+ }
218
+ }
219
+ }
220
+ else if(!(!_class && _hasSubviews)) {
221
+ console.log('renderNode warning; No such class: '+_className+', node: ',_dataNode);
222
+ }
223
+ }
224
+ catch(e){
225
+ console.log('renderNode error:',e,', rect:',_rect,', class:',_dataNode['class'],', options:', _options);
226
+ }
227
+ // Iterates recursively through all subviews, if specified.
228
+ if(_hasSubviews){
229
+ for( i = 0; i < _subViews.length; i++ ){
230
+ _subView = this.renderNode( _subViews[i], _instance );
231
+ }
232
+ }
233
+
234
+ this.scopes.pop();
235
+ this.scopeDepth --;
236
+
237
+ // Returns the main view (or subview when recursively called).
238
+ return _instance;
239
+ }
240
+ });
241
+
242
+ /** -- Global reference ++ **/
243
+ var//RSence.Foundation
244
+ JSONRenderer = COMM.JSONRenderer;
245
+
246
+
File without changes
@@ -0,0 +1,381 @@
1
+ /* RSence
2
+ * Copyright 2006 Riassence Inc.
3
+ * http://riassence.com/
4
+ *
5
+ * You should have received a copy of the GNU General Public License along
6
+ * with this software package. If not, contact licensing@riassence.com
7
+ */
8
+
9
+
10
+ /*** = Description
11
+ ** Main container of global operations on +HView+ and
12
+ ** +HApplication+ -derived classes.
13
+ **
14
+ ** HSystem is used to keep +HApplication+ and +HView+ instances
15
+ ** globally managed. The managed classes themself calls +HSystem+ methods,
16
+ ** so there is no real need to access +HSystem+ directly from user-level code.
17
+ **
18
+ ***/
19
+ var//RSence.Foundation
20
+ HSystem = {
21
+
22
+ /** When the focus behaviour is 1, clicking on any subview brings
23
+ * the window to front, if attached to a HWindow instance.
24
+ * If the behaviour is 0, only direct clicks on the HWindow controls
25
+ * brings the window to front.
26
+ *
27
+ **/
28
+ windowFocusMode: 1,
29
+
30
+ /** Singleton class; has no constructor **/
31
+ // constructor: null,
32
+
33
+ /** An array of HApplication instances, index is the appId **/
34
+ apps: [],
35
+
36
+ /** An array (in the same order as apps): holds priority values **/
37
+ appPriorities: [],
38
+
39
+ /** An array (in the same order as apps): holds busy status **/
40
+ busyApps: [],
41
+
42
+ /** This array holds free app id:s **/
43
+ freeAppIds: [],
44
+
45
+ /** The default HSystem ticker interval. Unit is milliseconds. **/
46
+ defaultInterval: 10,
47
+
48
+ /** The default HApplication priority. Unit is "On the n:th tick: poll". **/
49
+ defaultPriority: 20,
50
+
51
+ /** The z-index of root-level +HView+ instances. All the array operations
52
+ * are done by the inner logic of +HApplication+ and +HView+ instances.
53
+ **/
54
+ viewsZOrder: [],
55
+
56
+ /** This is the internal "clock" counter. Gets updated on every tick. **/
57
+ ticks: 0,
58
+
59
+ /** Time in milliseconds for the timeout of a poll to finish before
60
+ * being classified as stuck and thus forcibly terminated.
61
+ **/
62
+ maxAppRunTime: 5000,
63
+
64
+ /** Calls applications, uses the prority as a prioritizer.
65
+ **/
66
+ scheduler: function(){
67
+
68
+ // Loop through all applications:
69
+ for( var _appId=0; _appId<this.apps.length; _appId++ ){
70
+ // Check, if the application exists:
71
+ if( this.apps[ _appId ] ){
72
+ // Check, if the application is busy:
73
+ if( !this.busyApps[ _appId ] ){
74
+ // Check, if the tick count matches the priority of the app:
75
+ if( (this.ticks % this.appPriorities[ _appId ]) === 0 ){
76
+ // Set the app busy, the app itself should "unbusy" itself, when the idle call is done.
77
+ // That happens in <HApplication._startIdle>
78
+
79
+ // If the app is not busy, then make a idle call:
80
+ if(HSystem.apps[_appId]){
81
+ HSystem.apps[_appId]._startIdle();
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+
88
+ if(this._updateZIndexOfChildrenBuffer.length!==0){
89
+ this._flushUpdateZIndexOfChilden();
90
+ }
91
+
92
+ },
93
+
94
+ _updateFlexibleRects: function(){
95
+ var
96
+ _view,
97
+ i = 0;
98
+ for( ; i < this.views.length; i++ ){
99
+ _view = this.views[i];
100
+ if(_view.flexRight || _view.flexBottom){
101
+ _view.rect._updateFlexibleDimensions();
102
+ }
103
+ }
104
+ },
105
+
106
+ /** Calls the scheduler and then calls itself after a timeout to keep
107
+ * the loop going on.
108
+ **/
109
+ ticker: function(){
110
+ // Increment the tick counter:
111
+ this.ticks++;
112
+ this.scheduler();
113
+ this._tickTimeout = setTimeout( function(){HSystem.ticker();},this.defaultInterval);
114
+ },
115
+
116
+
117
+ /** = Description
118
+ * Adds the structures needed for a new +HApplication+ instance.
119
+ *
120
+ * Called from inside the +HApplication+ constructor.
121
+ * Binds an app and gives it a unique id.
122
+ *
123
+ * = Parameters
124
+ * +_app+:: The reference to the +HApplication+ instance object.
125
+ * +_priority+:: The app priority.
126
+ *
127
+ * = Returns
128
+ * The app id.
129
+ *
130
+ **/
131
+ addApp: function(_app, _priority){
132
+ var _appId;
133
+ if(this.freeAppIds.length !== 0){
134
+ _appId = this.freeAppIds.unshift();
135
+ this.apps[_appId] = _app;
136
+ } else {
137
+ this.apps.push(_app);
138
+ _appId = this.apps.length-1;
139
+ }
140
+
141
+ // sets self as parent
142
+ _app.parent = this;
143
+ _app.parents = [this];
144
+
145
+ _app.appId = _appId;
146
+
147
+ this.startApp(_appId, _priority);
148
+
149
+ return _appId;
150
+ },
151
+
152
+ /** = Description
153
+ * Starts polling an app instance (and its components).
154
+ *
155
+ * = Parameters
156
+ * +_appId+:: The unique id of the app.
157
+ * +_priority+:: The app priority.
158
+ *
159
+ **/
160
+ startApp: function(_appId,_priority){
161
+ if(_priority===undefined){
162
+ _priority = this.defaultInterval;
163
+ }
164
+ this.appPriorities[ _appId ] = _priority;
165
+ this.busyApps[_appId] = false;
166
+ },
167
+
168
+ /** = Description
169
+ * Stops polling an app instance (and its components).
170
+ *
171
+ * = Parameters
172
+ * +_appId+:: The id of the app.
173
+ *
174
+ **/
175
+ stopApp: function(_appId){
176
+ this.busyApps[_appId] = true;
177
+ },
178
+
179
+ /** = Description
180
+ * Changes the priority of the app. Calls +stopApp+ and +startApp+.
181
+ *
182
+ * = Parameters
183
+ * +_appId+:: The id of the app.
184
+ * +_priority+:: The app priority.
185
+ *
186
+ **/
187
+ reniceApp: function(_appId,_priority){
188
+ this.appPriorities[ _appId ] = _priority;
189
+ },
190
+
191
+ /** = Description
192
+ * Stops polling and deletes an app instance (and its components).
193
+ *
194
+ * = Parameters
195
+ * +_appId+:: The unique id of the app.
196
+ * +_forced+:: (Optional) The doesn't wait for the last poll to finish.
197
+ *
198
+ **/
199
+ killApp: function(_appId, _forced){
200
+ if( !_forced ){
201
+ var _startedWaiting = new Date().getTime();
202
+ while( this.busyApps[ _appId ] === true ) {
203
+ /* Waiting for the app to finish its idle loop... */
204
+ if (new Date().getTime() > _startedWaiting + this.maxAppRunTime) {
205
+ break;
206
+ }
207
+ }
208
+ }
209
+ this.busyApps[_appId] = true;
210
+
211
+ this.apps[ _appId ].destroyAllViews();
212
+ this.apps[ _appId ] = null;
213
+
214
+ this.freeAppIds.push( _appId );
215
+ },
216
+
217
+ /** All +HView+ instances that are defined **/
218
+ views: [],
219
+
220
+ /** List of free +viwes+ indexes **/
221
+ _freeViewIds: [],
222
+
223
+ /** = Description
224
+ * Adds a view and assigns it an id.
225
+ *
226
+ * = Parameters
227
+ * +_view+:: The +HView+ instance.
228
+ *
229
+ * = Returns
230
+ * The new view id.
231
+ *
232
+ **/
233
+ addView: function(_view){
234
+ var _newId;
235
+ if(this._freeViewIds.length===0){
236
+ _newId = this.views.length;
237
+ this.views.push(_view);
238
+ }
239
+ else {
240
+ _newId = this._freeViewIds.pop();
241
+ this.views[_newId] = _view;
242
+ }
243
+ return _newId;
244
+ },
245
+
246
+ /** = Description
247
+ * Removes a view and recycles its id.
248
+ *
249
+ * = Parameters
250
+ * +_viewId+:: The view id to delete.
251
+ *
252
+ **/
253
+ delView: function(_viewId){
254
+ this.views[_viewId] = null;
255
+ this._freeViewIds.push(_viewId);
256
+ },
257
+
258
+ /** The view id of the active window. 0 means none. **/
259
+ activeWindowId: 0,
260
+
261
+ /** = Description
262
+ * Focuses the window given and blurs the previous one.
263
+ *
264
+ * = Parameters
265
+ * +_view+:: The +HView+ instance, this is almost always a
266
+ * +HWindow+ instance.
267
+ *
268
+ **/
269
+ windowFocus: function(_view){
270
+ if(!_view){
271
+ this.activeWindowId=0;
272
+ return;
273
+ }
274
+ var _activeWindowId = this.activeWindowId,
275
+ _views = this.views,
276
+ _viewId = _view.viewId;
277
+ if(_views[_activeWindowId]){
278
+ if (_views[_activeWindowId]["windowBlur"]) {
279
+ _views[_activeWindowId].windowBlur();
280
+ }
281
+ }
282
+ this.activeWindowId=_viewId;
283
+ _view.bringToFront();
284
+ _view.windowFocus();
285
+ },
286
+
287
+ /** optimization of zindex buffer, see +HView+ **/
288
+ _updateZIndexOfChildrenBuffer: [],
289
+
290
+ /** Updates the z-indexes of the children of the given +_viewId+. **/
291
+ updateZIndexOfChildren: function(_viewId) {
292
+ if(this._updateZIndexOfChildrenBuffer.indexOf(_viewId)===-1){
293
+ this._updateZIndexOfChildrenBuffer.push(_viewId);
294
+ }
295
+ },
296
+
297
+ /** Flushes the z-indexes. This is a fairly expensive operation,
298
+ * thas's why the info is buffered.
299
+ **/
300
+ _flushUpdateZIndexOfChilden: function() {
301
+
302
+ var j=0, // buffer index
303
+
304
+ // reference to the HSystem namespace
305
+ _this = HSystem,
306
+
307
+ // reference to the buffer
308
+ _buffer = this._updateZIndexOfChildrenBuffer,
309
+
310
+ // the length of the buffer
311
+ _bufLen = _buffer.length;
312
+
313
+ // loop buffer length times to get the items
314
+ for ( ; j < _bufLen; j++ ) {
315
+
316
+
317
+ // get and remove view the view id from the z-index flush status buffer:
318
+ var _viewId = _buffer.shift(),
319
+
320
+ // reference to the view's z-index array or the system root-level views if _viewId is 0
321
+ _views = ((_viewId === null)?(_this.viewsZOrder):(_this.views[ _viewId ].viewsZOrder)),
322
+
323
+ // the length of the view's z-index array
324
+ _viewLen = _views.length,
325
+
326
+ // reference to the setStyle method of the element manager
327
+ _setStyl = ELEM.setStyle,
328
+
329
+ // reference to HSystem.views (collection of all views, by index)
330
+ _sysViews = _this.views,
331
+
332
+
333
+ // assign variables for use inside the inner loop:
334
+
335
+ // the viewId of the view to be updated
336
+ _subViewId,
337
+
338
+ // the view itself with the viewId above
339
+ _view,
340
+
341
+ // the elemId property, used as a [] -lookup in the loop
342
+ _elemIdStr = 'elemId',
343
+
344
+ // the css property name
345
+ _zIdxStr = 'z-index',
346
+
347
+ // the loop index
348
+ i=0,
349
+
350
+ // the element id of the view
351
+ _elemId;
352
+
353
+ // end of var declarations
354
+
355
+ // loop through all subviews and update the indexes:
356
+ for ( ; i < _viewLen; i++ ) {
357
+
358
+ // get the viewId to be updated based on the z-index array
359
+ _subViewId = _views[ i ];
360
+
361
+ // reference to the view itself
362
+ _view = _sysViews[ _subViewId ];
363
+
364
+ // the element id of the view
365
+ _elemId = _view[ _elemIdStr ];
366
+
367
+ // do the element manager call itself to update the dom property
368
+ _setStyl( _elemId, _zIdxStr, i );
369
+ }
370
+ }
371
+ }
372
+ };
373
+
374
+ // });
375
+
376
+ // Starts the ticking, when the document is loaded:
377
+ LOAD(
378
+ function(){
379
+ HSystem.ticker();
380
+ }
381
+ );
File without changes