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.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +57 -28
  4. data/VERSION +1 -1
  5. data/lib/glimmer-dsl-opal.rb +26 -11
  6. data/lib/glimmer/data_binding/element_binding.rb +1 -1
  7. data/lib/glimmer/data_binding/ext/observable_model.rb +4 -4
  8. data/lib/glimmer/data_binding/list_selection_binding.rb +1 -1
  9. data/lib/glimmer/data_binding/table_items_binding.rb +3 -3
  10. data/lib/glimmer/dsl/opal/column_properties_expression.rb +2 -2
  11. data/lib/glimmer/dsl/opal/combo_selection_data_binding_expression.rb +2 -2
  12. data/lib/glimmer/dsl/opal/dsl.rb +4 -16
  13. data/lib/glimmer/dsl/opal/layout_data_expression.rb +2 -2
  14. data/lib/glimmer/dsl/opal/{text_expression.rb → layout_expression.rb} +5 -5
  15. data/lib/glimmer/dsl/opal/list_selection_data_binding_expression.rb +2 -3
  16. data/lib/glimmer/dsl/opal/message_box_expression.rb +2 -2
  17. data/lib/glimmer/dsl/opal/shell_expression.rb +2 -2
  18. data/lib/glimmer/dsl/opal/table_expression.rb +2 -2
  19. data/lib/glimmer/dsl/opal/table_items_data_binding_expression.rb +2 -2
  20. data/lib/glimmer/dsl/opal/widget_expression.rb +23 -0
  21. data/lib/glimmer/opal/display_proxy.rb +3 -3
  22. data/lib/glimmer/opal/element_proxy.rb +11 -3
  23. data/lib/glimmer/swt/browser_proxy.rb +27 -0
  24. data/lib/glimmer/swt/button_proxy.rb +40 -0
  25. data/lib/glimmer/{opal/select_proxy.rb → swt/combo_proxy.rb} +14 -10
  26. data/lib/glimmer/{opal/div_proxy.rb → swt/composite_proxy.rb} +8 -6
  27. data/lib/glimmer/{opal → swt}/event_listener_proxy.rb +1 -1
  28. data/lib/glimmer/{opal → swt}/grid_layout_proxy.rb +5 -18
  29. data/lib/glimmer/swt/label_proxy.rb +30 -0
  30. data/lib/glimmer/{opal → swt}/layout_data_proxy.rb +3 -3
  31. data/lib/glimmer/swt/layout_proxy.rb +60 -0
  32. data/lib/glimmer/{opal → swt}/list_proxy.rb +16 -13
  33. data/lib/glimmer/{opal/modal.rb → swt/message_box_proxy.rb} +61 -9
  34. data/lib/glimmer/{opal → swt}/point.rb +1 -1
  35. data/lib/glimmer/{opal → swt}/property_owner.rb +1 -1
  36. data/lib/glimmer/swt/shell_proxy.rb +235 -0
  37. data/lib/glimmer/{opal/tab_folder.rb → swt/tab_folder_proxy.rb} +13 -14
  38. data/lib/glimmer/{opal/tab_item.rb → swt/tab_item_proxy.rb} +37 -34
  39. data/lib/glimmer/{opal/table_column.rb → swt/table_column_proxy.rb} +13 -7
  40. data/lib/glimmer/{opal/table_item.rb → swt/table_item_proxy.rb} +59 -48
  41. data/lib/glimmer/swt/table_proxy.rb +177 -0
  42. data/lib/glimmer/swt/text_proxy.rb +46 -0
  43. data/lib/glimmer/swt/widget_proxy.rb +389 -0
  44. data/lib/jquery.js +2 -0
  45. data/lib/samples/elaborate/contact_manager.rb +1 -1
  46. data/lib/samples/hello/hello_computed.rb +19 -19
  47. metadata +79 -55
  48. data/lib/glimmer/dsl/opal/browser_expression.rb +0 -17
  49. data/lib/glimmer/dsl/opal/button_expression.rb +0 -18
  50. data/lib/glimmer/dsl/opal/combo_expression.rb +0 -17
  51. data/lib/glimmer/dsl/opal/composite_expression.rb +0 -17
  52. data/lib/glimmer/dsl/opal/grid_layout_expression.rb +0 -17
  53. data/lib/glimmer/dsl/opal/label_expression.rb +0 -17
  54. data/lib/glimmer/dsl/opal/list_expression.rb +0 -17
  55. data/lib/glimmer/dsl/opal/tab_folder_expression.rb +0 -17
  56. data/lib/glimmer/dsl/opal/tab_item_expression.rb +0 -17
  57. data/lib/glimmer/opal/document_proxy.rb +0 -187
  58. data/lib/glimmer/opal/iframe_proxy.rb +0 -23
  59. data/lib/glimmer/opal/input_proxy.rb +0 -45
  60. data/lib/glimmer/opal/label_proxy.rb +0 -25
  61. 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