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
@@ -0,0 +1,191 @@
1
+ #- Copyright © 2008-2011 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the MIT License.
3
+
4
+ require 'rspec'
5
+ require File.expand_path(File.dirname(__FILE__) + "/../limelight_init")
6
+ require 'limelight/production'
7
+ require 'limelight/scene'
8
+ require 'limelight/string'
9
+ require 'limelight/mouse'
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 :production
20
+ end
21
+
22
+ # Limelight comes with builtin assistance for testing your productions using 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 "does 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
+
67
+ def production
68
+ if Limelight::Specs.production.nil?
69
+ # if $with_ui
70
+ Java::limelight.Boot.boot
71
+ # else
72
+ # Limelight::Main.initializeTestContext
73
+ # end
74
+ raise "$PRODUCTION_PATH undefined. Make sure you specify the location of the production in $PRODUCTION_PATH." unless defined?($PRODUCTION_PATH)
75
+ raise "Could not find production: '#{$PRODUCTION_PATH}'. Check $PRODUCTION_PATH." unless File.exists?($PRODUCTION_PATH)
76
+ Limelight::Specs.production = Limelight::Production.new(Java::limelight.ruby.RubyProduction.new($PRODUCTION_PATH))
77
+ Limelight::Specs.production.peer.illuminateProduction
78
+ Limelight::Specs.production.peer.loadProduction
79
+ end
80
+ Limelight::Specs.production
81
+ end
82
+
83
+ def mouse
84
+ @mouse ||= Limelight::Mouse.new
85
+ @mouse
86
+ end
87
+
88
+ def scene
89
+ if @scene.nil?
90
+ _setup_stage
91
+ if @ll_scene_id
92
+ @scene = production.open_scene(@ll_scene_id.to_s, :stage => @stage.name)
93
+ elsif @ll_scene_path
94
+ _setup_scene
95
+ end
96
+ end
97
+ @scene
98
+ end
99
+
100
+ private #############################################
101
+
102
+ def _init_ll_options(options)
103
+ @ll_scene_id = options[:scene]
104
+ @ll_scene_name = options[:scene_name]
105
+ @ll_scene_path = options[:scene_path]
106
+ @ll_stage_id = options[:stage]
107
+ @ll_hidden = options[:hidden]
108
+ @ll_player_names = options[:with_players]
109
+ _configure_player_helpers()
110
+ end
111
+
112
+ def _configure_player_helpers
113
+ if @ll_player_names
114
+ @ll_player_names = @ll_player_names.is_a?(Array) ? @ll_player_names : [@ll_player_names]
115
+ @ll_player_names = @ll_player_names.map { |n| n.to_s }
116
+ @ll_player_names.each do |player_name|
117
+ eval "def #{player_name}; scene.find('#{player_name}'); end;"
118
+ end
119
+ end
120
+ end
121
+
122
+ def _create_player_helpers
123
+ player_names = @ll_player_names
124
+ Limelight.build_props(@scene, :build_loader => production.root) do
125
+ player_names.each do |player_name|
126
+ __test_prop :name =>player_name, :players => "#{player_name}", :id => "#{player_name}"
127
+ end
128
+ end
129
+ end
130
+
131
+ def _setup_scene
132
+ path = production.scene_directory(@ll_scene_path)
133
+ @scene = Scene.new(:production => production, :path => path, :name => @ll_scene_name)
134
+ _create_player_helpers
135
+ Limelight.build_props(@scene, :build_loader => production.root, &@prop_block) if @prop_block
136
+
137
+ production.load_styles(@scene, @production.styles)
138
+ @stage.scene = @scene
139
+ @stage.open
140
+ end
141
+
142
+ def _setup_stage
143
+ if @ll_stage_id
144
+ @stage = production.theater[@ll_stage_id]
145
+ raise "No such stage: '#{@ll_stage_id}'" unless @stage
146
+ else
147
+ @stage = production.theater.default_stage
148
+ end
149
+
150
+ Java::limelight.ui.model.StageFrame.hiddenMode = @ll_hidden || true
151
+ end
152
+ end
153
+ end
154
+ end
155
+
156
+ RSpec.configure do |config|
157
+ config.after(:suite) do
158
+ Java::limelight.Context.instance.killThreads
159
+ #if Limelight::Specs.production
160
+ # Limelight::Specs.production.theater.stages.each do |stage|
161
+ # # MDM - We do this in a round-about way to reduce the chance of using stubbed or mocked methods.
162
+ # frame = stage.instance_variable_get("@frame")
163
+ # frame.close if frame
164
+ # end
165
+ #end
166
+ Java::java.awt.Window.getWindows.each do |window|
167
+ window.dispose
168
+ end
169
+ end
170
+ end
171
+
172
+ module RSpec
173
+ module Core
174
+ class ExampleGroup
175
+
176
+ def self.uses_limelight(options = {}, &prop_block)
177
+ include Limelight::Specs::SpecHelper
178
+
179
+ before(:all) do
180
+ _init_ll_options(options)
181
+ @prop_block = prop_block
182
+ end
183
+
184
+ before(:each) do
185
+ @player = @scene = nil
186
+ end
187
+ end
188
+
189
+ end
190
+ end
191
+ end
@@ -0,0 +1,268 @@
1
+ #- Copyright © 2008-2011 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the MIT License.
3
+
4
+ #require 'limelight/dsl/menu_bar'
5
+ require 'limelight/optionable'
6
+ require 'limelight/file_chooser'
7
+ require 'limelight/util'
8
+ require 'limelight/util/hashes'
9
+
10
+ module Limelight
11
+
12
+ # In the metephorical sense, a Stage is a platform which may hold a scene. In a more, to-the-point sence, a Stage
13
+ # represents a window on the computer screen. The Stage objects within a Production are configured by the StagesBuilder.
14
+ # By default a Production will have one Stage. A Stage may open any number of Scenes but it may only have one current
15
+ # scene loaded at a time.
16
+ #
17
+ class Stage
18
+
19
+ include Java::limelight.model.api.StageProxy
20
+ include Optionable
21
+
22
+ attr_reader :peer
23
+
24
+ # To create a new Stage, it be given a Theater to which it belongs, and the name is optional. If no name is provided
25
+ # it will default to 'default'. A stage name must be unique, so it is recommended you provide a name.
26
+ #
27
+ def initialize(theater, name, options = {})
28
+ @theater = theater
29
+ @peer = Java::limelight.ui.model.FramedStage.new(name, self)
30
+ @peer.apply_options(Util::Hashes.for_java(options))
31
+ end
32
+
33
+ # Returns the name of the scene that will be loaded on this stage by default
34
+ #
35
+ def default_scene_name
36
+ return @peer.default_scene_name
37
+ end
38
+
39
+ # Specifies the name of the scene that will be loaded on this stage by default
40
+ #
41
+ def default_scene_name=(value)
42
+ @peer.default_scene_name = value
43
+ end
44
+
45
+ # Returns the name of the stage
46
+ #
47
+ def name
48
+ return @peer.name
49
+ end
50
+
51
+ # Returns the title that is displayed at the top of the window that this stage represents.
52
+ #
53
+ def title
54
+ return @peer.title
55
+ end
56
+
57
+ # Sets the title that is displayed at the top of the window that this stage represents.
58
+ #
59
+ def title=(value)
60
+ @peer.title = value
61
+ end
62
+
63
+ # Returns the width and height styles of the Stage.
64
+ #
65
+ # width, height = stage.size
66
+ #
67
+ def size
68
+ return @peer.width_style.to_s, @peer.height_style.to_s
69
+ end
70
+
71
+ # Sets the width and height styles of the Stage.
72
+ #
73
+ # state.size = [100, 200]
74
+ # state.size = ["50%", "100%"] # consuming 50% of the width and 100% of the height of the screen
75
+ #
76
+ def size=(*values)
77
+ values = values[0] if values.size == 1 && values[0].is_a?(Array)
78
+ @peer.set_size_styles(values[0], values[1])
79
+ end
80
+
81
+ # The location styles of the Stage.
82
+ #
83
+ # x, y = stage.location
84
+ #
85
+ def location
86
+ return @peer.getXLocationStyle.to_s, @peer.getYLocationStyle.to_s
87
+ end
88
+
89
+ # Sets the location styles of the Stage.
90
+ #
91
+ # stage.location = [500, 200]
92
+ #
93
+ def location=(*values)
94
+ values = values[0] if values.size == 1 && values[0].is_a?(Array)
95
+ @peer.set_location_styles(values[0], values[1])
96
+ end
97
+
98
+ # Turns fullscreen mode on and off. In fullscreen mode, the stage will fill the entire screen and appear on top
99
+ # of all other windows.
100
+ #
101
+ # stage.fullscreen = true
102
+ #
103
+ def fullscreen=(on)
104
+ @peer.setFullScreen(on)
105
+ end
106
+
107
+ # Returns true if the stage is in fullscreen mode.
108
+ #
109
+ def fullscreen?
110
+ return @peer.isFullScreen()
111
+ end
112
+
113
+ # Turns kiosk mode for this stage on and off. When on, the stage will:
114
+ # * be fullscreen
115
+ # * not be frames
116
+ # * disable OS key commands
117
+ # * OS X: Cmd-Tab, Cmd-Alt-Esc, etc...
118
+ # * Windows: Alt-Tab, Ctrl-Esc, etc... (Ctrl-Alt-Del must be disabled through a registry entry)
119
+ #
120
+ # stage.kiosk = true
121
+ #
122
+ def kiosk=(on)
123
+ @peer.setKiosk(on)
124
+ end
125
+
126
+ # Return true if the stage is in kiosk mode.
127
+ #
128
+ def kiosk?
129
+ return @peer.isKiosk()
130
+ end
131
+
132
+
133
+ # Hides the stage so that it is not visible on the screen without destroying it.
134
+ #
135
+ def hide
136
+ @peer.hide
137
+ end
138
+
139
+ # Shows the stage after having hiding it.
140
+ #
141
+ def show
142
+ @peer.show
143
+ end
144
+
145
+ # Returns true if the stage is visible on the screen.
146
+ #
147
+ def visible?
148
+ return @peer.visible
149
+ end
150
+
151
+ # Sets the background color of the stage
152
+ #
153
+ def background_color=(value)
154
+ @peer.background_color = value.to_s
155
+ end
156
+
157
+ # Returns the background color of the stage in the format #RRGGBB(AA)
158
+ #
159
+ def background_color
160
+ return @peer.background_color
161
+ end
162
+
163
+ # When true, the stage will be frame with the operating system's standard window frame including close, minimize,
164
+ # and maximize buttons
165
+ #
166
+ def framed=(value)
167
+ @peer.framed = value
168
+ end
169
+
170
+ # Return true if the stage is framed.
171
+ #
172
+ def framed?
173
+ return @peer.framed?
174
+ end
175
+
176
+ # When true, the stage will remain on top of all other windows.
177
+ #
178
+ def always_on_top=(value)
179
+ @peer.always_on_top = value
180
+ end
181
+
182
+ # Return true if the stage has been set to always be on top.
183
+ #
184
+ def always_on_top?
185
+ return @peer.always_on_top
186
+ end
187
+
188
+ # Sets the vitality of the stage. Limelight will not exit while vital frames remain visible.
189
+ #
190
+ def vital=(value)
191
+ @peer.vital = value
192
+ end
193
+
194
+ # Returns true if this is a vital stage. Limelight will not exit while vital frames remain visible.
195
+ #
196
+ def vital?
197
+ return @peer.vital?
198
+ end
199
+
200
+ # Loads the provided Scene.
201
+ #
202
+ # See load_scene
203
+ #
204
+ def scene=(scene)
205
+ @peer.scene = scene.peer
206
+ end
207
+
208
+ # Returns the scene currently open on the stage
209
+ #
210
+ def scene
211
+ return @peer.scene.proxy if @peer.scene
212
+ end
213
+
214
+ # Returns the theater that the stage belongs to.
215
+ #
216
+ def theater
217
+ return @peer.theater.proxy
218
+ end
219
+
220
+ # Opens the stage. Opened stages are visible on the screen.
221
+ #
222
+ def open
223
+ @peer.open
224
+ end
225
+
226
+ # Closes the Stage. It's window will no longer be displayed on the screen.
227
+ #
228
+ def close
229
+ @peer.close
230
+ end
231
+
232
+ # Pops up a simple modal dialog with the provided message.
233
+ #
234
+ def alert(message)
235
+ Thread.new do
236
+ begin
237
+ Context.instance.studio.utilities_production.alert(message)
238
+ rescue StandardError => e
239
+ puts "Error on alert: #{e}"
240
+ end
241
+ end
242
+ end
243
+
244
+ # Called when the user or system would like to close the stage. The stage will return true, allowing it to be
245
+ # closed, unless the current_scene defines the allow_close? method in which case the decision it left up to the
246
+ # current_scene.
247
+ #
248
+ def should_allow_close
249
+ return @peer.should_all_close
250
+ end
251
+
252
+ # returns true if the stage has been closed. Closed stages may not be reopened.
253
+ #
254
+ def closed?
255
+ return @peer.closed?
256
+ end
257
+
258
+ def should_remain_hidden #:nodoc:
259
+ return @peer.should_remain_hidden
260
+ end
261
+
262
+ def should_remain_hidden=(value) #:nodoc:
263
+ @peer.should_remain_hidden = value
264
+ end
265
+ end
266
+
267
+ end
268
+