glimmer-dsl-opal 0.0.9 → 0.1.0

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.
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