glimmer 0.1.0.0 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.rvmrc +1 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +20 -0
- data/README.markdown +54 -0
- data/Rakefile +54 -0
- data/VERSION +1 -0
- data/bin/glimmer +132 -0
- data/glimmer.gemspec +145 -0
- data/images/Bitter-sweet.jpg +0 -0
- data/{src → lib}/command_handler.rb +7 -10
- data/{src → lib}/command_handler_chain_factory.rb +29 -22
- data/{src → lib}/command_handler_chain_link.rb +19 -22
- data/{src → lib}/command_handlers.rb +29 -26
- data/{src → lib}/command_handlers/bind_command_handler.rb +25 -28
- data/lib/command_handlers/combo_selection_data_binding_command_handler.rb +39 -0
- data/{src → lib}/command_handlers/data_binding_command_handler.rb +61 -64
- data/lib/command_handlers/list_selection_data_binding_command_handler.rb +42 -0
- data/lib/command_handlers/models/list_observer.rb +31 -0
- data/{src → lib}/command_handlers/models/model_observer.rb +28 -25
- data/{src → lib}/command_handlers/models/observable_array.rb +53 -46
- data/lib/command_handlers/models/observable_model.rb +61 -0
- data/{src → lib}/command_handlers/models/r_runnable.rb +11 -14
- data/{src → lib}/command_handlers/models/r_shell.rb +23 -26
- data/lib/command_handlers/models/r_tab_item_composite.rb +25 -0
- data/{src → lib}/command_handlers/models/r_widget.rb +16 -14
- data/lib/command_handlers/models/r_widget_listener.rb +9 -0
- data/{src → lib}/command_handlers/models/r_widget_packages.rb +5 -8
- data/{src → lib}/command_handlers/models/table_items_updater.rb +38 -39
- data/{src → lib}/command_handlers/models/widget_observer.rb +4 -6
- data/{src → lib}/command_handlers/shell_command_handler.rb +14 -17
- data/{src → lib}/command_handlers/swt_constant_command_handler.rb +18 -21
- data/lib/command_handlers/tab_item_command_handler.rb +22 -0
- data/{src → lib}/command_handlers/table_column_properties_data_binding_command_handler.rb +20 -23
- data/{src → lib}/command_handlers/table_items_data_binding_command_handler.rb +26 -29
- data/{src → lib}/command_handlers/widget_command_handler.rb +22 -25
- data/{src → lib}/command_handlers/widget_listener_command_handler.rb +36 -34
- data/{src → lib}/command_handlers/widget_method_command_handler.rb +18 -21
- data/{src → lib}/glimmer.rb +52 -45
- data/lib/parent.rb +5 -0
- data/{src → lib}/shine.rb +21 -24
- data/{src → lib}/xml_command_handlers.rb +15 -18
- data/{src → lib}/xml_command_handlers/html_command_handler.rb +45 -49
- data/{src → lib}/xml_command_handlers/models/depth_first_search_iterator.rb +17 -20
- data/{src → lib}/xml_command_handlers/models/name_space_visitor.rb +17 -20
- data/{src → lib}/xml_command_handlers/models/node.rb +80 -83
- data/{src → lib}/xml_command_handlers/models/node_visitor.rb +8 -11
- data/{src → lib}/xml_command_handlers/models/xml_visitor.rb +58 -61
- data/{src → lib}/xml_command_handlers/xml_command_handler.rb +18 -22
- data/{src → lib}/xml_command_handlers/xml_name_space_command_handler.rb +31 -34
- data/{src → lib}/xml_command_handlers/xml_tag_command_handler.rb +23 -26
- data/{src → lib}/xml_command_handlers/xml_text_command_handler.rb +19 -22
- data/samples/contactmanager/contact.rb +0 -3
- data/samples/contactmanager/contact_manager.rb +1 -4
- data/samples/contactmanager/contact_manager_presenter.rb +0 -3
- data/samples/contactmanager/contact_repository.rb +0 -3
- data/samples/hello_combo.rb +32 -0
- data/samples/hello_world.rb +1 -4
- data/samples/login.rb +1 -4
- data/samples/tictactoe/tic_tac_toe.rb +2 -5
- data/samples/tictactoe/tic_tac_toe_board.rb +0 -3
- data/test/glimmer_combo_data_binding_test.rb +131 -0
- data/test/glimmer_constant_test.rb +6 -11
- data/test/glimmer_data_binding_test.rb +16 -16
- data/test/glimmer_list_data_binding_test.rb +223 -0
- data/test/glimmer_listeners_test.rb +6 -6
- data/test/glimmer_shine_data_binding_test.rb +7 -6
- data/test/glimmer_tab_item_test.rb +61 -0
- data/test/glimmer_table_data_binding_test.rb +7 -20
- data/test/glimmer_test.rb +18 -13
- data/test/helper.rb +21 -0
- data/test/observable_model_test.rb +2 -4
- data/test/r_widget_test.rb +5 -5
- data/test/samples/contactmanager/contact_manager_presenter_test.rb +1 -4
- data/test/samples/tictactoe/tic_tac_toe_test.rb +1 -4
- data/test/xml/glimmer_xml_test.rb +43 -43
- metadata +210 -105
- data/COPYING.LGPL +0 -504
- data/README +0 -27
- data/src/command_handlers/models/observable_model.rb +0 -35
- data/src/command_handlers/models/r_widget_listener.rb +0 -12
- data/src/parent.rb +0 -8
- data/src/swt.rb +0 -10
- data/src/xml.rb +0 -10
@@ -1,22 +1,18 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
Node.new(parent, command_symbol.to_s, attributes, &block)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../command_handler"
|
2
|
+
require File.dirname(__FILE__) + "/models/node"
|
3
|
+
|
4
|
+
class XmlCommandHandler
|
5
|
+
include CommandHandler
|
6
|
+
|
7
|
+
def can_handle?(parent, command_symbol, *args, &block)
|
8
|
+
(parent == nil or parent.is_a?(Node)) and
|
9
|
+
(args.size == 0 or ((args.size == 1) and ((args[0].is_a?(Hash)) or (args[0].is_a?(Hash)))))
|
10
|
+
end
|
11
|
+
|
12
|
+
def do_handle(parent, command_symbol, *args, &block)
|
13
|
+
attributes = Hash.new
|
14
|
+
attributes = args[0] if (args.size == 1)
|
15
|
+
Node.new(parent, command_symbol.to_s, attributes, &block)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -1,34 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
require File.dirname(__FILE__) + "
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
(
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../command_handler"
|
2
|
+
require File.dirname(__FILE__) + "/models/node"
|
3
|
+
require File.dirname(__FILE__) + "/models/depth_first_search_iterator"
|
4
|
+
require File.dirname(__FILE__) + "/models/name_space_visitor"
|
5
|
+
|
6
|
+
class XmlNameSpaceCommandHandler
|
7
|
+
include CommandHandler, Glimmer
|
8
|
+
|
9
|
+
def can_handle?(parent, command_symbol, *args, &block)
|
10
|
+
(parent == nil or parent.is_a?(Node)) and
|
11
|
+
(command_symbol.to_s == "name_space")
|
12
|
+
(args.size == 1) and
|
13
|
+
(args[0].is_a?(Symbol)) and
|
14
|
+
block
|
15
|
+
end
|
16
|
+
|
17
|
+
def do_handle(parent, command_symbol, *args, &block)
|
18
|
+
node = block.call
|
19
|
+
unless node.is_a?(String)
|
20
|
+
name_space_visitor = NameSpaceVisitor.new(args[0].to_s)
|
21
|
+
DepthFirstSearchIterator.new(node, name_space_visitor).iterate
|
22
|
+
def node.process_block(block)
|
23
|
+
puts 'block'
|
24
|
+
#NOOP
|
25
|
+
end
|
26
|
+
end
|
27
|
+
parent.children << node if parent and !parent.children.include?(node)
|
28
|
+
node
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -1,26 +1,23 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
attributes
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
end
|
1
|
+
require "facets"
|
2
|
+
require File.dirname(__FILE__) + "/../command_handler"
|
3
|
+
require File.dirname(__FILE__) + "/models/node"
|
4
|
+
|
5
|
+
class XmlTagCommandHandler
|
6
|
+
include CommandHandler
|
7
|
+
|
8
|
+
def can_handle?(parent, command_symbol, *args, &block)
|
9
|
+
(parent == nil or parent.is_a?(Node)) and
|
10
|
+
(command_symbol.to_s == "tag") and
|
11
|
+
((args.size == 1) and ((args[0].is_a?(Hash)) or (args[0].is_a?(Hash)))) and
|
12
|
+
args[0].include?(:_name)
|
13
|
+
end
|
14
|
+
|
15
|
+
def do_handle(parent, command_symbol, *args, &block)
|
16
|
+
attributes = nil
|
17
|
+
attributes = args[0] if (args.size == 1)
|
18
|
+
tag_name = attributes[:_name]
|
19
|
+
attributes.delete(:_name)
|
20
|
+
Node.new(parent, tag_name, attributes, &block)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -1,22 +1,19 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
1
|
+
require File.dirname(__FILE__) + "/../command_handler"
|
2
|
+
require File.dirname(__FILE__) + "/models/node"
|
3
|
+
|
4
|
+
class XmlTextCommandHandler
|
5
|
+
include CommandHandler
|
6
|
+
|
7
|
+
def can_handle?(parent, command_symbol, *args, &block)
|
8
|
+
(parent == nil or parent.is_a?(Node)) and
|
9
|
+
(command_symbol.to_s == "text") and
|
10
|
+
((args.size == 1) and (args[0].is_a?(String))) and
|
11
|
+
!block
|
12
|
+
end
|
13
|
+
|
14
|
+
def do_handle(parent, command_symbol, *args, &block)
|
15
|
+
parent.children << args[0] if parent
|
16
|
+
args[0]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -1,8 +1,5 @@
|
|
1
|
-
# Copyright (C) 2007-2008 Annas Al Maleh
|
2
|
-
# Licensed under the LGPL. See /COPYING.LGPL for more details.
|
3
|
-
|
4
1
|
require File.dirname(__FILE__) + "/contact_manager_presenter"
|
5
|
-
require File.dirname(__FILE__) + "/../../
|
2
|
+
require File.dirname(__FILE__) + "/../../lib/glimmer"
|
6
3
|
|
7
4
|
class RWidget
|
8
5
|
include_package 'org.eclipse.jface.viewers'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/../lib/glimmer"
|
2
|
+
|
3
|
+
class Person
|
4
|
+
attr_accessor :country, :country_options
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
self.country_options=["", "Canada", "US", "Mexico"]
|
8
|
+
self.country = "Canada"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class HelloCombo
|
13
|
+
include Glimmer
|
14
|
+
def launch
|
15
|
+
person = Person.new
|
16
|
+
shell {
|
17
|
+
composite {
|
18
|
+
combo(read_only) {
|
19
|
+
selection bind(person, :country)
|
20
|
+
}
|
21
|
+
button {
|
22
|
+
text "Reset"
|
23
|
+
on_widget_selected do
|
24
|
+
person.country = "Canada"
|
25
|
+
end
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}.open
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
HelloCombo.new.launch
|
data/samples/hello_world.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
|
-
# Copyright (C) 2007-2008 Annas Al Maleh
|
2
|
-
# Licensed under the LGPL. See /COPYING.LGPL for more details.
|
3
|
-
|
4
1
|
require "java"
|
5
|
-
require File.dirname(__FILE__) + "/../
|
2
|
+
require File.dirname(__FILE__) + "/../lib/glimmer"
|
6
3
|
|
7
4
|
class HelloWorld
|
8
5
|
include_package 'org.eclipse.swt'
|
data/samples/login.rb
CHANGED
@@ -1,9 +1,6 @@
|
|
1
|
-
# Copyright (C) 2007-2008 Annas Al Maleh
|
2
|
-
# Licensed under the LGPL. See /COPYING.LGPL for more details.
|
3
|
-
|
4
1
|
require "java"
|
5
2
|
require "observer"
|
6
|
-
require File.dirname(__FILE__) + "/../
|
3
|
+
require File.dirname(__FILE__) + "/../lib/glimmer"
|
7
4
|
|
8
5
|
#Presents login screen data
|
9
6
|
class LoginPresenter
|
@@ -1,7 +1,4 @@
|
|
1
|
-
|
2
|
-
# Licensed under the LGPL. See /COPYING.LGPL for more details.
|
3
|
-
|
4
|
-
require File.dirname(__FILE__) + "/../../src/swt"
|
1
|
+
require File.dirname(__FILE__) + "/../../lib/glimmer"
|
5
2
|
require File.dirname(__FILE__) + "/tic_tac_toe_board"
|
6
3
|
|
7
4
|
|
@@ -22,7 +19,7 @@ class TicTacToe
|
|
22
19
|
layout GridLayout.new(3,true)
|
23
20
|
(1..3).each { |row_number|
|
24
21
|
(1..3).each { |column_number|
|
25
|
-
button {
|
22
|
+
button {
|
26
23
|
layout_data GridData.new(fill, fill, true, true)
|
27
24
|
text bind(@tic_tac_toe_board.box(row_number, column_number), :sign)
|
28
25
|
enabled bind(@tic_tac_toe_board.box(row_number, column_number), :empty)
|
@@ -0,0 +1,131 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/helper"
|
2
|
+
|
3
|
+
class GlimmerComboDataBindingTest < Test::Unit::TestCase
|
4
|
+
include Glimmer
|
5
|
+
|
6
|
+
include_package 'org.eclipse.swt'
|
7
|
+
include_package 'org.eclipse.swt.widgets'
|
8
|
+
include_package 'org.eclipse.swt.layout'
|
9
|
+
|
10
|
+
def setup
|
11
|
+
dsl :swt
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
@target.display.dispose if @target.display
|
16
|
+
end
|
17
|
+
|
18
|
+
class Person
|
19
|
+
attr_accessor :country, :country_options
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
self.country_options=["", "Canada", "US", "Mexico"]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_data_binding_selection_property
|
27
|
+
person = Person.new
|
28
|
+
|
29
|
+
@target = shell {
|
30
|
+
@combo = combo {
|
31
|
+
selection bind(person, :country)
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
assert_equal 4, @combo.widget.item_count
|
36
|
+
assert_equal -1, @combo.widget.selection_index
|
37
|
+
assert_equal "", @combo.widget.text
|
38
|
+
|
39
|
+
person.country = "Canada"
|
40
|
+
|
41
|
+
assert_equal "Canada", @combo.widget.text
|
42
|
+
|
43
|
+
person.country_options << "France"
|
44
|
+
|
45
|
+
assert_equal 5, @combo.widget.item_count
|
46
|
+
|
47
|
+
person.country_options=["", "Canada", "US", "Mexico", "Russia", "France"]
|
48
|
+
|
49
|
+
assert_equal 6, @combo.widget.item_count
|
50
|
+
|
51
|
+
person.country_options << "Italy"
|
52
|
+
person.country_options << "Germany"
|
53
|
+
person.country_options << "Australia"
|
54
|
+
|
55
|
+
assert_equal 9, @combo.widget.item_count
|
56
|
+
|
57
|
+
assert_equal "", @combo.widget.text
|
58
|
+
|
59
|
+
@combo.widget.select(2)
|
60
|
+
@combo.widget.notifyListeners(SWT::Selection, nil)
|
61
|
+
assert_equal "US", person.country
|
62
|
+
|
63
|
+
person.country = "Canada"
|
64
|
+
|
65
|
+
assert_equal "Canada", @combo.widget.text
|
66
|
+
|
67
|
+
person.country = "Russia"
|
68
|
+
|
69
|
+
assert_equal "Russia", @combo.widget.text
|
70
|
+
|
71
|
+
person.country = ""
|
72
|
+
|
73
|
+
assert_equal "", @combo.widget.text
|
74
|
+
|
75
|
+
person.country = "Japan"
|
76
|
+
|
77
|
+
assert_equal "Japan", @combo.widget.text
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_read_only_widget_data_binding_selection_property
|
81
|
+
person = Person.new
|
82
|
+
person.country = "Canada"
|
83
|
+
|
84
|
+
@target = shell {
|
85
|
+
@combo = combo(read_only) {
|
86
|
+
selection bind(person, :country)
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
assert_equal 4, @combo.widget.item_count
|
91
|
+
assert_equal "Canada", @combo.widget.text
|
92
|
+
|
93
|
+
person.country_options << "France"
|
94
|
+
|
95
|
+
assert_equal 5, @combo.widget.item_count
|
96
|
+
|
97
|
+
person.country_options=["", "Canada", "US", "Mexico", "Russia", "France"]
|
98
|
+
|
99
|
+
assert_equal 6, @combo.widget.item_count
|
100
|
+
|
101
|
+
person.country_options << "Italy"
|
102
|
+
person.country_options << "Germany"
|
103
|
+
person.country_options << "Australia"
|
104
|
+
|
105
|
+
assert_equal 9, @combo.widget.item_count
|
106
|
+
|
107
|
+
assert_equal "", @combo.widget.text
|
108
|
+
|
109
|
+
@combo.widget.select(8)
|
110
|
+
@combo.widget.notifyListeners(SWT::Selection, nil)
|
111
|
+
assert_equal "Australia", person.country
|
112
|
+
|
113
|
+
person.country = "Canada"
|
114
|
+
|
115
|
+
assert_equal "Canada", @combo.widget.text
|
116
|
+
|
117
|
+
person.country = "Russia"
|
118
|
+
|
119
|
+
assert_equal "Russia", @combo.widget.text
|
120
|
+
|
121
|
+
person.country = ""
|
122
|
+
|
123
|
+
assert_equal "", @combo.widget.text
|
124
|
+
|
125
|
+
person.country = "Japan"
|
126
|
+
|
127
|
+
assert_equal "", @combo.widget.text
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|