epall-limelight 0.5.0-java
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/icons/icon.ico +0 -0
- data/bin/icons/icon_48.gif +0 -0
- data/bin/icons/limelight.icns +0 -0
- data/bin/limelight +5 -0
- data/bin/ll +10 -0
- data/bin/ll.bat +5 -0
- data/lib/init.rb +16 -0
- data/lib/limelight.jar +0 -0
- data/lib/limelight/animation.rb +41 -0
- data/lib/limelight/builtin/players.rb +16 -0
- data/lib/limelight/builtin/players/button.rb +39 -0
- data/lib/limelight/builtin/players/check_box.rb +50 -0
- data/lib/limelight/builtin/players/combo_box.rb +89 -0
- data/lib/limelight/builtin/players/combo_box_popup_list.rb +19 -0
- data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +21 -0
- data/lib/limelight/builtin/players/curtains.rb +23 -0
- data/lib/limelight/builtin/players/image.rb +54 -0
- data/lib/limelight/builtin/players/password_box.rb +34 -0
- data/lib/limelight/builtin/players/radio_button.rb +65 -0
- data/lib/limelight/builtin/players/stage_mover.rb +31 -0
- data/lib/limelight/builtin/players/stage_sizer.rb +34 -0
- data/lib/limelight/builtin/players/text_area.rb +34 -0
- data/lib/limelight/builtin/players/text_box.rb +34 -0
- data/lib/limelight/builtin/styles.rb +35 -0
- data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +11 -0
- data/lib/limelight/builtin/utilities_production/alert/props.rb +8 -0
- data/lib/limelight/builtin/utilities_production/alert/styles.rb +14 -0
- data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +20 -0
- data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +12 -0
- data/lib/limelight/builtin/utilities_production/production.rb +62 -0
- data/lib/limelight/builtin/utilities_production/stages.rb +12 -0
- data/lib/limelight/builtin/utilities_production/styles.rb +53 -0
- data/lib/limelight/button_group_cache.rb +11 -0
- data/lib/limelight/casting_director.rb +112 -0
- data/lib/limelight/client/playbills.rb +86 -0
- data/lib/limelight/commands/command.rb +168 -0
- data/lib/limelight/commands/create_command.rb +98 -0
- data/lib/limelight/commands/freeze_command.rb +131 -0
- data/lib/limelight/commands/help_command.rb +61 -0
- data/lib/limelight/commands/open_command.rb +60 -0
- data/lib/limelight/commands/pack_command.rb +45 -0
- data/lib/limelight/commands/unpack_command.rb +44 -0
- data/lib/limelight/commands/version_command.rb +31 -0
- data/lib/limelight/data.rb +37 -0
- data/lib/limelight/dsl/build_exception.rb +55 -0
- data/lib/limelight/dsl/menu_bar.rb +71 -0
- data/lib/limelight/dsl/prop_builder.rb +155 -0
- data/lib/limelight/dsl/stage_builder.rb +105 -0
- data/lib/limelight/dsl/styles_builder.rb +157 -0
- data/lib/limelight/file_chooser.rb +68 -0
- data/lib/limelight/file_filter.rb +33 -0
- data/lib/limelight/file_loader.rb +46 -0
- data/lib/limelight/gems.rb +51 -0
- data/lib/limelight/java_couplings.rb +66 -0
- data/lib/limelight/java_util.rb +49 -0
- data/lib/limelight/limelight_exception.rb +24 -0
- data/lib/limelight/main.rb +108 -0
- data/lib/limelight/paint_action.rb +27 -0
- data/lib/limelight/pen.rb +83 -0
- data/lib/limelight/producer.rb +179 -0
- data/lib/limelight/production.rb +169 -0
- data/lib/limelight/prop.rb +367 -0
- data/lib/limelight/scene.rb +151 -0
- data/lib/limelight/specs/spec_helper.rb +87 -0
- data/lib/limelight/specs/test_scene_opener.rb +60 -0
- data/lib/limelight/stage.rb +292 -0
- data/lib/limelight/string.rb +38 -0
- data/lib/limelight/studio.rb +185 -0
- data/lib/limelight/styles.rb +347 -0
- data/lib/limelight/templates/production_templater.rb +49 -0
- data/lib/limelight/templates/scene_templater.rb +47 -0
- data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
- data/lib/limelight/templates/sources/production/init.rb.template +15 -0
- data/lib/limelight/templates/sources/production/production.rb.template +49 -0
- data/lib/limelight/templates/sources/production/spec/spec_helper.rb.template +12 -0
- data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
- data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
- data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
- data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
- data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +13 -0
- data/lib/limelight/templates/templater.rb +131 -0
- data/lib/limelight/templates/templater_logger.rb +39 -0
- data/lib/limelight/theater.rb +77 -0
- data/lib/limelight/util.rb +65 -0
- data/lib/limelight/util/downloader.rb +115 -0
- data/lib/limelight/version.rb +20 -0
- data/productions/examples/8thlight.com/about/about.txt +24 -0
- data/productions/examples/8thlight.com/about/props.rb +11 -0
- data/productions/examples/8thlight.com/about/styles.rb +2 -0
- data/productions/examples/8thlight.com/footer.rb +6 -0
- data/productions/examples/8thlight.com/home/props.rb +28 -0
- data/productions/examples/8thlight.com/home/styles.rb +2 -0
- data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
- data/productions/examples/8thlight.com/images/bg.jpg +0 -0
- data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
- data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
- data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
- data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
- data/productions/examples/8thlight.com/images/header.jpg +0 -0
- data/productions/examples/8thlight.com/images/moses.jpg +0 -0
- data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
- data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
- data/productions/examples/8thlight.com/menu.rb +11 -0
- data/productions/examples/8thlight.com/services/props.rb +11 -0
- data/productions/examples/8thlight.com/services/services.txt +8 -0
- data/productions/examples/8thlight.com/services/styles.rb +2 -0
- data/productions/examples/8thlight.com/stages.rb +8 -0
- data/productions/examples/8thlight.com/styles.rb +210 -0
- data/productions/examples/calculator/players/button.rb +24 -0
- data/productions/examples/calculator/players/calculator.rb +15 -0
- data/productions/examples/calculator/players/calculator_model.rb +13 -0
- data/productions/examples/calculator/props.rb +23 -0
- data/productions/examples/calculator/styles.rb +36 -0
- data/productions/examples/langstons_ant/html_javascript/ant.css +39 -0
- data/productions/examples/langstons_ant/html_javascript/ant.html +22 -0
- data/productions/examples/langstons_ant/html_javascript/ant.js +23 -0
- data/productions/examples/langstons_ant/init.rb +4 -0
- data/productions/examples/langstons_ant/players/ant.rb +103 -0
- data/productions/examples/langstons_ant/players/log.rb +29 -0
- data/productions/examples/langstons_ant/players/start_stop_button.rb +37 -0
- data/productions/examples/langstons_ant/players/world.rb +35 -0
- data/productions/examples/langstons_ant/props.rb +22 -0
- data/productions/examples/langstons_ant/styles.rb +104 -0
- data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +10 -0
- data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +32 -0
- data/productions/examples/sandbox/alerts/incompatible_production/production.rb +52 -0
- data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +16 -0
- data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +8 -0
- data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +20 -0
- data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +15 -0
- data/productions/examples/sandbox/alerts/players/alerts.rb +17 -0
- data/productions/examples/sandbox/alerts/props.rb +10 -0
- data/productions/examples/sandbox/alerts/styles.rb +46 -0
- data/productions/examples/sandbox/background_images/props.rb +22 -0
- data/productions/examples/sandbox/background_images/styles.rb +40 -0
- data/productions/examples/sandbox/click_me/players/chromaton.rb +52 -0
- data/productions/examples/sandbox/click_me/props.rb +8 -0
- data/productions/examples/sandbox/click_me/styles.rb +11 -0
- data/productions/examples/sandbox/floaters/players/floater.rb +108 -0
- data/productions/examples/sandbox/floaters/players/surface.rb +21 -0
- data/productions/examples/sandbox/floaters/props.rb +10 -0
- data/productions/examples/sandbox/floaters/styles.rb +24 -0
- data/productions/examples/sandbox/frameing/players/sandbox.rb +17 -0
- data/productions/examples/sandbox/frameing/props.rb +35 -0
- data/productions/examples/sandbox/frameing/styles.rb +45 -0
- data/productions/examples/sandbox/gradients/players/spinner.rb +20 -0
- data/productions/examples/sandbox/gradients/players/teaser.rb +19 -0
- data/productions/examples/sandbox/gradients/players/wave.rb +19 -0
- data/productions/examples/sandbox/gradients/players/waves.rb +19 -0
- data/productions/examples/sandbox/gradients/props.rb +13 -0
- data/productions/examples/sandbox/gradients/styles.rb +47 -0
- data/productions/examples/sandbox/header.rb +22 -0
- data/productions/examples/sandbox/homer/players/homer.rb +24 -0
- data/productions/examples/sandbox/homer/props.rb +10 -0
- data/productions/examples/sandbox/homer/styles.rb +16 -0
- data/productions/examples/sandbox/images/arch.jpg +0 -0
- data/productions/examples/sandbox/images/beach.jpg +0 -0
- data/productions/examples/sandbox/images/homer.jpg +0 -0
- data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
- data/productions/examples/sandbox/images/logo.png +0 -0
- data/productions/examples/sandbox/images/marilyn.jpg +0 -0
- data/productions/examples/sandbox/images/space.png +0 -0
- data/productions/examples/sandbox/images_scene/props.rb +36 -0
- data/productions/examples/sandbox/images_scene/styles.rb +34 -0
- data/productions/examples/sandbox/inputs/players/button_input.rb +48 -0
- data/productions/examples/sandbox/inputs/players/check_box_input.rb +40 -0
- data/productions/examples/sandbox/inputs/players/combo_box_input.rb +41 -0
- data/productions/examples/sandbox/inputs/players/radio_button_input.rb +43 -0
- data/productions/examples/sandbox/inputs/players/text_area_input.rb +36 -0
- data/productions/examples/sandbox/inputs/players/text_box_input.rb +36 -0
- data/productions/examples/sandbox/inputs/props.rb +40 -0
- data/productions/examples/sandbox/inputs/styles.rb +39 -0
- data/productions/examples/sandbox/kiosk/players/kiosk.rb +39 -0
- data/productions/examples/sandbox/kiosk/props.rb +9 -0
- data/productions/examples/sandbox/kiosk/styles.rb +37 -0
- data/productions/examples/sandbox/players/sandbox.rb +11 -0
- data/productions/examples/sandbox/rounded_corners/players/box.rb +11 -0
- data/productions/examples/sandbox/rounded_corners/props.rb +22 -0
- data/productions/examples/sandbox/rounded_corners/styles.rb +17 -0
- data/productions/examples/sandbox/scrolling/players/add_button.rb +19 -0
- data/productions/examples/sandbox/scrolling/players/cell.rb +15 -0
- data/productions/examples/sandbox/scrolling/props.rb +45 -0
- data/productions/examples/sandbox/scrolling/styles.rb +33 -0
- data/productions/examples/sandbox/sketching/players/sketchpad.rb +46 -0
- data/productions/examples/sandbox/sketching/props.rb +25 -0
- data/productions/examples/sandbox/sketching/styles.rb +35 -0
- data/productions/examples/sandbox/sounds/bird.au +0 -0
- data/productions/examples/sandbox/sounds/cat.au +0 -0
- data/productions/examples/sandbox/sounds/cow.au +0 -0
- data/productions/examples/sandbox/sounds/dog.au +0 -0
- data/productions/examples/sandbox/sounds/donkey.au +0 -0
- data/productions/examples/sandbox/sounds/duck.au +0 -0
- data/productions/examples/sandbox/sounds/players/clip.rb +10 -0
- data/productions/examples/sandbox/sounds/props.rb +10 -0
- data/productions/examples/sandbox/sounds/styles.rb +17 -0
- data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +16 -0
- data/productions/examples/sandbox/stage_handles/players/sizer.rb +35 -0
- data/productions/examples/sandbox/stage_handles/props.rb +17 -0
- data/productions/examples/sandbox/stage_handles/styles.rb +58 -0
- data/productions/examples/sandbox/stages.rb +8 -0
- data/productions/examples/sandbox/styles.rb +35 -0
- data/productions/examples/sandbox/teaser/players/fader.rb +58 -0
- data/productions/examples/sandbox/teaser/props.rb +14 -0
- data/productions/examples/sandbox/teaser/styles.rb +21 -0
- data/productions/examples/tutorials/tutorial_1/players/sample.rb +11 -0
- data/productions/examples/tutorials/tutorial_1/props.rb +9 -0
- data/productions/examples/tutorials/tutorial_1/styles.rb +25 -0
- data/productions/playbills.lll +1 -0
- data/productions/stage_composer/init.rb +10 -0
- data/productions/stage_composer/inspector/players/inspector.rb +80 -0
- data/productions/stage_composer/inspector/players/prop_row.rb +12 -0
- data/productions/stage_composer/inspector/players/prop_tree.rb +33 -0
- data/productions/stage_composer/inspector/players/style_table.rb +12 -0
- data/productions/stage_composer/inspector/players/style_value.rb +16 -0
- data/productions/stage_composer/inspector/props.rb +19 -0
- data/productions/stage_composer/inspector/styles.rb +71 -0
- data/productions/stage_composer/lib/init.rb +5 -0
- data/productions/stage_composer/lib/limelight/composer/controller.rb +51 -0
- data/productions/stage_composer/lib/limelight/composer/lethargy.rb +24 -0
- data/productions/stage_composer/production.rb +6 -0
- data/productions/stage_composer/stages.rb +15 -0
- data/productions/startup/images/logo.png +0 -0
- data/productions/startup/images/splash.png +0 -0
- data/productions/startup/production.rb +52 -0
- data/productions/startup/spec/default_scene/default_scene_spec.rb +16 -0
- data/productions/startup/spec/spec_helper.rb +8 -0
- data/productions/startup/stages.rb +9 -0
- data/productions/startup/styles.rb +15 -0
- data/productions/startup/welcome/players/browse_button.rb +10 -0
- data/productions/startup/welcome/players/download_button.rb +17 -0
- data/productions/startup/welcome/players/sandbox_button.rb +11 -0
- data/productions/startup/welcome/props.rb +23 -0
- data/productions/startup/welcome/styles.rb +103 -0
- data/spec/limelight/builtin/players/button_spec.rb +20 -0
- data/spec/limelight/builtin/players/check_box_spec.rb +29 -0
- data/spec/limelight/builtin/players/combo_box_spec.rb +29 -0
- data/spec/limelight/builtin/players/image_spec.rb +43 -0
- data/spec/limelight/builtin/players/password_box_spec.rb +27 -0
- data/spec/limelight/builtin/players/radio_button_spec.rb +64 -0
- data/spec/limelight/builtin/players/stage_mover_spec.rb +36 -0
- data/spec/limelight/builtin/players/stage_sizer_spec.rb +40 -0
- data/spec/limelight/builtin/players/text_area_spec.rb +27 -0
- data/spec/limelight/builtin/players/text_box_spec.rb +27 -0
- data/spec/limelight/builtin/utilities_production/spec_helper.rb +7 -0
- data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +146 -0
- data/spec/limelight/casting_director_spec.rb +164 -0
- data/spec/limelight/client/playbills_spec.rb +79 -0
- data/spec/limelight/commands/command_spec.rb +26 -0
- data/spec/limelight/commands/create_command_spec.rb +108 -0
- data/spec/limelight/commands/freeze_command_spec.rb +143 -0
- data/spec/limelight/commands/help_command_spec.rb +42 -0
- data/spec/limelight/commands/open_command_spec.rb +52 -0
- data/spec/limelight/commands/pack_command_spec.rb +26 -0
- data/spec/limelight/commands/unpack_command_spec.rb +47 -0
- data/spec/limelight/data_spec.rb +36 -0
- data/spec/limelight/dsl/prop_builder_spec.rb +245 -0
- data/spec/limelight/dsl/stage_builder_spec.rb +90 -0
- data/spec/limelight/dsl/styles_builder_spec.rb +194 -0
- data/spec/limelight/file_chooser_spec.rb +64 -0
- data/spec/limelight/file_filter_spec.rb +29 -0
- data/spec/limelight/file_loader_spec.rb +28 -0
- data/spec/limelight/gems_spec.rb +92 -0
- data/spec/limelight/java_util_spec.rb +37 -0
- data/spec/limelight/main_spec.rb +40 -0
- data/spec/limelight/paint_action_spec.rb +30 -0
- data/spec/limelight/pen_spec.rb +62 -0
- data/spec/limelight/producer_spec.rb +210 -0
- data/spec/limelight/production_spec.rb +100 -0
- data/spec/limelight/prop_spec.rb +431 -0
- data/spec/limelight/scene_spec.rb +173 -0
- data/spec/limelight/stage_spec.rb +202 -0
- data/spec/limelight/string_spec.rb +38 -0
- data/spec/limelight/studio_spec.rb +157 -0
- data/spec/limelight/styles_spec.rb +53 -0
- data/spec/limelight/templates/production_templater_spec.rb +66 -0
- data/spec/limelight/templates/scene_templater_spec.rb +51 -0
- data/spec/limelight/templates/templater_logger_spec.rb +41 -0
- data/spec/limelight/templates/templater_spec.rb +107 -0
- data/spec/limelight/theater_spec.rb +72 -0
- data/spec/limelight/util/downloader_spec.rb +92 -0
- data/spec/spec_helper.rb +70 -0
- metadata +335 -0
@@ -0,0 +1,100 @@
|
|
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/production'
|
6
|
+
|
7
|
+
describe Limelight::Production, "Instance methods" do
|
8
|
+
|
9
|
+
before(:each) do
|
10
|
+
@producer = make_mock("producer")
|
11
|
+
@theater = make_mock("theater")
|
12
|
+
@production = Limelight::Production.new("/tmp")
|
13
|
+
@production.producer = @producer
|
14
|
+
@production.theater = @theater
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should know it path, producer, and theater" do
|
18
|
+
@production.producer.should == @producer
|
19
|
+
@production.theater.should == @theater
|
20
|
+
@production.path.should == "/tmp"
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should be indexed" do
|
24
|
+
Limelight::Studio.index(@production)
|
25
|
+
Limelight::Studio[@production.name].should == @production
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should raise an error when setting the name to a duplicate name" do
|
29
|
+
@production.name = "Bill"
|
30
|
+
Limelight::Studio.index(@production)
|
31
|
+
|
32
|
+
production = Limelight::Production.new("/tmp")
|
33
|
+
Limelight::Studio.index(production)
|
34
|
+
lambda { production.name = "Bill" }.should raise_error(Limelight::LimelightException, "Production name 'Bill' is already taken")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should get it's name from the file" do
|
38
|
+
Limelight::Production.new("/tmp").name.should == "tmp"
|
39
|
+
Limelight::Production.new("/Somewhere/over/the/rainbow").name.should == "rainbow"
|
40
|
+
Limelight::Production.new("my_name/is/kid").name.should == "kid"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should know its init file" do
|
44
|
+
@production.init_file.should == "/tmp/init.rb"
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should know its stages file" do
|
48
|
+
@production.stages_file.should == "/tmp/stages.rb"
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should know its styles file" do
|
52
|
+
@production.styles_file.should == "/tmp/styles.rb"
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should know its gems directory" do
|
56
|
+
@production.gems_directory.should == "/tmp/__resources/gems/gems"
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should know its gems root" do
|
60
|
+
@production.gems_root.should == "/tmp/__resources/gems"
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should provide paths to it's scenes" do
|
64
|
+
@production.scene_directory("one").should == "/tmp/one"
|
65
|
+
@production.scene_directory("two").should == "/tmp/two"
|
66
|
+
@production.scene_directory(:root).should == "/tmp"
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should allow close by default" do
|
70
|
+
@production.allow_close?.should == true
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should tell studio it closed and triger it's closing events" do
|
74
|
+
@production.should_receive(:production_closing)
|
75
|
+
Limelight::Studio.should_receive(:production_closed).with(@production)
|
76
|
+
@production.should_receive(:production_closed)
|
77
|
+
|
78
|
+
@production.close
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "with files" do
|
82
|
+
|
83
|
+
after(:each) do
|
84
|
+
TestDir.clean
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should load it's root styles" do
|
88
|
+
TestDir.create_file("test_prod/styles.rb", "a_style { width 100; height 200 }")
|
89
|
+
@production = Limelight::Production.new( TestDir.path("test_prod"))
|
90
|
+
|
91
|
+
styles = @production.root_styles
|
92
|
+
styles["a_style"].width.should == "100"
|
93
|
+
styles["a_style"].height.should == "200"
|
94
|
+
@production.root_styles.should be(styles)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
|
@@ -0,0 +1,431 @@
|
|
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/dsl/styles_builder'
|
7
|
+
require 'limelight/scene'
|
8
|
+
require 'limelight/production'
|
9
|
+
|
10
|
+
describe Limelight::Prop do
|
11
|
+
|
12
|
+
before(:each) do
|
13
|
+
@casting_director = make_mock("casting_director", :fill_cast => nil)
|
14
|
+
@scene = Limelight::Scene.new(:casting_director => @casting_director)
|
15
|
+
@prop = Limelight::Prop.new(:id => "root", :name => "root_class")
|
16
|
+
@scene.illuminate
|
17
|
+
@scene << @prop
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should set the childs parent before adding the child to the parent" do
|
21
|
+
# This is important because a child must be illuminated before a parent knows about it
|
22
|
+
child = Limelight::Prop.new(:id => "child", :name => "child_class")
|
23
|
+
|
24
|
+
child.should_receive(:set_parent) do
|
25
|
+
@prop.children.size.should == 0
|
26
|
+
end
|
27
|
+
@prop.add(child)
|
28
|
+
|
29
|
+
@prop.children.size.should == 1
|
30
|
+
end
|
31
|
+
|
32
|
+
module TestPlayer
|
33
|
+
class << self
|
34
|
+
attr_reader :extended_prop
|
35
|
+
|
36
|
+
def extended(prop)
|
37
|
+
@extended_prop = (prop)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_method
|
42
|
+
end
|
43
|
+
|
44
|
+
attr_reader :was_casted
|
45
|
+
def casted
|
46
|
+
@was_casted = true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should extend added controllers and invoke the extended hook" do
|
51
|
+
@prop.include_player(TestPlayer)
|
52
|
+
|
53
|
+
TestPlayer.extended_prop.should == @prop
|
54
|
+
@prop.respond_to?(:test_method).should == true
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should call the player's casted method" do
|
58
|
+
@prop.include_player(TestPlayer)
|
59
|
+
|
60
|
+
@prop.was_casted.should == true
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should have an id" do
|
64
|
+
@prop.illuminate
|
65
|
+
@prop.id.should == "root"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "not start out being illuminated" do
|
69
|
+
prop = Limelight::Prop.new(nil)
|
70
|
+
|
71
|
+
prop.should_not be_illuminated
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
def build_prop_tree
|
76
|
+
@child1 = Limelight::Prop.new(:id => "child1", :name => "child_class")
|
77
|
+
@child2 = Limelight::Prop.new(:id => "child2", :name => "child_class")
|
78
|
+
@grand_child1 = Limelight::Prop.new(:id => "grand_child1", :name => "grand_child_class")
|
79
|
+
@grand_child2 = Limelight::Prop.new(:id => "grand_child2", :name => "grand_child_class")
|
80
|
+
@grand_child3 = Limelight::Prop.new(:id => "grand_child3", :name => "grand_child_class")
|
81
|
+
@grand_child4 = Limelight::Prop.new(:id => "grand_child4", :name => "grand_child_class")
|
82
|
+
|
83
|
+
@prop << @child1 << @child2
|
84
|
+
@child1 << @grand_child1 << @grand_child2
|
85
|
+
@child2 << @grand_child3 << @grand_child4
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should find children by id" do
|
89
|
+
build_prop_tree
|
90
|
+
@scene.find("blah").should == nil
|
91
|
+
@scene.find("root").should be(@prop)
|
92
|
+
@scene.find("child1").should be(@child1)
|
93
|
+
@scene.find("child2").should be(@child2)
|
94
|
+
@scene.find("grand_child1").should be(@grand_child1)
|
95
|
+
@scene.find("grand_child2").should be(@grand_child2)
|
96
|
+
@scene.find("grand_child3").should be(@grand_child3)
|
97
|
+
@scene.find("grand_child4").should be(@grand_child4)
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should find children by name" do
|
101
|
+
build_prop_tree
|
102
|
+
@prop.find_by_name("root_class").should == [@prop]
|
103
|
+
@prop.find_by_name("child_class").should == [@child1, @child2]
|
104
|
+
@prop.find_by_name("grand_child_class").should == [@grand_child1, @grand_child2, @grand_child3, @grand_child4]
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should get and set text" do
|
108
|
+
@prop.text = "blah"
|
109
|
+
@prop.text.should == "blah"
|
110
|
+
@prop.text = 123
|
111
|
+
@prop.text.should == "123"
|
112
|
+
@prop.text = nil
|
113
|
+
@prop.text.should == ""
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should have controllers" do
|
117
|
+
prop = Limelight::Prop.new(:players => "abc, xyz")
|
118
|
+
@scene << prop
|
119
|
+
prop.players.should == "abc, xyz"
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should get populated through constructor" do
|
123
|
+
prop = Limelight::Prop.new(:name => "my_name", :id => "123", :players => "a, b, c")
|
124
|
+
@scene << prop
|
125
|
+
|
126
|
+
prop.name.should == "my_name"
|
127
|
+
prop.id.should == "123"
|
128
|
+
end
|
129
|
+
|
130
|
+
it "should populate styles through constructor" do
|
131
|
+
prop = Limelight::Prop.new(:width => "100", :text_color => "white", :background_image => "apple.jpg")
|
132
|
+
@scene << prop
|
133
|
+
|
134
|
+
prop.style.width.should == "100"
|
135
|
+
prop.style.text_color.should == "#ffffffff"
|
136
|
+
prop.style.background_image.should == "apple.jpg"
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should define event through constructor using a string" do
|
140
|
+
prop = Limelight::Prop.new(:on_mouse_entered => "return event")
|
141
|
+
@scene << prop
|
142
|
+
|
143
|
+
value = prop.mouse_entered("my event")
|
144
|
+
|
145
|
+
value.should == "my event"
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should pass scene on to children" do
|
149
|
+
child = Limelight::Prop.new(:name => "child")
|
150
|
+
|
151
|
+
@prop.parent.should == @scene
|
152
|
+
@prop.scene.should == @scene
|
153
|
+
|
154
|
+
@prop << child
|
155
|
+
child.parent.should == @prop
|
156
|
+
child.scene.should == @scene
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should set styles upon adding to parent" do
|
160
|
+
styles = Limelight::build_styles { child { width 123 } }
|
161
|
+
scene = Limelight::Scene.new(:casting_director => @casting_director, :styles_hash => styles)
|
162
|
+
prop = Limelight::Prop.new(:name => "child")
|
163
|
+
scene.illuminate
|
164
|
+
|
165
|
+
scene << prop
|
166
|
+
|
167
|
+
prop.style.width.should == "123"
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should set styles upon adding to parent" do
|
171
|
+
prop = Limelight::Prop.new(:name => "child")
|
172
|
+
|
173
|
+
@casting_director.should_receive(:fill_cast).with(prop)
|
174
|
+
|
175
|
+
@scene << prop
|
176
|
+
end
|
177
|
+
|
178
|
+
it "should use populate data included by players" do
|
179
|
+
prop = Limelight::Prop.new(:name => "child", :foo => "bar")
|
180
|
+
@casting_director.should_receive(:fill_cast).with(prop) do
|
181
|
+
prop.instance_eval "def foo=(value); @foo = value; end; def foo; return @foo; end;"
|
182
|
+
end
|
183
|
+
|
184
|
+
@scene << prop
|
185
|
+
|
186
|
+
prop.foo.should == "bar"
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should set styles upon illuminating, and convert them to strings" do
|
190
|
+
prop = Limelight::Prop.new(:width => "100", :height => 200, :horizontal_alignment => :center)
|
191
|
+
|
192
|
+
@scene << prop
|
193
|
+
|
194
|
+
prop.style.width.should == "100"
|
195
|
+
prop.style.height.should == "200"
|
196
|
+
prop.style.horizontal_alignment.should == "center"
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should add additional styles listed in options" do
|
200
|
+
style1 = Limelight::Styles::RichStyle.new()
|
201
|
+
style2 = Limelight::Styles::RichStyle.new()
|
202
|
+
style3 = Limelight::Styles::RichStyle.new()
|
203
|
+
@scene.styles.merge!("one" => style1, "two" => style2, "three" => style3)
|
204
|
+
|
205
|
+
prop = Limelight::Prop.new(:name => "one", :styles => "two three")
|
206
|
+
@scene << prop
|
207
|
+
|
208
|
+
prop.style.should have_extension(style1)
|
209
|
+
prop.style.should have_extension(style2)
|
210
|
+
prop.style.should have_extension(style3)
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should add additional styles and their hover part" do
|
214
|
+
style1 = Limelight::Styles::RichStyle.new()
|
215
|
+
style2 = Limelight::Styles::RichStyle.new()
|
216
|
+
style3 = Limelight::Styles::RichStyle.new()
|
217
|
+
style4 = Limelight::Styles::RichStyle.new()
|
218
|
+
@scene.styles.merge!("one" => style1, "one.hover" => style2, "two" => style3, "two.hover" => style4)
|
219
|
+
|
220
|
+
prop = Limelight::Prop.new(:name => "one", :styles => "two three")
|
221
|
+
@scene << prop
|
222
|
+
|
223
|
+
prop.style.should have_extension(style1)
|
224
|
+
prop.style.should have_extension(style3)
|
225
|
+
prop.hover_style.should == style2
|
226
|
+
prop.hover_style.should have_extension(style4)
|
227
|
+
end
|
228
|
+
|
229
|
+
it "should be able to remove children" do
|
230
|
+
child1 = Limelight::Prop.new()
|
231
|
+
child2 = Limelight::Prop.new()
|
232
|
+
child3 = Limelight::Prop.new()
|
233
|
+
@prop << child1 << child2 << child3
|
234
|
+
|
235
|
+
@prop.remove(child2)
|
236
|
+
|
237
|
+
@prop.children.length.should == 2
|
238
|
+
@prop.children.include?(child2).should == false
|
239
|
+
@prop.panel.children.length.should == 2
|
240
|
+
@prop.panel.children.include?(child2.panel).should == false
|
241
|
+
end
|
242
|
+
|
243
|
+
it "should make dimensions accessible" do
|
244
|
+
@prop.panel.should_receive(:get_bounding_box).and_return("whole area")
|
245
|
+
@prop.panel.should_receive(:get_box_inside_borders).and_return("area inside borders")
|
246
|
+
|
247
|
+
@prop.area.should == "whole area"
|
248
|
+
@prop.bordered_area.should == "area inside borders"
|
249
|
+
end
|
250
|
+
|
251
|
+
it "should give you a pen" do
|
252
|
+
graphics = make_mock("graphics", :setColor => nil, :setStroke => nil, :setRenderingHint => nil)
|
253
|
+
@prop.panel.should_receive(:getGraphics).and_return(graphics)
|
254
|
+
|
255
|
+
pen = @prop.pen
|
256
|
+
|
257
|
+
pen.context.should be(graphics)
|
258
|
+
end
|
259
|
+
|
260
|
+
it "should set after paint action" do
|
261
|
+
block = Proc.new { |pen| }
|
262
|
+
|
263
|
+
@prop.after_painting &block
|
264
|
+
|
265
|
+
action = @prop.panel.after_paint_action
|
266
|
+
action.should_not == nil
|
267
|
+
action.class.should == Limelight::PaintAction
|
268
|
+
action.block.should == block
|
269
|
+
end
|
270
|
+
|
271
|
+
it "should clear after paint action" do
|
272
|
+
@prop.after_painting { |pen| puts "blah" }
|
273
|
+
|
274
|
+
@prop.after_painting nil
|
275
|
+
|
276
|
+
@prop.panel.after_paint_action.should == nil
|
277
|
+
end
|
278
|
+
|
279
|
+
it "should build children" do
|
280
|
+
@prop.scene.production = Limelight::Production.new("some/path")
|
281
|
+
@prop.build do
|
282
|
+
one
|
283
|
+
two do
|
284
|
+
three
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
@prop.children.length.should == 2
|
289
|
+
@prop.children[0].name.should == "one"
|
290
|
+
@prop.children[1].name.should == "two"
|
291
|
+
@prop.children[1].children.length.should == 1
|
292
|
+
@prop.children[1].children[0].name.should == "three"
|
293
|
+
end
|
294
|
+
|
295
|
+
it "should build children with options" do
|
296
|
+
@prop.scene.production = Limelight::Production.new("some/path")
|
297
|
+
@prop.build(:one_val => "hello") do
|
298
|
+
one :text => @one_val
|
299
|
+
two do
|
300
|
+
three
|
301
|
+
end
|
302
|
+
|
303
|
+
end
|
304
|
+
|
305
|
+
@prop.children.length.should == 2
|
306
|
+
@prop.children[0].name.should == "one"
|
307
|
+
@prop.children[0].text.should == "hello"
|
308
|
+
@prop.children[1].name.should == "two"
|
309
|
+
@prop.children[1].children.length.should == 1
|
310
|
+
@prop.children[1].children[0].name.should == "three"
|
311
|
+
end
|
312
|
+
|
313
|
+
it "should play sound" do
|
314
|
+
production = Limelight::Production.new("/blah")
|
315
|
+
@scene.production = production
|
316
|
+
production.root.should_receive(:path_to).with("some.au").and_return("/full/path/to/some.au");
|
317
|
+
@prop.panel.should_receive(:play_sound).with("/full/path/to/some.au");
|
318
|
+
|
319
|
+
@prop.play_sound("some.au")
|
320
|
+
end
|
321
|
+
|
322
|
+
it "should remember when it has been illuminated" do
|
323
|
+
prop = Limelight::Prop.new
|
324
|
+
prop.illuminated?.should == false
|
325
|
+
|
326
|
+
@scene << prop
|
327
|
+
|
328
|
+
prop.illuminated?.should == true;
|
329
|
+
end
|
330
|
+
|
331
|
+
#TODO remove_all should not remove scrollbars
|
332
|
+
|
333
|
+
describe "events" do
|
334
|
+
|
335
|
+
it "should not accept mouse_clicked events to start with" do
|
336
|
+
@prop.accepts_mouse_clicked().should == false
|
337
|
+
@prop.instance_eval("def mouse_clicked(e); puts 'hi'; end;")
|
338
|
+
@prop.accepts_mouse_clicked().should == true
|
339
|
+
end
|
340
|
+
|
341
|
+
it "should not accept mouse_pressed events to start with" do
|
342
|
+
@prop.accepts_mouse_pressed().should == false
|
343
|
+
@prop.instance_eval("def mouse_pressed(e); puts 'hi'; end;")
|
344
|
+
@prop.accepts_mouse_pressed().should == true
|
345
|
+
end
|
346
|
+
|
347
|
+
it "should not accept mouse_released events to start with" do
|
348
|
+
@prop.accepts_mouse_released().should == false
|
349
|
+
@prop.instance_eval("def mouse_released(e); puts 'hi'; end;")
|
350
|
+
@prop.accepts_mouse_released().should == true
|
351
|
+
end
|
352
|
+
|
353
|
+
end
|
354
|
+
|
355
|
+
describe "id" do
|
356
|
+
|
357
|
+
it "should index its id when illuminated" do
|
358
|
+
@scene.find("root").should == @prop
|
359
|
+
end
|
360
|
+
|
361
|
+
it "should unindex ids when removing children" do
|
362
|
+
child = Limelight::Prop.new(:id => "child")
|
363
|
+
@prop << child
|
364
|
+
@scene.find("child").should == child
|
365
|
+
|
366
|
+
@prop.remove(child)
|
367
|
+
|
368
|
+
@scene.find("child").should == nil
|
369
|
+
end
|
370
|
+
|
371
|
+
it "should unindex ids when removing all children" do
|
372
|
+
child1 = Limelight::Prop.new(:id => "child1")
|
373
|
+
child2 = Limelight::Prop.new(:id => "child2")
|
374
|
+
@prop << child1 << child2
|
375
|
+
|
376
|
+
@prop.remove_all
|
377
|
+
|
378
|
+
@scene.find("child1").should == nil
|
379
|
+
@scene.find("child2").should == nil
|
380
|
+
end
|
381
|
+
|
382
|
+
it "should unindex grandchildren on remove all" do
|
383
|
+
grandchild = Limelight::Prop.new(:id => "grandchild")
|
384
|
+
child = Limelight::Prop.new(:id => "child")
|
385
|
+
child << grandchild
|
386
|
+
@prop << child
|
387
|
+
|
388
|
+
@prop.remove_all
|
389
|
+
|
390
|
+
@scene.find("child").should == nil
|
391
|
+
@scene.find("grandchild").should == nil
|
392
|
+
end
|
393
|
+
|
394
|
+
it "should index it's id when being re-added to the prop tree" do
|
395
|
+
child = Limelight::Prop.new(:id => "child")
|
396
|
+
@prop << child
|
397
|
+
@prop.remove(child)
|
398
|
+
@prop << child
|
399
|
+
|
400
|
+
@scene.find("child").should == child
|
401
|
+
end
|
402
|
+
|
403
|
+
it "should traverse and index children when being re-added to the prop tree" do
|
404
|
+
grandchild = Limelight::Prop.new(:id => "grandchild")
|
405
|
+
child = Limelight::Prop.new(:id => "child")
|
406
|
+
child << grandchild
|
407
|
+
@prop << child
|
408
|
+
@prop.remove(child)
|
409
|
+
@prop << child
|
410
|
+
|
411
|
+
@scene.find("grandchild").should == grandchild
|
412
|
+
end
|
413
|
+
|
414
|
+
|
415
|
+
end
|
416
|
+
|
417
|
+
describe "launch" do
|
418
|
+
|
419
|
+
it "should launch a url" do
|
420
|
+
os = mock("Limelight OS")
|
421
|
+
instance = mock("Limelight OS instance", :os => os)
|
422
|
+
Java::limelight.Context.stub!(:instance).and_return(instance)
|
423
|
+
|
424
|
+
os.should_receive(:launch).with("http://www.google.com")
|
425
|
+
|
426
|
+
@prop.launch("http://www.google.com")
|
427
|
+
end
|
428
|
+
|
429
|
+
end
|
430
|
+
|
431
|
+
end
|