limelight 0.5.5-java → 0.6.14-java

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 (315) hide show
  1. data/LICENSE +19 -0
  2. data/bin/limelight +7 -3
  3. data/ruby/lib/limelight-rb.jar +0 -0
  4. data/ruby/lib/limelight.jar +0 -0
  5. data/ruby/lib/limelight.rb +48 -0
  6. data/{lib → ruby/lib}/limelight/animation.rb +3 -3
  7. data/ruby/lib/limelight/builtin/players.rb +21 -0
  8. data/ruby/lib/limelight/builtin/players/button.rb +7 -0
  9. data/ruby/lib/limelight/builtin/players/check_box.rb +24 -0
  10. data/ruby/lib/limelight/builtin/players/combo_box.rb +50 -0
  11. data/ruby/lib/limelight/builtin/players/curtains.rb +12 -0
  12. data/ruby/lib/limelight/builtin/players/image.rb +38 -0
  13. data/ruby/lib/limelight/builtin/players/radio_button.rb +36 -0
  14. data/ruby/lib/limelight/builtin/players/stage_mover.rb +19 -0
  15. data/ruby/lib/limelight/builtin/players/stage_sizer.rb +23 -0
  16. data/ruby/lib/limelight/builtin/players/text_area.rb +10 -0
  17. data/ruby/lib/limelight/builtin/players/text_box.rb +10 -0
  18. data/{lib → ruby/lib}/limelight/dsl/build_exception.rb +2 -2
  19. data/{lib → ruby/lib}/limelight/dsl/menu_bar.rb +3 -3
  20. data/{lib → ruby/lib}/limelight/dsl/prop_builder.rb +25 -16
  21. data/{lib → ruby/lib}/limelight/dsl/stage_builder.rb +4 -4
  22. data/{lib → ruby/lib}/limelight/dsl/styles_builder.rb +14 -18
  23. data/{lib → ruby/lib}/limelight/file_chooser.rb +10 -10
  24. data/{lib → ruby/lib}/limelight/file_filter.rb +6 -6
  25. data/ruby/lib/limelight/java_couplings.rb +70 -0
  26. data/{lib → ruby/lib}/limelight/java_util.rb +6 -6
  27. data/{lib → ruby/lib}/limelight/limelight_exception.rb +3 -3
  28. data/ruby/lib/limelight/limelight_init.rb +24 -0
  29. data/ruby/lib/limelight/main.rb +15 -0
  30. data/ruby/lib/limelight/mouse.rb +76 -0
  31. data/ruby/lib/limelight/optionable.rb +42 -0
  32. data/{lib → ruby/lib}/limelight/paint_action.rb +8 -8
  33. data/{lib → ruby/lib}/limelight/pen.rb +7 -7
  34. data/ruby/lib/limelight/player.rb +148 -0
  35. data/ruby/lib/limelight/player_recruiter.rb +54 -0
  36. data/ruby/lib/limelight/production.rb +257 -0
  37. data/ruby/lib/limelight/prop.rb +344 -0
  38. data/ruby/lib/limelight/scene.rb +120 -0
  39. data/ruby/lib/limelight/specs/spec_helper.rb +191 -0
  40. data/ruby/lib/limelight/stage.rb +268 -0
  41. data/ruby/lib/limelight/string.rb +32 -0
  42. data/{lib → ruby/lib}/limelight/studio.rb +4 -3
  43. data/ruby/lib/limelight/style.rb +294 -0
  44. data/ruby/lib/limelight/templates/sources/features/step_definitions/limelight_steps.rb.template +47 -0
  45. data/ruby/lib/limelight/templates/sources/features/support/env.rb.template +35 -0
  46. data/{lib → ruby/lib}/limelight/templates/sources/freezing/limelight_init.rb.template +0 -0
  47. data/{lib → ruby/lib}/limelight/templates/sources/production/production.rb.template +2 -2
  48. data/{lib → ruby/lib}/limelight/templates/sources/production/spec/spec_helper.rb.template +0 -0
  49. data/{lib → ruby/lib}/limelight/templates/sources/production/stages.rb.template +0 -0
  50. data/{lib → ruby/lib}/limelight/templates/sources/production/styles.rb.template +0 -0
  51. data/ruby/lib/limelight/templates/sources/project/Rakefile.template +15 -0
  52. data/ruby/lib/limelight/templates/sources/project/spec_helper.rb.template +12 -0
  53. data/{lib → ruby/lib}/limelight/templates/sources/scene/props.rb.template +0 -0
  54. data/{lib → ruby/lib}/limelight/templates/sources/scene/styles.rb.template +0 -0
  55. data/{lib → ruby/lib}/limelight/templates/sources/scene_spec/scene_spec.rb.template +0 -0
  56. data/ruby/lib/limelight/theater.rb +76 -0
  57. data/{lib → ruby/lib}/limelight/util.rb +6 -25
  58. data/ruby/lib/limelight/util/hashes.rb +39 -0
  59. data/ruby/lib/limelight/util/map_hash.rb +191 -0
  60. data/ruby/lib/limelight/util/string_hash.rb +64 -0
  61. metadata +97 -390
  62. data/bin/icons/icon.ico +0 -0
  63. data/bin/icons/icon_48.gif +0 -0
  64. data/bin/icons/limelight.icns +0 -0
  65. data/bin/ll +0 -10
  66. data/bin/ll.bat +0 -5
  67. data/lib/init.rb +0 -12
  68. data/lib/limelight.jar +0 -0
  69. data/lib/limelight/builtin/players.rb +0 -16
  70. data/lib/limelight/builtin/players/button.rb +0 -39
  71. data/lib/limelight/builtin/players/check_box.rb +0 -50
  72. data/lib/limelight/builtin/players/combo_box.rb +0 -89
  73. data/lib/limelight/builtin/players/combo_box_popup_list.rb +0 -19
  74. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +0 -21
  75. data/lib/limelight/builtin/players/curtains.rb +0 -23
  76. data/lib/limelight/builtin/players/image.rb +0 -54
  77. data/lib/limelight/builtin/players/password_box.rb +0 -34
  78. data/lib/limelight/builtin/players/radio_button.rb +0 -65
  79. data/lib/limelight/builtin/players/stage_mover.rb +0 -31
  80. data/lib/limelight/builtin/players/stage_sizer.rb +0 -34
  81. data/lib/limelight/builtin/players/text_area.rb +0 -34
  82. data/lib/limelight/builtin/players/text_box.rb +0 -34
  83. data/lib/limelight/builtin/styles.rb +0 -35
  84. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +0 -14
  85. data/lib/limelight/builtin/utilities_production/alert/props.rb +0 -8
  86. data/lib/limelight/builtin/utilities_production/alert/styles.rb +0 -14
  87. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +0 -20
  88. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +0 -12
  89. data/lib/limelight/builtin/utilities_production/production.rb +0 -66
  90. data/lib/limelight/builtin/utilities_production/stages.rb +0 -12
  91. data/lib/limelight/builtin/utilities_production/styles.rb +0 -53
  92. data/lib/limelight/button_group_cache.rb +0 -11
  93. data/lib/limelight/casting_director.rb +0 -112
  94. data/lib/limelight/commands/command.rb +0 -168
  95. data/lib/limelight/commands/create_command.rb +0 -98
  96. data/lib/limelight/commands/freeze_command.rb +0 -131
  97. data/lib/limelight/commands/help_command.rb +0 -61
  98. data/lib/limelight/commands/open_command.rb +0 -60
  99. data/lib/limelight/commands/pack_command.rb +0 -53
  100. data/lib/limelight/commands/unpack_command.rb +0 -44
  101. data/lib/limelight/commands/version_command.rb +0 -31
  102. data/lib/limelight/data.rb +0 -37
  103. data/lib/limelight/file_loader.rb +0 -46
  104. data/lib/limelight/gems.rb +0 -51
  105. data/lib/limelight/java_couplings.rb +0 -67
  106. data/lib/limelight/limelight_init.rb +0 -12
  107. data/lib/limelight/main.rb +0 -105
  108. data/lib/limelight/producer.rb +0 -233
  109. data/lib/limelight/production.rb +0 -203
  110. data/lib/limelight/prop.rb +0 -367
  111. data/lib/limelight/scene.rb +0 -151
  112. data/lib/limelight/specs/spec_helper.rb +0 -136
  113. data/lib/limelight/specs/test_scene_opener.rb +0 -63
  114. data/lib/limelight/stage.rb +0 -353
  115. data/lib/limelight/string.rb +0 -38
  116. data/lib/limelight/styles/style.rb +0 -288
  117. data/lib/limelight/templates/production_templater.rb +0 -49
  118. data/lib/limelight/templates/scene_templater.rb +0 -47
  119. data/lib/limelight/templates/sources/production/init.rb.template +0 -15
  120. data/lib/limelight/templates/templater.rb +0 -131
  121. data/lib/limelight/templates/templater_logger.rb +0 -39
  122. data/lib/limelight/theater.rb +0 -109
  123. data/lib/limelight/util/downloader.rb +0 -115
  124. data/lib/limelight/version.rb +0 -20
  125. data/productions/examples/8thlight.com/about/about.txt +0 -24
  126. data/productions/examples/8thlight.com/about/props.rb +0 -11
  127. data/productions/examples/8thlight.com/about/styles.rb +0 -2
  128. data/productions/examples/8thlight.com/footer.rb +0 -6
  129. data/productions/examples/8thlight.com/home/props.rb +0 -28
  130. data/productions/examples/8thlight.com/home/styles.rb +0 -2
  131. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  132. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  133. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  134. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  135. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  136. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  137. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  138. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  139. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  140. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  141. data/productions/examples/8thlight.com/menu.rb +0 -11
  142. data/productions/examples/8thlight.com/services/props.rb +0 -11
  143. data/productions/examples/8thlight.com/services/services.txt +0 -8
  144. data/productions/examples/8thlight.com/services/styles.rb +0 -2
  145. data/productions/examples/8thlight.com/stages.rb +0 -8
  146. data/productions/examples/8thlight.com/styles.rb +0 -210
  147. data/productions/examples/calculator/players/button.rb +0 -24
  148. data/productions/examples/calculator/players/calculator.rb +0 -15
  149. data/productions/examples/calculator/players/calculator_model.rb +0 -13
  150. data/productions/examples/calculator/props.rb +0 -23
  151. data/productions/examples/calculator/styles.rb +0 -36
  152. data/productions/examples/langstons_ant/html_javascript/ant.css +0 -39
  153. data/productions/examples/langstons_ant/html_javascript/ant.html +0 -22
  154. data/productions/examples/langstons_ant/html_javascript/ant.js +0 -23
  155. data/productions/examples/langstons_ant/init.rb +0 -4
  156. data/productions/examples/langstons_ant/players/ant.rb +0 -103
  157. data/productions/examples/langstons_ant/players/log.rb +0 -29
  158. data/productions/examples/langstons_ant/players/start_stop_button.rb +0 -37
  159. data/productions/examples/langstons_ant/players/world.rb +0 -35
  160. data/productions/examples/langstons_ant/props.rb +0 -22
  161. data/productions/examples/langstons_ant/styles.rb +0 -104
  162. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +0 -10
  163. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +0 -32
  164. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +0 -52
  165. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +0 -16
  166. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +0 -8
  167. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +0 -20
  168. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +0 -15
  169. data/productions/examples/sandbox/alerts/players/alerts.rb +0 -17
  170. data/productions/examples/sandbox/alerts/props.rb +0 -10
  171. data/productions/examples/sandbox/alerts/styles.rb +0 -46
  172. data/productions/examples/sandbox/background_images/props.rb +0 -22
  173. data/productions/examples/sandbox/background_images/styles.rb +0 -40
  174. data/productions/examples/sandbox/click_me/players/chromaton.rb +0 -52
  175. data/productions/examples/sandbox/click_me/props.rb +0 -8
  176. data/productions/examples/sandbox/click_me/styles.rb +0 -11
  177. data/productions/examples/sandbox/floaters/players/floater.rb +0 -108
  178. data/productions/examples/sandbox/floaters/players/surface.rb +0 -21
  179. data/productions/examples/sandbox/floaters/props.rb +0 -10
  180. data/productions/examples/sandbox/floaters/styles.rb +0 -24
  181. data/productions/examples/sandbox/frameing/players/sandbox.rb +0 -17
  182. data/productions/examples/sandbox/frameing/props.rb +0 -35
  183. data/productions/examples/sandbox/frameing/styles.rb +0 -45
  184. data/productions/examples/sandbox/gradients/players/spinner.rb +0 -20
  185. data/productions/examples/sandbox/gradients/players/teaser.rb +0 -19
  186. data/productions/examples/sandbox/gradients/players/wave.rb +0 -19
  187. data/productions/examples/sandbox/gradients/players/waves.rb +0 -19
  188. data/productions/examples/sandbox/gradients/props.rb +0 -13
  189. data/productions/examples/sandbox/gradients/styles.rb +0 -47
  190. data/productions/examples/sandbox/header.rb +0 -22
  191. data/productions/examples/sandbox/homer/players/homer.rb +0 -24
  192. data/productions/examples/sandbox/homer/props.rb +0 -10
  193. data/productions/examples/sandbox/homer/styles.rb +0 -16
  194. data/productions/examples/sandbox/images/arch.jpg +0 -0
  195. data/productions/examples/sandbox/images/beach.jpg +0 -0
  196. data/productions/examples/sandbox/images/homer.jpg +0 -0
  197. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  198. data/productions/examples/sandbox/images/logo.png +0 -0
  199. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  200. data/productions/examples/sandbox/images/space.png +0 -0
  201. data/productions/examples/sandbox/images_scene/props.rb +0 -36
  202. data/productions/examples/sandbox/images_scene/styles.rb +0 -34
  203. data/productions/examples/sandbox/inputs/players/button_input.rb +0 -48
  204. data/productions/examples/sandbox/inputs/players/check_box_input.rb +0 -40
  205. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +0 -41
  206. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +0 -43
  207. data/productions/examples/sandbox/inputs/players/text_area_input.rb +0 -36
  208. data/productions/examples/sandbox/inputs/players/text_box_input.rb +0 -36
  209. data/productions/examples/sandbox/inputs/props.rb +0 -40
  210. data/productions/examples/sandbox/inputs/styles.rb +0 -39
  211. data/productions/examples/sandbox/kiosk/players/kiosk.rb +0 -39
  212. data/productions/examples/sandbox/kiosk/props.rb +0 -9
  213. data/productions/examples/sandbox/kiosk/styles.rb +0 -37
  214. data/productions/examples/sandbox/players/sandbox.rb +0 -11
  215. data/productions/examples/sandbox/rounded_corners/players/box.rb +0 -11
  216. data/productions/examples/sandbox/rounded_corners/props.rb +0 -22
  217. data/productions/examples/sandbox/rounded_corners/styles.rb +0 -17
  218. data/productions/examples/sandbox/scrolling/players/add_button.rb +0 -19
  219. data/productions/examples/sandbox/scrolling/players/cell.rb +0 -15
  220. data/productions/examples/sandbox/scrolling/props.rb +0 -45
  221. data/productions/examples/sandbox/scrolling/styles.rb +0 -33
  222. data/productions/examples/sandbox/sketching/players/sketchpad.rb +0 -46
  223. data/productions/examples/sandbox/sketching/props.rb +0 -25
  224. data/productions/examples/sandbox/sketching/styles.rb +0 -35
  225. data/productions/examples/sandbox/sounds/bird.au +0 -0
  226. data/productions/examples/sandbox/sounds/cat.au +0 -0
  227. data/productions/examples/sandbox/sounds/cow.au +0 -0
  228. data/productions/examples/sandbox/sounds/dog.au +0 -0
  229. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  230. data/productions/examples/sandbox/sounds/duck.au +0 -0
  231. data/productions/examples/sandbox/sounds/players/clip.rb +0 -10
  232. data/productions/examples/sandbox/sounds/props.rb +0 -10
  233. data/productions/examples/sandbox/sounds/styles.rb +0 -17
  234. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +0 -16
  235. data/productions/examples/sandbox/stage_handles/players/sizer.rb +0 -38
  236. data/productions/examples/sandbox/stage_handles/props.rb +0 -17
  237. data/productions/examples/sandbox/stage_handles/styles.rb +0 -58
  238. data/productions/examples/sandbox/stages.rb +0 -8
  239. data/productions/examples/sandbox/styles.rb +0 -35
  240. data/productions/examples/sandbox/teaser/players/fader.rb +0 -58
  241. data/productions/examples/sandbox/teaser/props.rb +0 -14
  242. data/productions/examples/sandbox/teaser/styles.rb +0 -21
  243. data/productions/examples/tutorials/tutorial_1/players/sample.rb +0 -11
  244. data/productions/examples/tutorials/tutorial_1/props.rb +0 -9
  245. data/productions/examples/tutorials/tutorial_1/styles.rb +0 -25
  246. data/productions/stage_composer/init.rb +0 -10
  247. data/productions/stage_composer/inspector/players/inspector.rb +0 -80
  248. data/productions/stage_composer/inspector/players/prop_row.rb +0 -12
  249. data/productions/stage_composer/inspector/players/prop_tree.rb +0 -33
  250. data/productions/stage_composer/inspector/players/style_table.rb +0 -12
  251. data/productions/stage_composer/inspector/players/style_value.rb +0 -16
  252. data/productions/stage_composer/inspector/props.rb +0 -19
  253. data/productions/stage_composer/inspector/styles.rb +0 -71
  254. data/productions/stage_composer/lib/init.rb +0 -5
  255. data/productions/stage_composer/lib/limelight/composer/controller.rb +0 -51
  256. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +0 -24
  257. data/productions/stage_composer/production.rb +0 -6
  258. data/productions/stage_composer/stages.rb +0 -15
  259. data/productions/startup/images/logo.png +0 -0
  260. data/productions/startup/images/splash.png +0 -0
  261. data/productions/startup/production.rb +0 -52
  262. data/productions/startup/spec/default_scene/default_scene_spec.rb +0 -16
  263. data/productions/startup/spec/spec_helper.rb +0 -8
  264. data/productions/startup/stages.rb +0 -9
  265. data/productions/startup/styles.rb +0 -15
  266. data/productions/startup/welcome/players/browse_button.rb +0 -10
  267. data/productions/startup/welcome/players/download_button.rb +0 -17
  268. data/productions/startup/welcome/players/sandbox_button.rb +0 -11
  269. data/productions/startup/welcome/props.rb +0 -23
  270. data/productions/startup/welcome/styles.rb +0 -103
  271. data/spec/limelight/builtin/players/button_spec.rb +0 -20
  272. data/spec/limelight/builtin/players/check_box_spec.rb +0 -29
  273. data/spec/limelight/builtin/players/combo_box_spec.rb +0 -29
  274. data/spec/limelight/builtin/players/image_spec.rb +0 -43
  275. data/spec/limelight/builtin/players/password_box_spec.rb +0 -27
  276. data/spec/limelight/builtin/players/radio_button_spec.rb +0 -64
  277. data/spec/limelight/builtin/players/stage_mover_spec.rb +0 -36
  278. data/spec/limelight/builtin/players/stage_sizer_spec.rb +0 -40
  279. data/spec/limelight/builtin/players/text_area_spec.rb +0 -27
  280. data/spec/limelight/builtin/players/text_box_spec.rb +0 -27
  281. data/spec/limelight/builtin/utilities_production/spec_helper.rb +0 -7
  282. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +0 -147
  283. data/spec/limelight/casting_director_spec.rb +0 -164
  284. data/spec/limelight/commands/command_spec.rb +0 -26
  285. data/spec/limelight/commands/create_command_spec.rb +0 -108
  286. data/spec/limelight/commands/freeze_command_spec.rb +0 -143
  287. data/spec/limelight/commands/help_command_spec.rb +0 -42
  288. data/spec/limelight/commands/open_command_spec.rb +0 -53
  289. data/spec/limelight/commands/pack_command_spec.rb +0 -43
  290. data/spec/limelight/commands/unpack_command_spec.rb +0 -47
  291. data/spec/limelight/data_spec.rb +0 -36
  292. data/spec/limelight/dsl/prop_builder_spec.rb +0 -245
  293. data/spec/limelight/dsl/stage_builder_spec.rb +0 -90
  294. data/spec/limelight/dsl/styles_builder_spec.rb +0 -194
  295. data/spec/limelight/file_chooser_spec.rb +0 -64
  296. data/spec/limelight/file_filter_spec.rb +0 -29
  297. data/spec/limelight/file_loader_spec.rb +0 -28
  298. data/spec/limelight/gems_spec.rb +0 -92
  299. data/spec/limelight/java_util_spec.rb +0 -37
  300. data/spec/limelight/main_spec.rb +0 -40
  301. data/spec/limelight/paint_action_spec.rb +0 -30
  302. data/spec/limelight/pen_spec.rb +0 -62
  303. data/spec/limelight/producer_spec.rb +0 -246
  304. data/spec/limelight/production_spec.rb +0 -97
  305. data/spec/limelight/prop_spec.rb +0 -431
  306. data/spec/limelight/scene_spec.rb +0 -173
  307. data/spec/limelight/stage_spec.rb +0 -247
  308. data/spec/limelight/string_spec.rb +0 -38
  309. data/spec/limelight/templates/production_templater_spec.rb +0 -66
  310. data/spec/limelight/templates/scene_templater_spec.rb +0 -51
  311. data/spec/limelight/templates/templater_logger_spec.rb +0 -41
  312. data/spec/limelight/templates/templater_spec.rb +0 -107
  313. data/spec/limelight/theater_spec.rb +0 -120
  314. data/spec/limelight/util/downloader_spec.rb +0 -92
  315. data/spec/spec_helper.rb +0 -64
