limelight 0.5.5-java → 0.6.14-java

Sign up to get free protection for your applications and to get access to all the features.
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
-