limelight 0.2.0-java → 0.2.1-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.
- data/bin/limelight +2 -3
- data/lib/limelight.jar +0 -0
- data/lib/limelight/animation.rb +32 -12
- data/lib/limelight/build_exception.rb +3 -0
- data/lib/limelight/builtin/players/button.rb +17 -2
- data/lib/limelight/builtin/players/check_box.rb +21 -2
- data/lib/limelight/builtin/players/combo_box.rb +31 -3
- data/lib/limelight/builtin/players/combo_box_popup_list.rb +1 -1
- data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +1 -1
- data/lib/limelight/builtin/players/curtains.rb +1 -1
- data/lib/limelight/builtin/players/radio_button.rb +27 -3
- data/lib/limelight/builtin/players/text_area.rb +11 -2
- data/lib/limelight/builtin/players/text_box.rb +11 -2
- data/lib/limelight/button_group_cache.rb +2 -2
- data/lib/limelight/casting_director.rb +6 -1
- data/lib/limelight/commands.rb +10 -24
- data/lib/limelight/file_chooser.rb +16 -3
- data/lib/limelight/file_filter.rb +10 -3
- data/lib/limelight/java_couplings.rb +11 -10
- data/lib/limelight/java_util.rb +36 -3
- data/lib/limelight/limelight_exception.rb +3 -1
- data/lib/limelight/loaders/file_scene_loader.rb +1 -1
- data/lib/limelight/main.rb +108 -0
- data/lib/limelight/menu_bar.rb +31 -12
- data/lib/limelight/paint_action.rb +4 -2
- data/lib/limelight/pen.rb +39 -9
- data/lib/limelight/producer.rb +35 -7
- data/lib/limelight/production.rb +18 -9
- data/lib/limelight/production_builder.rb +22 -5
- data/lib/limelight/prop.rb +127 -45
- data/lib/limelight/prop_builder.rb +70 -11
- data/lib/limelight/scene.rb +25 -21
- data/lib/limelight/stage.rb +68 -18
- data/lib/limelight/stage_builder.rb +68 -27
- data/lib/limelight/styles.rb +327 -30
- data/lib/limelight/styles_builder.rb +91 -21
- data/lib/limelight/theater.rb +23 -11
- data/lib/limelight/util.rb +28 -6
- data/lib/limelight/version.rb +1 -1
- data/productions/startup/players/browse_button.rb +1 -1
- data/spec/builtin/players/check_box_spec.rb +1 -1
- data/spec/builtin/players/radio_button_spec.rb +2 -2
- data/spec/builtin/players/text_area_spec.rb +1 -1
- data/spec/builtin/players/text_box_spec.rb +1 -1
- data/spec/commands_spec.rb +4 -3
- data/spec/prop_builder_spec.rb +40 -29
- data/spec/prop_spec.rb +5 -1
- data/spec/stage_spec.rb +15 -15
- data/spec/styles_spec.rb +36 -0
- data/spec/theater_spec.rb +8 -8
- metadata +6 -3
data/lib/limelight/theater.rb
CHANGED
@@ -4,7 +4,9 @@
|
|
4
4
|
require 'limelight/limelight_exception'
|
5
5
|
|
6
6
|
module Limelight
|
7
|
-
|
7
|
+
|
8
|
+
# A Theater represents a group of Stages. Productions require a Theater in which to open.
|
9
|
+
#
|
8
10
|
class Theater
|
9
11
|
|
10
12
|
include UI::Api::Theater
|
@@ -12,26 +14,36 @@ module Limelight
|
|
12
14
|
attr_reader :active_stage
|
13
15
|
|
14
16
|
def initialize
|
15
|
-
@
|
17
|
+
@__stages__ = {}
|
16
18
|
end
|
17
|
-
|
19
|
+
|
20
|
+
# Returns an Array of Stages that belong to this Theater.
|
21
|
+
#
|
18
22
|
def stages
|
19
|
-
return @
|
23
|
+
return @__stages__.values
|
20
24
|
end
|
21
|
-
|
25
|
+
|
26
|
+
# Returns the Stage with the spcified name, nil if none exist with the specified name.
|
27
|
+
#
|
22
28
|
def [](stage_name)
|
23
|
-
return @
|
29
|
+
return @__stages__[stage_name]
|
24
30
|
end
|
25
|
-
|
31
|
+
|
32
|
+
# Adds a Stage to the Theater. Raises an exception is the name of the Stage is duplicated.
|
33
|
+
#
|
26
34
|
def add_stage(stage)
|
27
|
-
raise LimelightException.new("Duplicate stage name: '#{stage.name}'") if @
|
28
|
-
@
|
35
|
+
raise LimelightException.new("Duplicate stage name: '#{stage.name}'") if @__stages__[stage.name]
|
36
|
+
@__stages__[stage.name] = stage
|
29
37
|
end
|
30
|
-
|
38
|
+
|
39
|
+
# Lets the Theater know which stage has the limelight (currently active).
|
40
|
+
#
|
31
41
|
def stage_activated(stage)
|
32
42
|
@active_stage = stage
|
33
43
|
end
|
34
|
-
|
44
|
+
|
45
|
+
# If no Stages are added, the Theater will provide a default Stage named "Limelight".
|
46
|
+
#
|
35
47
|
def default_stage
|
36
48
|
add_stage(Stage.new(self, "Limelight")) if self["Limelight"].nil?
|
37
49
|
return self["Limelight"]
|
data/lib/limelight/util.rb
CHANGED
@@ -2,17 +2,25 @@
|
|
2
2
|
#- Limelight and all included source files are distributed under terms of the GNU LGPL.
|
3
3
|
|
4
4
|
module Limelight
|
5
|
-
|
5
|
+
|
6
|
+
# Utility methods for Limelight
|
7
|
+
#
|
6
8
|
module Util
|
7
|
-
|
9
|
+
|
10
|
+
# Returns true if the specified file is a directory and has the structure of a Scene.
|
11
|
+
#
|
8
12
|
def self.is_limelight_scene?(file)
|
9
13
|
return is_directory_containing_file?(file, "props.rb")
|
10
14
|
end
|
11
|
-
|
15
|
+
|
16
|
+
# Returns true if the specified file is a directory and has the structure of a Production.
|
17
|
+
#
|
12
18
|
def self.is_limelight_production?(file)
|
13
19
|
return is_directory_containing_file?(file, "stages.rb")
|
14
20
|
end
|
15
|
-
|
21
|
+
|
22
|
+
# Returns true of the file is a directory containing an entry named file_name.
|
23
|
+
#
|
16
24
|
def self.is_directory_containing_file?(file, file_name)
|
17
25
|
if file.is_a? String
|
18
26
|
return File.directory?(file) && File.exists?(File.join(file, file_name))
|
@@ -20,7 +28,21 @@ module Limelight
|
|
20
28
|
return file.isDirectory() && File.exists?(File.join(file.absolute_path, file_name))
|
21
29
|
end
|
22
30
|
end
|
23
|
-
|
31
|
+
|
32
|
+
# Removed all methods from a class except instance_eval and methods starting with __.
|
33
|
+
# This is used by the DSL Builder classes to minimize reserved keywords.
|
34
|
+
#
|
35
|
+
def self.lobotomize(klass)
|
36
|
+
klass.methods.each do |method_name|
|
37
|
+
unless method_name[0..1] == "__" || method_name == "instance_eval"
|
38
|
+
begin
|
39
|
+
klass.instance_eval "undef_method :#{method_name}"
|
40
|
+
rescue Exception => e
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
24
46
|
end
|
25
|
-
|
47
|
+
|
26
48
|
end
|
data/lib/limelight/version.rb
CHANGED
@@ -9,7 +9,7 @@ describe Limelight::Builtin::Players::CheckBox do
|
|
9
9
|
|
10
10
|
before(:each) do
|
11
11
|
@prop = Limelight::Prop.new
|
12
|
-
@prop.
|
12
|
+
@prop.include_player(Limelight::Builtin::Players::CheckBox)
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should have a TextField" do
|
@@ -38,12 +38,12 @@ describe Limelight::Builtin::Players::RadioButton do
|
|
38
38
|
|
39
39
|
prop2 = Limelight::Prop.new
|
40
40
|
@scene << prop2
|
41
|
-
prop2.
|
41
|
+
prop2.include_player(Limelight::Builtin::Players::RadioButton)
|
42
42
|
prop2.group = "group 1"
|
43
43
|
|
44
44
|
prop3 = Limelight::Prop.new
|
45
45
|
@scene << prop3
|
46
|
-
prop3.
|
46
|
+
prop3.include_player(Limelight::Builtin::Players::RadioButton)
|
47
47
|
prop3.group = "group 2"
|
48
48
|
|
49
49
|
group1 = @scene.button_groups["group 1"]
|
@@ -9,7 +9,7 @@ describe Limelight::Builtin::Players::TextArea do
|
|
9
9
|
|
10
10
|
before(:each) do
|
11
11
|
@prop = Limelight::Prop.new
|
12
|
-
@prop.
|
12
|
+
@prop.include_player(Limelight::Builtin::Players::TextArea)
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should have a JTextArea" do
|
@@ -9,7 +9,7 @@ describe Limelight::Builtin::Players::TextBox do
|
|
9
9
|
|
10
10
|
before(:each) do
|
11
11
|
@prop = Limelight::Prop.new
|
12
|
-
@prop.
|
12
|
+
@prop.include_player(Limelight::Builtin::Players::TextBox)
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should have a TextField" do
|
data/spec/commands_spec.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
|
5
5
|
require 'limelight/commands'
|
6
6
|
require 'limelight/producer'
|
7
|
+
require 'limelight/main'
|
7
8
|
|
8
9
|
describe Limelight::Commands do
|
9
10
|
|
@@ -13,13 +14,13 @@ describe Limelight::Commands do
|
|
13
14
|
it "should open a production" do
|
14
15
|
args = ["open", "production_name"]
|
15
16
|
Limelight::Producer.should_receive(:open).with("production_name")
|
16
|
-
Limelight::
|
17
|
+
Limelight::Main.run(args)
|
17
18
|
end
|
18
19
|
|
19
20
|
it "should open the default production" do
|
20
21
|
args = ["open"]
|
21
22
|
Limelight::Producer.should_receive(:open).with(Limelight::DEFAULT_PRODUCTION)
|
22
|
-
Limelight::
|
23
|
+
Limelight::Main.run(args)
|
23
24
|
end
|
24
25
|
|
25
26
|
it "should pack a production" do
|
@@ -27,7 +28,7 @@ describe Limelight::Commands do
|
|
27
28
|
Limelight::Util::Packer.should_receive(:new).and_return(mock_packer)
|
28
29
|
mock_packer.should_receive(:pack).with("production_to_pack")
|
29
30
|
|
30
|
-
Limelight::
|
31
|
+
Limelight::Main.run(["pack", "production_to_pack"])
|
31
32
|
end
|
32
33
|
|
33
34
|
end
|
data/spec/prop_builder_spec.rb
CHANGED
@@ -10,21 +10,21 @@ describe Limelight::SceneBuilder do
|
|
10
10
|
@caster = make_mock("caster", :fill_cast => nil)
|
11
11
|
@options = { :name => "root", :casting_director => @caster}
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "should build root" do
|
15
15
|
root = Limelight.build_scene(@options)
|
16
|
-
|
16
|
+
|
17
17
|
root.class.should == Limelight::Scene
|
18
18
|
root.name.should == "root"
|
19
19
|
root.panel.should_not == nil
|
20
20
|
root.children.size.should == 0
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "should build one child prop" do
|
24
24
|
root = Limelight::build_scene(@options) do
|
25
25
|
child
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
root.children.size.should == 1
|
29
29
|
child = root.children[0]
|
30
30
|
child.class.should == Limelight::Prop
|
@@ -32,13 +32,13 @@ describe Limelight::SceneBuilder do
|
|
32
32
|
child.panel.should_not == nil
|
33
33
|
child.children.size.should == 0
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
it "should allow multiple children" do
|
37
37
|
root = Limelight::build_scene(@options) do
|
38
38
|
child1
|
39
39
|
child2
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
root.children.size.should == 2
|
43
43
|
root.children[0].name.should == "child1"
|
44
44
|
root.children[1].name.should == "child2"
|
@@ -56,54 +56,54 @@ describe Limelight::SceneBuilder do
|
|
56
56
|
root.children[0].children.size.should == 1
|
57
57
|
root.children[0].children[0].name.should == "grandchild"
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
it "should be able to set the id" do
|
61
61
|
root = Limelight::build_scene(@options) do
|
62
62
|
child :id => "child_1", :players => "x, y, z"
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
child = root.children[0]
|
66
66
|
child.id.should == "child_1"
|
67
67
|
child.players.should == "x, y, z"
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
it "should allow setting styles" do
|
71
71
|
root = Limelight::build_scene(@options) do
|
72
72
|
child :width => "100", :font_size => "10", :top_border_color => "blue"
|
73
73
|
end
|
74
|
-
|
74
|
+
|
75
75
|
child = root.children[0]
|
76
76
|
child.style.width.should == "100"
|
77
77
|
child.style.font_size.should == "10"
|
78
78
|
child.style.top_border_color.should == "blue"
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
it "should allow defining events through constructor" do
|
82
82
|
root = Limelight::build_scene(@options) do
|
83
83
|
child :on_mouse_entered => "return [self, event]"
|
84
|
-
end
|
85
|
-
|
84
|
+
end
|
85
|
+
|
86
86
|
child = root.children[0]
|
87
87
|
child.mouse_entered("blah").should == [child, "blah"]
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
it "should allow scene configuration" do
|
91
91
|
root = Limelight::build_scene(@options) do
|
92
92
|
__ :name => "root", :id => "123"
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
root.children.size.should == 0
|
96
96
|
root.name.should == "root"
|
97
97
|
root.id.should == "123"
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
it "should give every prop their scene" do
|
101
101
|
root = Limelight::build_scene(@options) do
|
102
102
|
child do
|
103
103
|
grandchild
|
104
104
|
end
|
105
105
|
end
|
106
|
-
|
106
|
+
|
107
107
|
root.scene.should == root
|
108
108
|
root.children[0].scene.should == root
|
109
109
|
root.children[0].children[0].scene.should == root
|
@@ -112,18 +112,18 @@ describe Limelight::SceneBuilder do
|
|
112
112
|
it "should install external props" do
|
113
113
|
loader = make_mock("loader", :exists? => true)
|
114
114
|
loader.should_receive(:load).with("external.rb").and_return("child :id => 123")
|
115
|
-
|
115
|
+
|
116
116
|
root = Limelight::build_scene(:id => 321, :build_loader => loader, :casting_director => @caster) do
|
117
117
|
__install "external.rb"
|
118
|
-
end
|
119
|
-
|
118
|
+
end
|
119
|
+
|
120
120
|
root.id.should == 321
|
121
121
|
root.children.size.should == 1
|
122
122
|
child = root.children[0]
|
123
123
|
child.name.should == "child"
|
124
124
|
child.id.should == 123
|
125
125
|
end
|
126
|
-
|
126
|
+
|
127
127
|
it "should fail if no loader is provided" do
|
128
128
|
begin
|
129
129
|
root = Limelight::build_scene(@options.merge(:id => 321, :build_loader => nil)) do
|
@@ -134,11 +134,11 @@ describe Limelight::SceneBuilder do
|
|
134
134
|
e.message.should == "Cannot install external props because no loader was provided"
|
135
135
|
end
|
136
136
|
end
|
137
|
-
|
137
|
+
|
138
138
|
it "should fail when the external file doesn't exist" do
|
139
139
|
loader = make_mock("loader")
|
140
140
|
loader.should_receive(:exists?).with("external.rb").and_return(false)
|
141
|
-
|
141
|
+
|
142
142
|
begin
|
143
143
|
root = Limelight::build_scene(@options.merge(:id => 321, :build_loader => loader)) do
|
144
144
|
__install "external.rb"
|
@@ -147,32 +147,43 @@ describe Limelight::SceneBuilder do
|
|
147
147
|
e.message.should == "External prop file: 'external.rb' doesn't exist"
|
148
148
|
end
|
149
149
|
end
|
150
|
-
|
150
|
+
|
151
151
|
it "should fail with PropException when there's problem in the external file" do
|
152
152
|
loader = make_mock("loader", :exists? => true)
|
153
153
|
loader.should_receive(:load).with("external.rb").and_return("+")
|
154
|
-
|
154
|
+
|
155
155
|
begin
|
156
156
|
root = Limelight::build_scene(@options.merge(:id => 321, :build_loader => loader)) do
|
157
157
|
__install "external.rb"
|
158
|
-
end
|
158
|
+
end
|
159
159
|
rescue Limelight::BuildException => e
|
160
160
|
e.message.should include("external.rb:1: (eval):1: , unexpected end-of-file")
|
161
161
|
end
|
162
162
|
end
|
163
|
-
|
163
|
+
|
164
164
|
it "should build onto an existing block" do
|
165
165
|
prop = Limelight::Prop.new
|
166
166
|
prop.set_scene(Limelight::Scene.new(:casting_director => make_mock(:casting_director, :fill_cast => nil)))
|
167
167
|
builder = Limelight::PropBuilder.new(prop)
|
168
168
|
block = Proc.new { one; two { three } }
|
169
169
|
builder.instance_eval(&block)
|
170
|
-
|
170
|
+
|
171
171
|
prop.children.length.should == 2
|
172
172
|
prop.children[0].name.should == "one"
|
173
173
|
prop.children[1].name.should == "two"
|
174
174
|
prop.children[1].children.length.should == 1
|
175
175
|
prop.children[1].children[0].name.should == "three"
|
176
176
|
end
|
177
|
-
|
177
|
+
|
178
|
+
it "should not crash with prop named display" do
|
179
|
+
root = Limelight::build_scene(@options) do
|
180
|
+
display :id => "display"
|
181
|
+
end
|
182
|
+
|
183
|
+
root.children.size.should == 1
|
184
|
+
display = root.children[0]
|
185
|
+
display.name.should == "display"
|
186
|
+
display.id.should == "display"
|
187
|
+
end
|
188
|
+
|
178
189
|
end
|
data/spec/prop_spec.rb
CHANGED
@@ -40,7 +40,7 @@ describe Limelight::Prop do
|
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
-
@prop.
|
43
|
+
@prop.include_player(TestController)
|
44
44
|
|
45
45
|
TestController.extended_prop.should == @prop
|
46
46
|
@prop.respond_to?(:test_method).should == true
|
@@ -85,6 +85,10 @@ describe Limelight::Prop do
|
|
85
85
|
it "should get and set text" do
|
86
86
|
@prop.text = "blah"
|
87
87
|
@prop.text.should == "blah"
|
88
|
+
@prop.text = 123
|
89
|
+
@prop.text.should == "123"
|
90
|
+
@prop.text = nil
|
91
|
+
@prop.text.should == ""
|
88
92
|
end
|
89
93
|
|
90
94
|
it "should have controllers" do
|
data/spec/stage_spec.rb
CHANGED
@@ -8,7 +8,7 @@ describe Limelight::Stage do
|
|
8
8
|
|
9
9
|
before(:each) do
|
10
10
|
@theater = make_mock("theater")
|
11
|
-
@
|
11
|
+
@__stage__ = Limelight::Stage.new(@theater, "George")
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should have a name" do
|
@@ -18,40 +18,40 @@ describe Limelight::Stage do
|
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should have a title which default to it's name" do
|
21
|
-
@
|
21
|
+
@__stage__.title.should == "George"
|
22
22
|
|
23
|
-
@
|
23
|
+
@__stage__.title = "Once Upon a Test"
|
24
24
|
|
25
|
-
@
|
25
|
+
@__stage__.title.should == "Once Upon a Test"
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should have size" do
|
29
|
-
@
|
29
|
+
@__stage__.size.should == [800, 800]
|
30
30
|
|
31
|
-
@
|
31
|
+
@__stage__.size = 123, 456
|
32
32
|
|
33
|
-
@
|
33
|
+
@__stage__.size.should == [123, 456]
|
34
34
|
end
|
35
35
|
|
36
|
-
it "should have
|
37
|
-
@
|
36
|
+
it "should have location" do
|
37
|
+
@__stage__.location.should == [200, 25]
|
38
38
|
|
39
|
-
@
|
39
|
+
@__stage__.location = 123, 456
|
40
40
|
|
41
|
-
@
|
41
|
+
@__stage__.location.should == [123, 456]
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should not allow name changes" do
|
45
|
-
lambda { @
|
45
|
+
lambda { @__stage__.name = "new name" }.should raise_error
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should call scene.scene_opened at the end of opening a scene" do
|
49
49
|
scene = make_mock("scene", :visible= => nil)
|
50
50
|
scene.should_receive(:scene_opened)
|
51
51
|
|
52
|
-
@
|
53
|
-
@
|
54
|
-
@
|
52
|
+
@__stage__.frame.stub!(:open)
|
53
|
+
@__stage__.stub!(:load_scene)
|
54
|
+
@__stage__.open(scene)
|
55
55
|
end
|
56
56
|
|
57
57
|
end
|