@@ -1,151 +0,0 @@
1
- #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
- #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
-
4
- require 'limelight/java_util'
5
- require 'limelight/prop'
6
- require 'limelight/button_group_cache'
7
- require 'limelight/limelight_exception'
8
- require 'limelight/file_loader'
9
-
10
-
11
- module Limelight
12
-
13
- # A Scene is a root Prop. Scenes may be loaded onto a Stage. In addition to being a Prop object, Scenes have a
14
- # few extra attributes and behaviors.
15
- #
16
- class Scene < Prop
17
- include UI::Api::Scene
18
-
19
- attr_reader :button_groups, :casting_director, :cast
20
- attr_accessor :stage, :visible, :production, :styles
21
- getters :stage, :loader, :styles
22
- setters :stage
23
- event :scene_opened
24
-
25
- alias :visible? :visible
26
-
27
- def initialize(options={})
28
- path = options.delete(:path) || ""
29
- @root = FileLoader.for_root(path)
30
- super(options)
31
- @button_groups = ButtonGroupCache.new
32
- @prop_index = {}
33
- @cast = Module.new
34
- # illuminate
35
- end
36
-
37
- # Returns self. A Scene is it's own scene.
38
- #
39
- def scene
40
- return self
41
- end
42
-
43
- # Returns the path to the root directory of the Scene
44
- #
45
- def path
46
- return @root.root
47
- end
48
-
49
- # Returns the path to the Scene's props file
50
- #
51
- def props_file
52
- return @root.path_to("props.rb")
53
- end
54
-
55
- # Returns the path to the Scene's props file
56
- #
57
- def styles_file
58
- return @root.path_to("styles.rb")
59
- end
60
-
61
- # def add_options(options) #:nodoc:
62
- # @options = options
63
- # illuminate
64
- # end
65
-
66
- # Creates the menu bar for the Scene
67
- #
68
- def menu_bar
69
- return DSL::MenuBar.build(self) do
70
- menu("File") do
71
- item("Open", :open_chosen_production)
72
- item("Refresh", :reload)
73
- end
74
- end
75
- end
76
-
77
- # Opens a FileChooser for a new Production. Loads the chosen Production.
78
- #
79
- def open_chosen_production
80
- options = { :title => "Open New Limelight Production", :description => "Limelight Production", :directory => @directory }
81
- chosen_file = stage.choose_file(options) { |file| Util.is_limelight_scene?(file) || Util.is_limelight_production?(file) }
82
- if chosen_file
83
- @directory = File.dirname(chosen_file)
84
- open_production(chosen_file)
85
- end
86
- end
87
-
88
- # Creates a new Producer to open the specified Production.
89
- #
90
- def open_production(production_path)
91
- Thread.new { Context.instance.studio.open(production_path) }
92
- end
93
-
94
- # Opens the specified Scene on the Stage currently occupied by this Scene.
95
- # TODO It doesn't quite make sense that a scene loads other scene. It has to replace itself?
96
- #
97
- def load(scene_name)
98
- @production.producer.open_scene(scene_name, @stage)
99
- end
100
-
101
- # Add the Prop to the index. Provides fast lookup by id.
102
- #
103
- def index_prop(prop)
104
- return if prop.id.nil? || prop.id.empty?
105
- indexee = @prop_index[prop.id]
106
- if indexee.nil?
107
- @prop_index[prop.id] = prop
108
- else
109
- raise LimelightException.new("Duplicate id: #{prop.id}") if indexee != prop
110
- end
111
- end
112
-
113
- # Removed the Prop from the index.
114
- #
115
- def unindex_prop(prop)
116
- unindex_child_props(prop)
117
- @prop_index.delete(prop.id) if prop.id
118
- end
119
-
120
- # Returns a Prop with the specified id. Returns nil id the Prop doesn't exist in the Scene.
121
- #
122
- def find(id)
123
- return @prop_index[id.to_s]
124
- end
125
-
126
- def illuminate #:nodoc:
127
- @styles = @options.delete(:styles_hash) || @styles || {}
128
- @casting_director = @options.delete(:casting_director) if @options.has_key?(:casting_director)
129
- @path = @options.delete(:path) if @options.has_key?(:path)
130
- @production = @options.delete(:production) if @options.has_key?(:production)
131
- super
132
- end
133
-
134
- private ###############################################
135
-
136
- def unindex_child_props(prop)
137
- prop.children.each do |child|
138
- if child.children.empty?
139
- @prop_index.delete(child.id)
140
- else
141
- unindex_prop(child)
142
- end
143
- end
144
- end
145
-
146
- def reload
147
- load(File.basename(path))
148
- end
149
-
150
- end
151
- end
@@ -1,136 +0,0 @@
1
- #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
- #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
-
4
- require 'spec'
5
- require File.expand_path(File.dirname(__FILE__) + "/../../init")
6
- require 'limelight/scene'
7
- require 'limelight/producer'
8
- require 'limelight/string'
9
- require 'limelight/specs/test_scene_opener'
10
-
11
- module Limelight
12
-
13
- # Limelight comes with builtin assistance for testing your productions with rspec.
14
- # See Limelight::Specs::SpecHelper
15
- #
16
- module Specs
17
-
18
- class << self
19
- attr_accessor :producer
20
- end
21
-
22
- # Limelight comes with builtin assistance for testing your productions with rspec. To get started, add the following
23
- # to your describe block...
24
- #
25
- # uses_limelight :scene => "my_scene"
26
- #
27
- # This will add before(:each) blocks that will setup your production and load your scene before each test.
28
- # It also provides some accessors to common objects like the scene and production. Afterwards, you can
29
- # write tests that look like this.
30
- #
31
- # it "should do something with the scene" do
32
- # scene.name.should == "my_scene"
33
- # scene.find("title").text.should == "This is the Title"
34
- # production.theater["default_stage"].current_scene.should be(scene)
35
- # end
36
- #
37
- # There are several other options you can supply with 'uses_limelight':
38
- #
39
- # :hidden - (true or false) Defaults to true, but if you turn it off, the scene will pop open on your screen. This
40
- # can be really nifty at times and really annoying at other time.
41
- #
42
- # :stage - The name of the stage you want the scene to be loaded on. The theater's default stage will be used by
43
- # default.
44
- #
45
- # :scene_name - To be used instead of the :scene option. This will create an empty scene in your production with
46
- # the specified name.
47
- #
48
- # :scene_path - To be used in conjunction with :scene_name. This will cause the empty scene to be loaded with
49
- # the specified path. Styles and Players associated with the path will be applied to the created scene.
50
- #
51
- # The 'uses_limelight' methods also accepts block using the Limelight::DSL::PropBuilder DSL. This is convenient for building a
52
- # simple prop structure sufficient to test the desired behavior. Here's an example:
53
- #
54
- # describe "my scene" do
55
- # uses_limelight :scene_name => "some_name", :scene_path => "my_scene_path" do
56
- # clicky :id => "clicky", :text => "click me", :on_mouse_clicked => "self.text = 'Hey! You clicked me!'"
57
- # end
58
- #
59
- # it "should change text on clicky when clicked" do
60
- # scene.find("clicky").mouse_clicked(nil)
61
- # clicky.text.should == "Hey! You clicked me!"
62
- # end
63
- # end
64
- #
65
- module SpecHelper
66
- def scene
67
- if !@scene
68
- @scene = TestSceneOpener.new(producer, @ll_spec_options, @prop_block).open_scene
69
- end
70
- return @scene
71
- end
72
- end
73
- end
74
- end
75
-
76
- module Spec #:nodoc:
77
- module Example
78
- class ExampleGroup
79
-
80
- # Deprecated
81
- #
82
- def self.uses_scene(scene_name, options = {})
83
- uses_limelight({:scene => scene_name}.merge(options))
84
- end
85
-
86
- def self.uses_limelight(options = {}, &prop_block)
87
- include Limelight::Specs::SpecHelper
88
-
89
- before(:each) do
90
- @ll_spec_options = options
91
- @prop_block = prop_block
92
- @player = @scene = nil
93
- create_accessor_for(@ll_spec_options[:with_player]) if @ll_spec_options[:with_player]
94
- end
95
- end
96
-
97
- after(:suite) do
98
- unless Limelight::Specs.producer.nil?
99
- Limelight::Specs.producer.theater.stages.each do |stage|
100
- # MDM - We do this in a round-about way to reduce the chance of using stubbed or mocked methods.
101
- frame = stage.instance_variable_get("@frame")
102
- frame.close if frame
103
- end
104
- end
105
- end
106
-
107
- def producer
108
- if Limelight::Specs.producer.nil?
109
- if $with_ui
110
- Limelight::Main.initializeContext
111
- else
112
- Limelight::Main.initializeTestContext
113
- end
114
- raise "$PRODUCTION_PATH undefined. Make sure you specify the location of the production in $PRODUCTION_PATH." unless defined?($PRODUCTION_PATH)
115
- raise "Could not find production: '#{$PRODUCTION_PATH}'. Check $PRODUCTION_PATH." unless File.exists?($PRODUCTION_PATH)
116
- Limelight::Specs.producer = Limelight::Producer.new($PRODUCTION_PATH)
117
- Limelight::Specs.producer.load
118
- end
119
- return Limelight::Specs.producer
120
- end
121
-
122
- def production
123
- return producer.production
124
- end
125
-
126
- def create_accessor_for(player_name)
127
- accessor = <<-EOF
128
- def #{player_name}
129
- return scene.find('#{player_name}')
130
- end
131
- EOF
132
- eval(accessor)
133
- end
134
- end
135
- end
136
- end
@@ -1,63 +0,0 @@
1
- #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
- #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
-
4
- module Limelight
5
- module Specs
6
- module SpecHelper
7
-
8
- class TestSceneOpener #:nodoc:
9
- def initialize(producer, ll_spec_options, prop_block)
10
- @producer = producer
11
- @prop_block = prop_block
12
- @production = producer.production
13
- @ll_spec_options = ll_spec_options
14
- end
15
-
16
- def create_player_helper
17
- player_name = @ll_spec_options[:with_player]
18
- Limelight.build_props(@scene, :build_loader => @production.root) do
19
- __test_prop({:name =>player_name, :players => "#{player_name}", :id => "#{player_name}"})
20
- end
21
- end
22
-
23
- def setup_player_spec
24
- path = @production.scene_directory(@ll_spec_options[:scene_path])
25
- @scene = Scene.new(:production => @production, :casting_director => @producer.casting_director, :path => path, :name => @ll_spec_options[:scene_name])
26
-
27
- if @prop_block
28
- Limelight.build_props(@scene, :build_loader => @production.root, &@prop_block)
29
- elsif @ll_spec_options[:with_player]
30
- create_player_helper
31
- end
32
-
33
- styles = @producer.load_styles(@scene)
34
- @scene.styles = @producer.load_styles(@scene)
35
- @stage.open(@scene)
36
- end
37
-
38
- def setup_stage
39
- if @ll_spec_options[:stage]
40
- @stage = @producer.theater[@ll_spec_options[:stage]]
41
- raise "No such stage: '#{@ll_spec_options[:stage]}'" unless @stage
42
- else
43
- @stage = @producer.theater.default_stage
44
- end
45
-
46
- @stage.should_remain_hidden = @ll_spec_options[:hidden] || true
47
- end
48
-
49
- def open_scene
50
- setup_stage
51
-
52
- if @ll_spec_options[:scene]
53
- @scene = @producer.open_scene(@ll_spec_options[:scene].to_s, @stage)
54
- elsif @ll_spec_options[:scene_path]
55
- setup_player_spec
56
- end
57
-
58
- return @scene
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,353 +0,0 @@
1
- #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
- #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
-
4
- #require 'limelight/dsl/menu_bar'
5
- require 'limelight/file_chooser'
6
- require 'limelight/util'
7
-
8
- module Limelight
9
-
10
- # In the metephorical sense, a Stage is a platform which may hold a scene. In a more, to-the-point sence, a Stage
11
- # represents a window on the computer screen. The Stage objects within a Production are configured by the StagesBuilder.
12
- # By default a Production will have one Stage. A Stage may open any number of Scenes but it may only have one current
13
- # scene loaded at a time.
14
- #
15
- class Stage
16
- attr_accessor :default_scene
17
- attr_reader :frame, :current_scene, :name, :theater
18
-
19
- attr_accessor :should_remain_hidden #:nodoc:
20
-
21
- include UI::Api::Stage
22
-
23
- # To create a new Stage, it be given a Theater to which it belongs, and the name is optional. If no name is provided
24
- # it will default to 'default'. A stage name must be unique, so it is recommended you provide a name.
25
- #
26
- def initialize(theater, name, options = {})
27
- @theater = theater
28
- @name = name
29
- build_frame
30
- self.title = @name
31
- apply_options(options)
32
- end
33
-
34
- # Returns the title that is displayed at the top of the window that this stage represents.
35
- #
36
- def title
37
- return @frame.title
38
- end
39
-
40
- # Sets the title that is displayed at the top of the window that this stage represents.
41
- #
42
- def title=(value)
43
- @frame.title = value
44
- end
45
-
46
- # Returns the width and height styles of the Stage.
47
- #
48
- # width, height = stage.size
49
- #
50
- def size
51
- return @frame.width_style.to_s, @frame.height_style.to_s
52
- end
53
-
54
- # Sets the width and height styles of the Stage.
55
- #
56
- # state.size = [100, 200]
57
- # state.size = ["50%", "100%"] # consuming 50% of the width and 100% of the height of the screen
58
- #
59
- def size=(*values)
60
- values = values[0] if values.size == 1 && values[0].is_a?(Array)
61
- @frame.set_size_styles(values[0], values[1])
62
- end
63
-
64
- # The location styles of the Stage.
65
- #
66
- # x, y = stage.location
67
- #
68
- def location
69
- return @frame.getXLocationStyle.to_s, @frame.getYLocationStyle.to_s
70
- end
71
-
72
- # Sets the location styles of the Stage.
73
- #
74
- # stage.location = [500, 200]
75
- #
76
- def location=(*values)
77
- values = values[0] if values.size == 1 && values[0].is_a?(Array)
78
- @frame.set_location_styles(values[0], values[1])
79
- end
80
-
81
- # Turns fullscreen mode on and off. In fullscreen mode, the stage will fill the entire screen and appear on top
82
- # of all other windows.
83
- #
84
- # stage.fullscreen = true
85
- #
86
-
87
- def fullscreen=(on)
88
- @frame.setFullScreen(on)
89
- end
90
-
91
- # Returns true if the stage is in fullscreen mode.
92
- #
93
- def fullscreen?
94
- return @frame.isFullScreen()
95
- end
96
-
97
- # Turns kiosk mode for this stage on and off. When on, the stage will:
98
- # * be fullscreen
99
- # * not be frames
100
- # * disable OS key commands
101
- # * OS X: Cmd-Tab, Cmd-Alt-Esc, etc...
102
- # * Windows: Alt-Tab, Ctrl-Esc, etc... (Ctrl-Alt-Del must be disabled through a registry entry)
103
- #
104
- # stage.kiosk = true
105
- #
106
- def kiosk=(on)
107
- @frame.setKiosk(on)
108
- end
109
-
110
- # Return true if the stage is in kiosk mode.
111
- #
112
- def kiosk?
113
- return @frame.isKiosk()
114
- end
115
-
116
-
117
- # Hides the stage so that it is not visible on the screen without destroying it.
118
- #
119
- def hide
120
- @frame.visible = false
121
- end
122
-
123
- # Shows the stage after having hiding it.
124
- #
125
- def show
126
- @frame.visible = true unless @should_remain_hidden
127
- end
128
-
129
- # Returns true if the stage is visible on the screen.
130
- #
131
- def visible?
132
- return @frame.visible
133
- end
134
-
135
- # Sets the background color of the stage
136
- #
137
- def background_color=(value)
138
- @frame.background_color = value.to_s
139
- end
140
-
141
- # Returns the background color of the stage in the format #RRGGBB(AA)
142
- #
143
- def background_color
144
- return @frame.background_color
145
- end
146
-
147
- # When true, the stage will be frame with the operating system's standard window frame including close, minimize,
148
- # and maximize buttons
149
- #
150
- def framed=(value)
151
- @frame.setUndecorated(!value)
152
- end
153
-
154
- # Return true if the stage is framed.
155
- #
156
- def framed?
157
- return !@frame.isUndecorated()
158
- end
159
-
160
- # When true, the stage will remain on top of all other windows.
161
- #
162
- def always_on_top=(value)
163
- @frame.always_on_top = value
164
- end
165
-
166
- # Return true if the stage has been set to always be on top.
167
- #
168
- def always_on_top?
169
- return @frame.always_on_top
170
- end
171
-
172
- # Sets the vitality of the stage. Limelight will not exit while vital frames remain visible.
173
- #
174
- def vital=(value)
175
- @frame.vital = value
176
- end
177
-
178
- # Returns true if this is a vital stage. Limelight will not exit while vital frames remain visible.
179
- #
180
- def vital?
181
- return @frame.vital?
182
- end
183
-
184
- # Opens the Stage and loads the provided Scene.
185
- #
186
- # See load_scene
187
- #
188
- def open(scene)
189
- @current_scene.visible = false if @current_scene
190
- scene.stage = self
191
- scene.illuminate
192
- load_scene(scene)
193
- @frame.open unless @should_remain_hidden
194
- scene.visible = true
195
- scene.scene_opened(self)
196
- end
197
-
198
- # Closes the Stage. It's window will no longer be displayed on the screen.
199
- #
200
- def close
201
- @frame.close
202
- end
203
-
204
- # Loads a scene on the Stage. If the Stage is currently hosting a Scene, the original Scene will be removed and
205
- # the new Scene will replace it.
206
- #
207
- def load_scene(scene)
208
- # @frame.setJMenuBar(scene.menu_bar)
209
- @frame.load(scene.panel)
210
- if (has_static_size?(scene.style))
211
- @frame.set_size(scene.style.compiled_width.value + @frame.getHorizontalInsetWidth, scene.style.compiled_height.value + @frame.getVerticalInsetWidth)
212
- end
213
- @current_scene = scene
214
- end
215
-
216
- # Opens a file chooser window to select a file on the file system. Options may include:
217
- # * :description => a string describing the desired file
218
- # * :directory => starting directory
219
- # * :title => title of the window
220
- # * :directories_only => boolean, true if the user must select a directory
221
- # * :files_only => boolean, true if the user must select a file
222
- #
223
- def choose_file(options={}, &block)
224
- options[:parent] = @frame
225
- chooser = FileChooser.new(options, &block)
226
- return chooser.choose_file
227
- end
228
-
229
- # Pops up a simple modal dialog with the provided message.
230
- #
231
- def alert(message)
232
- Thread.new do
233
- begin
234
- Context.instance.studio.utilities_production.alert(message)
235
- rescue StandardError => e
236
- puts "Error on alert: #{e}"
237
- end
238
- end
239
- end
240
-
241
- # Called when the user or system would like to close the stage. The stage will return true, allowing it to be
242
- # closed, unless the current_scene defines the allow_close? method in which case the decision it left up to the
243
- # current_scene.
244
- #
245
- def should_allow_close
246
- return true if @current_scene.nil?
247
- return true if !@current_scene.respond_to?(:allow_close?)
248
- return @current_scene.allow_close?
249
- end
250
-
251
- def stub_current_scene(scene) #:nodoc:
252
- @current_scene = scene
253
- end
254
-
255
- # returns true if the stage has been closed. Closed stages may not be reopened.
256
- #
257
- def closed?
258
- return @frame.closed?
259
- end
260
-
261
- # Invoked when the stage is being closed.
262
- # System hook that should NOT be called by you.
263
- #
264
- def closing(e)
265
- end
266
-
267
- # Invoked when the stage has been closed.
268
- # System hook that should NOT be called by you.
269
- # It's not garunteed that this hook will be called when Limelight is shutting down.
270
- #
271
- def closed(e)
272
- @current_scene.visible = false if @current_scene
273
- @current_scene = nil
274
- @theater.stage_closed(self)
275
- end
276
-
277
- # Invoked when the stage has gained focus on the desktop. Only 1 stage my have focus at a time.
278
- # System hook that should NOT be called by you.
279
- #
280
- def focus_gained(e)
281
- @theater.stage_activated(self)
282
- end
283
-
284
- # Invoked when the stage has lost focus on the desktop. Only 1 stage my have focus at a time.
285
- # System hook that should NOT be called by you.
286
- #
287
- def focus_lost(e)
288
- end
289
-
290
- # Invoked when the stage has been iconified. This occurs when the stage is no longer visible on the desktop
291
- # and an icon for the stage has been added to the OS's taskbar or dock.
292
- # System hook that should NOT be called by you.
293
- #
294
- def iconified(e)
295
- end
296
-
297
- # Invoked when the stage has been deiconified. This occurs when the icon for the stage has been removed from the
298
- # taskbar or dock, and the stage is again visible on the desktop.
299
- # System hook that should NOT be called by you.
300
- #
301
- def deiconified(e)
302
- end
303
-
304
- # Invoked when the stage has become the active stage on the desktop. Only 1 stage my be active at a time.
305
- # System hook that should NOT be called by you.
306
- #
307
- def activated(e)
308
- @theater.stage_activated(self)
309
- end
310
-
311
- # Invoked when the stage has lost status as the active stage. Only 1 stage my have focus at a time.
312
- # System hook that should NOT be called by you.
313
- #
314
- def deactivated(e)
315
- @theater.stage_deactivated(self)
316
- end
317
-
318
- protected #############################################
319
-
320
- def new_frame
321
- return UI::Model::Frame.new(self)
322
- end
323
-
324
- private ###############################################
325
-
326
- def build_frame
327
- @frame = new_frame
328
- @frame.set_size(800, 800)
329
- @frame.set_location(200, 25)
330
- @frame.title = title
331
- end
332
-
333
- def has_static_size?(style)
334
- return is_static?(style.get_width) && is_static?(style.get_height)
335
- end
336
-
337
- def is_static?(value)
338
- return !(value.to_s.include?("%")) && !(value.to_s == "auto")
339
- end
340
-
341
- def apply_options(options)
342
- options.each_pair do |key, value|
343
- setter_sym = "#{key.to_s}=".to_sym
344
- if self.respond_to?(setter_sym)
345
- self.send(setter_sym, value)
346
- end
347
- end
348
- end
349
-
350
- end
351
-
352
- end
353
-