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,43 @@
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 File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
5
+ require 'limelight/builtin/players/image'
6
+ require 'limelight/prop'
7
+
8
+ describe Limelight::Builtin::Players::Image do
9
+
10
+ before(:each) do
11
+ @prop = Limelight::Prop.new
12
+ @prop.include_player(Limelight::Builtin::Players::Image)
13
+ end
14
+
15
+ it "should have a ImagePanel" do
16
+ image_panel = @prop.panel.children[0]
17
+ image_panel.class.should == Limelight::UI::Model::ImagePanel
18
+ @prop.image_panel.should be(image_panel)
19
+ end
20
+
21
+ it "should have an image" do
22
+ @prop.image = "some/path_to/image.png"
23
+ @prop.panel.children[0].imageFile.should == "some/path_to/image.png";
24
+ @prop.image.should == "some/path_to/image.png";
25
+ end
26
+
27
+ it "should have rotation" do
28
+ @prop.rotation = 180
29
+ @prop.rotation.should == 180
30
+ @prop.image_panel.rotation.should == 180
31
+ end
32
+
33
+ it "should have scaled" do
34
+ @prop.scaled?.should == true
35
+ @prop.image_panel.scaled.should == true
36
+
37
+ @prop.scaled = false;
38
+
39
+ @prop.scaled?.should == false
40
+ @prop.image_panel.scaled.should == false
41
+ end
42
+
43
+ end
@@ -0,0 +1,27 @@
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 File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
5
+ require 'limelight/prop'
6
+ require 'limelight/builtin/players/password_box'
7
+
8
+ describe Limelight::Builtin::Players::PasswordBox do
9
+
10
+ before(:each) do
11
+ @prop = Limelight::Prop.new
12
+ @prop.include_player(Limelight::Builtin::Players::PasswordBox)
13
+ end
14
+
15
+ it "should have a PasswordBox" do
16
+ @prop.panel.children[0].class.should == Limelight::UI::Model::Inputs::PasswordBoxPanel
17
+ end
18
+
19
+ it "should use the PasswordBox for the text accessor" do
20
+ @prop.text = "blah"
21
+ @prop.panel.children[0].text.should == "blah"
22
+
23
+ @prop.panel.children[0].text = "harumph"
24
+ @prop.text.should == "harumph"
25
+ end
26
+
27
+ end
@@ -0,0 +1,64 @@
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 File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
5
+ require 'limelight/scene'
6
+ require 'limelight/prop'
7
+ require 'limelight/builtin/players/radio_button'
8
+
9
+ describe Limelight::Builtin::Players::RadioButton do
10
+
11
+ before(:each) do
12
+ @scene = Limelight::Scene.new(:casting_director => make_mock("caster", :fill_cast => nil))
13
+ @prop = Limelight::Prop.new
14
+ @scene << @prop
15
+ @prop.include_player(Limelight::Builtin::Players::RadioButton)
16
+ end
17
+
18
+ it "should have a RadioButton" do
19
+ @prop.panel.children[0].class.should == Limelight::UI::Model::Inputs::RadioButtonPanel
20
+ end
21
+
22
+ it "should handled checked state" do
23
+ @prop.checked?.should == false
24
+ @prop.checked.should == false
25
+ @prop.selected?.should == false
26
+ @prop.selected.should == false
27
+
28
+ @prop.selected = true
29
+
30
+ @prop.checked?.should == true
31
+ @prop.checked.should == true
32
+ @prop.selected?.should == true
33
+ @prop.selected.should == true
34
+ end
35
+
36
+ it "should belong to a button group" do
37
+ @prop.group = "group 1"
38
+
39
+ prop2 = Limelight::Prop.new
40
+ @scene << prop2
41
+ prop2.include_player(Limelight::Builtin::Players::RadioButton)
42
+ prop2.group = "group 1"
43
+
44
+ prop3 = Limelight::Prop.new
45
+ @scene << prop3
46
+ prop3.include_player(Limelight::Builtin::Players::RadioButton)
47
+ prop3.group = "group 2"
48
+
49
+ group1 = @scene.button_groups["group 1"]
50
+ group1.elements.include?(@prop.radio_button).should == true
51
+ group1.elements.include?(prop2.radio_button).should == true
52
+ group1.elements.include?(prop3.radio_button).should == false
53
+
54
+ group2 = @scene.button_groups["group 2"]
55
+ group2.elements.include?(@prop.radio_button).should == false
56
+ group2.elements.include?(prop2.radio_button).should == false
57
+ group2.elements.include?(prop3.radio_button).should == true
58
+
59
+ @prop.button_group.should == group1
60
+ prop2.button_group.should == group1
61
+ prop3.button_group.should == group2
62
+ end
63
+
64
+ end
@@ -0,0 +1,36 @@
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 File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
5
+ require 'limelight/scene'
6
+ require 'limelight/prop'
7
+ require 'limelight/builtin/players/stage_mover'
8
+ require 'limelight/stage'
9
+
10
+ describe Limelight::Builtin::Players::StageMover do
11
+
12
+ before(:each) do
13
+ @stage = Limelight::Stage.new(nil, "stage name")
14
+ @scene = Limelight::Scene.new
15
+ @scene.stage = @stage
16
+ @prop = Limelight::Prop.new()
17
+ @scene.add(@prop)
18
+ @prop.include_player(Limelight::Builtin::Players::StageMover)
19
+ end
20
+
21
+ it "should respond to the right mouse events" do
22
+ methods = Limelight::Builtin::Players::StageMover.instance_methods
23
+ methods.include?("mouse_pressed").should == true
24
+ methods.include?("mouse_dragged").should == true
25
+ end
26
+
27
+ it "should change the stage location when dragged" do
28
+ @stage.frame.setLocation(0, 0)
29
+ @prop.mouse_pressed(MouseEvent.new(100, 100))
30
+ @prop.mouse_dragged(MouseEvent.new(125, 150))
31
+
32
+ @stage.frame.location.x.should == 25
33
+ @stage.frame.location.y.should == 50
34
+ end
35
+
36
+ end
@@ -0,0 +1,40 @@
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 File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
5
+ require 'limelight/scene'
6
+ require 'limelight/prop'
7
+ require 'limelight/builtin/players/stage_sizer'
8
+ require 'limelight/stage'
9
+
10
+ describe Limelight::Builtin::Players::StageSizer do
11
+
12
+ before(:each) do
13
+ @stage = Limelight::Stage.new(nil, "stage name")
14
+ @scene = Limelight::Scene.new
15
+ @scene.stage = @stage
16
+ @prop = Limelight::Prop.new()
17
+ @scene.add(@prop)
18
+ @prop.include_player(Limelight::Builtin::Players::StageSizer)
19
+ end
20
+
21
+ it "should respond to the right mouse events" do
22
+ methods = Limelight::Builtin::Players::StageSizer.instance_methods
23
+ methods.include?("mouse_pressed").should == true
24
+ methods.include?("mouse_dragged").should == true
25
+ end
26
+
27
+ it "should change the stage dimension when dragged" do
28
+ @stage.frame.setSize(500, 500)
29
+ @prop.mouse_pressed(MouseEvent.new(100, 100))
30
+ @prop.mouse_dragged(MouseEvent.new(125, 150))
31
+
32
+ @stage.frame.size.width.should == 525
33
+ @stage.frame.size.height.should == 550
34
+
35
+ @prop.mouse_dragged(MouseEvent.new(150, 175))
36
+ @stage.frame.size.width.should == 550
37
+ @stage.frame.size.height.should == 575
38
+ end
39
+
40
+ end
@@ -0,0 +1,27 @@
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 File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
5
+ require 'limelight/prop'
6
+ require 'limelight/builtin/players/text_area'
7
+
8
+ describe Limelight::Builtin::Players::TextArea do
9
+
10
+ before(:each) do
11
+ @prop = Limelight::Prop.new
12
+ @prop.include_player(Limelight::Builtin::Players::TextArea)
13
+ end
14
+
15
+ it "should have a JTextArea" do
16
+ @prop.panel.children[0].class.should == Limelight::UI::Model::Inputs::TextAreaPanel
17
+ end
18
+
19
+ it "should use the TextArea for the text accessor" do
20
+ @prop.text = "blah"
21
+ @prop.panel.children[0].text.should == "blah"
22
+
23
+ @prop.panel.children[0].text = "harumph"
24
+ @prop.text.should == "harumph"
25
+ end
26
+
27
+ end
@@ -0,0 +1,27 @@
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 File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
5
+ require 'limelight/prop'
6
+ require 'limelight/builtin/players/text_box'
7
+
8
+ describe Limelight::Builtin::Players::TextBox do
9
+
10
+ before(:each) do
11
+ @prop = Limelight::Prop.new
12
+ @prop.include_player(Limelight::Builtin::Players::TextBox)
13
+ end
14
+
15
+ it "should have a TextField" do
16
+ @prop.panel.children[0].class.should == Limelight::UI::Model::Inputs::TextBoxPanel
17
+ end
18
+
19
+ it "should use the TextField for the text accessor" do
20
+ @prop.text = "blah"
21
+ @prop.panel.children[0].text.should == "blah"
22
+
23
+ @prop.panel.children[0].text = "harumph"
24
+ @prop.text.should == "harumph"
25
+ end
26
+
27
+ end
@@ -0,0 +1,7 @@
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 File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper")
5
+ require 'limelight/specs/spec_helper'
6
+
7
+ $PRODUCTION_PATH = File.join($LIMELIGHT_LIB, 'limelight', 'builtin', 'utilities_production')
@@ -0,0 +1,146 @@
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 File.expand_path(File.dirname(__FILE__) + "/spec_helper")
5
+
6
+ describe "Utilitites Production" do
7
+
8
+ uses_scene "none"
9
+
10
+ before(:each) do
11
+ production.production_opening
12
+ end
13
+
14
+ after(:each) do
15
+ @thread.kill if @thread
16
+ production.theater.stages.each { |stage| stage.close }
17
+ end
18
+
19
+ after(:all) do
20
+ # Java::java.awt.Frame.getFrames.each { |frame| frame.close; frame.dispose; puts frame }
21
+ # Java::limelight.util.Threads.showAll
22
+ end
23
+
24
+ it "should construct stage on load_with_incomptible_version_scene" do
25
+ production.load_incompatible_version_scene("Some Production", "1.2.3")
26
+ stage = production.theater["Incompatible Version"]
27
+ stage.should_not == nil
28
+ stage.location.should == ["center", "center"]
29
+ stage.size.should == ["400", "auto"]
30
+ stage.background_color.should == "#FFFFFF"
31
+ stage.framed?.should == false
32
+ stage.always_on_top?.should == true
33
+ stage.vital?.should == false
34
+ end
35
+
36
+ it "should not construct the incomptible_version stage twice" do
37
+ production.load_incompatible_version_scene("Some Production", "1.2.3")
38
+ stage = production.theater["Incompatible Version"]
39
+
40
+ lambda { production.load_incompatible_version_scene("Some Production", "1.2.3") }.should_not raise_error
41
+ end
42
+
43
+ it "should load the incomptible_version scene" do
44
+ production.load_incompatible_version_scene("Some Production", "1.2.3")
45
+ stage = production.theater["Incompatible Version"]
46
+
47
+ stage.current_scene.should_not == nil
48
+ scene = stage.current_scene
49
+ scene.find("production_name_label").text.should == "Some Production"
50
+ scene.find("required_version_label").text.should == "1.2.3"
51
+ scene.find("current_version_label").text.should == Limelight::VERSION::STRING
52
+ end
53
+
54
+ def start_proceed_with_incompatible_version()
55
+ @thread = Thread.new do
56
+ begin
57
+ @result = production.proceed_with_incompatible_version?("Some Production", "1.2.3")
58
+ rescue Exception => e
59
+ puts e
60
+ puts e.backtrace
61
+ end
62
+ end
63
+ end
64
+
65
+ def wait_for
66
+ 10.times do
67
+ return if yield
68
+ sleep(0.1)
69
+ end
70
+ raise "the desired condition was not met on time"
71
+ end
72
+
73
+ def scene_open?(stage_name)
74
+ stage = production.theater[stage_name]
75
+ return stage != nil && stage.current_scene != nil
76
+ end
77
+
78
+ it "should return true when clicking proceed" do
79
+ @result = nil
80
+ start_proceed_with_incompatible_version()
81
+ wait_for { scene_open?("Incompatible Version") }
82
+
83
+ scene = production.theater["Incompatible Version"].current_scene
84
+ scene.find("proceed_button").button_pressed(nil)
85
+ wait_for { !@thread.alive? }
86
+
87
+ @result.should == true
88
+ end
89
+
90
+ it "should return false when clicking cancel" do
91
+ @result = nil
92
+ start_proceed_with_incompatible_version()
93
+ wait_for { scene_open?("Incompatible Version") }
94
+
95
+ scene = production.theater["Incompatible Version"].current_scene
96
+ scene.find("cancel_button").button_pressed(nil)
97
+ wait_for { !@thread.alive? }
98
+
99
+ @result.should == false
100
+ end
101
+
102
+ def start_alert()
103
+ @thread = Thread.new do
104
+ begin
105
+ @result = production.alert("Some Message")
106
+ rescue Exception => e
107
+ puts e
108
+ puts e.backtrace
109
+ end
110
+ end
111
+ end
112
+
113
+ it "should construct alert stage" do
114
+ production.load_alert_scene("Some Message")
115
+ stage = production.theater["Alert"]
116
+ stage.should_not == nil
117
+ stage.location.should == ["center", "center"]
118
+ stage.size.should == ["400", "auto"]
119
+ stage.background_color.should == "#FFFFFF"
120
+ stage.framed?.should == false
121
+ stage.always_on_top?.should == true
122
+ stage.vital?.should == false
123
+ end
124
+
125
+ it "should load the incomptible_version scene" do
126
+ production.load_alert_scene("Some Message")
127
+ stage = production.theater["Alert"]
128
+
129
+ stage.current_scene.should_not == nil
130
+ scene = stage.current_scene
131
+ scene.find("title").text.should == "Limelight Alert"
132
+ scene.find("message").text.should == "Some Message"
133
+ end
134
+
135
+ it "should close the alert when clicking OK" do
136
+ start_alert
137
+ wait_for { scene_open?("Alert") }
138
+
139
+ scene = production.theater["Alert"].current_scene
140
+ scene.find("ok_button").button_pressed(nil)
141
+
142
+ wait_for { !@thread.alive? }
143
+ @result.should == true
144
+ end
145
+
146
+ end
@@ -0,0 +1,164 @@
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 File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/casting_director'
6
+ require 'limelight/dsl/prop_builder'
7
+ require 'limelight/production'
8
+ require 'limelight/file_loader'
9
+
10
+ describe Limelight::CastingDirector do
11
+
12
+ before(:each) do
13
+ TestDir.clean
14
+ $casted_props = []
15
+ $casted_players = []
16
+ @scene = Limelight::Scene.new(:casting_director => make_mock("casting_director", :fill_cast => nil), :path => TestDir.path("scene_path"))
17
+ @scene.illuminate
18
+ @loader = Limelight::FileLoader.for_root(TestDir.root)
19
+ @casting_director = Limelight::CastingDirector.new(@loader)
20
+ end
21
+
22
+ def make_root(options={})
23
+ @root = Limelight::Prop.new(options)
24
+ @scene << @root
25
+ end
26
+
27
+ def prepare_player(location, name, src = nil)
28
+ if src == nil
29
+ src = "module #{name.camalized}; def self.extended(prop); $casted_props << prop; $casted_players << self; end; end;"
30
+ end
31
+ TestDir.create_file("#{location}/players/#{name}.rb", src)
32
+ end
33
+
34
+ it "should include default players" do
35
+ prepare_player("scene_path", "root")
36
+ make_root(:name => "root")
37
+
38
+ @casting_director.fill_cast(@root)
39
+
40
+ $casted_props.length.should == 1
41
+ $casted_props[0].should == @root
42
+ $casted_players[0].name.include?("Root").should == true
43
+ @root.is_a?($casted_players[0]).should == true
44
+ end
45
+
46
+ it "should not creat the player in the scene's cast and not currupt the global namespace" do
47
+ prepare_player("scene_path", "root")
48
+ make_root(:name => "root")
49
+
50
+ @casting_director.fill_cast(@root)
51
+
52
+ Object.const_defined?("Root").should == false
53
+ @scene.cast.const_defined?("Root").should == true
54
+ end
55
+
56
+ it "should not load any default players if they don't exist" do
57
+ make_root(:name => "root")
58
+ @root.should_not_receive(:include_player)
59
+
60
+ @casting_director.fill_cast(@root)
61
+
62
+ $casted_props.length.should == 0
63
+ $casted_players.length.should == 0
64
+ end
65
+
66
+ it "should not load any players if they don't define a module with the right name" do
67
+ make_root(:name => "root")
68
+ prepare_player("scene_path", "root", "# empty file")
69
+ @root.should_not_receive(:include_player)
70
+
71
+ @casting_director.fill_cast(@root)
72
+
73
+ $casted_props.length.should == 0
74
+ $casted_players.length.should == 0
75
+ end
76
+
77
+ it "should load builtin players" do
78
+ make_root(:name => "root", :players => "button")
79
+
80
+ @casting_director.fill_cast(@root)
81
+
82
+ @root.is_a?(Limelight::Builtin::Players::Button).should == true
83
+ end
84
+
85
+ it "should load custom players" do
86
+ prepare_player("scene_path", "custom_player")
87
+ make_root(:name => "root", :players => "custom_player")
88
+
89
+ @casting_director.fill_cast(@root)
90
+
91
+ $casted_props[0].should == @root
92
+ $casted_players[0].name.include?("CustomPlayer").should == true
93
+ @root.is_a?($casted_players[0]).should == true
94
+ end
95
+
96
+ it "should handle multiple players" do
97
+ prepare_player("scene_path", "root")
98
+ prepare_player("scene_path", "custom_player")
99
+
100
+ make_root(:name => "root", :players => "custom_player button")
101
+
102
+ @casting_director.fill_cast(@root)
103
+
104
+ $casted_props[0].should == @root
105
+ $casted_players[0].name.include?("Root").should == true
106
+ @root.is_a?($casted_players[0]).should == true
107
+ @root.is_a?(Limelight::Builtin::Players::Button).should == true
108
+ $casted_players[1].name.include?("CustomPlayer").should == true
109
+ @root.is_a?($casted_players[1]).should == true
110
+ end
111
+
112
+ it "should load shared custom players" do
113
+ production = Limelight::Production.new(TestDir.root)
114
+ @scene.production = production
115
+
116
+ prepare_player("scene_path", "root")
117
+ prepare_player(".", "shared_player")
118
+ make_root(:name => "root", :players => "shared_player")
119
+
120
+ @casting_director.fill_cast(@root)
121
+
122
+ $casted_props[0].should == @root
123
+ $casted_players[0].name.include?("Root").should == true
124
+ $casted_players[1].name.include?("SharedPlayer").should == true
125
+ @root.is_a?($casted_players[0]).should == true
126
+ @root.is_a?($casted_players[1]).should == true
127
+ end
128
+
129
+ it "should not allow casting without a scene" do
130
+ lambda { @casting_director.fill_cast(Limelight::Prop.new) }.should raise_error(Limelight::LimelightException, "Cannot cast a Prop without a Scene.")
131
+ end
132
+
133
+ it "should not reload known players in a scene" do
134
+ prepare_player("scene_path", "root")
135
+
136
+ make_root(:name => "root")
137
+ @casting_director.fill_cast(@root)
138
+ first_root_player = $casted_players[0]
139
+
140
+ prepare_player("scene_path", "root", "module Root; def foo; end; end;")
141
+ make_root(:name => "root")
142
+ @casting_director.fill_cast(@root)
143
+
144
+ @root.should_not respond_to(:foo)
145
+ @root.is_a?(first_root_player).should == true
146
+ end
147
+
148
+ it "should not reload known players in a scene even with a new casting director" do
149
+ prepare_player("scene_path", "root")
150
+
151
+ make_root(:name => "root")
152
+ @casting_director.fill_cast(@root)
153
+ first_root_player = $casted_players[0]
154
+
155
+ @casting_director = Limelight::CastingDirector.new(@loader)
156
+ prepare_player("scene_path", "root", "module Root; def foo; end; end;")
157
+ make_root(:name => "root")
158
+ @casting_director.fill_cast(@root)
159
+
160
+ @root.should_not respond_to(:foo)
161
+ @root.is_a?(first_root_player).should == true
162
+ end
163
+
164
+ end