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,344 @@
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/java_util'
5
+ require 'limelight/optionable'
6
+ require 'limelight/pen'
7
+ require 'limelight/paint_action'
8
+ require 'limelight/animation'
9
+ require 'limelight/util/hashes'
10
+
11
+ module Limelight
12
+
13
+ # Prop is the fundamental building block of a scene. A prop represents a rectangular area in the scene, of almost any dimension.
14
+ # It may have borders, backgrounds, margin, padding, and it may contain other props or text. However it is the props'
15
+ # Styles that determine their size and appearance.
16
+ #
17
+ # A Prop may have one parent and many children. Hence, when put together, they form a tree structure. The Scene is
18
+ # the root Prop of a tree.
19
+ #
20
+ class Prop
21
+
22
+ include Optionable
23
+
24
+ include Java::limelight.model.api.PropProxy
25
+
26
+ attr_reader :peer #:nodoc:
27
+ getters :loader #:nodoc:
28
+
29
+ alias :getPeer :peer
30
+
31
+
32
+ # When creating a Prop, an optional Hash is accepted. These are called initialization options.
33
+ # The key/value pairs in the initialization options will be used to
34
+ # set properties on the Prop, it Style, or included Player properties. These properties are not set
35
+ # until the prop is added to a Prop tree with a Scene.
36
+ #
37
+ def initialize(options={})
38
+ @peer = Java::limelight.ui.model.PropPanel.new(self)
39
+ @peer.add_options(Util::Hashes.for_java(options))
40
+ end
41
+
42
+ def id
43
+ @peer.id
44
+ end
45
+
46
+ def name
47
+ @peer.name
48
+ end
49
+
50
+ def players
51
+ @peer.players
52
+ end
53
+
54
+ def backstage
55
+ if @backstage == nil
56
+ @backstage = Util::Hashes.for_ruby(@peer.backstage)
57
+ end
58
+ @backstage
59
+ end
60
+
61
+ def style
62
+ @peer.style
63
+ end
64
+
65
+ def hover_style
66
+ @peer.hover_style
67
+ end
68
+
69
+ # Add a Prop as a child of this Prop.
70
+ #
71
+ def add(child)
72
+ # child.set_parent(self)
73
+ # @children << child
74
+ @peer.add(child.peer)
75
+ end
76
+
77
+ # Same as add. Returns self so adding may be chained.
78
+ #
79
+ # prop << child1 << child2 << child3
80
+ #
81
+ def <<(child)
82
+ add(child)
83
+ self
84
+ end
85
+
86
+ # Allows the adding of child Props using the PropBuilder DSL.
87
+ #
88
+ # prop.build do
89
+ # child1 do
90
+ # grand_child
91
+ # end
92
+ # child2
93
+ # end
94
+ #
95
+ def build(options = {}, & block)
96
+ require 'limelight/dsl/prop_builder'
97
+ builder = Limelight::DSL::PropBuilder.new(self)
98
+ builder.__install_instance_variables(options)
99
+ builder.__root_path__ = scene.path
100
+ builder.instance_eval(& block)
101
+ end
102
+
103
+ # Removes a child Prop. The child Prop will be parent-less after removal.
104
+ #
105
+ def remove(child)
106
+ # if children.delete(child)
107
+ # scene.unindex_prop(child) if scene
108
+ @peer.remove(child.peer)
109
+ # end
110
+ end
111
+
112
+ # Removes all child Props.
113
+ #
114
+ def remove_all
115
+ @peer.remove_all
116
+ # @children.each { |child| scene.unindex_prop(child) } if scene
117
+ # @children = []
118
+ end
119
+
120
+ # A hook to invoke behavior after a Prop is painted.
121
+ #
122
+ def after_painting(flag = true, & block)
123
+ if flag
124
+ @peer.after_paint_action = PaintAction.new(& block)
125
+ else
126
+ @peer.after_paint_action = nil
127
+ end
128
+ end
129
+
130
+ # Searches all descendant of the Prop (including itself) for Props with the specified name.
131
+ # Returns an Array of matching Props. Returns an empty Array if none are found.
132
+ #
133
+ def find_by_name(name)
134
+ @peer.find_by_name(name).map { |descendant| descendant.proxy }
135
+ end
136
+
137
+ # Sets the text of this Prop. If a prop is given text, it will become sterilized (it may not have any more children).
138
+ # Some Players such as text_box, will cause the text to appear in the text_box.
139
+ #
140
+ def text=(value)
141
+ @peer.text = value.to_s
142
+ end
143
+
144
+ # Returns the text of the Prop.
145
+ #
146
+ def text
147
+ @peer.text
148
+ end
149
+
150
+ def parent
151
+ @peer.parent.proxy if @peer.parent
152
+ end
153
+
154
+ def children
155
+ @peer.child_prop_panels.map { |child| child.proxy }
156
+ end
157
+
158
+ # Returns the scene to which this prop belongs to.
159
+ #
160
+ def scene
161
+ # return nil if @parent.nil?
162
+ # @scene = @parent.scene if @scene.nil?
163
+ @peer.root.proxy
164
+ end
165
+
166
+ # Returns the current Production this Prop lives in.
167
+ #
168
+ def production
169
+ scene.production
170
+ end
171
+
172
+ def to_s #:nodoc:
173
+ "#{self.class.name}[id: #{id}, name: #{name}]"
174
+ end
175
+
176
+ def inspect #:nodoc:
177
+ self.to_s
178
+ end
179
+
180
+ # Returns a Point representing the location of the Prop's top-left corner within its parent.
181
+ #
182
+ # location = prop.location
183
+ # location.x # the Prop's distance from the left of its parent's bounds
184
+ # location.y # the Prop's distance from the top of its parent's bounds
185
+ #
186
+ def location
187
+ peer.get_location
188
+ end
189
+
190
+ # Returns a Point representing the location of the Prop's top-left corner within its Stage (Window).
191
+ #
192
+ # location = prop.absolute_location
193
+ # location.x # the Prop's distance from the left edge of the stage
194
+ # location.y # the Prop's distance from the top edge of the stage
195
+ #
196
+ def absolute_location
197
+ peer.get_absolute_location.clone
198
+ end
199
+
200
+ # Returns a Box representing the relative bounds of the Prop. Is useful with using the Pen.
201
+ #
202
+ # bounds = prop.bounds
203
+ # bounds.x, box.y # represents the Prop's location within its parent Prop
204
+ # bounds.width, box.height # represents the Prop's dimensions
205
+ #
206
+ def bounds
207
+ peer.get_bounds.clone
208
+ end
209
+
210
+ # Returns a Box representing the bounds inside the borders of the prop.
211
+ #
212
+ # bounds = prop.bordered_bounds
213
+ # bounds.x # the distance between the left edge of the Prop and the inside edge of its left border
214
+ # bounds.y # the distance between the top edge of the Prop and the inside edge of its top border
215
+ # bounds.width # the distance between the inside edges of the left and right border
216
+ # bounds.height # the distance between the inside edges of the top and bottom borders
217
+ #
218
+ def bordered_bounds
219
+ peer.get_bordered_bounds.clone
220
+ end
221
+
222
+ # Returns a Box representing the bounds inside the padding of the prop.
223
+ #
224
+ # bounds = prop.padded_bounds
225
+ # bounds.x # the distance between the left edge of the Prop and the inside edge of its left padding
226
+ # bounds.y # the distance between the top edge of the Prop and the inside edge of its top padding
227
+ # bounds.width # the distance between the inside edges of the left and right padding
228
+ # bounds.height # the distance between the inside edges of the top and bottom padding
229
+ #
230
+ def padded_bounds
231
+ peer.get_padded_bounds.clone
232
+ end
233
+
234
+ # Returns a Pen object. Pen objects allow to you to draw directly on the screen, withing to bounds of this Prop.
235
+ #
236
+ def pen
237
+ Pen.new(peer.getGraphics)
238
+ end
239
+
240
+ # Initiate an animation loop. Options may include :name (string), :updates_per_second (int: defaults to 60)
241
+ # An Animation object is returned.
242
+ # The provided block will be invoked :updates_per_second times per second until the Animation is stopped.
243
+ #
244
+ # @animation = prop.animate(:updates_per_second => 20) do
245
+ # prop.style.border_width = (prop.style.top_border_width.to_i + 1).to_s
246
+ # @animation.stop if prop.style.top_border_width.to_i > 60
247
+ # end
248
+ #
249
+ # This above example will cause the Prop's border to grow until it is 60 pixels wide.
250
+ #
251
+ def animate(options={}, & block)
252
+ animation = Animation.new(self, block, options)
253
+ animation.start
254
+ animation
255
+ end
256
+
257
+ # Plays a sound on the computers audio output. The parameter is the filename of a .au sound file.
258
+ # This filename should relative to the root directory of the current Production, or an absolute path.
259
+ #
260
+ def play_sound(filename)
261
+ path = Java::limelight.Context.fs.path_to(scene.path, filename)
262
+ @peer.play_sound(path)
263
+ end
264
+
265
+ # Luanches the spcified URL using the OS's default handlers. For example, opening a URL in a browser:
266
+ #
267
+ # launch('http://www.google.com')
268
+ #
269
+ # To create a link prop add an accessor on the player (say url) and use that in the prop definition
270
+ # Ex:
271
+ #
272
+ # link :text => "I am a link", :url => "http://www.8thlight.com"
273
+ def launch(url)
274
+ Context.instance.os.launch(url)
275
+ end
276
+
277
+ # GUI Events ##########################################
278
+
279
+ def on_mouse_pressed(& action)
280
+ @peer.event_handler.add(Java::limelight.ui.events.panel.MousePressedEvent, action)
281
+ end
282
+
283
+ def on_mouse_released(& action)
284
+ @peer.event_handler.add(Java::limelight.ui.events.panel.MouseReleasedEvent, action)
285
+ end
286
+
287
+ def on_mouse_clicked(& action)
288
+ @peer.event_handler.add(Java::limelight.ui.events.panel.MouseClickedEvent, action)
289
+ end
290
+
291
+ def on_mouse_moved(& action)
292
+ @peer.event_handler.add(Java::limelight.ui.events.panel.MouseMovedEvent, action)
293
+ end
294
+
295
+ def on_mouse_dragged(& action)
296
+ @peer.event_handler.add(Java::limelight.ui.events.panel.MouseDraggedEvent, action)
297
+ end
298
+
299
+ def on_mouse_entered(& action)
300
+ @peer.event_handler.add(Java::limelight.ui.events.panel.MouseEnteredEvent, action)
301
+ end
302
+
303
+ def on_mouse_exited(& action)
304
+ @peer.event_handler.add(Java::limelight.ui.events.panel.MouseExitedEvent, action)
305
+ end
306
+
307
+ def on_mouse_wheel(& action)
308
+ @peer.event_handler.add(Java::limelight.ui.events.panel.MouseWheelEvent, action)
309
+ end
310
+
311
+ def on_key_pressed(& action)
312
+ @peer.event_handler.add(Java::limelight.ui.events.panel.KeyPressedEvent, action)
313
+ end
314
+
315
+ def on_key_released(& action)
316
+ @peer.event_handler.add(Java::limelight.ui.events.panel.KeyReleasedEvent, action)
317
+ end
318
+
319
+ def on_char_typed(& action)
320
+ @peer.event_handler.add(Java::limelight.ui.events.panel.CharTypedEvent, action)
321
+ end
322
+
323
+ def on_focus_gained(& action)
324
+ @peer.event_handler.add(Java::limelight.ui.events.panel.FocusGainedEvent, action)
325
+ end
326
+
327
+ def on_focus_lost(& action)
328
+ @peer.event_handler.add(Java::limelight.ui.events.panel.FocusLostEvent, action)
329
+ end
330
+
331
+ def on_button_pushed(& action)
332
+ @peer.event_handler.add(Java::limelight.ui.events.panel.ButtonPushedEvent, action)
333
+ end
334
+
335
+ def on_value_changed(& action)
336
+ @peer.event_handler.add(Java::limelight.ui.events.panel.ValueChangedEvent, action)
337
+ end
338
+
339
+ def on_illuminated(& action)
340
+ @peer.event_handler.add(Java::limelight.ui.events.panel.IlluminatedEvent, action)
341
+ end
342
+
343
+ end
344
+ end
@@ -0,0 +1,120 @@
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/java_util'
5
+ require 'limelight/prop'
6
+ require 'limelight/limelight_exception'
7
+ require 'limelight/player_recruiter'
8
+
9
+ module Limelight
10
+
11
+ # A Scene is a root Prop. Scenes may be loaded onto a Stage. In addition to being a Prop object, Scenes have a
12
+ # few extra attributes and behaviors.
13
+ #
14
+ class Scene < Prop
15
+
16
+ include Java::limelight.model.api.SceneProxy
17
+
18
+ attr_reader :player_recruiter
19
+
20
+ def initialize(options={})
21
+ @player_recruiter = options.delete(:player_recruiter) || PlayerRecruiter.new
22
+ @peer = Java::limelight.ui.model.ScenePanel.new(self, @player_recruiter)
23
+ @peer.add_options(Util::Hashes.for_java(options))
24
+ @fs = Java::limelight.Context.fs
25
+ end
26
+
27
+ def production=(value)
28
+ @peer.production = value.peer
29
+ end
30
+
31
+ def production
32
+ @peer.production.proxy
33
+ end
34
+
35
+ def button_groups
36
+ @peer.button_groups
37
+ end
38
+
39
+ def on_scene_opened(& action)
40
+ @peer.event_handler.add(Java::limelight.ui.events.panel.SceneOpenedEvent, action)
41
+ end
42
+
43
+ # Returns a hash of all the styles belonging to this scene
44
+ #
45
+ def styles
46
+ if @styles == nil
47
+ styles = @peer.styles
48
+ @styles = Util::Hashes.for_ruby(styles)
49
+ end
50
+ @styles
51
+ end
52
+
53
+ # Returns self. A Scene is it's own scene.
54
+ #
55
+ def scene
56
+ self
57
+ end
58
+
59
+ # Returns the stage that contains the scene
60
+ #
61
+ def stage
62
+ @peer.stage.proxy
63
+ end
64
+
65
+ # Returns the path to the root directory of the Scene
66
+ #
67
+ def path
68
+ @peer.path
69
+ end
70
+
71
+ # Returns the path to the Scene's props file
72
+ #
73
+ def props_file
74
+ @fs.path_to(path, "props.rb")
75
+ end
76
+
77
+ # Returns the path to the Scene's props file
78
+ #
79
+ def styles_file
80
+ @fs.path_to(path, "styles.rb")
81
+ end
82
+
83
+ # Creates the menu bar for the Scene
84
+ #
85
+ def menu_bar
86
+ DSL::MenuBar.build(self) do
87
+ menu("File") do
88
+ item("Open", :open_chosen_production)
89
+ item("Refresh", :reload)
90
+ end
91
+ end
92
+ end
93
+
94
+ # Creates a new Producer to open the specified Production.
95
+ #
96
+ def open_production(production_path)
97
+ Thread.new { Context.instance.studio.open(production_path) }
98
+ end
99
+
100
+ # Opens the specified Scene on the Stage currently occupied by this Scene.
101
+ # TODO It doesn't quite make sense that a scene loads other scene. It has to replace itself?
102
+ #
103
+ def load(scene_name)
104
+ production.open_scene(scene_name)
105
+ end
106
+
107
+ # Returns a Prop with the specified id. Returns nil id the Prop doesn't exist in the Scene.
108
+ #
109
+ def find_by_id(id)
110
+ peer_result = @peer.find(id.to_s)
111
+ peer_result.nil? ? nil : peer_result.proxy
112
+ end
113
+ alias :find :find_by_id
114
+
115
+ def visible?
116
+ @peer.visible?
117
+ end
118
+
119
+ end
120
+ end