shoes-swt 4.0.0.pre4 → 4.0.0.pre5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Guardfile +4 -0
- data/lib/shoes/swt/app.rb +11 -2
- data/lib/shoes/swt/button.rb +2 -4
- data/lib/shoes/swt/check_button.rb +2 -4
- data/lib/shoes/swt/color_factory.rb +1 -2
- data/lib/shoes/swt/common/painter.rb +8 -6
- data/lib/shoes/swt/common/resource.rb +14 -0
- data/lib/shoes/swt/download.rb +1 -1
- data/lib/shoes/swt/generate-backend.rb +1 -1
- data/lib/shoes/swt/gradient.rb +3 -2
- data/lib/shoes/swt/image.rb +3 -4
- data/lib/shoes/swt/input_box.rb +10 -11
- data/lib/shoes/swt/key_listener.rb +11 -5
- data/lib/shoes/swt/link.rb +2 -0
- data/lib/shoes/swt/list_box.rb +4 -9
- data/lib/shoes/swt/packager.rb +1 -0
- data/lib/shoes/swt/progress.rb +4 -5
- data/lib/shoes/swt/radio.rb +3 -3
- data/lib/shoes/swt/redrawing_aspect.rb +4 -13
- data/lib/shoes/swt/slot.rb +4 -1
- data/lib/shoes/swt/sound.rb +1 -1
- data/lib/shoes/swt/swt_button.rb +4 -4
- data/lib/shoes/swt/text_block/painter.rb +4 -1
- data/lib/shoes/swt/text_block/text_segment_collection.rb +14 -3
- data/lib/shoes/swt/text_block/text_style_factory.rb +1 -0
- data/lib/shoes/swt/text_block.rb +5 -1
- data/lib/shoes/swt/version.rb +1 -1
- data/lib/shoes/swt.rb +3 -3
- data/shoes-swt.gemspec +1 -1
- data/spec/shoes/swt/animation_spec.rb +6 -7
- data/spec/shoes/swt/app_spec.rb +56 -14
- data/spec/shoes/swt/arc_spec.rb +5 -5
- data/spec/shoes/swt/background_spec.rb +5 -5
- data/spec/shoes/swt/border_spec.rb +3 -3
- data/spec/shoes/swt/button_spec.rb +3 -7
- data/spec/shoes/swt/check_spec.rb +1 -1
- data/spec/shoes/swt/click_listener_spec.rb +2 -2
- data/spec/shoes/swt/color_factory_spec.rb +1 -1
- data/spec/shoes/swt/color_spec.rb +1 -1
- data/spec/shoes/swt/common/painter_spec.rb +13 -3
- data/spec/shoes/swt/common/remove_spec.rb +1 -1
- data/spec/shoes/swt/configuration_spec.rb +1 -2
- data/spec/shoes/swt/dialog_spec.rb +1 -4
- data/spec/shoes/swt/flow_spec.rb +4 -4
- data/spec/shoes/swt/font_spec.rb +1 -3
- data/spec/shoes/swt/gradient_spec.rb +1 -1
- data/spec/shoes/swt/image_pattern_spec.rb +1 -1
- data/spec/shoes/swt/image_spec.rb +3 -4
- data/spec/shoes/swt/input_box_spec.rb +6 -8
- data/spec/shoes/swt/integration_spec.rb +1 -1
- data/spec/shoes/swt/key_listener_spec.rb +44 -17
- data/spec/shoes/swt/line_spec.rb +2 -2
- data/spec/shoes/swt/link_segment_spec.rb +2 -3
- data/spec/shoes/swt/link_spec.rb +1 -1
- data/spec/shoes/swt/list_box_spec.rb +8 -9
- data/spec/shoes/swt/mouse_move_listener_spec.rb +6 -6
- data/spec/shoes/swt/oval_spec.rb +1 -1
- data/spec/shoes/swt/progress_spec.rb +3 -3
- data/spec/shoes/swt/radio_group_spec.rb +1 -2
- data/spec/shoes/swt/radio_spec.rb +4 -4
- data/spec/shoes/swt/rect_painter_spec.rb +6 -6
- data/spec/shoes/swt/rect_spec.rb +1 -1
- data/spec/shoes/swt/shape_spec.rb +2 -3
- data/spec/shoes/swt/shared_examples/button.rb +0 -2
- data/spec/shoes/swt/shared_examples/movable.rb +0 -1
- data/spec/shoes/swt/shared_examples/painter.rb +2 -3
- data/spec/shoes/swt/shared_examples/swt_app_context.rb +11 -9
- data/spec/shoes/swt/shell_control_listener_spec.rb +2 -2
- data/spec/shoes/swt/shoes_layout_spec.rb +6 -7
- data/spec/shoes/swt/slot_spec.rb +10 -4
- data/spec/shoes/swt/spec_helper.rb +11 -0
- data/spec/shoes/swt/star_spec.rb +4 -4
- data/spec/shoes/swt/text_block/centered_text_segment_spec.rb +1 -1
- data/spec/shoes/swt/text_block/cursor_painter_spec.rb +7 -7
- data/spec/shoes/swt/text_block/fitter_spec.rb +8 -9
- data/spec/shoes/swt/text_block/painter_spec.rb +15 -4
- data/spec/shoes/swt/text_block/text_font_factory_spec.rb +4 -4
- data/spec/shoes/swt/text_block/text_segment_collection_spec.rb +17 -18
- data/spec/shoes/swt/text_block/text_segment_spec.rb +5 -5
- data/spec/shoes/swt/text_block_spec.rb +13 -11
- data/spec/spec_helper.rb +2 -1
- metadata +14 -14
- data/lib/shoes/swt/common/child.rb +0 -16
data/spec/shoes/swt/link_spec.rb
CHANGED
@@ -1,22 +1,21 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::ListBox do
|
4
4
|
include_context "swt app"
|
5
5
|
|
6
6
|
let(:items) { ["Pie", "Apple", "Sand"] }
|
7
7
|
let(:dsl) { double('dsl', app: shoes_app,
|
8
|
-
|
9
|
-
|
10
|
-
let(:block) { ->(){} }
|
8
|
+
items: items, opts: {},
|
9
|
+
element_width: 200, element_height: 20).as_null_object }
|
10
|
+
let(:block) { ->() {} }
|
11
11
|
let(:real) { double('real', text: "",
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
:items= => true, :text= => true,
|
13
|
+
set_size: true, add_selection_listener: true,
|
14
|
+
disposed?: false) }
|
15
15
|
|
16
|
-
subject { Shoes::Swt::ListBox.new dsl,
|
16
|
+
subject { Shoes::Swt::ListBox.new dsl, swt_app, &block }
|
17
17
|
|
18
18
|
before :each do
|
19
|
-
allow(parent).to receive(:real)
|
20
19
|
allow(::Swt::Widgets::Combo).to receive(:new) { real }
|
21
20
|
end
|
22
21
|
|
@@ -1,14 +1,14 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::MouseMoveListener do
|
4
4
|
let(:app) {double 'SWT App', dsl: dsl_app, shell: shell,
|
5
|
-
|
5
|
+
clickable_elements: clickable_elements}
|
6
6
|
let(:clickable_elements) {[]}
|
7
7
|
let(:mouse_hover_controls) {[]}
|
8
8
|
let(:mouse_motion) {[]}
|
9
9
|
let(:shell) {double 'Shell', setCursor: nil}
|
10
10
|
let(:dsl_app) {double('DSL App', mouse_hover_controls: mouse_hover_controls,
|
11
|
-
|
11
|
+
mouse_motion: mouse_motion).as_null_object}
|
12
12
|
let(:x) {10}
|
13
13
|
let(:y) {42}
|
14
14
|
let(:block) {double 'Block', call: nil}
|
@@ -54,7 +54,7 @@ describe Shoes::Swt::MouseMoveListener do
|
|
54
54
|
|
55
55
|
describe 'hover control' do
|
56
56
|
let(:element) {double 'element', in_bounds?: in_bounds?, hovered?: hovered?,
|
57
|
-
|
57
|
+
visible?: true, mouse_left: nil, mouse_hovered: nil}
|
58
58
|
let(:mouse_hover_controls) {[element]}
|
59
59
|
|
60
60
|
shared_examples_for 'does not do anything' do
|
@@ -100,7 +100,7 @@ describe Shoes::Swt::MouseMoveListener do
|
|
100
100
|
let(:in_bounds?) {true}
|
101
101
|
let(:hovered?) {false}
|
102
102
|
let(:element) {double 'element', in_bounds?: in_bounds?, hovered?: hovered?,
|
103
|
-
|
103
|
+
visible?: false, mouse_left: nil, mouse_hovered: nil}
|
104
104
|
|
105
105
|
it_behaves_like 'does not do anything'
|
106
106
|
end
|
@@ -110,7 +110,7 @@ describe Shoes::Swt::MouseMoveListener do
|
|
110
110
|
let(:hovered?) {true}
|
111
111
|
|
112
112
|
let(:element2) {double 'element 2', in_bounds?: true, hovered?: false,
|
113
|
-
|
113
|
+
visible?: true, mouse_left: nil, mouse_hovered: nil}
|
114
114
|
let(:mouse_hover_controls) {[element, element2]}
|
115
115
|
|
116
116
|
it 'calls leave for element 1 before calling hover for element 2' do
|
data/spec/shoes/swt/oval_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::Progress do
|
4
4
|
include_context "swt app"
|
@@ -8,10 +8,10 @@ describe Shoes::Swt::Progress do
|
|
8
8
|
let(:real) { double('real', disposed?: real_disposed).as_null_object }
|
9
9
|
let(:real_disposed) {false}
|
10
10
|
|
11
|
-
subject { Shoes::Swt::Progress.new dsl,
|
11
|
+
subject { Shoes::Swt::Progress.new dsl, swt_app }
|
12
12
|
|
13
13
|
before :each do
|
14
|
-
allow(
|
14
|
+
allow(swt_app).to receive(:real)
|
15
15
|
allow(::Swt::Widgets::ProgressBar).to receive(:new) { real }
|
16
16
|
end
|
17
17
|
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::Radio do
|
4
4
|
include_context "swt app"
|
5
5
|
|
6
6
|
let(:text) { "TEXT" }
|
7
7
|
let(:dsl) { double('dsl', :app => shoes_app,
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
:width= => true, :width => 100,
|
9
|
+
:height= => true, :height => 200,
|
10
|
+
:group => nil, :blk => block).as_null_object }
|
11
11
|
let(:block) { proc {} }
|
12
12
|
let(:real) { double('real').as_null_object }
|
13
13
|
|
@@ -1,15 +1,15 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::RectPainter do
|
4
4
|
include_context "painter context"
|
5
5
|
|
6
6
|
let(:corners) { 0 }
|
7
|
-
let(:app) { double('app', :
|
8
|
-
let(:container) { double('container',
|
7
|
+
let(:app) { double('app', real: container, add_paint_listener: true, dsl: dsl) }
|
8
|
+
let(:container) { double('container', disposed?: false) }
|
9
9
|
let(:dsl) { double("dsl object", hidden: false, rotate: 0,
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
element_left: left, element_top: top,
|
11
|
+
element_width: width, element_height: height,
|
12
|
+
curve: corners).as_null_object }
|
13
13
|
let(:left) { 55 }
|
14
14
|
let(:top) { 77 }
|
15
15
|
let(:width) { 222 }
|
data/spec/shoes/swt/rect_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::Shape do
|
4
4
|
include_context "swt app"
|
5
5
|
|
6
6
|
let(:dsl) { instance_double("Shoes::Shape", hidden: false,
|
7
|
-
|
7
|
+
needs_rotate?: false,style: {}).as_null_object }
|
8
8
|
subject { Shoes::Swt::Shape.new dsl, swt_app }
|
9
9
|
|
10
10
|
shared_examples_for "Swt::Shape" do
|
@@ -65,7 +65,6 @@ describe Shoes::Swt::Shape do
|
|
65
65
|
expect(transform).to receive(:translate).with(20, 30)
|
66
66
|
subject.update_position
|
67
67
|
end
|
68
|
-
|
69
68
|
end
|
70
69
|
|
71
70
|
describe "painter" do
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# Provide `shape` (a double) and `subject` (a Painter)
|
2
2
|
|
3
3
|
shared_context "painter context" do
|
4
|
-
let(:event) { double("event", :
|
5
|
-
let(:gc) { double("gc", :
|
4
|
+
let(:event) { double("event", gc: gc) }
|
5
|
+
let(:gc) { double("gc", get_line_width: sw).as_null_object }
|
6
6
|
let(:fill) { Shoes::Swt::Color.new(Shoes::Color.new(11, 12, 13, fill_alpha)) }
|
7
7
|
let(:stroke) { Shoes::Swt::Color.new(Shoes::Color.new(111, 112, 113, stroke_alpha)) }
|
8
8
|
let(:fill_alpha) { 70 }
|
@@ -18,7 +18,6 @@ shared_context "painter context" do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
21
|
shared_examples_for "movable painter" do
|
23
22
|
describe "when moved" do
|
24
23
|
let(:transform) { double("transform").as_null_object }
|
@@ -4,7 +4,7 @@
|
|
4
4
|
# - shoes_app: use for instantiating a Shoes DSL object
|
5
5
|
shared_context "swt app" do
|
6
6
|
let(:swt_app_real) { double('swt app real', disposed?: false,
|
7
|
-
|
7
|
+
set_visible: true) }
|
8
8
|
|
9
9
|
let(:clickable_element) { double("clickable_element", delete: nil) }
|
10
10
|
let(:click_listener) { double("click listener",
|
@@ -13,18 +13,20 @@ shared_context "swt app" do
|
|
13
13
|
remove_listeners_for: nil) }
|
14
14
|
let(:swt_app) do
|
15
15
|
swt_double = double('swt app', real: swt_app_real, disposed?: false,
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
add_paint_listener: true, remove_paint_listener: true,
|
17
|
+
add_clickable_element: true, add_listener: true,
|
18
|
+
remove_listener: true, flush: true, redraw: true,
|
19
|
+
click_listener: click_listener,
|
20
|
+
clickable_elements: clickable_element)
|
21
21
|
allow(swt_double).to receive(:app).and_return(swt_double)
|
22
22
|
swt_double
|
23
23
|
end
|
24
24
|
|
25
25
|
let(:shoes_app) { double('shoes app', gui: swt_app, rotate: 0, style: {}, element_styles: {}) }
|
26
|
-
let(:parent) { double('parent', app: swt_app, add_child: true, real: true
|
26
|
+
let(:parent) { double('parent', app: swt_app, add_child: true, real: true,
|
27
|
+
absolute_left: 0, absolute_top: 0,
|
28
|
+
width: 200, height: 100, fixed_height?: true) }
|
27
29
|
let(:parent_dsl) {double("parent dsl", add_child: true, contents: [],
|
28
|
-
|
29
|
-
|
30
|
+
gui: parent, x_dimension: double.as_null_object,
|
31
|
+
y_dimension: double.as_null_object)}
|
30
32
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::ShellControlListener do
|
4
4
|
let(:app) {double 'SWT App', dsl: dsl_app, shell: shell, real: real}
|
@@ -15,7 +15,7 @@ describe Shoes::Swt::ShellControlListener do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
describe 'resize' do
|
18
|
-
let(:resize_callbacks){[block]}
|
18
|
+
let(:resize_callbacks) {[block]}
|
19
19
|
it 'calls the resize block' do
|
20
20
|
expect(block).to have_received(:call)
|
21
21
|
end
|
@@ -1,7 +1,6 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::ShoesLayout do
|
4
|
-
|
5
4
|
subject do
|
6
5
|
result = Shoes::Swt::ShoesLayout.new
|
7
6
|
result.gui_app = gui_app
|
@@ -10,17 +9,17 @@ describe Shoes::Swt::ShoesLayout do
|
|
10
9
|
|
11
10
|
let(:gui_app) { double('gui_app', dsl: dsl, real: real, shell: shell) }
|
12
11
|
let(:real) { double('real', set_size: nil,
|
13
|
-
|
12
|
+
location: location, :location= => nil) }
|
14
13
|
let(:size) { double('size', height: 0, width: 0) }
|
15
14
|
let(:location) { double('location', :y= => nil) }
|
16
15
|
let(:dsl) { double('dsl', top_slot: top_slot,
|
17
|
-
|
16
|
+
height: 100, width: 100) }
|
18
17
|
let(:top_slot) { double('top_slot', contents_alignment: 0,
|
19
|
-
|
18
|
+
:width= => nil, :height= => nil) }
|
20
19
|
let(:shell) { double('shell', vertical_bar: vertical_bar) }
|
21
20
|
let(:vertical_bar) { double('vertical_bar', :increment= => nil,
|
22
|
-
|
23
|
-
|
21
|
+
:visible= => nil, :maximum= => nil,
|
22
|
+
:thumb= => nil, thumb: 0) }
|
24
23
|
|
25
24
|
let(:scroll_height) { dsl.height * 2 }
|
26
25
|
|
data/spec/shoes/swt/slot_spec.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::Slot do
|
4
4
|
include_context "swt app"
|
5
5
|
let(:dsl) {instance_double Shoes::Slot, hidden?: true,
|
6
|
-
|
6
|
+
visible?: false, contents: [content] }
|
7
7
|
let(:content) {double 'content', show: true, hide: true}
|
8
8
|
|
9
9
|
subject {Shoes::Swt::Slot.new dsl, swt_app}
|
@@ -14,11 +14,17 @@ describe Shoes::Swt::Slot do
|
|
14
14
|
expect(swt_app.real).not_to have_received(:set_visible)
|
15
15
|
end
|
16
16
|
|
17
|
-
# spec may be deleted if we can hide
|
18
|
-
# on its own
|
17
|
+
# spec may be deleted if we can hide entire rather than their contents
|
19
18
|
it 'tries to hide the content' do
|
20
19
|
subject.update_visibility
|
21
20
|
expect(content).to have_received :hide
|
22
21
|
end
|
22
|
+
|
23
|
+
# spec may be deleted if we can hide entire rather than their contents
|
24
|
+
it 'only hides on visibility changes' do
|
25
|
+
subject.update_visibility
|
26
|
+
subject.update_visibility
|
27
|
+
expect(content).to have_received(:hide).once
|
28
|
+
end
|
23
29
|
end
|
24
30
|
end
|
@@ -13,6 +13,17 @@ RSpec.configure do |config|
|
|
13
13
|
# which then fail because some doubles are not made for the methods called
|
14
14
|
allow(Shoes::Swt::RedrawingAspect).to receive_messages new: true
|
15
15
|
end
|
16
|
+
|
17
|
+
# https://github.com/jruby/jruby/wiki/Persistence
|
18
|
+
# mostly to allow stubbing/mocking of said java classes
|
19
|
+
config.before(:all) do
|
20
|
+
Swt::Widgets::Shell.__persistent__ = true
|
21
|
+
Swt::Widgets::MessageBox.__persistent__ = true
|
22
|
+
Swt::Path.__persistent__ = true
|
23
|
+
Swt::Transform.__persistent__ = true
|
24
|
+
Swt::Font.__persistent__ = true
|
25
|
+
Swt::Widgets::Display.__persistent__ = true
|
26
|
+
end
|
16
27
|
end
|
17
28
|
|
18
29
|
# as we do not create real apps most of the time there are no redraws and we
|
data/spec/shoes/swt/star_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::Star do
|
4
4
|
include_context "swt app"
|
@@ -25,9 +25,9 @@ describe Shoes::Swt::Star do
|
|
25
25
|
|
26
26
|
let(:corners) { 0 }
|
27
27
|
let(:dsl) { double("dsl object", hidden: false, points: points, outer: outer,
|
28
|
-
|
29
|
-
|
30
|
-
|
28
|
+
inner: inner, element_width: outer * 2.0,
|
29
|
+
element_height: outer * 2.0, element_left: left,
|
30
|
+
element_top: top).as_null_object }
|
31
31
|
let(:shape) { Shoes::Swt::Star.new dsl, swt_app }
|
32
32
|
subject { Shoes::Swt::Star::Painter.new shape }
|
33
33
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::TextBlock::CursorPainter do
|
4
4
|
include_context "swt app"
|
@@ -6,8 +6,8 @@ describe Shoes::Swt::TextBlock::CursorPainter do
|
|
6
6
|
let(:dsl) { double("dsl", app: shoes_app, textcursor: textcursor, textcursor?: true) }
|
7
7
|
let(:textcursor) { double("textcursor", left:0, top: 0, height: 10) }
|
8
8
|
let(:segment_collection) { double('segment collection',
|
9
|
-
|
10
|
-
|
9
|
+
cursor_height: 12,
|
10
|
+
relative_text_position: 0)}
|
11
11
|
|
12
12
|
subject { Shoes::Swt::TextBlock::CursorPainter.new(dsl,
|
13
13
|
segment_collection) }
|
@@ -38,8 +38,8 @@ describe Shoes::Swt::TextBlock::CursorPainter do
|
|
38
38
|
let(:top) { 20 }
|
39
39
|
let(:position) { double(x: 5, y: 5) }
|
40
40
|
let(:first_segment) { double("first segment", text: "first",
|
41
|
-
|
42
|
-
|
41
|
+
get_location: position, height: 10,
|
42
|
+
element_left: left, element_top: top) }
|
43
43
|
|
44
44
|
before(:each) do
|
45
45
|
allow(textcursor).to receive(:move)
|
@@ -48,8 +48,8 @@ describe Shoes::Swt::TextBlock::CursorPainter do
|
|
48
48
|
|
49
49
|
context "with two segments" do
|
50
50
|
let(:second_segment) { double("second segment", text: "second",
|
51
|
-
|
52
|
-
|
51
|
+
get_location: position,
|
52
|
+
element_left: left, element_top: top + 100) }
|
53
53
|
before(:each) do
|
54
54
|
allow(dsl).to receive(:text).and_return(first_segment.text + second_segment.text)
|
55
55
|
end
|
@@ -1,18 +1,18 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::TextBlock::Fitter do
|
4
4
|
let(:dsl) { double('dsl', parent: parent_dsl, text: "Text goes here",
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
desired_width: 85, centered?: false,
|
6
|
+
absolute_left: 25, absolute_top: 75,
|
7
|
+
element_left: 26, element_top: 76,
|
8
|
+
margin_left: 1, margin_top: 1) }
|
9
9
|
|
10
10
|
let(:parent_dsl) { double('parent_dsl', parent: grandparent_dsl,
|
11
|
-
|
12
|
-
|
11
|
+
absolute_top: 0, absolute_left: 0, absolute_right: 100,
|
12
|
+
width: parent_width, height: 200) }
|
13
13
|
|
14
14
|
let(:grandparent_dsl) { double('grandparent_dsl', parent: app,
|
15
|
-
|
15
|
+
width: grandparent_width) }
|
16
16
|
|
17
17
|
let(:app) { double('app', width: app_width) }
|
18
18
|
|
@@ -101,7 +101,6 @@ describe Shoes::Swt::TextBlock::Fitter do
|
|
101
101
|
allow(segment).to receive(:position_at) { segment }
|
102
102
|
allow(segment).to receive(:spacing) { 4 }
|
103
103
|
allow(segment).to receive(:layout) { layout }
|
104
|
-
|
105
104
|
end
|
106
105
|
|
107
106
|
context "to one segment" do
|
@@ -1,13 +1,18 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::TextBlock::Painter do
|
4
4
|
include_context "swt app"
|
5
5
|
|
6
|
-
let(:
|
7
|
-
let(:
|
8
|
-
let(:
|
6
|
+
let(:parent) { double("parent", absolute_left: 0, absolute_top: 0, height: 100, width: 200) }
|
7
|
+
let(:dsl) { double("dsl", app: shoes_app, gui: gui, parent: parent, hidden?: false) }
|
8
|
+
let(:gui) { double("gui", dispose: nil, segments: segment_collection) }
|
9
9
|
let(:segment_collection) { double("segment collection", empty?: false) }
|
10
10
|
|
11
|
+
let(:event) { double("event", gc: graphics_context).as_null_object }
|
12
|
+
let(:graphics_context) { double("graphics context", set_antialias: nil,
|
13
|
+
set_line_cap: nil, set_transform: nil,
|
14
|
+
clipping: nil, set_clipping: nil) }
|
15
|
+
|
11
16
|
subject { Shoes::Swt::TextBlock::Painter.new(dsl) }
|
12
17
|
|
13
18
|
it "doesn't draw if hidden" do
|
@@ -31,6 +36,12 @@ describe Shoes::Swt::TextBlock::Painter do
|
|
31
36
|
subject.paintControl(event)
|
32
37
|
end
|
33
38
|
|
39
|
+
it "clips to parent" do
|
40
|
+
expect(segment_collection).to receive(:paint_control)
|
41
|
+
expect(graphics_context).to receive(:set_clipping).with(0, 0, 200, 100)
|
42
|
+
subject.paintControl(event)
|
43
|
+
end
|
44
|
+
|
34
45
|
it "paints" do
|
35
46
|
expect(segment_collection).to receive(:paint_control)
|
36
47
|
subject.paintControl(event)
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::TextFontFactory do
|
4
4
|
let(:font_details) {
|
5
5
|
{
|
6
|
-
:
|
7
|
-
:
|
8
|
-
:
|
6
|
+
name: "Helvetica",
|
7
|
+
size: 16,
|
8
|
+
styles: [::Swt::SWT::BOLD]
|
9
9
|
}
|
10
10
|
}
|
11
11
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::TextBlock::TextSegmentCollection do
|
4
4
|
include_context "swt app"
|
@@ -6,27 +6,27 @@ describe Shoes::Swt::TextBlock::TextSegmentCollection do
|
|
6
6
|
let(:first_segment) { create_segment("first", "first") }
|
7
7
|
let(:second_segment) { create_segment("second", "rest") }
|
8
8
|
let(:dsl) { double("dsl", font: "", size: 16, style:{},
|
9
|
-
|
9
|
+
text_styles: {(0..-1) => ["whatever"]}) }
|
10
10
|
|
11
11
|
let(:gc) { double("gc") }
|
12
12
|
let(:default_text_styles) {
|
13
13
|
{
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:
|
17
|
-
:
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
14
|
+
fg: :fg,
|
15
|
+
bg: :bg,
|
16
|
+
strikecolor: :strikecolor,
|
17
|
+
undercolor: :undercolor,
|
18
|
+
font_detail: {
|
19
|
+
name: "font name",
|
20
|
+
size: 12,
|
21
|
+
styles: [::Swt::SWT::NORMAL]
|
22
22
|
}
|
23
23
|
}
|
24
24
|
}
|
25
25
|
|
26
26
|
describe "with one segment" do
|
27
27
|
subject { Shoes::Swt::TextBlock::TextSegmentCollection.new(dsl,
|
28
|
-
|
29
|
-
|
28
|
+
[first_segment],
|
29
|
+
default_text_styles) }
|
30
30
|
|
31
31
|
before do
|
32
32
|
allow(dsl).to receive(:text) { first_segment.text }
|
@@ -130,8 +130,8 @@ describe Shoes::Swt::TextBlock::TextSegmentCollection do
|
|
130
130
|
|
131
131
|
describe "with two segments" do
|
132
132
|
subject { Shoes::Swt::TextBlock::TextSegmentCollection.new(dsl,
|
133
|
-
|
134
|
-
|
133
|
+
[first_segment, second_segment],
|
134
|
+
default_text_styles) }
|
135
135
|
|
136
136
|
before do
|
137
137
|
allow(dsl).to receive(:text) { first_segment.text + second_segment.text }
|
@@ -237,9 +237,8 @@ describe Shoes::Swt::TextBlock::TextSegmentCollection do
|
|
237
237
|
def create_segment(name, text)
|
238
238
|
bounds = double("bounds", x: 0, y: 0, height: 0)
|
239
239
|
layout = double(name, text: text,
|
240
|
-
|
241
|
-
|
242
|
-
|
240
|
+
:justify= => nil, :spacing= => nil, :alignment= => nil,
|
241
|
+
line_bounds: bounds, line_count: 1)
|
243
242
|
|
244
243
|
allow_any_instance_of(Shoes::Swt::TextFontFactory).to receive(:create_font)
|
245
244
|
|
@@ -256,7 +255,7 @@ describe Shoes::Swt::TextBlock::TextSegmentCollection do
|
|
256
255
|
Shoes::Link.new(shoes_app, [text])
|
257
256
|
end
|
258
257
|
|
259
|
-
def style_with(style={})
|
258
|
+
def style_with(style = {})
|
260
259
|
default_text_styles.merge(style)
|
261
260
|
end
|
262
261
|
|
@@ -1,11 +1,11 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Shoes::Swt::TextBlock::TextSegment do
|
4
4
|
let(:layout) { double("layout", text: "the text",
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
:alignment= => nil, :justify= => nil, :spacing= => nil,
|
6
|
+
:text= => nil, :width= => nil,
|
7
|
+
disposed?: false, dispose: nil,
|
8
|
+
set_style: nil, bounds: bounds) }
|
9
9
|
let(:bounds) { Java::OrgEclipseSwtGraphics::Rectangle.new(0, 0, 0, 0) }
|
10
10
|
let(:element_left) { 0 }
|
11
11
|
let(:element_top) { 0 }
|