rsence-pre 2.1.0.1.pre

Sign up to get free protection for your applications and to get access to all the features.
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,213 @@
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
+ /*** = Description
10
+ ** HStepper is a control unit made of two adjacent buttons with up and down arrows
11
+ ** to select the previous or next of a set of contiguous values.
12
+ ** Normally, a HStepper instance works in combination with a HTextControl or a HStringView instance.
13
+ **
14
+ ** = Instance Variables
15
+ ** +minValue+:: The smallest allowed value
16
+ ** +maxValue+:: The biggest allowed value
17
+ ** +stepSize+:: Amount of to step, defaults to +/- 1
18
+ ** +repeatInterval+:: Interval in milliseconds for repeat
19
+ ** +wrapAround+:: Boolean to control wrap-around behaviour
20
+ ***/
21
+
22
+ var//RSence.Controls
23
+ HStepper = HControl.extend({
24
+
25
+ componentName: "stepper",
26
+
27
+ defaultEvents: {
28
+ mouseDown: true,
29
+ keyDown: true,
30
+ mouseWheel: true
31
+ },
32
+
33
+ controlDefaults: (HControlDefaults.extend({
34
+ minValue: 0,
35
+ maxValue: 100,
36
+ stepSize: 1,
37
+ repeatInterval: 200,
38
+ wrapAround: false
39
+ })),
40
+
41
+ /** Setter for wrap-around behaviour
42
+ **/
43
+ setWrapAround: function(_on){
44
+ this.options.wrapAround = _on;
45
+ },
46
+
47
+ // -- Makes sure the value is in its boundaries and either wrap-around
48
+ // to min/max or revert to the current value ++
49
+ _checkValueBoundaries: function(_value){
50
+
51
+ // -- checks for boundaries ++
52
+ var _this = this,
53
+ _options = _this.options,
54
+ _minVal = _options.minValue,
55
+ _maxVal = _options.maxValue,
56
+ _tooSmall = _value<_minVal,
57
+ _tooBig = _value>_maxVal,
58
+ _overflow = ( _tooSmall || _tooBig );
59
+
60
+ // -- The value is ok, just return it as it is ++
61
+ if (!_overflow) {
62
+ return _value;
63
+ }
64
+
65
+
66
+ /// -- Handle the overflow condition: ++
67
+
68
+ // -- Wrap around uses min/max as new value as either is reached ++
69
+ if (_options.wrapAround) {
70
+ if (_tooSmall) {
71
+ return _maxVal;
72
+ }
73
+ else {
74
+ return _minVal;
75
+ }
76
+ }
77
+ // -- Any other condition means we just revert the changes ++
78
+ else {
79
+ return _this.value;
80
+ }
81
+
82
+ },
83
+
84
+ /** Adds the step size to the value
85
+ **/
86
+ stepUp: function(){
87
+ this.setValue(
88
+ this._checkValueBoundaries(
89
+ this.value + this.options.stepSize
90
+ )
91
+ );
92
+ },
93
+
94
+ /** Subtracts the step size from the value
95
+ **/
96
+ stepDown: function(){
97
+ this.setValue(
98
+ this._checkValueBoundaries(
99
+ this.value - this.options.stepSize
100
+ )
101
+ );
102
+ },
103
+
104
+ // -- Returns an action string for the setInterval in _setRepeatInterval ++
105
+ _repeatIntervalStr: function( _up ){
106
+ return [
107
+ 'HSystem.views[',
108
+ this.viewId,
109
+ '].step',
110
+ (_up?'Up':'Down'),
111
+ '();'
112
+ ].join('');
113
+ },
114
+
115
+ // -- Background-offset of the state images up/down,
116
+ // overrideable in the html template ++
117
+ bgStateUp: '0px -23px',
118
+ bgStateDown: '0px -46px',
119
+
120
+ // enables the up/down effect in the image based on the _up boolean (true means up, false means down)
121
+ _bgStateOn: function( _up ){
122
+ ELEM.setStyle(this.markupElemIds.state,'background-position',_up?this.bgStateUp:this.bgStateDown);
123
+ },
124
+
125
+ // reverts the up/down effect
126
+ _bgStateOff: function(){
127
+ ELEM.setStyle(this.markupElemIds.state,'background-position','');
128
+ },
129
+
130
+ // Starts the repeating stepping up or down (when the mouse button or a arrow key is down)
131
+ _setRepeatInterval: function( _up ){
132
+ var _this = this,
133
+ _options = _this.options;
134
+ _this._bgStateOn( _up );
135
+ if (_up) {
136
+ _this.stepUp();
137
+ _this._repeatInterval = setInterval( _this._repeatIntervalStr(1), _options.repeatInterval );
138
+ }
139
+ else {
140
+ _this.stepDown();
141
+ _this._repeatInterval = setInterval( _this._repeatIntervalStr(0), _options.repeatInterval );
142
+ }
143
+ },
144
+
145
+ // Stops the repeating stepping up or down enabled in _setRepeatInterval
146
+ _clearRepeatInterval: function(){
147
+ this._bgStateOff();
148
+ clearInterval( this._repeatInterval );
149
+ },
150
+
151
+ /** Checks where the mouseDown happened and adjusts the stepper up/down based on that
152
+ **/
153
+ mouseDown: function( x, y ){
154
+ this.setMouseUp(true);
155
+ this._setRepeatInterval( ( y - ELEM.getVisiblePosition( this.elemId )[1] ) <= 11 );
156
+ },
157
+
158
+ /** Stops the repeating stepping, when the mouse button goes up
159
+ **/
160
+ mouseUp: function(){
161
+ this._clearRepeatInterval();
162
+ },
163
+
164
+ /** Stops the repeating stepping, when the control becomes inactive
165
+ **/
166
+ blur: function(){
167
+ this._clearRepeatInterval();
168
+ },
169
+
170
+ /** adjusts stepping up/down based on the arrow key pressed.
171
+ * up and right arrow keys steps the value up, down and left steps the value down
172
+ **/
173
+ keyDown: function( _keyCode ) {
174
+ this.setKeyUp(true);
175
+ var _keyDown = (_keyCode === Event.KEY_DOWN),
176
+ _keyUp = (_keyCode === Event.KEY_UP),
177
+ _keyLeft = (_keyCode === Event.KEY_LEFT),
178
+ _keyRight = (_keyCode === Event.KEY_RIGHT),
179
+ _arrowKey = (_keyDown || _keyUp || _keyLeft || _keyRight);
180
+ if (_arrowKey) {
181
+ this._setRepeatInterval( (_keyUp || _keyRight) );
182
+ }
183
+ else if (_keyCode === Event.KEY_HOME) {
184
+ this.setValue(this.options.minValue);
185
+ }
186
+ else if (_keyCode === Event.KEY_END) {
187
+ this.setValue(this.options.maxValue);
188
+ }
189
+ // Page up and page down keys act just like arrow up/down.
190
+ else if (_keyCode === Event.KEY_PAGEUP) {
191
+ this._setRepeatInterval( 1 );
192
+ }
193
+ else if (_keyCode === Event.KEY_PAGEDOWN) {
194
+ this._setRepeatInterval( 0 );
195
+ }
196
+ },
197
+
198
+ /** stops the repeating when a key goes up
199
+ **/
200
+ keyUp: function(){
201
+ this._clearRepeatInterval();
202
+ },
203
+
204
+ /** steps the value up/down based on the mouse scroll wheel
205
+ **/
206
+ mouseWheel: function(_delta) {
207
+ (_delta>0)?this.stepUp():this.stepDown();
208
+ }
209
+
210
+
211
+ });
212
+
213
+
@@ -0,0 +1,14 @@
1
+ .stepper_state {
2
+ position: absolute;
3
+ left: 0px;
4
+ top: 0px;
5
+ width: 15px;
6
+ height: 23px;
7
+ background-position: 0px 0px;
8
+ background-repeat: no-repeat;
9
+ background-image: #{this.getCssFilePath('stepper.png')};
10
+ }
11
+
12
+ .disabled .stepper_state {
13
+ background-position: 0px -69px;
14
+ }
@@ -0,0 +1,2 @@
1
+ <div class="stepper_state" id="state#{_ID}"></div>
2
+ ${this.bgStateUp='0px -23px';this.bgStateDown='0px -46px';}
File without changes
@@ -0,0 +1,49 @@
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
+ /*** = Description
10
+ ** HStringView is a view component that represents a non-editable line of text.
11
+ ** Commonly, stringview is used as a label to control elements
12
+ ** that do not have implicit labels (text fields, checkboxes and radio buttons, and menus).
13
+ ** Some form controls automatically have labels associated with them (press buttons)
14
+ ** while most do not have (text fields, checkboxes and radio buttons, and sliders etc.).
15
+ **
16
+ ** = Instance variables
17
+ ** +type+:: '[HStringView]'
18
+ ** +value+:: The string that this string view displays when drawn.
19
+ ***/
20
+ var//RSence.Controls
21
+ HStringView = HControl.extend({
22
+
23
+ componentName: "stringview",
24
+
25
+ /** = Description
26
+ * setStyle function
27
+ *
28
+ **/
29
+ setStyle: function(_name, _value, _cacheOverride) {
30
+ if (!this['markupElemIds']||!this.markupElemIds['value']) {
31
+ return this;
32
+ }
33
+ ELEM.setStyle(this.markupElemIds.value, _name, _value, _cacheOverride);
34
+ return this;
35
+ },
36
+
37
+ /** = Description
38
+ * refreshLable function
39
+ *
40
+ **/
41
+ refreshLabel: function() {
42
+ if(this.markupElemIds) {
43
+ if(this.markupElemIds.value) {
44
+ ELEM.setAttr(this.markupElemIds.value, 'title', this.label);
45
+ }
46
+ }
47
+ }
48
+ });
49
+
@@ -0,0 +1,8 @@
1
+ .stringview {
2
+ color: #333;
3
+ padding: 1px;
4
+ font-size: 12px;
5
+ font-family: Arial, sans-serif;
6
+ overflow-y: visible;
7
+ }
8
+
@@ -0,0 +1 @@
1
+ <div class="stringview" id="value#{_ID}" title="#{this.label}"></div>
File without changes
@@ -0,0 +1,280 @@
1
+ /* RSence
2
+ * Copyright 2008 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
+ /*** = Description
10
+ ** HTabView
11
+ **
12
+ **
13
+ ***/
14
+ var//RSence.Controls
15
+ HTabView = HView.extend({
16
+ /** = Description
17
+ * draw function
18
+ *
19
+ **/
20
+ draw: function(){
21
+ var _isDrawn = this.drawn;
22
+ this.base();
23
+ if(!_isDrawn){
24
+ var i=0,_styles = [
25
+ ['overflow','auto']
26
+ ];
27
+ for(i;i<_styles.length;i++){
28
+ this.setStyle(_styles[i][0],_styles[i][1]);
29
+ }
30
+ this.hide();
31
+ }
32
+ }
33
+ });
34
+
35
+ /** = Description
36
+ * HTab
37
+ *
38
+ **/
39
+ var//RSence.Controls
40
+ HTab = HControl.extend({
41
+ componentName: "tab",
42
+ refreshOnValueChange: true,
43
+ refreshOnLabelChange: false,
44
+
45
+ controlDefaults: (HControlDefaults.extend({
46
+ constructor: function(_ctrl){
47
+ this.tabInit(_ctrl);
48
+ },
49
+ tabInit: function(_ctrl){
50
+ _ctrl.tabs = [];
51
+ _ctrl.tabLabels = [];
52
+ _ctrl.tabLabelBounds = [];
53
+ _ctrl.tabLabelStrings = [];
54
+ }
55
+ })),
56
+
57
+ rightmostPx: 0,
58
+ selectIdx: -1,
59
+
60
+ // overridden in the template
61
+ tabLabelHeight: 20,
62
+
63
+ // overridden in the template
64
+ tabLabelLeftEdge: 4,
65
+
66
+ // overridden in the template
67
+ tabLabelRightEdge: 4,
68
+
69
+ // overridden in the template
70
+ fontStyle: 'font-family:Arial,sans-serif;font-size:13px;',
71
+
72
+ tabLabelHTMLPrefix1: '<div class="edge-left"></div><div class="tablabel" style="width:',
73
+ tabLabelHTMLPrefix2: 'px">',
74
+ tabLabelHTMLSuffix: '</div><div class="edge-right"></div>',
75
+ tabLabelParentElem: 'label',
76
+ tabLabelElementTagName: 'div',
77
+ tabLabelAlign: 'left',
78
+ tabLabelFillBg: false,
79
+ tabTriggerLink: true,
80
+ tabLabelNoHTMLPrefix: false,
81
+
82
+ /** = Description
83
+ * refreshValue function
84
+ *
85
+ **/
86
+ refreshValue: function(){
87
+ var _value = this.value;
88
+ if(typeof _value === 'number'){
89
+ var _index = parseInt(_value,10);
90
+ if(_index<this.tabs.length){
91
+ if(_index!==this.selectIdx){
92
+ this.selectTab(_index);
93
+ }
94
+ }
95
+ }
96
+ },
97
+
98
+ /** = Description
99
+ * Sets label for the tab.
100
+ *
101
+ * = Parameters
102
+ * +_label+:: Label for the tab
103
+ *
104
+ **/
105
+ setLabel: function(_label){
106
+ this.label = _label;
107
+ },
108
+
109
+ /** = Description
110
+ * selectTab function
111
+ *
112
+ * = Parameters
113
+ * +_tabIdx+::
114
+ *
115
+ **/
116
+ selectTab: function(_tabIdx){
117
+ if(_tabIdx instanceof HTabView){
118
+ _tabIdx = _tabIdx.tabIndex;
119
+ }
120
+ if(this.selectIdx!==-1){
121
+ var _tabSelectElemId = this.tabLabels[this.selectIdx],
122
+ _tabSelectViewId = this.tabs[this.selectIdx];
123
+ ELEM.removeClassName(_tabSelectElemId,'item-fg');
124
+ ELEM.addClassName(_tabSelectElemId,'item-bg');
125
+ HSystem.views[_tabSelectViewId].hide();
126
+ }
127
+ if(_tabIdx!==-1){
128
+ var _tabLabelElemId = this.tabLabels[_tabIdx],
129
+ _tabViewId = this.tabs[_tabIdx];
130
+ ELEM.removeClassName(_tabLabelElemId,'item-bg');
131
+ ELEM.addClassName(_tabLabelElemId,'item-fg');
132
+ HSystem.views[_tabViewId].show();
133
+ }
134
+ this.selectIdx = _tabIdx;
135
+ this.setValue(_tabIdx);
136
+ },
137
+
138
+ /** = Description
139
+ * addTab function
140
+ *
141
+ * = Parameters
142
+ * +_tabLabel+::
143
+ * +_doSelect+::
144
+ *
145
+ **/
146
+ addTab: function(_tabLabel,_doSelect,_viewClass){
147
+ var _tabIdx=this.tabs.length,
148
+ _tabLabelHTML = '',
149
+ _labelTextWidth = this.stringWidth( _tabLabel, null, 0, this.fontStyle ),
150
+ _labelWidth = _labelTextWidth+this.tabLabelLeftEdge+this.tabLabelRightEdge,
151
+ _tab = HTabView.nu( [0,this.tabLabelHeight,null,null,0,0] ,this),
152
+ _tabLabelElemId = ELEM.make(this.markupElemIds[this.tabLabelParentElem],this.tabLabelElementTagName);
153
+ _tabIdx = this.tabs.length;
154
+ if(this.tabLabelNoHTMLPrefix){
155
+ _tabLabelHTML = _tabLabel;
156
+ }
157
+ else {
158
+ _tabLabelHTML = this.tabLabelHTMLPrefix1+_labelTextWidth+this.tabLabelHTMLPrefix2+_tabLabel+this.tabLabelHTMLSuffix;
159
+ }
160
+ _tab.hide();
161
+ ELEM.addClassName(_tabLabelElemId,'item-bg');
162
+ ELEM.setStyle(_tabLabelElemId,'width',_labelWidth+'px');
163
+ ELEM.setStyle(_tabLabelElemId,this.tabLabelAlign,this.rightmostPx+'px');
164
+ ELEM.setHTML(_tabLabelElemId,_tabLabelHTML);
165
+ this.tabLabelStrings.push(_tabLabel);
166
+ if(this.tabTriggerLink&&this.tabLabelElementTagName==='a'){
167
+ ELEM.setAttr(_tabLabelElemId,'href','javascript:HSystem.views['+this.viewId+'].selectTab('+_tabIdx+');');
168
+ }
169
+ else if (this.tabTriggerLink && !(BROWSER_TYPE.ie7 || BROWSER_TYPE.ie6)){
170
+ ELEM.setAttr(_tabLabelElemId,'onclick','HSystem.views['+this.viewId+'].selectTab('+_tabIdx+');');
171
+ }
172
+ else {
173
+ this.tabTriggerLink = false;
174
+ this.setClick(true);
175
+ this.tabLabelBounds.push([this.rightmostPx,this.rightmostPx+_labelWidth]);
176
+ }
177
+ this.rightmostPx+=_labelWidth;
178
+ if(this.tabLabelAlign === 'right'){
179
+ ELEM.setStyle(this.markupElemIds[this.tabLabelParentElem],'width',this.rightmostPx+'px');
180
+ }
181
+ else if (this.tabLabelFillBg) {
182
+ ELEM.setStyle(this.markupElemIds.state,'left',this.rightmostPx+'px');
183
+ }
184
+ this.tabs.push(_tab.viewId);
185
+ this.tabLabels.push(_tabLabelElemId);
186
+ _tab.tabIndex = _tabIdx;
187
+ if(_doSelect || (this.value === _tabIdx)){
188
+ this.selectTab(_tabIdx);
189
+ }
190
+ return _tab;
191
+ },
192
+
193
+ /** = Description
194
+ * click function
195
+ *
196
+ * = Parameters
197
+ * +_x+::
198
+ * +_y+::
199
+ *
200
+ **/
201
+ click: function(_x,_y){
202
+ if(this.tabTriggerLink){
203
+ this.setClickable(false);
204
+ return;
205
+ }
206
+ _x -= this.pageX();
207
+ _y -= this.pageY();
208
+ if(_y<=this.tabLabelHeight){
209
+ if (this.tabLabelAlign === 'right') {
210
+ _x = this.rect.width - _x;
211
+ }
212
+ if(_x<=this.rightmostPx){
213
+ var i=0,_labelBounds;
214
+ for(i;i<this.tabLabelBounds.length;i++){
215
+ _labelBounds = this.tabLabelBounds[i];
216
+ if(_x<_labelBounds[1] && _x>=_labelBounds[0]){
217
+ this.selectTab(i);
218
+ return;
219
+ }
220
+ }
221
+ }
222
+
223
+ }
224
+ },
225
+
226
+ /** = Description
227
+ * removeTab function
228
+ *
229
+ * = Parameters
230
+ * +_tabIdx+::
231
+ *
232
+ **/
233
+ removeTab: function(_tabIdx){
234
+ var _selIdx = this.selectIdx,
235
+ _tabViewId = this.tabs[_tabIdx],
236
+ _tabLabelElemId = this.tabViews[_tabIdx];
237
+ this.tabs.splice(_tabIdx,1);
238
+ this.tabLabels.splice(_tabIdx,1);
239
+ this.tabLabelBounds.splice(_tabIdx,1);
240
+ this.tabLabelStrings.splice(_tabIdx,1);
241
+ if(_tabIdx===_selIdx){
242
+ this.selectIdx=-1;
243
+ if(_tabIdx===0&&this.tabs.length===0){
244
+ this.selectTab(-1);
245
+ }
246
+ else if(_tabIdx===(this.tabs.length-1)){
247
+ this.selectTab(_tabIdx-1);
248
+ }
249
+ else{
250
+ this.selectTab(_tabIdx);
251
+ }
252
+ }
253
+ else if(_tabIdx<_selIdx){
254
+ this.selectIdx--;
255
+ }
256
+ ELEM.del(_tabLabelElemId);
257
+ HSystem.views[_tabViewId].die();
258
+ }
259
+ });
260
+
261
+ /** = Description
262
+ * HTabItem is a wrapper for creating tabs as subviews when using JSONRenderer.
263
+ * rect is ignored
264
+ * parent is the HTab instance
265
+ * options may contain the following:
266
+ * select: true|false, passed on to addTab
267
+ * label: true|false, passed on to addTab
268
+ *
269
+ * = Returns
270
+ * a new HTabView instance returned by addTab
271
+ *
272
+ **/
273
+ var//RSence.Controls
274
+ HTabItem = {
275
+ nu: function(_rect, _parent, _options){
276
+ return _parent.addTab( _options.label, _options.select );
277
+ }
278
+ };
279
+
280
+
@@ -0,0 +1,76 @@
1
+ /* tab bar */
2
+ .tab_label {
3
+ position: absolute;
4
+ top: 0px; left: 0px right: 0px; height: 24px;
5
+ cursor: pointer;
6
+ }
7
+
8
+ /* set left and width manually */
9
+ .tab_label .item-fg,
10
+ .tab_label .item-bg {
11
+ position: absolute;
12
+ top: 0px; height: 24px;
13
+ background-repeat: repeat-x;
14
+ }
15
+ .tab_label,
16
+ .tab_label .edge-left,
17
+ .tab_label .edge-right,
18
+ .tab_label .tablabel,
19
+ .tab_label_fill_bg {
20
+ background-repeat: no-repeat;
21
+ background-image: #{this.getCssFilePath('tab_parts1.png')};
22
+ }
23
+ .tab_label_fill_bg {
24
+ position: absolute;
25
+ top: 0px; left: 0px; right: 0px; height: 24px;
26
+ background-position: 0px -96px;
27
+ background-repeat: repeat-x;
28
+ }
29
+
30
+ .tab_label .edge-left {
31
+ position: absolute;
32
+ top: 0px; left: 0px; width: 12px; height: 24px;
33
+ background-position: 0px 0px;
34
+ }
35
+ .tab_label .item-bg .edge-left {
36
+ background-position: -24px 0px;
37
+ }
38
+
39
+ .tab_label .edge-right {
40
+ position: absolute;
41
+ top: 0px; right: 0px; width: 9px; height: 24px;
42
+ background-position: -12px 0px;
43
+ }
44
+ .tab_label .item-bg .edge-right {
45
+ background-position: -36px 0px;
46
+ }
47
+
48
+ .tab_label .tablabel {
49
+ position: absolute;
50
+ top: 0px; left: 12px; right: 9px; height: 24px;
51
+ background-position: 0px -24px;
52
+ background-repeat: repeat-x;
53
+ vertical-align: middle;
54
+ text-align: center;
55
+ color: #000;
56
+ line-height: 26px;
57
+ text-align: center; vertical-align: middle;
58
+ font-family: Arial, sans-serif;
59
+ font-size: 12px; font-weight: bold;
60
+ color: #333;
61
+ }
62
+ .tab_label .item-bg .tablabel {
63
+ background-position: 0px -48px;
64
+ color: #666;
65
+ }
66
+
67
+ .tab_bg {
68
+ position: absolute;
69
+ top: 24px; left: 0px; right: 0px; bottom: 0px;
70
+ background-image: #{this.getCssFilePath('tab_border_pattern.png')};
71
+ }
72
+ .tab_fg {
73
+ position: absolute;
74
+ top: 0px; left: 1px; right: 1px; bottom: 1px;
75
+ background-image: #{this.getCssFilePath('tab_bg_color.png')};
76
+ }
@@ -0,0 +1,6 @@
1
+ <div class="tab_bg" id="bg#{_ID}">
2
+ <div class="tab_fg"></div>
3
+ </div>
4
+ <div class="tab_label" id="label#{_ID}"></div>
5
+ <div class="tab_label_fill_bg" id="state#{_ID}"></div>
6
+ ${this.tabLabelLeftEdge=12;this.tabLabelRightEdge=9;this.tabLabelHeight=24;this.fontStyle='font-size: 12px; font-weight: bold;';this.tabLabelFillBg=true;}