epall-limelight 0.5.0-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 (282) hide show
  1. data/bin/icons/icon.ico +0 -0
  2. data/bin/icons/icon_48.gif +0 -0
  3. data/bin/icons/limelight.icns +0 -0
  4. data/bin/limelight +5 -0
  5. data/bin/ll +10 -0
  6. data/bin/ll.bat +5 -0
  7. data/lib/init.rb +16 -0
  8. data/lib/limelight.jar +0 -0
  9. data/lib/limelight/animation.rb +41 -0
  10. data/lib/limelight/builtin/players.rb +16 -0
  11. data/lib/limelight/builtin/players/button.rb +39 -0
  12. data/lib/limelight/builtin/players/check_box.rb +50 -0
  13. data/lib/limelight/builtin/players/combo_box.rb +89 -0
  14. data/lib/limelight/builtin/players/combo_box_popup_list.rb +19 -0
  15. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +21 -0
  16. data/lib/limelight/builtin/players/curtains.rb +23 -0
  17. data/lib/limelight/builtin/players/image.rb +54 -0
  18. data/lib/limelight/builtin/players/password_box.rb +34 -0
  19. data/lib/limelight/builtin/players/radio_button.rb +65 -0
  20. data/lib/limelight/builtin/players/stage_mover.rb +31 -0
  21. data/lib/limelight/builtin/players/stage_sizer.rb +34 -0
  22. data/lib/limelight/builtin/players/text_area.rb +34 -0
  23. data/lib/limelight/builtin/players/text_box.rb +34 -0
  24. data/lib/limelight/builtin/styles.rb +35 -0
  25. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +11 -0
  26. data/lib/limelight/builtin/utilities_production/alert/props.rb +8 -0
  27. data/lib/limelight/builtin/utilities_production/alert/styles.rb +14 -0
  28. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +20 -0
  29. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +12 -0
  30. data/lib/limelight/builtin/utilities_production/production.rb +62 -0
  31. data/lib/limelight/builtin/utilities_production/stages.rb +12 -0
  32. data/lib/limelight/builtin/utilities_production/styles.rb +53 -0
  33. data/lib/limelight/button_group_cache.rb +11 -0
  34. data/lib/limelight/casting_director.rb +112 -0
  35. data/lib/limelight/client/playbills.rb +86 -0
  36. data/lib/limelight/commands/command.rb +168 -0
  37. data/lib/limelight/commands/create_command.rb +98 -0
  38. data/lib/limelight/commands/freeze_command.rb +131 -0
  39. data/lib/limelight/commands/help_command.rb +61 -0
  40. data/lib/limelight/commands/open_command.rb +60 -0
  41. data/lib/limelight/commands/pack_command.rb +45 -0
  42. data/lib/limelight/commands/unpack_command.rb +44 -0
  43. data/lib/limelight/commands/version_command.rb +31 -0
  44. data/lib/limelight/data.rb +37 -0
  45. data/lib/limelight/dsl/build_exception.rb +55 -0
  46. data/lib/limelight/dsl/menu_bar.rb +71 -0
  47. data/lib/limelight/dsl/prop_builder.rb +155 -0
  48. data/lib/limelight/dsl/stage_builder.rb +105 -0
  49. data/lib/limelight/dsl/styles_builder.rb +157 -0
  50. data/lib/limelight/file_chooser.rb +68 -0
  51. data/lib/limelight/file_filter.rb +33 -0
  52. data/lib/limelight/file_loader.rb +46 -0
  53. data/lib/limelight/gems.rb +51 -0
  54. data/lib/limelight/java_couplings.rb +66 -0
  55. data/lib/limelight/java_util.rb +49 -0
  56. data/lib/limelight/limelight_exception.rb +24 -0
  57. data/lib/limelight/main.rb +108 -0
  58. data/lib/limelight/paint_action.rb +27 -0
  59. data/lib/limelight/pen.rb +83 -0
  60. data/lib/limelight/producer.rb +179 -0
  61. data/lib/limelight/production.rb +169 -0
  62. data/lib/limelight/prop.rb +367 -0
  63. data/lib/limelight/scene.rb +151 -0
  64. data/lib/limelight/specs/spec_helper.rb +87 -0
  65. data/lib/limelight/specs/test_scene_opener.rb +60 -0
  66. data/lib/limelight/stage.rb +292 -0
  67. data/lib/limelight/string.rb +38 -0
  68. data/lib/limelight/studio.rb +185 -0
  69. data/lib/limelight/styles.rb +347 -0
  70. data/lib/limelight/templates/production_templater.rb +49 -0
  71. data/lib/limelight/templates/scene_templater.rb +47 -0
  72. data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
  73. data/lib/limelight/templates/sources/production/init.rb.template +15 -0
  74. data/lib/limelight/templates/sources/production/production.rb.template +49 -0
  75. data/lib/limelight/templates/sources/production/spec/spec_helper.rb.template +12 -0
  76. data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
  77. data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
  78. data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
  79. data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
  80. data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +13 -0
  81. data/lib/limelight/templates/templater.rb +131 -0
  82. data/lib/limelight/templates/templater_logger.rb +39 -0
  83. data/lib/limelight/theater.rb +77 -0
  84. data/lib/limelight/util.rb +65 -0
  85. data/lib/limelight/util/downloader.rb +115 -0
  86. data/lib/limelight/version.rb +20 -0
  87. data/productions/examples/8thlight.com/about/about.txt +24 -0
  88. data/productions/examples/8thlight.com/about/props.rb +11 -0
  89. data/productions/examples/8thlight.com/about/styles.rb +2 -0
  90. data/productions/examples/8thlight.com/footer.rb +6 -0
  91. data/productions/examples/8thlight.com/home/props.rb +28 -0
  92. data/productions/examples/8thlight.com/home/styles.rb +2 -0
  93. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  94. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  95. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  96. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  97. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  98. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  99. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  100. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  101. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  102. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  103. data/productions/examples/8thlight.com/menu.rb +11 -0
  104. data/productions/examples/8thlight.com/services/props.rb +11 -0
  105. data/productions/examples/8thlight.com/services/services.txt +8 -0
  106. data/productions/examples/8thlight.com/services/styles.rb +2 -0
  107. data/productions/examples/8thlight.com/stages.rb +8 -0
  108. data/productions/examples/8thlight.com/styles.rb +210 -0
  109. data/productions/examples/calculator/players/button.rb +24 -0
  110. data/productions/examples/calculator/players/calculator.rb +15 -0
  111. data/productions/examples/calculator/players/calculator_model.rb +13 -0
  112. data/productions/examples/calculator/props.rb +23 -0
  113. data/productions/examples/calculator/styles.rb +36 -0
  114. data/productions/examples/langstons_ant/html_javascript/ant.css +39 -0
  115. data/productions/examples/langstons_ant/html_javascript/ant.html +22 -0
  116. data/productions/examples/langstons_ant/html_javascript/ant.js +23 -0
  117. data/productions/examples/langstons_ant/init.rb +4 -0
  118. data/productions/examples/langstons_ant/players/ant.rb +103 -0
  119. data/productions/examples/langstons_ant/players/log.rb +29 -0
  120. data/productions/examples/langstons_ant/players/start_stop_button.rb +37 -0
  121. data/productions/examples/langstons_ant/players/world.rb +35 -0
  122. data/productions/examples/langstons_ant/props.rb +22 -0
  123. data/productions/examples/langstons_ant/styles.rb +104 -0
  124. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +10 -0
  125. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +32 -0
  126. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +52 -0
  127. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +16 -0
  128. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +8 -0
  129. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +20 -0
  130. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +15 -0
  131. data/productions/examples/sandbox/alerts/players/alerts.rb +17 -0
  132. data/productions/examples/sandbox/alerts/props.rb +10 -0
  133. data/productions/examples/sandbox/alerts/styles.rb +46 -0
  134. data/productions/examples/sandbox/background_images/props.rb +22 -0
  135. data/productions/examples/sandbox/background_images/styles.rb +40 -0
  136. data/productions/examples/sandbox/click_me/players/chromaton.rb +52 -0
  137. data/productions/examples/sandbox/click_me/props.rb +8 -0
  138. data/productions/examples/sandbox/click_me/styles.rb +11 -0
  139. data/productions/examples/sandbox/floaters/players/floater.rb +108 -0
  140. data/productions/examples/sandbox/floaters/players/surface.rb +21 -0
  141. data/productions/examples/sandbox/floaters/props.rb +10 -0
  142. data/productions/examples/sandbox/floaters/styles.rb +24 -0
  143. data/productions/examples/sandbox/frameing/players/sandbox.rb +17 -0
  144. data/productions/examples/sandbox/frameing/props.rb +35 -0
  145. data/productions/examples/sandbox/frameing/styles.rb +45 -0
  146. data/productions/examples/sandbox/gradients/players/spinner.rb +20 -0
  147. data/productions/examples/sandbox/gradients/players/teaser.rb +19 -0
  148. data/productions/examples/sandbox/gradients/players/wave.rb +19 -0
  149. data/productions/examples/sandbox/gradients/players/waves.rb +19 -0
  150. data/productions/examples/sandbox/gradients/props.rb +13 -0
  151. data/productions/examples/sandbox/gradients/styles.rb +47 -0
  152. data/productions/examples/sandbox/header.rb +22 -0
  153. data/productions/examples/sandbox/homer/players/homer.rb +24 -0
  154. data/productions/examples/sandbox/homer/props.rb +10 -0
  155. data/productions/examples/sandbox/homer/styles.rb +16 -0
  156. data/productions/examples/sandbox/images/arch.jpg +0 -0
  157. data/productions/examples/sandbox/images/beach.jpg +0 -0
  158. data/productions/examples/sandbox/images/homer.jpg +0 -0
  159. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  160. data/productions/examples/sandbox/images/logo.png +0 -0
  161. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  162. data/productions/examples/sandbox/images/space.png +0 -0
  163. data/productions/examples/sandbox/images_scene/props.rb +36 -0
  164. data/productions/examples/sandbox/images_scene/styles.rb +34 -0
  165. data/productions/examples/sandbox/inputs/players/button_input.rb +48 -0
  166. data/productions/examples/sandbox/inputs/players/check_box_input.rb +40 -0
  167. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +41 -0
  168. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +43 -0
  169. data/productions/examples/sandbox/inputs/players/text_area_input.rb +36 -0
  170. data/productions/examples/sandbox/inputs/players/text_box_input.rb +36 -0
  171. data/productions/examples/sandbox/inputs/props.rb +40 -0
  172. data/productions/examples/sandbox/inputs/styles.rb +39 -0
  173. data/productions/examples/sandbox/kiosk/players/kiosk.rb +39 -0
  174. data/productions/examples/sandbox/kiosk/props.rb +9 -0
  175. data/productions/examples/sandbox/kiosk/styles.rb +37 -0
  176. data/productions/examples/sandbox/players/sandbox.rb +11 -0
  177. data/productions/examples/sandbox/rounded_corners/players/box.rb +11 -0
  178. data/productions/examples/sandbox/rounded_corners/props.rb +22 -0
  179. data/productions/examples/sandbox/rounded_corners/styles.rb +17 -0
  180. data/productions/examples/sandbox/scrolling/players/add_button.rb +19 -0
  181. data/productions/examples/sandbox/scrolling/players/cell.rb +15 -0
  182. data/productions/examples/sandbox/scrolling/props.rb +45 -0
  183. data/productions/examples/sandbox/scrolling/styles.rb +33 -0
  184. data/productions/examples/sandbox/sketching/players/sketchpad.rb +46 -0
  185. data/productions/examples/sandbox/sketching/props.rb +25 -0
  186. data/productions/examples/sandbox/sketching/styles.rb +35 -0
  187. data/productions/examples/sandbox/sounds/bird.au +0 -0
  188. data/productions/examples/sandbox/sounds/cat.au +0 -0
  189. data/productions/examples/sandbox/sounds/cow.au +0 -0
  190. data/productions/examples/sandbox/sounds/dog.au +0 -0
  191. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  192. data/productions/examples/sandbox/sounds/duck.au +0 -0
  193. data/productions/examples/sandbox/sounds/players/clip.rb +10 -0
  194. data/productions/examples/sandbox/sounds/props.rb +10 -0
  195. data/productions/examples/sandbox/sounds/styles.rb +17 -0
  196. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +16 -0
  197. data/productions/examples/sandbox/stage_handles/players/sizer.rb +35 -0
  198. data/productions/examples/sandbox/stage_handles/props.rb +17 -0
  199. data/productions/examples/sandbox/stage_handles/styles.rb +58 -0
  200. data/productions/examples/sandbox/stages.rb +8 -0
  201. data/productions/examples/sandbox/styles.rb +35 -0
  202. data/productions/examples/sandbox/teaser/players/fader.rb +58 -0
  203. data/productions/examples/sandbox/teaser/props.rb +14 -0
  204. data/productions/examples/sandbox/teaser/styles.rb +21 -0
  205. data/productions/examples/tutorials/tutorial_1/players/sample.rb +11 -0
  206. data/productions/examples/tutorials/tutorial_1/props.rb +9 -0
  207. data/productions/examples/tutorials/tutorial_1/styles.rb +25 -0
  208. data/productions/playbills.lll +1 -0
  209. data/productions/stage_composer/init.rb +10 -0
  210. data/productions/stage_composer/inspector/players/inspector.rb +80 -0
  211. data/productions/stage_composer/inspector/players/prop_row.rb +12 -0
  212. data/productions/stage_composer/inspector/players/prop_tree.rb +33 -0
  213. data/productions/stage_composer/inspector/players/style_table.rb +12 -0
  214. data/productions/stage_composer/inspector/players/style_value.rb +16 -0
  215. data/productions/stage_composer/inspector/props.rb +19 -0
  216. data/productions/stage_composer/inspector/styles.rb +71 -0
  217. data/productions/stage_composer/lib/init.rb +5 -0
  218. data/productions/stage_composer/lib/limelight/composer/controller.rb +51 -0
  219. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +24 -0
  220. data/productions/stage_composer/production.rb +6 -0
  221. data/productions/stage_composer/stages.rb +15 -0
  222. data/productions/startup/images/logo.png +0 -0
  223. data/productions/startup/images/splash.png +0 -0
  224. data/productions/startup/production.rb +52 -0
  225. data/productions/startup/spec/default_scene/default_scene_spec.rb +16 -0
  226. data/productions/startup/spec/spec_helper.rb +8 -0
  227. data/productions/startup/stages.rb +9 -0
  228. data/productions/startup/styles.rb +15 -0
  229. data/productions/startup/welcome/players/browse_button.rb +10 -0
  230. data/productions/startup/welcome/players/download_button.rb +17 -0
  231. data/productions/startup/welcome/players/sandbox_button.rb +11 -0
  232. data/productions/startup/welcome/props.rb +23 -0
  233. data/productions/startup/welcome/styles.rb +103 -0
  234. data/spec/limelight/builtin/players/button_spec.rb +20 -0
  235. data/spec/limelight/builtin/players/check_box_spec.rb +29 -0
  236. data/spec/limelight/builtin/players/combo_box_spec.rb +29 -0
  237. data/spec/limelight/builtin/players/image_spec.rb +43 -0
  238. data/spec/limelight/builtin/players/password_box_spec.rb +27 -0
  239. data/spec/limelight/builtin/players/radio_button_spec.rb +64 -0
  240. data/spec/limelight/builtin/players/stage_mover_spec.rb +36 -0
  241. data/spec/limelight/builtin/players/stage_sizer_spec.rb +40 -0
  242. data/spec/limelight/builtin/players/text_area_spec.rb +27 -0
  243. data/spec/limelight/builtin/players/text_box_spec.rb +27 -0
  244. data/spec/limelight/builtin/utilities_production/spec_helper.rb +7 -0
  245. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +146 -0
  246. data/spec/limelight/casting_director_spec.rb +164 -0
  247. data/spec/limelight/client/playbills_spec.rb +79 -0
  248. data/spec/limelight/commands/command_spec.rb +26 -0
  249. data/spec/limelight/commands/create_command_spec.rb +108 -0
  250. data/spec/limelight/commands/freeze_command_spec.rb +143 -0
  251. data/spec/limelight/commands/help_command_spec.rb +42 -0
  252. data/spec/limelight/commands/open_command_spec.rb +52 -0
  253. data/spec/limelight/commands/pack_command_spec.rb +26 -0
  254. data/spec/limelight/commands/unpack_command_spec.rb +47 -0
  255. data/spec/limelight/data_spec.rb +36 -0
  256. data/spec/limelight/dsl/prop_builder_spec.rb +245 -0
  257. data/spec/limelight/dsl/stage_builder_spec.rb +90 -0
  258. data/spec/limelight/dsl/styles_builder_spec.rb +194 -0
  259. data/spec/limelight/file_chooser_spec.rb +64 -0
  260. data/spec/limelight/file_filter_spec.rb +29 -0
  261. data/spec/limelight/file_loader_spec.rb +28 -0
  262. data/spec/limelight/gems_spec.rb +92 -0
  263. data/spec/limelight/java_util_spec.rb +37 -0
  264. data/spec/limelight/main_spec.rb +40 -0
  265. data/spec/limelight/paint_action_spec.rb +30 -0
  266. data/spec/limelight/pen_spec.rb +62 -0
  267. data/spec/limelight/producer_spec.rb +210 -0
  268. data/spec/limelight/production_spec.rb +100 -0
  269. data/spec/limelight/prop_spec.rb +431 -0
  270. data/spec/limelight/scene_spec.rb +173 -0
  271. data/spec/limelight/stage_spec.rb +202 -0
  272. data/spec/limelight/string_spec.rb +38 -0
  273. data/spec/limelight/studio_spec.rb +157 -0
  274. data/spec/limelight/styles_spec.rb +53 -0
  275. data/spec/limelight/templates/production_templater_spec.rb +66 -0
  276. data/spec/limelight/templates/scene_templater_spec.rb +51 -0
  277. data/spec/limelight/templates/templater_logger_spec.rb +41 -0
  278. data/spec/limelight/templates/templater_spec.rb +107 -0
  279. data/spec/limelight/theater_spec.rb +72 -0
  280. data/spec/limelight/util/downloader_spec.rb +92 -0
  281. data/spec/spec_helper.rb +70 -0
  282. metadata +335 -0
