glimmer-dsl-opal 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +57 -28
- data/VERSION +1 -1
- data/lib/glimmer-dsl-opal.rb +26 -11
- data/lib/glimmer/data_binding/element_binding.rb +1 -1
- data/lib/glimmer/data_binding/ext/observable_model.rb +4 -4
- data/lib/glimmer/data_binding/list_selection_binding.rb +1 -1
- data/lib/glimmer/data_binding/table_items_binding.rb +3 -3
- data/lib/glimmer/dsl/opal/column_properties_expression.rb +2 -2
- data/lib/glimmer/dsl/opal/combo_selection_data_binding_expression.rb +2 -2
- data/lib/glimmer/dsl/opal/dsl.rb +4 -16
- data/lib/glimmer/dsl/opal/layout_data_expression.rb +2 -2
- data/lib/glimmer/dsl/opal/{text_expression.rb → layout_expression.rb} +5 -5
- data/lib/glimmer/dsl/opal/list_selection_data_binding_expression.rb +2 -3
- data/lib/glimmer/dsl/opal/message_box_expression.rb +2 -2
- data/lib/glimmer/dsl/opal/shell_expression.rb +2 -2
- data/lib/glimmer/dsl/opal/table_expression.rb +2 -2
- data/lib/glimmer/dsl/opal/table_items_data_binding_expression.rb +2 -2
- data/lib/glimmer/dsl/opal/widget_expression.rb +23 -0
- data/lib/glimmer/opal/display_proxy.rb +3 -3
- data/lib/glimmer/opal/element_proxy.rb +11 -3
- data/lib/glimmer/swt/browser_proxy.rb +27 -0
- data/lib/glimmer/swt/button_proxy.rb +40 -0
- data/lib/glimmer/{opal/select_proxy.rb → swt/combo_proxy.rb} +14 -10
- data/lib/glimmer/{opal/div_proxy.rb → swt/composite_proxy.rb} +8 -6
- data/lib/glimmer/{opal → swt}/event_listener_proxy.rb +1 -1
- data/lib/glimmer/{opal → swt}/grid_layout_proxy.rb +5 -18
- data/lib/glimmer/swt/label_proxy.rb +30 -0
- data/lib/glimmer/{opal → swt}/layout_data_proxy.rb +3 -3
- data/lib/glimmer/swt/layout_proxy.rb +60 -0
- data/lib/glimmer/{opal → swt}/list_proxy.rb +16 -13
- data/lib/glimmer/{opal/modal.rb → swt/message_box_proxy.rb} +61 -9
- data/lib/glimmer/{opal → swt}/point.rb +1 -1
- data/lib/glimmer/{opal → swt}/property_owner.rb +1 -1
- data/lib/glimmer/swt/shell_proxy.rb +235 -0
- data/lib/glimmer/{opal/tab_folder.rb → swt/tab_folder_proxy.rb} +13 -14
- data/lib/glimmer/{opal/tab_item.rb → swt/tab_item_proxy.rb} +37 -34
- data/lib/glimmer/{opal/table_column.rb → swt/table_column_proxy.rb} +13 -7
- data/lib/glimmer/{opal/table_item.rb → swt/table_item_proxy.rb} +59 -48
- data/lib/glimmer/swt/table_proxy.rb +177 -0
- data/lib/glimmer/swt/text_proxy.rb +46 -0
- data/lib/glimmer/swt/widget_proxy.rb +389 -0
- data/lib/jquery.js +2 -0
- data/lib/samples/elaborate/contact_manager.rb +1 -1
- data/lib/samples/hello/hello_computed.rb +19 -19
- metadata +79 -55
- data/lib/glimmer/dsl/opal/browser_expression.rb +0 -17
- data/lib/glimmer/dsl/opal/button_expression.rb +0 -18
- data/lib/glimmer/dsl/opal/combo_expression.rb +0 -17
- data/lib/glimmer/dsl/opal/composite_expression.rb +0 -17
- data/lib/glimmer/dsl/opal/grid_layout_expression.rb +0 -17
- data/lib/glimmer/dsl/opal/label_expression.rb +0 -17
- data/lib/glimmer/dsl/opal/list_expression.rb +0 -17
- data/lib/glimmer/dsl/opal/tab_folder_expression.rb +0 -17
- data/lib/glimmer/dsl/opal/tab_item_expression.rb +0 -17
- data/lib/glimmer/opal/document_proxy.rb +0 -187
- data/lib/glimmer/opal/iframe_proxy.rb +0 -23
- data/lib/glimmer/opal/input_proxy.rb +0 -45
- data/lib/glimmer/opal/label_proxy.rb +0 -25
- data/lib/glimmer/opal/table_proxy.rb +0 -149
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'glimmer/opal/element_proxy'
|
2
|
-
|
3
|
-
module Glimmer
|
4
|
-
module Opal
|
5
|
-
class IframeProxy < ElementProxy
|
6
|
-
attr_reader :url
|
7
|
-
|
8
|
-
def url=(value)
|
9
|
-
@url = value
|
10
|
-
redraw
|
11
|
-
end
|
12
|
-
|
13
|
-
def dom
|
14
|
-
iframe_id = id
|
15
|
-
iframe_url = url
|
16
|
-
@dom ||= DOM {
|
17
|
-
iframe(src: iframe_url, frameBorder: 0) {
|
18
|
-
}
|
19
|
-
}
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'glimmer/opal/element_proxy'
|
2
|
-
|
3
|
-
module Glimmer
|
4
|
-
module Opal
|
5
|
-
class InputProxy < ElementProxy
|
6
|
-
attr_reader :text
|
7
|
-
|
8
|
-
def text=(value)
|
9
|
-
@text = value
|
10
|
-
redraw
|
11
|
-
end
|
12
|
-
|
13
|
-
def observation_request_to_event_mapping
|
14
|
-
{
|
15
|
-
'on_widget_selected' => {
|
16
|
-
event: 'click'
|
17
|
-
},
|
18
|
-
'on_modify_text' => {
|
19
|
-
event: 'keyup',
|
20
|
-
event_handler: -> (event_listener) {
|
21
|
-
-> (event) {
|
22
|
-
if args.last[:type] == 'text'
|
23
|
-
@text = event.target.value
|
24
|
-
event_listener.call(event)
|
25
|
-
end
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
30
|
-
end
|
31
|
-
|
32
|
-
def dom
|
33
|
-
input_text = @text
|
34
|
-
input_id = id
|
35
|
-
input_style = css
|
36
|
-
input_args = @args.last
|
37
|
-
input_disabled = @enabled ? {} : {'disabled': 'disabled'}
|
38
|
-
input_args = input_args.merge(type: 'password') if has_style?(:password)
|
39
|
-
@dom ||= DOM {
|
40
|
-
input input_args.merge(id: input_id, style: input_style, value: input_text, style: 'min-width: 27px;').merge(input_disabled)
|
41
|
-
}
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'glimmer/opal/element_proxy'
|
2
|
-
|
3
|
-
module Glimmer
|
4
|
-
module Opal
|
5
|
-
class LabelProxy < ElementProxy
|
6
|
-
attr_reader :text
|
7
|
-
|
8
|
-
def text=(value)
|
9
|
-
@text = value
|
10
|
-
redraw
|
11
|
-
end
|
12
|
-
|
13
|
-
def dom
|
14
|
-
label_text = @text
|
15
|
-
label_id = id
|
16
|
-
label_style = css
|
17
|
-
@dom ||= DOM {
|
18
|
-
label(id: label_id, style: label_style) {
|
19
|
-
label_text
|
20
|
-
}
|
21
|
-
}
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,149 +0,0 @@
|
|
1
|
-
require 'glimmer/opal/element_proxy'
|
2
|
-
require 'glimmer/opal/table_column'
|
3
|
-
|
4
|
-
module Glimmer
|
5
|
-
module Opal
|
6
|
-
class TableProxy < ElementProxy
|
7
|
-
attr_reader :columns, :selection
|
8
|
-
attr_accessor :column_properties
|
9
|
-
alias items children
|
10
|
-
|
11
|
-
def initialize(parent, args)
|
12
|
-
super(parent, args)
|
13
|
-
@columns = []
|
14
|
-
@children = []
|
15
|
-
@selection = []
|
16
|
-
end
|
17
|
-
|
18
|
-
# Only table_columns may be added as children
|
19
|
-
def add_child(child)
|
20
|
-
if child.is_a?(TableColumn)
|
21
|
-
@columns << child
|
22
|
-
columns_dom << child.dom
|
23
|
-
else
|
24
|
-
@children << child
|
25
|
-
items_dom << child.dom
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def remove_all
|
30
|
-
items.clear
|
31
|
-
@items_dom = nil
|
32
|
-
end
|
33
|
-
|
34
|
-
def selection=(new_selection)
|
35
|
-
changed = (@selection + new_selection) - (@selection & new_selection)
|
36
|
-
@selection = new_selection
|
37
|
-
changed.each(&:redraw)
|
38
|
-
end
|
39
|
-
|
40
|
-
def items=(new_items)
|
41
|
-
@children = new_items
|
42
|
-
redraw
|
43
|
-
end
|
44
|
-
|
45
|
-
def search(&condition)
|
46
|
-
items.select {|item| condition.nil? || condition.call(item)}
|
47
|
-
end
|
48
|
-
|
49
|
-
def index_of(item)
|
50
|
-
items.index(item)
|
51
|
-
end
|
52
|
-
|
53
|
-
def select(index, meta = false)
|
54
|
-
new_selection = @selection.clone
|
55
|
-
selected_item = items[index]
|
56
|
-
if @selection.include?(selected_item)
|
57
|
-
new_selection.delete(selected_item) if meta
|
58
|
-
else
|
59
|
-
new_selection = [] if !meta || (!has_style?(:multi) && @selection.to_a.size >= 1)
|
60
|
-
new_selection << selected_item
|
61
|
-
end
|
62
|
-
self.selection = new_selection
|
63
|
-
end
|
64
|
-
|
65
|
-
def edit_table_item(table_item, column_index)
|
66
|
-
table_item.edit(column_index)
|
67
|
-
end
|
68
|
-
|
69
|
-
def selector
|
70
|
-
super + ' tbody'
|
71
|
-
end
|
72
|
-
|
73
|
-
def observation_request_to_event_mapping
|
74
|
-
{
|
75
|
-
'on_mouse_down' => {
|
76
|
-
event: 'mousedown',
|
77
|
-
event_handler: -> (event_listener) {
|
78
|
-
-> (event) {
|
79
|
-
event.singleton_class.send(:define_method, :table_item=) do |item|
|
80
|
-
@table_item = item
|
81
|
-
end
|
82
|
-
event.singleton_class.send(:define_method, :table_item) do
|
83
|
-
@table_item
|
84
|
-
end
|
85
|
-
table_row = event.target.ancestors('tr').first
|
86
|
-
table_data = event.target.ancestors('td').first
|
87
|
-
event.table_item = items.detect {|item| item.id == table_row.attributes['id']}
|
88
|
-
event.singleton_class.send(:define_method, :column_index) do
|
89
|
-
(table_data || event.target).attributes['data-column-index']
|
90
|
-
end
|
91
|
-
event_listener.call(event)
|
92
|
-
}
|
93
|
-
}
|
94
|
-
}
|
95
|
-
}
|
96
|
-
end
|
97
|
-
|
98
|
-
def redraw
|
99
|
-
if @dom
|
100
|
-
old_dom = @dom
|
101
|
-
@dom = nil
|
102
|
-
old_dom.replace dom
|
103
|
-
else
|
104
|
-
dom
|
105
|
-
end
|
106
|
-
if @last_redrawn_children != @children
|
107
|
-
items_dom.clear
|
108
|
-
@last_redrawn_children = @children
|
109
|
-
@children = []
|
110
|
-
@last_redrawn_children.each do |child|
|
111
|
-
add_child(child)
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
def columns_dom
|
117
|
-
@columns_dom ||= DOM {
|
118
|
-
tr {
|
119
|
-
}
|
120
|
-
}
|
121
|
-
end
|
122
|
-
|
123
|
-
def thead_dom
|
124
|
-
@thead_dom ||= DOM {
|
125
|
-
thead {
|
126
|
-
}
|
127
|
-
}.tap {|the_dom| the_dom << columns_dom }
|
128
|
-
end
|
129
|
-
|
130
|
-
def items_dom
|
131
|
-
@items_dom ||= DOM {
|
132
|
-
tbody {
|
133
|
-
}
|
134
|
-
}
|
135
|
-
end
|
136
|
-
|
137
|
-
def dom
|
138
|
-
table_id = id
|
139
|
-
table_id_style = css
|
140
|
-
table_id_css_classes = css_classes
|
141
|
-
table_id_css_classes_string = table_id_css_classes.to_a.join(' ')
|
142
|
-
@dom ||= DOM {
|
143
|
-
table(id: table_id, style: table_id_style, class: table_id_css_classes_string) {
|
144
|
-
}
|
145
|
-
}.tap {|the_dom| the_dom >> thead_dom }.tap {|the_dom| the_dom << items_dom }
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|