glimmer 0.1.0.0 → 0.1.2
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/.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
|
+
|