limelight 0.5.5-java → 0.6.14-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. data/LICENSE +19 -0
  2. data/bin/limelight +7 -3
  3. data/ruby/lib/limelight-rb.jar +0 -0
  4. data/ruby/lib/limelight.jar +0 -0
  5. data/ruby/lib/limelight.rb +48 -0
  6. data/{lib → ruby/lib}/limelight/animation.rb +3 -3
  7. data/ruby/lib/limelight/builtin/players.rb +21 -0
  8. data/ruby/lib/limelight/builtin/players/button.rb +7 -0
  9. data/ruby/lib/limelight/builtin/players/check_box.rb +24 -0
  10. data/ruby/lib/limelight/builtin/players/combo_box.rb +50 -0
  11. data/ruby/lib/limelight/builtin/players/curtains.rb +12 -0
  12. data/ruby/lib/limelight/builtin/players/image.rb +38 -0
  13. data/ruby/lib/limelight/builtin/players/radio_button.rb +36 -0
  14. data/ruby/lib/limelight/builtin/players/stage_mover.rb +19 -0
  15. data/ruby/lib/limelight/builtin/players/stage_sizer.rb +23 -0
  16. data/ruby/lib/limelight/builtin/players/text_area.rb +10 -0
  17. data/ruby/lib/limelight/builtin/players/text_box.rb +10 -0
  18. data/{lib → ruby/lib}/limelight/dsl/build_exception.rb +2 -2
  19. data/{lib → ruby/lib}/limelight/dsl/menu_bar.rb +3 -3
  20. data/{lib → ruby/lib}/limelight/dsl/prop_builder.rb +25 -16
  21. data/{lib → ruby/lib}/limelight/dsl/stage_builder.rb +4 -4
  22. data/{lib → ruby/lib}/limelight/dsl/styles_builder.rb +14 -18
  23. data/{lib → ruby/lib}/limelight/file_chooser.rb +10 -10
  24. data/{lib → ruby/lib}/limelight/file_filter.rb +6 -6
  25. data/ruby/lib/limelight/java_couplings.rb +70 -0
  26. data/{lib → ruby/lib}/limelight/java_util.rb +6 -6
  27. data/{lib → ruby/lib}/limelight/limelight_exception.rb +3 -3
  28. data/ruby/lib/limelight/limelight_init.rb +24 -0
  29. data/ruby/lib/limelight/main.rb +15 -0
  30. data/ruby/lib/limelight/mouse.rb +76 -0
  31. data/ruby/lib/limelight/optionable.rb +42 -0
  32. data/{lib → ruby/lib}/limelight/paint_action.rb +8 -8
  33. data/{lib → ruby/lib}/limelight/pen.rb +7 -7
  34. data/ruby/lib/limelight/player.rb +148 -0
  35. data/ruby/lib/limelight/player_recruiter.rb +54 -0
  36. data/ruby/lib/limelight/production.rb +257 -0
  37. data/ruby/lib/limelight/prop.rb +344 -0
  38. data/ruby/lib/limelight/scene.rb +120 -0
  39. data/ruby/lib/limelight/specs/spec_helper.rb +191 -0
  40. data/ruby/lib/limelight/stage.rb +268 -0
  41. data/ruby/lib/limelight/string.rb +32 -0
  42. data/{lib → ruby/lib}/limelight/studio.rb +4 -3
  43. data/ruby/lib/limelight/style.rb +294 -0
  44. data/ruby/lib/limelight/templates/sources/features/step_definitions/limelight_steps.rb.template +47 -0
  45. data/ruby/lib/limelight/templates/sources/features/support/env.rb.template +35 -0
  46. data/{lib → ruby/lib}/limelight/templates/sources/freezing/limelight_init.rb.template +0 -0
  47. data/{lib → ruby/lib}/limelight/templates/sources/production/production.rb.template +2 -2
  48. data/{lib → ruby/lib}/limelight/templates/sources/production/spec/spec_helper.rb.template +0 -0
  49. data/{lib → ruby/lib}/limelight/templates/sources/production/stages.rb.template +0 -0
  50. data/{lib → ruby/lib}/limelight/templates/sources/production/styles.rb.template +0 -0
  51. data/ruby/lib/limelight/templates/sources/project/Rakefile.template +15 -0
  52. data/ruby/lib/limelight/templates/sources/project/spec_helper.rb.template +12 -0
  53. data/{lib → ruby/lib}/limelight/templates/sources/scene/props.rb.template +0 -0
  54. data/{lib → ruby/lib}/limelight/templates/sources/scene/styles.rb.template +0 -0
  55. data/{lib → ruby/lib}/limelight/templates/sources/scene_spec/scene_spec.rb.template +0 -0
  56. data/ruby/lib/limelight/theater.rb +76 -0
  57. data/{lib → ruby/lib}/limelight/util.rb +6 -25
  58. data/ruby/lib/limelight/util/hashes.rb +39 -0
  59. data/ruby/lib/limelight/util/map_hash.rb +191 -0
  60. data/ruby/lib/limelight/util/string_hash.rb +64 -0
  61. metadata +97 -390
  62. data/bin/icons/icon.ico +0 -0
  63. data/bin/icons/icon_48.gif +0 -0
  64. data/bin/icons/limelight.icns +0 -0
  65. data/bin/ll +0 -10
  66. data/bin/ll.bat +0 -5
  67. data/lib/init.rb +0 -12
  68. data/lib/limelight.jar +0 -0
  69. data/lib/limelight/builtin/players.rb +0 -16
  70. data/lib/limelight/builtin/players/button.rb +0 -39
  71. data/lib/limelight/builtin/players/check_box.rb +0 -50
  72. data/lib/limelight/builtin/players/combo_box.rb +0 -89
  73. data/lib/limelight/builtin/players/combo_box_popup_list.rb +0 -19
  74. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +0 -21
  75. data/lib/limelight/builtin/players/curtains.rb +0 -23
  76. data/lib/limelight/builtin/players/image.rb +0 -54
  77. data/lib/limelight/builtin/players/password_box.rb +0 -34
  78. data/lib/limelight/builtin/players/radio_button.rb +0 -65
  79. data/lib/limelight/builtin/players/stage_mover.rb +0 -31
  80. data/lib/limelight/builtin/players/stage_sizer.rb +0 -34
  81. data/lib/limelight/builtin/players/text_area.rb +0 -34
  82. data/lib/limelight/builtin/players/text_box.rb +0 -34
  83. data/lib/limelight/builtin/styles.rb +0 -35
  84. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +0 -14
  85. data/lib/limelight/builtin/utilities_production/alert/props.rb +0 -8
  86. data/lib/limelight/builtin/utilities_production/alert/styles.rb +0 -14
  87. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +0 -20
  88. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +0 -12
  89. data/lib/limelight/builtin/utilities_production/production.rb +0 -66
  90. data/lib/limelight/builtin/utilities_production/stages.rb +0 -12
  91. data/lib/limelight/builtin/utilities_production/styles.rb +0 -53
  92. data/lib/limelight/button_group_cache.rb +0 -11
  93. data/lib/limelight/casting_director.rb +0 -112
  94. data/lib/limelight/commands/command.rb +0 -168
  95. data/lib/limelight/commands/create_command.rb +0 -98
  96. data/lib/limelight/commands/freeze_command.rb +0 -131
  97. data/lib/limelight/commands/help_command.rb +0 -61
  98. data/lib/limelight/commands/open_command.rb +0 -60
  99. data/lib/limelight/commands/pack_command.rb +0 -53
  100. data/lib/limelight/commands/unpack_command.rb +0 -44
  101. data/lib/limelight/commands/version_command.rb +0 -31
  102. data/lib/limelight/data.rb +0 -37
  103. data/lib/limelight/file_loader.rb +0 -46
  104. data/lib/limelight/gems.rb +0 -51
  105. data/lib/limelight/java_couplings.rb +0 -67
  106. data/lib/limelight/limelight_init.rb +0 -12
  107. data/lib/limelight/main.rb +0 -105
  108. data/lib/limelight/producer.rb +0 -233
  109. data/lib/limelight/production.rb +0 -203
  110. data/lib/limelight/prop.rb +0 -367
  111. data/lib/limelight/scene.rb +0 -151
  112. data/lib/limelight/specs/spec_helper.rb +0 -136
  113. data/lib/limelight/specs/test_scene_opener.rb +0 -63
  114. data/lib/limelight/stage.rb +0 -353
  115. data/lib/limelight/string.rb +0 -38
  116. data/lib/limelight/styles/style.rb +0 -288
  117. data/lib/limelight/templates/production_templater.rb +0 -49
  118. data/lib/limelight/templates/scene_templater.rb +0 -47
  119. data/lib/limelight/templates/sources/production/init.rb.template +0 -15
  120. data/lib/limelight/templates/templater.rb +0 -131
  121. data/lib/limelight/templates/templater_logger.rb +0 -39
  122. data/lib/limelight/theater.rb +0 -109
  123. data/lib/limelight/util/downloader.rb +0 -115
  124. data/lib/limelight/version.rb +0 -20
  125. data/productions/examples/8thlight.com/about/about.txt +0 -24
  126. data/productions/examples/8thlight.com/about/props.rb +0 -11
  127. data/productions/examples/8thlight.com/about/styles.rb +0 -2
  128. data/productions/examples/8thlight.com/footer.rb +0 -6
  129. data/productions/examples/8thlight.com/home/props.rb +0 -28
  130. data/productions/examples/8thlight.com/home/styles.rb +0 -2
  131. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  132. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  133. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  134. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  135. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  136. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  137. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  138. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  139. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  140. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  141. data/productions/examples/8thlight.com/menu.rb +0 -11
  142. data/productions/examples/8thlight.com/services/props.rb +0 -11
  143. data/productions/examples/8thlight.com/services/services.txt +0 -8
  144. data/productions/examples/8thlight.com/services/styles.rb +0 -2
  145. data/productions/examples/8thlight.com/stages.rb +0 -8
  146. data/productions/examples/8thlight.com/styles.rb +0 -210
  147. data/productions/examples/calculator/players/button.rb +0 -24
  148. data/productions/examples/calculator/players/calculator.rb +0 -15
  149. data/productions/examples/calculator/players/calculator_model.rb +0 -13
  150. data/productions/examples/calculator/props.rb +0 -23
  151. data/productions/examples/calculator/styles.rb +0 -36
  152. data/productions/examples/langstons_ant/html_javascript/ant.css +0 -39
  153. data/productions/examples/langstons_ant/html_javascript/ant.html +0 -22
  154. data/productions/examples/langstons_ant/html_javascript/ant.js +0 -23
  155. data/productions/examples/langstons_ant/init.rb +0 -4
  156. data/productions/examples/langstons_ant/players/ant.rb +0 -103
  157. data/productions/examples/langstons_ant/players/log.rb +0 -29
  158. data/productions/examples/langstons_ant/players/start_stop_button.rb +0 -37
  159. data/productions/examples/langstons_ant/players/world.rb +0 -35
  160. data/productions/examples/langstons_ant/props.rb +0 -22
  161. data/productions/examples/langstons_ant/styles.rb +0 -104
  162. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +0 -10
  163. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +0 -32
  164. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +0 -52
  165. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +0 -16
  166. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +0 -8
  167. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +0 -20
  168. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +0 -15
  169. data/productions/examples/sandbox/alerts/players/alerts.rb +0 -17
  170. data/productions/examples/sandbox/alerts/props.rb +0 -10
  171. data/productions/examples/sandbox/alerts/styles.rb +0 -46
  172. data/productions/examples/sandbox/background_images/props.rb +0 -22
  173. data/productions/examples/sandbox/background_images/styles.rb +0 -40
  174. data/productions/examples/sandbox/click_me/players/chromaton.rb +0 -52
  175. data/productions/examples/sandbox/click_me/props.rb +0 -8
  176. data/productions/examples/sandbox/click_me/styles.rb +0 -11
  177. data/productions/examples/sandbox/floaters/players/floater.rb +0 -108
  178. data/productions/examples/sandbox/floaters/players/surface.rb +0 -21
  179. data/productions/examples/sandbox/floaters/props.rb +0 -10
  180. data/productions/examples/sandbox/floaters/styles.rb +0 -24
  181. data/productions/examples/sandbox/frameing/players/sandbox.rb +0 -17
  182. data/productions/examples/sandbox/frameing/props.rb +0 -35
  183. data/productions/examples/sandbox/frameing/styles.rb +0 -45
  184. data/productions/examples/sandbox/gradients/players/spinner.rb +0 -20
  185. data/productions/examples/sandbox/gradients/players/teaser.rb +0 -19
  186. data/productions/examples/sandbox/gradients/players/wave.rb +0 -19
  187. data/productions/examples/sandbox/gradients/players/waves.rb +0 -19
  188. data/productions/examples/sandbox/gradients/props.rb +0 -13
  189. data/productions/examples/sandbox/gradients/styles.rb +0 -47
  190. data/productions/examples/sandbox/header.rb +0 -22
  191. data/productions/examples/sandbox/homer/players/homer.rb +0 -24
  192. data/productions/examples/sandbox/homer/props.rb +0 -10
  193. data/productions/examples/sandbox/homer/styles.rb +0 -16
  194. data/productions/examples/sandbox/images/arch.jpg +0 -0
  195. data/productions/examples/sandbox/images/beach.jpg +0 -0
  196. data/productions/examples/sandbox/images/homer.jpg +0 -0
  197. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  198. data/productions/examples/sandbox/images/logo.png +0 -0
  199. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  200. data/productions/examples/sandbox/images/space.png +0 -0
  201. data/productions/examples/sandbox/images_scene/props.rb +0 -36
  202. data/productions/examples/sandbox/images_scene/styles.rb +0 -34
  203. data/productions/examples/sandbox/inputs/players/button_input.rb +0 -48
  204. data/productions/examples/sandbox/inputs/players/check_box_input.rb +0 -40
  205. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +0 -41
  206. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +0 -43
  207. data/productions/examples/sandbox/inputs/players/text_area_input.rb +0 -36
  208. data/productions/examples/sandbox/inputs/players/text_box_input.rb +0 -36
  209. data/productions/examples/sandbox/inputs/props.rb +0 -40
  210. data/productions/examples/sandbox/inputs/styles.rb +0 -39
  211. data/productions/examples/sandbox/kiosk/players/kiosk.rb +0 -39
  212. data/productions/examples/sandbox/kiosk/props.rb +0 -9
  213. data/productions/examples/sandbox/kiosk/styles.rb +0 -37
  214. data/productions/examples/sandbox/players/sandbox.rb +0 -11
  215. data/productions/examples/sandbox/rounded_corners/players/box.rb +0 -11
  216. data/productions/examples/sandbox/rounded_corners/props.rb +0 -22
  217. data/productions/examples/sandbox/rounded_corners/styles.rb +0 -17
  218. data/productions/examples/sandbox/scrolling/players/add_button.rb +0 -19
  219. data/productions/examples/sandbox/scrolling/players/cell.rb +0 -15
  220. data/productions/examples/sandbox/scrolling/props.rb +0 -45
  221. data/productions/examples/sandbox/scrolling/styles.rb +0 -33
  222. data/productions/examples/sandbox/sketching/players/sketchpad.rb +0 -46
  223. data/productions/examples/sandbox/sketching/props.rb +0 -25
  224. data/productions/examples/sandbox/sketching/styles.rb +0 -35
  225. data/productions/examples/sandbox/sounds/bird.au +0 -0
  226. data/productions/examples/sandbox/sounds/cat.au +0 -0
  227. data/productions/examples/sandbox/sounds/cow.au +0 -0
  228. data/productions/examples/sandbox/sounds/dog.au +0 -0
  229. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  230. data/productions/examples/sandbox/sounds/duck.au +0 -0
  231. data/productions/examples/sandbox/sounds/players/clip.rb +0 -10
  232. data/productions/examples/sandbox/sounds/props.rb +0 -10
  233. data/productions/examples/sandbox/sounds/styles.rb +0 -17
  234. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +0 -16
  235. data/productions/examples/sandbox/stage_handles/players/sizer.rb +0 -38
  236. data/productions/examples/sandbox/stage_handles/props.rb +0 -17
  237. data/productions/examples/sandbox/stage_handles/styles.rb +0 -58
  238. data/productions/examples/sandbox/stages.rb +0 -8
  239. data/productions/examples/sandbox/styles.rb +0 -35
  240. data/productions/examples/sandbox/teaser/players/fader.rb +0 -58
  241. data/productions/examples/sandbox/teaser/props.rb +0 -14
  242. data/productions/examples/sandbox/teaser/styles.rb +0 -21
  243. data/productions/examples/tutorials/tutorial_1/players/sample.rb +0 -11
  244. data/productions/examples/tutorials/tutorial_1/props.rb +0 -9
  245. data/productions/examples/tutorials/tutorial_1/styles.rb +0 -25
  246. data/productions/stage_composer/init.rb +0 -10
  247. data/productions/stage_composer/inspector/players/inspector.rb +0 -80
  248. data/productions/stage_composer/inspector/players/prop_row.rb +0 -12
  249. data/productions/stage_composer/inspector/players/prop_tree.rb +0 -33
  250. data/productions/stage_composer/inspector/players/style_table.rb +0 -12
  251. data/productions/stage_composer/inspector/players/style_value.rb +0 -16
  252. data/productions/stage_composer/inspector/props.rb +0 -19
  253. data/productions/stage_composer/inspector/styles.rb +0 -71
  254. data/productions/stage_composer/lib/init.rb +0 -5
  255. data/productions/stage_composer/lib/limelight/composer/controller.rb +0 -51
  256. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +0 -24
  257. data/productions/stage_composer/production.rb +0 -6
  258. data/productions/stage_composer/stages.rb +0 -15
  259. data/productions/startup/images/logo.png +0 -0
  260. data/productions/startup/images/splash.png +0 -0
  261. data/productions/startup/production.rb +0 -52
  262. data/productions/startup/spec/default_scene/default_scene_spec.rb +0 -16
  263. data/productions/startup/spec/spec_helper.rb +0 -8
  264. data/productions/startup/stages.rb +0 -9
  265. data/productions/startup/styles.rb +0 -15
  266. data/productions/startup/welcome/players/browse_button.rb +0 -10
  267. data/productions/startup/welcome/players/download_button.rb +0 -17
  268. data/productions/startup/welcome/players/sandbox_button.rb +0 -11
  269. data/productions/startup/welcome/props.rb +0 -23
  270. data/productions/startup/welcome/styles.rb +0 -103
  271. data/spec/limelight/builtin/players/button_spec.rb +0 -20
  272. data/spec/limelight/builtin/players/check_box_spec.rb +0 -29
  273. data/spec/limelight/builtin/players/combo_box_spec.rb +0 -29
  274. data/spec/limelight/builtin/players/image_spec.rb +0 -43
  275. data/spec/limelight/builtin/players/password_box_spec.rb +0 -27
  276. data/spec/limelight/builtin/players/radio_button_spec.rb +0 -64
  277. data/spec/limelight/builtin/players/stage_mover_spec.rb +0 -36
  278. data/spec/limelight/builtin/players/stage_sizer_spec.rb +0 -40
  279. data/spec/limelight/builtin/players/text_area_spec.rb +0 -27
  280. data/spec/limelight/builtin/players/text_box_spec.rb +0 -27
  281. data/spec/limelight/builtin/utilities_production/spec_helper.rb +0 -7
  282. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +0 -147
  283. data/spec/limelight/casting_director_spec.rb +0 -164
  284. data/spec/limelight/commands/command_spec.rb +0 -26
  285. data/spec/limelight/commands/create_command_spec.rb +0 -108
  286. data/spec/limelight/commands/freeze_command_spec.rb +0 -143
  287. data/spec/limelight/commands/help_command_spec.rb +0 -42
  288. data/spec/limelight/commands/open_command_spec.rb +0 -53
  289. data/spec/limelight/commands/pack_command_spec.rb +0 -43
  290. data/spec/limelight/commands/unpack_command_spec.rb +0 -47
  291. data/spec/limelight/data_spec.rb +0 -36
  292. data/spec/limelight/dsl/prop_builder_spec.rb +0 -245
  293. data/spec/limelight/dsl/stage_builder_spec.rb +0 -90
  294. data/spec/limelight/dsl/styles_builder_spec.rb +0 -194
  295. data/spec/limelight/file_chooser_spec.rb +0 -64
  296. data/spec/limelight/file_filter_spec.rb +0 -29
  297. data/spec/limelight/file_loader_spec.rb +0 -28
  298. data/spec/limelight/gems_spec.rb +0 -92
  299. data/spec/limelight/java_util_spec.rb +0 -37
  300. data/spec/limelight/main_spec.rb +0 -40
  301. data/spec/limelight/paint_action_spec.rb +0 -30
  302. data/spec/limelight/pen_spec.rb +0 -62
  303. data/spec/limelight/producer_spec.rb +0 -246
  304. data/spec/limelight/production_spec.rb +0 -97
  305. data/spec/limelight/prop_spec.rb +0 -431
  306. data/spec/limelight/scene_spec.rb +0 -173
  307. data/spec/limelight/stage_spec.rb +0 -247
  308. data/spec/limelight/string_spec.rb +0 -38
  309. data/spec/limelight/templates/production_templater_spec.rb +0 -66
  310. data/spec/limelight/templates/scene_templater_spec.rb +0 -51
  311. data/spec/limelight/templates/templater_logger_spec.rb +0 -41
  312. data/spec/limelight/templates/templater_spec.rb +0 -107
  313. data/spec/limelight/theater_spec.rb +0 -120
  314. data/spec/limelight/util/downloader_spec.rb +0 -92
  315. data/spec/spec_helper.rb +0 -64