@@ -0,0 +1,68 @@
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_filter'
5
+
6
+ module Limelight
7
+
8
+ # An object that manages the selection of a file on the file system. When invoked, a file chooser window
9
+ # will pop up and allow the user to select a file.
10
+ #
11
+ class FileChooser
12
+
13
+ attr_reader :chooser, :chosen_file
14
+
15
+ # Creates a new FileChooser. Options may include:
16
+ # * :description => a string describing the desired file
17
+ # * :parent => (required) the parent window
18
+ # * :directory => starting directory
19
+ # * :title => title of the window
20
+ # * :directories_only => boolean, true if the user must select a directory
21
+ # * :files_only => boolean, true if the user must select a file
22
+ #
23
+ def initialize(options = {}, &filter)
24
+ @options = options
25
+ @parent = options[:parent]
26
+ create_chooser
27
+ @chooser.setFileFilter(FileFilter.new(@options[:description], &filter)) if filter
28
+ end
29
+
30
+ # Opens the windows and returns the chosen file.
31
+ #
32
+ def choose_file
33
+ returnVal = @chooser.showOpenDialog(@parent);
34
+
35
+ if(returnVal == javax.swing.JFileChooser::APPROVE_OPTION)
36
+ @chosen_file = @chooser.getSelectedFile().absolute_path
37
+ else
38
+ @chosen_file = nil
39
+ end
40
+
41
+ return @chosen_file
42
+ end
43
+
44
+ private ###############################################
45
+
46
+ def create_chooser
47
+ if @options.has_key?(:directory)
48
+ @chooser = javax.swing.JFileChooser.new(@options[:directory])
49
+ else
50
+ @chooser = javax.swing.JFileChooser.new
51
+ end
52
+ configure_file_selection_mode
53
+ @chooser.setDialogTitle(@options[:title]) if @options[:title]
54
+ end
55
+
56
+ def configure_file_selection_mode
57
+ if(@options[:directories_only])
58
+ @chooser.setFileSelectionMode(javax.swing.JFileChooser::DIRECTORIES_ONLY)
59
+ elsif(@options[:files_only])
60
+ @chooser.setFileSelectionMode(javax.swing.JFileChooser::FILES_ONLY)
61
+ else
62
+ @chooser.setFileSelectionMode(javax.swing.JFileChooser::FILES_AND_DIRECTORIES)
63
+ end
64
+ end
65
+
66
+ end
67
+
68
+ end
@@ -0,0 +1,33 @@
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
+ module Limelight
5
+
6
+ # A FileFiler is used in conjunction with FileChooser. It is used to help the user select only files of the
7
+ # desired type.
8
+ #
9
+ class FileFilter < javax.swing.filechooser::FileFilter
10
+
11
+ attr_reader :description, :filter
12
+
13
+ # The filter parameter is a block that contains the logic to decide whether a given file is selectable or not.
14
+ #
15
+ def initialize(description, &filter)
16
+ super()
17
+ @description = description
18
+ @filter = filter
19
+ end
20
+
21
+ # Called to determine if a file is selectable. Invokes the filter block.
22
+ #
23
+ def accept(file)
24
+ return @filter.call(file)
25
+ end
26
+
27
+ def getDescription
28
+ return @description
29
+ end
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,46 @@
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
+ module Limelight
5
+
6
+ class FileLoader #:nodoc:
7
+
8
+ include ResourceLoader
9
+
10
+ attr_reader :root
11
+
12
+ def self.for_root(root)
13
+ loader = new
14
+ loader.reset_on_root(root)
15
+ return loader
16
+ end
17
+
18
+ def reset_on_root(root)
19
+ @root = File.expand_path(root)
20
+ end
21
+
22
+ def path_to(path)
23
+ if (path == File.expand_path(path))
24
+ return path
25
+ else
26
+ return File.expand_path(File.join(@root, path))
27
+ end
28
+ end
29
+
30
+ def exists?(path)
31
+ return File.exists?(path_to(path))
32
+ end
33
+
34
+ alias :pathTo :path_to
35
+
36
+ def load(path)
37
+ file_to_load = path_to(path)
38
+ raise LimelightException.new("File not found: #{file_to_load}") if not File.exists?(file_to_load)
39
+ return IO.read(file_to_load)
40
+ end
41
+
42
+ alias :read :load
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,51 @@
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
+ module Limelight
5
+ module Gems
6
+
7
+ class << self
8
+
9
+ attr_accessor :current_production
10
+
11
+ def load_path
12
+ @load_path = $: if @load_path.nil?
13
+ return @load_path
14
+ end
15
+
16
+ def install(gem_name, paths)
17
+ stack = paths.dup
18
+ while !stack.empty?
19
+ load_path.unshift File.join(current_production.gems_directory, gem_name, stack.pop)
20
+ end
21
+ end
22
+
23
+ #TODO - MDM - This doesn't work when loading gems like: gem 'gem_name'. Need make use of Gem::SourceIndex. See SourceIndex.load_gems_in
24
+ def install_gems_in_production(production)
25
+ self.current_production = production
26
+
27
+ gems_dir = current_production.gems_directory
28
+ if File.exists?(gems_dir) && File.directory?(gems_dir)
29
+ gems = Dir.entries(gems_dir).select { |dir| dir != "." && dir != ".." }
30
+ gems.sort!
31
+ gems.reverse!
32
+ gems.each do |gem_name|
33
+ init_file = File.join(gems_dir, gem_name, 'limelight_init.rb')
34
+ if File.exists?(init_file)
35
+ load init_file
36
+ else
37
+ puts "WARNING: Frozen gem (#{gem_name}) is missing limelight_init.rb file."
38
+ end
39
+ end
40
+ end
41
+
42
+ Gem.use_paths(self.current_production.gems_root, Gem.default_path)
43
+
44
+ self.current_production = nil
45
+ end
46
+
47
+ end
48
+
49
+
50
+ end
51
+ end
@@ -0,0 +1,66 @@
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
+ module Limelight #:nodoc:
5
+
6
+ Main = Java::limelight.Main
7
+ ResourceLoader = Java::limelight.ResourceLoader
8
+ Context = Java::limelight.Context
9
+
10
+ module Background
11
+ Animation = Java::limelight.background.Animation
12
+ end
13
+
14
+ module Styles #:nodoc:
15
+ Style = Java::limelight.styles.Style
16
+ FlatStyle = Java::limelight.styles.FlatStyle
17
+ RichStyle = Java::limelight.styles.RichStyle
18
+ ScreenableStyle = Java::limelight.styles.ScreenableStyle
19
+ end
20
+
21
+ module Util #:nodoc:
22
+ Colors = Java::limelight.util.Colors
23
+ Version = Java::limelight.util.Version
24
+ Debug = Java::limelight.util.Debug
25
+ end
26
+
27
+ module UI #:nodoc:
28
+
29
+ ButtonGroupCache = Java::limelight.ui.ButtonGroupCache
30
+
31
+ module Model #:nodoc:
32
+ Frame = Java::limelight.ui.model.StageFrame
33
+ Panel = Java::limelight.ui.model.PropPanel
34
+ ImagePanel = Java::limelight.ui.model.ImagePanel
35
+
36
+ module Inputs #:nodoc:
37
+ ButtonPanel = Java::limelight.ui.model.inputs.ButtonPanel
38
+ CheckBoxPanel = Java::limelight.ui.model.inputs.CheckBoxPanel
39
+ ComboBoxPanel = Java::limelight.ui.model.inputs.ComboBoxPanel
40
+ RadioButtonPanel = Java::limelight.ui.model.inputs.RadioButtonPanel
41
+ TextAreaPanel = Java::limelight.ui.model.inputs.TextAreaPanel
42
+ TextBoxPanel = Java::limelight.ui.model.inputs.TextBoxPanel
43
+ PasswordBoxPanel = Java::limelight.ui.model.inputs.PasswordBoxPanel
44
+ end
45
+ end
46
+
47
+ module Api #:nodoc:
48
+ Scene = Java::limelight.ui.api.Scene
49
+ Prop = Java::limelight.ui.api.Prop
50
+ Stage = Java::limelight.ui.api.Stage
51
+ Theater = Java::limelight.ui.api.Theater
52
+ Studio = Java::limelight.ui.api.Studio
53
+ end
54
+
55
+ module Painting #:nodoc:
56
+ PaintAction = Java::limelight.ui.painting.PaintAction
57
+ end
58
+
59
+ end
60
+
61
+ module Util #:nodoc:
62
+
63
+ Packer = Java::limelight.io.Packer
64
+
65
+ end
66
+ end
@@ -0,0 +1,49 @@
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/string'
5
+
6
+ class Class
7
+
8
+ # Class level method to creates Java style getters.
9
+ #
10
+ # getters :foo, :bar
11
+ #
12
+ # Creates the following methods:
13
+ #
14
+ # def getFoo
15
+ # return @foo
16
+ # end
17
+ #
18
+ # def getBar
19
+ # return @bar
20
+ # end
21
+ #
22
+ def getters(*symbols)
23
+ symbols.each do |symbol|
24
+ self.class_eval "def get#{symbol.to_s.camalized}; return #{symbol}; end"
25
+ end
26
+ end
27
+
28
+ # Class level method to creates Java style setters.
29
+ #
30
+ # setters :foo, :bar
31
+ #
32
+ # Creates the following methods:
33
+ #
34
+ # def setFoo(value)
35
+ # @foo = value
36
+ # end
37
+ #
38
+ # def setBar(value)
39
+ # @bar = value
40
+ # end
41
+ #
42
+ def setters(*symbols)
43
+ symbols.each do |symbol|
44
+ self.class_eval "def set#{symbol.to_s.camalized}(value); self.#{symbol} = value; end"
45
+ end
46
+ end
47
+
48
+ end
49
+
@@ -0,0 +1,24 @@
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
+ module Limelight
5
+
6
+ # Most exeception thrown by Limelight Ruby code will be of this type.
7
+ #
8
+ class LimelightException < Exception
9
+
10
+ def initialize(thing)
11
+ case thing
12
+ when String
13
+ super(thing)
14
+ when Exception
15
+ super("#{thing.class}: #{thing.message}")
16
+ set_backtrace(thing.backtrace)
17
+ else
18
+ raise "Can't build LimelightException out of #{thing}"
19
+ end
20
+ end
21
+
22
+ end
23
+
24
+ end
@@ -0,0 +1,108 @@
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/commands/command'
5
+
6
+ module Limelight
7
+
8
+ # Used to open and manage Limelight Productions.
9
+ #
10
+ # Productions may have a single scene or multiple scenes.
11
+ #
12
+ # Single-Scene Production Directory Structure:
13
+ #
14
+ # - calculator
15
+ # | - props.rb
16
+ # | - styles.rb
17
+ # | - players
18
+ # | - <player_name>.rb
19
+ # | - *
20
+ # | - stages.rb
21
+ # | - production.rb
22
+ #
23
+ # In a Single-Scene production, the scene name and production name are the same. As seen above, both names are 'calculator'.
24
+ # Inside the scene there are three files and one directory, all of which are options.
25
+ #
26
+ # == props.rb
27
+ # This file defines the props contained in the scene
28
+ # See Limelight::PropBuilder
29
+ #
30
+ # == styles.rb
31
+ # This file defines the styles used in the scene
32
+ # See Limelight::StylesBuilder
33
+ #
34
+ # == players
35
+ # A directory containing all the players used in the scene. Players are modules that are included by Prop objects.
36
+ # If you have a Prop named 'wall', then you may optionaly have a file named 'wall.rb' in the players directory.
37
+ # Inside 'wall.rb' you would define a module named 'Wall'. All behavior defined in the Wall modules will automatically be included
38
+ # in every prop named 'wall'.
39
+ #
40
+ # == stages.rb
41
+ # This file uses a DSL to configure the stages that will be used in the production.
42
+ # See Limelight::StagesBuilder
43
+ #
44
+ # == production.rb
45
+ # This file uses a DSL to configure the current Production.
46
+ # See Limelight::ProductionBuilder
47
+ #
48
+ # Multiple-Scene Production Directory Structure:
49
+ #
50
+ # - sandbox
51
+ # | - stages.rb
52
+ # | - production.rb
53
+ # | - styles.rb
54
+ # | - players
55
+ # | - <player_name>.rb
56
+ # | - fader
57
+ # | - props.rb
58
+ # | - styles.rb
59
+ # | - players
60
+ # | - <player_name>.rb
61
+ # | - floater
62
+ # | - props.rb
63
+ # | - styles.rb
64
+ # | - players
65
+ # | - <player_name>.rb
66
+ #
67
+ # In a Multiple-Scene production, the production acquires that name of the root directory. In this case the production is named 'sandbox'.
68
+ # Each directory inside the root directory is a scene. This production has two scenes named 'fader' and 'floater'. Each scene is structured
69
+ # the same as in a Single-Scene production with the exception of the 'stages.rb' file. This file is specific to the production. The production
70
+ # may contain a 'styles.rb' which contains styles used by multiple scenes. If some players are used in multiple Scenes, then it is useful to
71
+ # to create a players directory in the Production root to hold the common players. Other files may exist in the directory structure and they will not
72
+ # conflict with Limelight.
73
+ #
74
+ # See Limelight::Commands
75
+ #
76
+ class Main
77
+
78
+ # Instantiates a new instance of Main to process the command
79
+ #
80
+ def self.run(args)
81
+ new().run(args)
82
+ end
83
+
84
+ # Executes behavior of limelight command.
85
+ #
86
+ def run(args)
87
+ command_name = args.shift
88
+ command = Commands[command_name]
89
+ if command
90
+ command.new.run(args)
91
+ else
92
+ usage
93
+ end
94
+ end
95
+
96
+ # Prints the usage of the limelight command.
97
+ #
98
+ def usage
99
+ Commands["help"].new.run([])
100
+ exit -1
101
+ end
102
+
103
+ private ###############################################
104
+
105
+ end
106
+
107
+
108
+ end