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
@@ -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