@@ -1,233 +0,0 @@
1
- #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
- #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
-
4
- require 'limelight/file_loader'
5
- require 'limelight/dsl/prop_builder'
6
- require 'limelight/dsl/styles_builder'
7
- require 'limelight/dsl/stage_builder'
8
- require 'limelight/casting_director'
9
- require 'limelight/stage'
10
- require 'limelight/dsl/build_exception'
11
- require 'limelight/theater'
12
- require 'limelight/production'
13
- require 'limelight/gems'
14
- require 'limelight/util/downloader'
15
- require 'limelight/version'
16
- require 'drb'
17
-
18
- module Limelight
19
-
20
- # A Producer has the hefty responsibility of producing Productions. Given a directory, it will load the neccessary
21
- # files and create all the neccessary objects to bring a Production to life. A producer will produce only
22
- # one production.
23
- #
24
- # For directory structures, see Limelight::Main
25
- #
26
- class Producer
27
-
28
- class << self
29
- # Creates a new Producer and has it open a Production by specified name.
30
- #
31
- def open(production_name, options={})
32
- producer = new(production_name)
33
- begin
34
- producer.open(options)
35
- rescue Exception => e
36
- puts e
37
- puts e.backtrace
38
- end
39
- end
40
-
41
- # Returns a hash of all the built-in Limglight Styles
42
- #
43
- def builtin_styles
44
- unless @builtin_styles
45
- builtin_styles_file = File.join($LIMELIGHT_LIB, "limelight", "builtin", "styles.rb")
46
- @builtin_styles = Limelight.build_styles_from_file(builtin_styles_file)
47
- end
48
- return @builtin_styles
49
- end
50
- end
51
-
52
- attr_reader :theater, :production, :drb_service
53
- attr_writer :builtin_styles
54
-
55
- # A Production name, or root directory, must be provided. If not Theater is provided, one will be created.
56
- # You may also provide an existing Production for which this Producer will interact.
57
- #
58
- def initialize(root_path, theater=nil, production=nil)
59
- if (root_path[-4..-1] == ".lll")
60
- url = IO.read(root_path).strip
61
- root_path = Util::Downloader.download(url)
62
- end
63
- if (root_path[-4..-1] == ".llp")
64
- root_path = unpack_production(root_path)
65
- end
66
- @production = production || Production.new(root_path)
67
- @theater = theater.nil? ? Theater.new(@production) : theater
68
- establish_production
69
- end
70
-
71
- # Returns true if the production's minimum_limelight_version is compatible with the current version.
72
- #
73
- def version_compatible?
74
- current_version = Limelight::Util::Version.new(Limelight::VERSION::STRING)
75
- required_version = Limelight::Util::Version.new(@production.minimum_limelight_version)
76
- return required_version.is_less_than_or_equal(current_version)
77
- end
78
-
79
- # Returns the CastingDirector for this Production.
80
- #
81
- def casting_director
82
- @casting_director = CastingDirector.new(@production.root) if not @casting_director
83
- return @casting_director
84
- end
85
-
86
- # Loads the Production without opening it. The Production will be created into memory with all it's stages
87
- #
88
- def load(options = {})
89
- Gems.install_gems_in_production(@production)
90
- Kernel.load(@production.init_file) if ( !options[:ignore_init] && File.exists?(@production.init_file) )
91
- load_stages if File.exists?(@production.stages_file)
92
- end
93
-
94
- # Returns true if the production is compatible with the current version of Limelight or if the user proceeds
95
- # despite the incompatible warning.
96
- #
97
- def can_proceed_with_compatibility?
98
- return true if version_compatible?
99
- return true if Context.instance.studio.utilities_production.should_proceed_with_incompatible_version(@production.name, @production.minimum_limelight_version)
100
- return false
101
- end
102
-
103
- # Opens the Production.
104
- #
105
- def open(options = {})
106
- @production.production_opening
107
- load
108
- @production.production_loaded
109
- if @theater.has_stages?
110
- @theater.stages.each do |stage|
111
- open_scene(stage.default_scene.to_s, stage) if stage.default_scene
112
- end
113
- elsif @production.default_scene
114
- open_scene(@production.default_scene, @theater.default_stage)
115
- end
116
- @casting_director = nil
117
- @production.production_opened
118
- end
119
-
120
- # Opens the specified Scene onto the Spcified Stage.
121
- #
122
- def open_scene(name, stage, options={})
123
- path = @production.scene_directory(name)
124
- scene_name = File.basename(path)
125
- scene = load_props(options.merge(:production => @production, :casting_director => casting_director, :path => path, :name => scene_name))
126
- styles = load_styles(scene)
127
- scene.styles = styles
128
- stage.open(scene)
129
- return scene
130
- end
131
-
132
- # Loads the 'stages.rb' file and configures all the Stages in the Production.
133
- #
134
- def load_stages
135
- stages_file = @production.stages_file
136
- content = IO.read(stages_file)
137
- stages = Limelight.build_stages(@theater) do
138
- begin
139
- eval content
140
- rescue Exception => e
141
- raise DSL::BuildException.new(stages_file, content, e)
142
- end
143
- end
144
- return stages
145
- end
146
-
147
- # Loads of the 'props.rb' file for a particular Scene and creates all the Prop objects and Scene.
148
- #
149
- def load_props(options = {})
150
- scene = Scene.new(options)
151
- if File.exists?(scene.props_file)
152
- content = IO.read(scene.props_file)
153
- options[:build_loader] = @production.root
154
- return Limelight.build_props(scene, options) do
155
- begin
156
- eval content
157
- rescue Exception => e
158
- raise DSL::BuildException.new(scene.props_file, content, e)
159
- end
160
- end
161
- else
162
- return scene
163
- end
164
- end
165
-
166
- # Loads the specified 'styles.rb' file and created a Hash of Styles.
167
- #
168
- def load_styles(context)
169
- extendable_styles = Producer.builtin_styles.merge(@production.root_styles)
170
- return extendable_styles.dup if not File.exists?(context.styles_file)
171
- new_styles = Limelight.build_styles_from_file(context.styles_file, extendable_styles)
172
- return extendable_styles.merge(new_styles)
173
- end
174
-
175
- # Closes the specified production. The producer will trigger the hook, production_closing and production_closed,
176
- # to keep the production aware of it's status. The Studio will also be informed of the closure. If no
177
- # production remain opened, then the Limelight runtine will exit.
178
- #
179
- def close
180
- return if @production.closed?
181
- @production.closed = true
182
- return Thread.new do
183
- begin
184
- Thread.pass
185
- @production.production_closing
186
- @production.theater.close
187
- @production.production_closed
188
- @drb_service.stop_service if @drb_service
189
- Context.instance.studio.production_closed(@production)
190
- rescue StandardError => e
191
- puts e
192
- puts e.backtrace
193
- end
194
- end
195
- end
196
-
197
- # Publish the production, using DRb, on the specified port. This is useful for testing or remotely controling
198
- # your production. Publilshing productions on DRb is typically accomplished by using the --drb_port option
199
- # of the open command. eg.
200
- #
201
- # jruby -S limelight open --drb_port=9000 my_production
202
- #
203
- def publish_production_on_drb(port)
204
- @drb_service = DRb.start_service("druby://localhost:#{port}", @production)
205
- end
206
-
207
- def establish_production #:nodoc:
208
- @production.producer = self
209
- @production.theater = @theater
210
-
211
- production_file = @production.production_file
212
- if File.exists?(production_file)
213
- tmp_module = Module.new
214
- content = IO.read(production_file)
215
- tmp_module.module_eval(content, production_file)
216
- production_module = tmp_module.const_get("Production")
217
- raise "production.rb should define a module named 'Production'" if production_module.nil?
218
- @production.extend(production_module)
219
- end
220
- end
221
-
222
- private ###############################################
223
-
224
- def unpack_production(production_name)
225
- packer = Limelight::Util::Packer.new()
226
- dest_dir = File.join(Data.productions_dir, rand.to_s.sub("0.", ""))
227
- Dir.mkdir(dest_dir)
228
- return packer.unpack(production_name, dest_dir)
229
- end
230
-
231
- end
232
-
233
- end
@@ -1,203 +0,0 @@
1
- #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
- #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
-
4
- require 'limelight/limelight_exception'
5
- require 'limelight/file_loader'
6
- require 'limelight/dsl/styles_builder'
7
- require 'drb'
8
-
9
-
10
- module Limelight
11
-
12
- # The root object of Limelight Production. Every Prop in a production has access to its Production object.
13
- # Therefore it is typical to store reasources in the Production.
14
- #
15
- # Productions are configured, and attributes are added, by the ProductionBuilder.
16
- #
17
- class Production
18
-
19
- include UI::Api::Production
20
-
21
- class << self
22
-
23
- def [](name) #:nodoc:
24
- return Studio[name]
25
- end
26
-
27
- end
28
-
29
- attr_reader :name, :root
30
- attr_accessor :producer, :theater
31
- attr_accessor :closed #:nodoc:
32
-
33
-
34
- # Users typically need not create Production objects.
35
- #
36
- def initialize(path)
37
- @root = FileLoader.for_root(path)
38
- @name = File.basename(path)
39
- end
40
-
41
- # Sets the name of the Production. The name must be unique amongst all Productions in memory.
42
- #
43
- def name=(value)
44
- Context.instance.studio.error_if_duplicate_name(value)
45
- @name = value
46
- end
47
-
48
- # Return the path to the root directory of the production
49
- #
50
- def path
51
- return @root.root
52
- end
53
-
54
- # Returns the path to the production's init file
55
- #
56
- def init_file
57
- return @root.path_to("init.rb")
58
- end
59
-
60
- # Returns the path to the production's production.rb file
61
- #
62
- def production_file
63
- return @root.path_to("production.rb")
64
- end
65
-
66
- # Returns the path to the production's stages file
67
- #
68
- def stages_file
69
- return @root.path_to("stages.rb")
70
- end
71
-
72
- # Returns the path to the production's styles file
73
- #
74
- def styles_file
75
- return @root.path_to("styles.rb")
76
- end
77
-
78
- # Returns the path to the production's gems directory
79
- #
80
- def gems_directory
81
- return @root.path_to("__resources/gems/gems")
82
- end
83
-
84
- # Returns the path to the productions gems root
85
- #
86
- def gems_root
87
- return @root.path_to("__resources/gems")
88
- end
89
-
90
- # Returns the path to the named Scene's directory within the Production
91
- #
92
- def scene_directory(name)
93
- return @root.root if name == :root
94
- return @root.path_to(name)
95
- end
96
-
97
- # Returns the minimum version of limelight required to run this production. Default: "0.0.0"
98
- # If the version of limelight used to open this production is less than the minimum,
99
- # an error will be displayed (starting with version 0.4.0).
100
- #
101
- def minimum_limelight_version
102
- return "0.0.0"
103
- end
104
-
105
- # Returns true if the production allows itself to be closed. The system will call this methods when
106
- # it wishes to close the production, perhaps when the user quits the application. By default the production
107
- # will always return true.
108
- #
109
- def allow_close?
110
- return true
111
- end
112
-
113
- # Called when the production is about to be opened. The default implementation does nothing but you may re-implement
114
- # it in the production.rb file.
115
- #
116
- def production_opening
117
- end
118
-
119
- # Called when the production has been loaded. That is, when all the gems have been loaded stages have been
120
- # instantiated.
121
- #
122
- def production_loaded
123
- end
124
-
125
- # Called when the production is fully opened. The default implementation does nothing but you may re-implement
126
- # it in the production.rb file.
127
- #
128
- def production_opened
129
- end
130
-
131
- # Called when the production is about to be closed. The default implementation does nothing but you may re-implement
132
- # it in the production.rb file.
133
- #
134
- def production_closing
135
- end
136
-
137
- # Called when the production is fully closed. The default implementation does nothing but you may re-implement
138
- # it in the production.rb file.
139
- #
140
- def production_closed
141
- end
142
-
143
- # returns true if the production has been closed.
144
- #
145
- def closed?
146
- return @closed
147
- end
148
-
149
- # Closes the production. If there are no more productions open, the Limelight runtime will shutdown.
150
- # The production will actually delegate to it's producer and the producer will close the production down.
151
- #
152
- def close
153
- @producer.close
154
- end
155
-
156
- # Publish this production using DRb on the specified port. The production will delegate to its producer to
157
- # actually do the publishing.
158
- #
159
- def publish_on_drb(port)
160
- @producer.publish_production_on_drb(port)
161
- end
162
-
163
- # Called when the last stage in this production's theater is closed. If the allow_close? returns true
164
- # this production will be closed.
165
- #
166
- def theater_empty!
167
- close if allow_close? && !closed?
168
- end
169
-
170
- # Returned the name of the default scene. This is only used when there are not stages defined in the production.
171
- # Defaults to :root, the production's root directory is the default scene. Return nil if there are not defaults.
172
- #
173
- def default_scene
174
- return :root
175
- end
176
-
177
- # A production with multiple Scenes may have a 'styles.rb' file in the root directory. This is called the
178
- # root_styles. This method loads the root_styles, if they haven't already been loaded, and returns them.
179
- #
180
- def root_styles
181
- unless @root_styles
182
- if File.exists?(styles_file)
183
- @root_styles = Limelight.build_styles_from_file(styles_file)
184
- else
185
- @root_styles = {}
186
- end
187
- end
188
- return @root_styles
189
- end
190
-
191
- alias :getName :name #:nodoc:
192
- alias :setName :name= #:nodoc:
193
- alias :allowClose :allow_close? #:nodoc:
194
-
195
- def callMethod(name, java_obj_array) #:nodoc:
196
- args = []
197
- java_obj_array.length.times { |i| args << java_obj_array[i] }
198
- send(name.to_sym, *args)
199
- end
200
-
201
- end
202
-
203
- end
@@ -1,367 +0,0 @@
1
- #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
- #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
-
4
- require 'limelight/java_util'
5
- require 'limelight/pen'
6
- require 'limelight/paint_action'
7
- require 'limelight/animation'
8
-
9
- module Limelight
10
-
11
- # Prop is the fundamental building block of a scene. A prop represents a rectangular area in the scene, of almost any dimension.
12
- # It may have borders, backgrounds, margin, padding, and it may contain other props or text. However it is the props'
13
- # Styles that determine their size and appearance.
14
- #
15
- # A Prop may have one parent and many children. Hense, when put together, they form a tree structure. The Scene is
16
- # the root Prop of a tree.
17
- #
18
- class Prop
19
-
20
- class << self
21
-
22
- def event(event_symbol)
23
- @events ||= []
24
- @events << event_symbol unless @events.include?(event_symbol)
25
- define_method(event_symbol) { |event| } # do nothing by default
26
- end
27
-
28
- def events
29
- return @events
30
- end
31
-
32
- def event2(event_symbol)
33
- @events ||= []
34
- @events << event_symbol unless @events.include?(event_symbol)
35
- define_method("accepts_#{event_symbol}".to_sym) { return self.respond_to?(event_symbol) }
36
- end
37
-
38
- end
39
-
40
- include UI::Api::Prop
41
-
42
- attr_accessor :style, :hover_style
43
- attr_reader :panel #:nodoc:
44
- attr_reader :children, :parent, :name, :id, :players
45
- getters :panel, :style, :hover_style, :name, :scene, :loader #:nodoc:
46
-
47
- # When creating a Prop, an optional Hash is accepted. These are called initialization options.
48
- # The key/value pairs in the initialiaztion options will be used to
49
- # set properties on the Prop, it Style, or included Player properties. These properties are not set
50
- # until the prop is added to a Prop tree with a Scene.
51
- #
52
- def initialize(hash = {})
53
- @options = hash || {}
54
- @children = []
55
- @style = Styles::ScreenableStyle.new
56
- @panel = UI::Model::Panel.new(self)
57
- end
58
-
59
- # Add a Prop as a child of this Prop.
60
- #
61
- def add(child)
62
- child.set_parent(self)
63
- @children << child
64
- @panel.add(child.panel)
65
- end
66
-
67
- # Same as add. Returns self so adding may be chained.
68
- #
69
- # prop << child1 << child2 << child3
70
- #
71
- def <<(child)
72
- add(child)
73
- return self
74
- end
75
-
76
- # Allows the adding of child Props using the PropBuilder DSL.
77
- #
78
- # prop.build do
79
- # child1 do
80
- # grand_child
81
- # end
82
- # child2
83
- # end
84
- #
85
- def build(options = {}, &block)
86
- require 'limelight/dsl/prop_builder'
87
- builder = Limelight::DSL::PropBuilder.new(self)
88
- builder.__install_instance_variables(options)
89
- builder.__loader__ = scene.loader
90
- builder.instance_eval(&block)
91
- end
92
-
93
- # Removes a child Prop. The child Prop will be parentless after removal.
94
- #
95
- def remove(child)
96
- if children.delete(child)
97
- scene.unindex_prop(child) if scene
98
- @panel.remove(child.panel)
99
- end
100
- end
101
-
102
- # Removes all child Props.
103
- #
104
- def remove_all
105
- @panel.remove_all
106
- @children.each { |child| scene.unindex_prop(child) } if scene
107
- @children = []
108
- end
109
-
110
- # Injects the behavior of the specified Player into the Prop. The Player must be a Module.
111
- #
112
- def include_player(player_module)
113
- unless self.is_a?(player_module)
114
- extend player_module
115
- self.casted if player_module.instance_methods.include?("casted")
116
- end
117
- end
118
-
119
- def update #:nodoc:
120
- return if (scene.nil? || !scene.visible)
121
- @panel.doLayout
122
- @panel.repaint
123
- end
124
-
125
- def update_now #:nodoc:
126
- return if (scene.nil? || !scene.visible)
127
- @panel.doLayout()
128
- @panel.paintImmediately(0, 0, @panel.width, @panel.height)
129
- end
130
-
131
- # A hook to invoke behavior after a Prop is painted.
132
- #
133
- def after_painting(flag = true, &block)
134
- if flag
135
- @panel.after_paint_action = PaintAction.new(&block)
136
- else
137
- @panel.after_paint_action = nil
138
- end
139
- end
140
-
141
- # Searches all descendant of the Prop (including itself) for Props with the specified name.
142
- # Returns an Array of matching Props. Returns an empty Array if none are found.
143
- #
144
- def find_by_name(name, results = [])
145
- results << self if @name == name
146
- @children.each { |child| child.find_by_name(name, results) }
147
- return results
148
- end
149
-
150
- # Sets the text of this Prop. If a prop is given text, it will become sterilized (it may not have any more children).
151
- # Some Players such as text_box, will cause the text to appear in the text_box.
152
- #
153
- def text=(value)
154
- @panel.text = value.to_s
155
- end
156
-
157
- # Returns the text of the Prop.
158
- #
159
- def text
160
- return panel.text
161
- end
162
-
163
- # Returns the scene to which this prop belongs to.
164
- #
165
- def scene
166
- return nil if @parent.nil?
167
- @scene = @parent.scene if @scene.nil?
168
- return @scene
169
- end
170
-
171
- # TODO get rid of me.... The Java Prop interface declares this method.
172
- def loader
173
- return scene.production.root;
174
- end
175
-
176
- # Returns the current Production this Prop lives in.
177
- #
178
- def production
179
- return scene.production
180
- end
181
-
182
- def to_s #:nodoc:
183
- return "#{self.class.name}[id: #{@id}, name: #{@name}]"
184
- end
185
-
186
- def inspect #:nodoc:
187
- return self.to_s
188
- end
189
-
190
- # unusual name because it's not part of public api
191
- def set_parent(parent) #:nodoc:
192
- @parent = parent
193
- if @parent.illuminated?
194
- illuminate
195
- end
196
- end
197
-
198
- # Allows the addition of extra initialization options. Will raise an exception if the Prop has already been
199
- # illuminated (added to a scene).
200
- #
201
- def add_options(more_options)
202
- raise "Too late to add options" if illuminated?
203
- @options.merge!(more_options)
204
- end
205
-
206
- # Returns a Box representing the relative bounds of the Prop. Is useful with usign the Pen.
207
- #
208
- # box = prop.area
209
- # box.x, box.y # represents the Prop's location within its parent Prop
210
- # box.width, box.height # represents the Prop's dimensions
211
- #
212
- def area
213
- return panel.get_bounding_box.clone
214
- end
215
-
216
- # Returns a Box representing the bounds inside the borders of the prop. If the Prop's style has no margin or
217
- # border_width, then this will be equivalant to area.
218
- #
219
- def bordered_area
220
- return panel.get_box_inside_borders.clone
221
- end
222
-
223
- # Returns a Box representing the bounds inside the padding of the prop. This is the area where child props may
224
- # be located
225
- #
226
- def child_area
227
- return panel.getChildConsumableArea().clone
228
- end
229
-
230
- # Returns a Pen object. Pen objects allow to you to draw directly on the screen, withing to bounds of this Prop.
231
- #
232
- def pen
233
- return Pen.new(panel.getGraphics)
234
- end
235
-
236
- # Initiate an animation loop. Options may include :name (string), :updates_per_second (int: defaults to 60)
237
- # An Animation object is returned.
238
- # The provided block will be invoked :updates_per_second times per second until the Animation is stopped.
239
- #
240
- # @animation = prop.animate(:updates_per_second => 20) do
241
- # prop.style.border_width = (prop.style.top_border_width.to_i + 1).to_s
242
- # @animation.stop if prop.style.top_border_width.to_i > 60
243
- # end
244
- #
245
- # This above example will cause the Prop's border to grow until it is 60 pixels wide.
246
- #
247
- def animate(options={}, &block)
248
- animation = Animation.new(self, block, options)
249
- animation.start
250
- return animation
251
- end
252
-
253
- # Plays a sound on the computers audio output. The parameter is the filename of a .au sound file.
254
- # This filename should relative to the root directory of the current Production, or an absolute path.
255
- #
256
- def play_sound(filename)
257
- @panel.play_sound(scene.loader.path_to(filename))
258
- end
259
-
260
- # Luanches the spcified URL using the OS's default handlers. For example, opening a URL in a browser:
261
- #
262
- # launch('http://www.google.com')
263
- #
264
- # To create a link prop add an accessor on the player (say url) and use that in the prop definition
265
- # Ex:
266
- #
267
- # link :text => "I am a link", :url => "http://www.8thlight.com"
268
- def launch(url)
269
- Context.instance.os.launch(url)
270
- end
271
-
272
- # GUI Events ##########################################
273
-
274
- # TODO MDM - This may be very inefficient. If seems like these methods are generated for each instance of prop.
275
- event2 :mouse_clicked
276
- event :mouse_entered
277
- event :mouse_exited
278
- event2 :mouse_pressed
279
- event2 :mouse_released
280
- event :mouse_dragged
281
- event :mouse_moved
282
- event :key_typed
283
- event :key_pressed
284
- event :key_released
285
- event :focus_gained
286
- event :focus_lost
287
- event :button_pressed
288
- event :value_changed
289
-
290
- # TODO Try to get me out of public scope
291
- #
292
- def illuminate #:nodoc:
293
- if illuminated?
294
- scene.index_prop(self) if @id
295
- else
296
- set_id(@options.delete(:id))
297
- @name = @options.delete(:name)
298
- @players = @options.delete(:players)
299
- @additional_styles = @options.delete(:styles)
300
-
301
- inherit_styles
302
- scene.casting_director.fill_cast(self)
303
- apply_options
304
-
305
- @options = nil
306
- end
307
-
308
- children.each do |child|
309
- child.illuminate
310
- end
311
- end
312
-
313
- def illuminated? #:nodoc:
314
- return @options.nil?
315
- end
316
-
317
- private ###############################################
318
-
319
- def set_id(id)
320
- return if id.nil? || id.to_s.empty?
321
- @id = id.to_s
322
- scene.index_prop(self)
323
- end
324
-
325
- def apply_options
326
- @options.each_pair do |key, value|
327
- setter_sym = "#{key.to_s}=".to_sym
328
- if self.respond_to?(setter_sym)
329
- self.send(setter_sym, value)
330
- elsif self.style.respond_to?(setter_sym)
331
- self.style.send(setter_sym, value.to_s)
332
- elsif is_event_setter(key)
333
- define_event(key, value)
334
- end
335
- end
336
- end
337
-
338
- def is_event_setter(symbol)
339
- string_value = symbol.to_s
340
- return string_value[0..2] == "on_" && self.class.events.include?(string_value[3..-1].to_sym)
341
- end
342
-
343
- def define_event(symbol, value)
344
- event_name = symbol.to_s[3..-1]
345
- self.instance_eval "def #{event_name}(event); #{value}; end"
346
- end
347
-
348
- def inherit_styles
349
- style_names = []
350
- style_names << @name unless @name.nil?
351
- style_names += @additional_styles.gsub(',', ' ').split(' ') unless @additional_styles.nil?
352
- style_names.each do |style_name|
353
- new_style = scene.styles[style_name]
354
- @style.add_extension(new_style) if new_style
355
- new_hover_style = scene.styles["#{style_name}.hover"]
356
- if new_hover_style
357
- if @hover_style.nil?
358
- @hover_style = new_hover_style
359
- else
360
- @hover_style.add_extension(new_hover_style)
361
- end
362
- end
363
- end
364
- end
365
-
366
- end
367
- end