limelight 0.5.5-java → 0.6.14-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (315) hide show
  1. data/LICENSE +19 -0
  2. data/bin/limelight +7 -3
  3. data/ruby/lib/limelight-rb.jar +0 -0
  4. data/ruby/lib/limelight.jar +0 -0
  5. data/ruby/lib/limelight.rb +48 -0
  6. data/{lib → ruby/lib}/limelight/animation.rb +3 -3
  7. data/ruby/lib/limelight/builtin/players.rb +21 -0
  8. data/ruby/lib/limelight/builtin/players/button.rb +7 -0
  9. data/ruby/lib/limelight/builtin/players/check_box.rb +24 -0
  10. data/ruby/lib/limelight/builtin/players/combo_box.rb +50 -0
  11. data/ruby/lib/limelight/builtin/players/curtains.rb +12 -0
  12. data/ruby/lib/limelight/builtin/players/image.rb +38 -0
  13. data/ruby/lib/limelight/builtin/players/radio_button.rb +36 -0
  14. data/ruby/lib/limelight/builtin/players/stage_mover.rb +19 -0
  15. data/ruby/lib/limelight/builtin/players/stage_sizer.rb +23 -0
  16. data/ruby/lib/limelight/builtin/players/text_area.rb +10 -0
  17. data/ruby/lib/limelight/builtin/players/text_box.rb +10 -0
  18. data/{lib → ruby/lib}/limelight/dsl/build_exception.rb +2 -2
  19. data/{lib → ruby/lib}/limelight/dsl/menu_bar.rb +3 -3
  20. data/{lib → ruby/lib}/limelight/dsl/prop_builder.rb +25 -16
  21. data/{lib → ruby/lib}/limelight/dsl/stage_builder.rb +4 -4
  22. data/{lib → ruby/lib}/limelight/dsl/styles_builder.rb +14 -18
  23. data/{lib → ruby/lib}/limelight/file_chooser.rb +10 -10
  24. data/{lib → ruby/lib}/limelight/file_filter.rb +6 -6
  25. data/ruby/lib/limelight/java_couplings.rb +70 -0
  26. data/{lib → ruby/lib}/limelight/java_util.rb +6 -6
  27. data/{lib → ruby/lib}/limelight/limelight_exception.rb +3 -3
  28. data/ruby/lib/limelight/limelight_init.rb +24 -0
  29. data/ruby/lib/limelight/main.rb +15 -0
  30. data/ruby/lib/limelight/mouse.rb +76 -0
  31. data/ruby/lib/limelight/optionable.rb +42 -0
  32. data/{lib → ruby/lib}/limelight/paint_action.rb +8 -8
  33. data/{lib → ruby/lib}/limelight/pen.rb +7 -7
  34. data/ruby/lib/limelight/player.rb +148 -0
  35. data/ruby/lib/limelight/player_recruiter.rb +54 -0
  36. data/ruby/lib/limelight/production.rb +257 -0
  37. data/ruby/lib/limelight/prop.rb +344 -0
  38. data/ruby/lib/limelight/scene.rb +120 -0
  39. data/ruby/lib/limelight/specs/spec_helper.rb +191 -0
  40. data/ruby/lib/limelight/stage.rb +268 -0
  41. data/ruby/lib/limelight/string.rb +32 -0
  42. data/{lib → ruby/lib}/limelight/studio.rb +4 -3
  43. data/ruby/lib/limelight/style.rb +294 -0
  44. data/ruby/lib/limelight/templates/sources/features/step_definitions/limelight_steps.rb.template +47 -0
  45. data/ruby/lib/limelight/templates/sources/features/support/env.rb.template +35 -0
  46. data/{lib → ruby/lib}/limelight/templates/sources/freezing/limelight_init.rb.template +0 -0
  47. data/{lib → ruby/lib}/limelight/templates/sources/production/production.rb.template +2 -2
  48. data/{lib → ruby/lib}/limelight/templates/sources/production/spec/spec_helper.rb.template +0 -0
  49. data/{lib → ruby/lib}/limelight/templates/sources/production/stages.rb.template +0 -0
  50. data/{lib → ruby/lib}/limelight/templates/sources/production/styles.rb.template +0 -0
  51. data/ruby/lib/limelight/templates/sources/project/Rakefile.template +15 -0
  52. data/ruby/lib/limelight/templates/sources/project/spec_helper.rb.template +12 -0
  53. data/{lib → ruby/lib}/limelight/templates/sources/scene/props.rb.template +0 -0
  54. data/{lib → ruby/lib}/limelight/templates/sources/scene/styles.rb.template +0 -0
  55. data/{lib → ruby/lib}/limelight/templates/sources/scene_spec/scene_spec.rb.template +0 -0
  56. data/ruby/lib/limelight/theater.rb +76 -0
  57. data/{lib → ruby/lib}/limelight/util.rb +6 -25
  58. data/ruby/lib/limelight/util/hashes.rb +39 -0
  59. data/ruby/lib/limelight/util/map_hash.rb +191 -0
  60. data/ruby/lib/limelight/util/string_hash.rb +64 -0
  61. metadata +97 -390
  62. data/bin/icons/icon.ico +0 -0
  63. data/bin/icons/icon_48.gif +0 -0
  64. data/bin/icons/limelight.icns +0 -0
  65. data/bin/ll +0 -10
  66. data/bin/ll.bat +0 -5
  67. data/lib/init.rb +0 -12
  68. data/lib/limelight.jar +0 -0
  69. data/lib/limelight/builtin/players.rb +0 -16
  70. data/lib/limelight/builtin/players/button.rb +0 -39
  71. data/lib/limelight/builtin/players/check_box.rb +0 -50
  72. data/lib/limelight/builtin/players/combo_box.rb +0 -89
  73. data/lib/limelight/builtin/players/combo_box_popup_list.rb +0 -19
  74. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +0 -21
  75. data/lib/limelight/builtin/players/curtains.rb +0 -23
  76. data/lib/limelight/builtin/players/image.rb +0 -54
  77. data/lib/limelight/builtin/players/password_box.rb +0 -34
  78. data/lib/limelight/builtin/players/radio_button.rb +0 -65
  79. data/lib/limelight/builtin/players/stage_mover.rb +0 -31
  80. data/lib/limelight/builtin/players/stage_sizer.rb +0 -34
  81. data/lib/limelight/builtin/players/text_area.rb +0 -34
  82. data/lib/limelight/builtin/players/text_box.rb +0 -34
  83. data/lib/limelight/builtin/styles.rb +0 -35
  84. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +0 -14
  85. data/lib/limelight/builtin/utilities_production/alert/props.rb +0 -8
  86. data/lib/limelight/builtin/utilities_production/alert/styles.rb +0 -14
  87. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +0 -20
  88. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +0 -12
  89. data/lib/limelight/builtin/utilities_production/production.rb +0 -66
  90. data/lib/limelight/builtin/utilities_production/stages.rb +0 -12
  91. data/lib/limelight/builtin/utilities_production/styles.rb +0 -53
  92. data/lib/limelight/button_group_cache.rb +0 -11
  93. data/lib/limelight/casting_director.rb +0 -112
  94. data/lib/limelight/commands/command.rb +0 -168
  95. data/lib/limelight/commands/create_command.rb +0 -98
  96. data/lib/limelight/commands/freeze_command.rb +0 -131
  97. data/lib/limelight/commands/help_command.rb +0 -61
  98. data/lib/limelight/commands/open_command.rb +0 -60
  99. data/lib/limelight/commands/pack_command.rb +0 -53
  100. data/lib/limelight/commands/unpack_command.rb +0 -44
  101. data/lib/limelight/commands/version_command.rb +0 -31
  102. data/lib/limelight/data.rb +0 -37
  103. data/lib/limelight/file_loader.rb +0 -46
  104. data/lib/limelight/gems.rb +0 -51
  105. data/lib/limelight/java_couplings.rb +0 -67
  106. data/lib/limelight/limelight_init.rb +0 -12
  107. data/lib/limelight/main.rb +0 -105
  108. data/lib/limelight/producer.rb +0 -233
  109. data/lib/limelight/production.rb +0 -203
  110. data/lib/limelight/prop.rb +0 -367
  111. data/lib/limelight/scene.rb +0 -151
  112. data/lib/limelight/specs/spec_helper.rb +0 -136
  113. data/lib/limelight/specs/test_scene_opener.rb +0 -63
  114. data/lib/limelight/stage.rb +0 -353
  115. data/lib/limelight/string.rb +0 -38
  116. data/lib/limelight/styles/style.rb +0 -288
  117. data/lib/limelight/templates/production_templater.rb +0 -49
  118. data/lib/limelight/templates/scene_templater.rb +0 -47
  119. data/lib/limelight/templates/sources/production/init.rb.template +0 -15
  120. data/lib/limelight/templates/templater.rb +0 -131
  121. data/lib/limelight/templates/templater_logger.rb +0 -39
  122. data/lib/limelight/theater.rb +0 -109
  123. data/lib/limelight/util/downloader.rb +0 -115
  124. data/lib/limelight/version.rb +0 -20
  125. data/productions/examples/8thlight.com/about/about.txt +0 -24
  126. data/productions/examples/8thlight.com/about/props.rb +0 -11
  127. data/productions/examples/8thlight.com/about/styles.rb +0 -2
  128. data/productions/examples/8thlight.com/footer.rb +0 -6
  129. data/productions/examples/8thlight.com/home/props.rb +0 -28
  130. data/productions/examples/8thlight.com/home/styles.rb +0 -2
  131. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  132. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  133. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  134. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  135. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  136. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  137. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  138. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  139. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  140. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  141. data/productions/examples/8thlight.com/menu.rb +0 -11
  142. data/productions/examples/8thlight.com/services/props.rb +0 -11
  143. data/productions/examples/8thlight.com/services/services.txt +0 -8
  144. data/productions/examples/8thlight.com/services/styles.rb +0 -2
  145. data/productions/examples/8thlight.com/stages.rb +0 -8
  146. data/productions/examples/8thlight.com/styles.rb +0 -210
  147. data/productions/examples/calculator/players/button.rb +0 -24
  148. data/productions/examples/calculator/players/calculator.rb +0 -15
  149. data/productions/examples/calculator/players/calculator_model.rb +0 -13
  150. data/productions/examples/calculator/props.rb +0 -23
  151. data/productions/examples/calculator/styles.rb +0 -36
  152. data/productions/examples/langstons_ant/html_javascript/ant.css +0 -39
  153. data/productions/examples/langstons_ant/html_javascript/ant.html +0 -22
  154. data/productions/examples/langstons_ant/html_javascript/ant.js +0 -23
  155. data/productions/examples/langstons_ant/init.rb +0 -4
  156. data/productions/examples/langstons_ant/players/ant.rb +0 -103
  157. data/productions/examples/langstons_ant/players/log.rb +0 -29
  158. data/productions/examples/langstons_ant/players/start_stop_button.rb +0 -37
  159. data/productions/examples/langstons_ant/players/world.rb +0 -35
  160. data/productions/examples/langstons_ant/props.rb +0 -22
  161. data/productions/examples/langstons_ant/styles.rb +0 -104
  162. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +0 -10
  163. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +0 -32
  164. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +0 -52
  165. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +0 -16
  166. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +0 -8
  167. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +0 -20
  168. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +0 -15
  169. data/productions/examples/sandbox/alerts/players/alerts.rb +0 -17
  170. data/productions/examples/sandbox/alerts/props.rb +0 -10
  171. data/productions/examples/sandbox/alerts/styles.rb +0 -46
  172. data/productions/examples/sandbox/background_images/props.rb +0 -22
  173. data/productions/examples/sandbox/background_images/styles.rb +0 -40
  174. data/productions/examples/sandbox/click_me/players/chromaton.rb +0 -52
  175. data/productions/examples/sandbox/click_me/props.rb +0 -8
  176. data/productions/examples/sandbox/click_me/styles.rb +0 -11
  177. data/productions/examples/sandbox/floaters/players/floater.rb +0 -108
  178. data/productions/examples/sandbox/floaters/players/surface.rb +0 -21
  179. data/productions/examples/sandbox/floaters/props.rb +0 -10
  180. data/productions/examples/sandbox/floaters/styles.rb +0 -24
  181. data/productions/examples/sandbox/frameing/players/sandbox.rb +0 -17
  182. data/productions/examples/sandbox/frameing/props.rb +0 -35
  183. data/productions/examples/sandbox/frameing/styles.rb +0 -45
  184. data/productions/examples/sandbox/gradients/players/spinner.rb +0 -20
  185. data/productions/examples/sandbox/gradients/players/teaser.rb +0 -19
  186. data/productions/examples/sandbox/gradients/players/wave.rb +0 -19
  187. data/productions/examples/sandbox/gradients/players/waves.rb +0 -19
  188. data/productions/examples/sandbox/gradients/props.rb +0 -13
  189. data/productions/examples/sandbox/gradients/styles.rb +0 -47
  190. data/productions/examples/sandbox/header.rb +0 -22
  191. data/productions/examples/sandbox/homer/players/homer.rb +0 -24
  192. data/productions/examples/sandbox/homer/props.rb +0 -10
  193. data/productions/examples/sandbox/homer/styles.rb +0 -16
  194. data/productions/examples/sandbox/images/arch.jpg +0 -0
  195. data/productions/examples/sandbox/images/beach.jpg +0 -0
  196. data/productions/examples/sandbox/images/homer.jpg +0 -0
  197. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  198. data/productions/examples/sandbox/images/logo.png +0 -0
  199. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  200. data/productions/examples/sandbox/images/space.png +0 -0
  201. data/productions/examples/sandbox/images_scene/props.rb +0 -36
  202. data/productions/examples/sandbox/images_scene/styles.rb +0 -34
  203. data/productions/examples/sandbox/inputs/players/button_input.rb +0 -48
  204. data/productions/examples/sandbox/inputs/players/check_box_input.rb +0 -40
  205. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +0 -41
  206. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +0 -43
  207. data/productions/examples/sandbox/inputs/players/text_area_input.rb +0 -36
  208. data/productions/examples/sandbox/inputs/players/text_box_input.rb +0 -36
  209. data/productions/examples/sandbox/inputs/props.rb +0 -40
  210. data/productions/examples/sandbox/inputs/styles.rb +0 -39
  211. data/productions/examples/sandbox/kiosk/players/kiosk.rb +0 -39
  212. data/productions/examples/sandbox/kiosk/props.rb +0 -9
  213. data/productions/examples/sandbox/kiosk/styles.rb +0 -37
  214. data/productions/examples/sandbox/players/sandbox.rb +0 -11
  215. data/productions/examples/sandbox/rounded_corners/players/box.rb +0 -11
  216. data/productions/examples/sandbox/rounded_corners/props.rb +0 -22
  217. data/productions/examples/sandbox/rounded_corners/styles.rb +0 -17
  218. data/productions/examples/sandbox/scrolling/players/add_button.rb +0 -19
  219. data/productions/examples/sandbox/scrolling/players/cell.rb +0 -15
  220. data/productions/examples/sandbox/scrolling/props.rb +0 -45
  221. data/productions/examples/sandbox/scrolling/styles.rb +0 -33
  222. data/productions/examples/sandbox/sketching/players/sketchpad.rb +0 -46
  223. data/productions/examples/sandbox/sketching/props.rb +0 -25
  224. data/productions/examples/sandbox/sketching/styles.rb +0 -35
  225. data/productions/examples/sandbox/sounds/bird.au +0 -0
  226. data/productions/examples/sandbox/sounds/cat.au +0 -0
  227. data/productions/examples/sandbox/sounds/cow.au +0 -0
  228. data/productions/examples/sandbox/sounds/dog.au +0 -0
  229. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  230. data/productions/examples/sandbox/sounds/duck.au +0 -0
  231. data/productions/examples/sandbox/sounds/players/clip.rb +0 -10
  232. data/productions/examples/sandbox/sounds/props.rb +0 -10
  233. data/productions/examples/sandbox/sounds/styles.rb +0 -17
  234. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +0 -16
  235. data/productions/examples/sandbox/stage_handles/players/sizer.rb +0 -38
  236. data/productions/examples/sandbox/stage_handles/props.rb +0 -17
  237. data/productions/examples/sandbox/stage_handles/styles.rb +0 -58
  238. data/productions/examples/sandbox/stages.rb +0 -8
  239. data/productions/examples/sandbox/styles.rb +0 -35
  240. data/productions/examples/sandbox/teaser/players/fader.rb +0 -58
  241. data/productions/examples/sandbox/teaser/props.rb +0 -14
  242. data/productions/examples/sandbox/teaser/styles.rb +0 -21
  243. data/productions/examples/tutorials/tutorial_1/players/sample.rb +0 -11
  244. data/productions/examples/tutorials/tutorial_1/props.rb +0 -9
  245. data/productions/examples/tutorials/tutorial_1/styles.rb +0 -25
  246. data/productions/stage_composer/init.rb +0 -10
  247. data/productions/stage_composer/inspector/players/inspector.rb +0 -80
  248. data/productions/stage_composer/inspector/players/prop_row.rb +0 -12
  249. data/productions/stage_composer/inspector/players/prop_tree.rb +0 -33
  250. data/productions/stage_composer/inspector/players/style_table.rb +0 -12
  251. data/productions/stage_composer/inspector/players/style_value.rb +0 -16
  252. data/productions/stage_composer/inspector/props.rb +0 -19
  253. data/productions/stage_composer/inspector/styles.rb +0 -71
  254. data/productions/stage_composer/lib/init.rb +0 -5
  255. data/productions/stage_composer/lib/limelight/composer/controller.rb +0 -51
  256. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +0 -24
  257. data/productions/stage_composer/production.rb +0 -6
  258. data/productions/stage_composer/stages.rb +0 -15
  259. data/productions/startup/images/logo.png +0 -0
  260. data/productions/startup/images/splash.png +0 -0
  261. data/productions/startup/production.rb +0 -52
  262. data/productions/startup/spec/default_scene/default_scene_spec.rb +0 -16
  263. data/productions/startup/spec/spec_helper.rb +0 -8
  264. data/productions/startup/stages.rb +0 -9
  265. data/productions/startup/styles.rb +0 -15
  266. data/productions/startup/welcome/players/browse_button.rb +0 -10
  267. data/productions/startup/welcome/players/download_button.rb +0 -17
  268. data/productions/startup/welcome/players/sandbox_button.rb +0 -11
  269. data/productions/startup/welcome/props.rb +0 -23
  270. data/productions/startup/welcome/styles.rb +0 -103
  271. data/spec/limelight/builtin/players/button_spec.rb +0 -20
  272. data/spec/limelight/builtin/players/check_box_spec.rb +0 -29
  273. data/spec/limelight/builtin/players/combo_box_spec.rb +0 -29
  274. data/spec/limelight/builtin/players/image_spec.rb +0 -43
  275. data/spec/limelight/builtin/players/password_box_spec.rb +0 -27
  276. data/spec/limelight/builtin/players/radio_button_spec.rb +0 -64
  277. data/spec/limelight/builtin/players/stage_mover_spec.rb +0 -36
  278. data/spec/limelight/builtin/players/stage_sizer_spec.rb +0 -40
  279. data/spec/limelight/builtin/players/text_area_spec.rb +0 -27
  280. data/spec/limelight/builtin/players/text_box_spec.rb +0 -27
  281. data/spec/limelight/builtin/utilities_production/spec_helper.rb +0 -7
  282. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +0 -147
  283. data/spec/limelight/casting_director_spec.rb +0 -164
  284. data/spec/limelight/commands/command_spec.rb +0 -26
  285. data/spec/limelight/commands/create_command_spec.rb +0 -108
  286. data/spec/limelight/commands/freeze_command_spec.rb +0 -143
  287. data/spec/limelight/commands/help_command_spec.rb +0 -42
  288. data/spec/limelight/commands/open_command_spec.rb +0 -53
  289. data/spec/limelight/commands/pack_command_spec.rb +0 -43
  290. data/spec/limelight/commands/unpack_command_spec.rb +0 -47
  291. data/spec/limelight/data_spec.rb +0 -36
  292. data/spec/limelight/dsl/prop_builder_spec.rb +0 -245
  293. data/spec/limelight/dsl/stage_builder_spec.rb +0 -90
  294. data/spec/limelight/dsl/styles_builder_spec.rb +0 -194
  295. data/spec/limelight/file_chooser_spec.rb +0 -64
  296. data/spec/limelight/file_filter_spec.rb +0 -29
  297. data/spec/limelight/file_loader_spec.rb +0 -28
  298. data/spec/limelight/gems_spec.rb +0 -92
  299. data/spec/limelight/java_util_spec.rb +0 -37
  300. data/spec/limelight/main_spec.rb +0 -40
  301. data/spec/limelight/paint_action_spec.rb +0 -30
  302. data/spec/limelight/pen_spec.rb +0 -62
  303. data/spec/limelight/producer_spec.rb +0 -246
  304. data/spec/limelight/production_spec.rb +0 -97
  305. data/spec/limelight/prop_spec.rb +0 -431
  306. data/spec/limelight/scene_spec.rb +0 -173
  307. data/spec/limelight/stage_spec.rb +0 -247
  308. data/spec/limelight/string_spec.rb +0 -38
  309. data/spec/limelight/templates/production_templater_spec.rb +0 -66
  310. data/spec/limelight/templates/scene_templater_spec.rb +0 -51
  311. data/spec/limelight/templates/templater_logger_spec.rb +0 -41
  312. data/spec/limelight/templates/templater_spec.rb +0 -107
  313. data/spec/limelight/theater_spec.rb +0 -120
  314. data/spec/limelight/util/downloader_spec.rb +0 -92
  315. data/spec/spec_helper.rb +0 -64
@@ -1,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