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.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b86a4ab59fb47c8fd2e21c3f88d790942b19461e159b613edab602c250c0d9e7
|
4
|
+
data.tar.gz: 121b3220b1bdb4848ce065564f108bc03f0d8145a2e35d07936ed69f66d52e8a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5a6fd8bb27c826ffbfa8baf5a0ab006f5756125eae25cea4fd08911c65736899520c8bbe1fafa6e1e9941ad1902dc90a62630170a2c0afec9f0420e4ec3911c
|
7
|
+
data.tar.gz: dfb9b7195d02486125efff51d9abb1c3c14ba62e9450f597d1508418155962eef0e00a7e2149f501de0f5fdf589fc4c71038392b743c42a43b9c83e914264462
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,18 @@
|
|
1
|
-
# <img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=
|
1
|
+
# [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for Opal 0.0.9 (Webify Desktop Apps)
|
2
2
|
[](http://badge.fury.io/rb/glimmer-dsl-opal)
|
3
3
|
[](https://gitter.im/AndyObtiva/glimmer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
4
4
|
|
5
|
-
Glimmer DSL for Opal is an experimental web GUI adaptor for [Glimmer](https://github.com/AndyObtiva/glimmer) desktop apps (i.e. apps built with [Glimmer
|
5
|
+
[Glimmer](https://github.com/AndyObtiva/glimmer) DSL for [Opal](https://opalrb.com/) is an experimental proof-of-concept web GUI adaptor for [Glimmer](https://github.com/AndyObtiva/glimmer) desktop apps (i.e. apps built with [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt)). It webifies them via [Rails](https://rubyonrails.org/) and [Opal](https://opalrb.com/), allowing Ruby desktop apps to run on the web without changing a line of code. Apps may then be custom-styled for the web via standard CSS.
|
6
6
|
|
7
|
-
|
7
|
+
Glimmer DSL for Opal successfully reuses the entire [Glimmer](https://github.com/AndyObtiva/glimmer) core DSL engine in [Opal](https://opalrb.com/) Ruby, and as such inherits the full range of powerful Glimmer DSL [data-binding](https://github.com/AndyObtiva/glimmer#data-binding) capabilities, such as:
|
8
|
+
- `bind(model, property)` basic data-binding
|
9
|
+
- `bind(model, property, computed_by: procs)` computed data-binding
|
10
|
+
- `bind(model, property, on_read:, on_write:)` data-binding converters
|
11
|
+
- `bind(model, property), column_properties(columns)` `table` data-binding
|
12
|
+
- Automatically inferred `property_options` for `list` and `combo` data-binding
|
13
|
+
- `observe(model, property)` free-form observing
|
14
|
+
|
15
|
+
NOTE: Alpha Version 0.1.0 only supports bare-minimum capabilities for the following [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt) [samples](https://github.com/AndyObtiva/glimmer#samples):
|
8
16
|
- [Hello, World!](#hello-world)
|
9
17
|
- [Hello, Combo!](#hello-combo)
|
10
18
|
- [Hello, Computed!](#hello-computed)
|
@@ -16,7 +24,7 @@ NOTE: Alpha Version 0.0.9 only supports bare-minimum capabilities for the follow
|
|
16
24
|
- [Tic Tac Toe](#tic-tac-toe)
|
17
25
|
- [Contact Manager](#contact-manager)
|
18
26
|
|
19
|
-
Other Glimmer DSL gems:
|
27
|
+
Other [Glimmer](https://github.com/AndyObtiva/glimmer) DSL gems:
|
20
28
|
- [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (Desktop GUI)
|
21
29
|
- [glimmer-dsl-xml](https://github.com/AndyObtiva/glimmer-dsl-xml): Glimmer DSL for XML (& HTML)
|
22
30
|
- [glimmer-dsl-css](https://github.com/AndyObtiva/glimmer-dsl-css): Glimmer DSL for CSS (Cascading Style Sheets)
|
@@ -49,10 +57,11 @@ The following keywords from [glimmer-dsl-swt](https://github.com/AndyObtiva/glim
|
|
49
57
|
|
50
58
|
- Rails 5: [https://github.com/rails/rails/tree/5-2-stable](https://github.com/rails/rails/tree/5-2-stable)
|
51
59
|
- Opal 1: [https://github.com/opal/opal-rails](https://github.com/opal/opal-rails)
|
60
|
+
- jQuery 3: [https://code.jquery.com/](https://code.jquery.com/) (jQuery 3.5.1 is included in the glimmer-dsl-opal rubygem)
|
52
61
|
|
53
62
|
## Setup
|
54
63
|
|
55
|
-
(NOTE: if you run into issues,
|
64
|
+
(NOTE: if you run into issues, keep in mind this is a very early experimental and incomplete alpha. Also, there is a slight chance issues you encounter are fixed in master or some other branch that you could check out instead)
|
56
65
|
|
57
66
|
Please install a Rails 5 gem (e.g. `gem install rails -v5.2.4.3` )
|
58
67
|
|
@@ -67,8 +76,10 @@ Add the following to `Gemfile`:
|
|
67
76
|
```
|
68
77
|
gem 'opal-rails', '~> 1.1.2'
|
69
78
|
gem 'opal-async', '~> 1.1.0'
|
70
|
-
gem 'opal-
|
71
|
-
gem 'glimmer-dsl-opal', '~> 0.0
|
79
|
+
gem 'opal-jquery', '~> 0.4.4'
|
80
|
+
gem 'glimmer-dsl-opal', '~> 0.1.0', require: false
|
81
|
+
gem 'glimmer-dsl-xml', '~> 0.1.0', require: false
|
82
|
+
|
72
83
|
```
|
73
84
|
|
74
85
|
Follow (opal-rails)[https://github.com/opal/opal-rails] instructions, basically the configuration of: config/initializers/assets.rb
|
@@ -84,10 +95,18 @@ Add the following line to the top of an empty `app/assets/javascripts/applicatio
|
|
84
95
|
require 'glimmer-dsl-opal' # brings opal and opal browser too
|
85
96
|
```
|
86
97
|
|
87
|
-
Add more code to `app/assets/javascripts/application.rb` from one of the samples below or require a [Glimmer](https://github.com/AndyObtiva/glimmer) app/[custom-shell](https://github.com/AndyObtiva/glimmer#custom-shell-gem) gem.
|
98
|
+
Add more code to `app/assets/javascripts/application.rb` inside `Document.ready? do; end` block from one of the samples below or require a [Glimmer](https://github.com/AndyObtiva/glimmer) app/[custom-shell](https://github.com/AndyObtiva/glimmer#custom-shell-gem) gem.
|
88
99
|
|
89
100
|
## Samples
|
90
101
|
|
102
|
+
Make sure to add any `require` statements or code below inside:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
Document.ready? do
|
106
|
+
# Code goes here.
|
107
|
+
end
|
108
|
+
```
|
109
|
+
|
91
110
|
### Hello Samples
|
92
111
|
|
93
112
|
#### Hello, World!
|
@@ -230,15 +249,15 @@ class HelloComputed
|
|
230
249
|
|
231
250
|
def initialize
|
232
251
|
@contact = Contact.new(
|
233
|
-
first_name:
|
234
|
-
last_name:
|
252
|
+
first_name: 'Barry',
|
253
|
+
last_name: 'McKibbin',
|
235
254
|
year_of_birth: 1985
|
236
255
|
)
|
237
256
|
end
|
238
257
|
|
239
258
|
def launch
|
240
259
|
shell {
|
241
|
-
text
|
260
|
+
text 'Hello, Computed!'
|
242
261
|
composite {
|
243
262
|
grid_layout {
|
244
263
|
num_columns 2
|
@@ -246,44 +265,44 @@ class HelloComputed
|
|
246
265
|
horizontal_spacing 20
|
247
266
|
vertical_spacing 10
|
248
267
|
}
|
249
|
-
label {text
|
268
|
+
label {text 'First &Name: '}
|
250
269
|
text {
|
251
270
|
text bind(@contact, :first_name)
|
252
271
|
layout_data {
|
253
|
-
|
254
|
-
|
272
|
+
horizontal_alignment :fill
|
273
|
+
grab_excess_horizontal_space true
|
255
274
|
}
|
256
275
|
}
|
257
|
-
label {text
|
276
|
+
label {text '&Last Name: '}
|
258
277
|
text {
|
259
278
|
text bind(@contact, :last_name)
|
260
279
|
layout_data {
|
261
|
-
|
262
|
-
|
280
|
+
horizontal_alignment :fill
|
281
|
+
grab_excess_horizontal_space true
|
263
282
|
}
|
264
283
|
}
|
265
|
-
label {text
|
284
|
+
label {text '&Year of Birth: '}
|
266
285
|
text {
|
267
286
|
text bind(@contact, :year_of_birth)
|
268
287
|
layout_data {
|
269
|
-
|
270
|
-
|
288
|
+
horizontal_alignment :fill
|
289
|
+
grab_excess_horizontal_space true
|
271
290
|
}
|
272
291
|
}
|
273
|
-
label {text
|
292
|
+
label {text 'Name: '}
|
274
293
|
label {
|
275
294
|
text bind(@contact, :name, computed_by: [:first_name, :last_name])
|
276
295
|
layout_data {
|
277
|
-
|
278
|
-
|
296
|
+
horizontal_alignment :fill
|
297
|
+
grab_excess_horizontal_space true
|
279
298
|
}
|
280
299
|
}
|
281
|
-
label {text
|
300
|
+
label {text 'Age: '}
|
282
301
|
label {
|
283
302
|
text bind(@contact, :age, on_write: :to_i, computed_by: [:year_of_birth])
|
284
303
|
layout_data {
|
285
|
-
|
286
|
-
|
304
|
+
horizontal_alignment :fill
|
305
|
+
grab_excess_horizontal_space true
|
287
306
|
}
|
288
307
|
}
|
289
308
|
}
|
@@ -1344,6 +1363,10 @@ Glimmer DSL for Opal Contact Manager Edit Done
|
|
1344
1363
|
|
1345
1364
|

|
1346
1365
|
|
1366
|
+
## Sample App
|
1367
|
+
|
1368
|
+
[https://github.com/AndyObtiva/sample-glimmer-dsl-opal-rails5-app](https://github.com/AndyObtiva/sample-glimmer-dsl-opal-rails5-app)
|
1369
|
+
|
1347
1370
|
## Help
|
1348
1371
|
|
1349
1372
|
### Issues
|
@@ -1378,5 +1401,11 @@ These features have been suggested. You might see them in a future version of Gl
|
|
1378
1401
|
|
1379
1402
|
## License
|
1380
1403
|
|
1381
|
-
|
1382
|
-
|
1404
|
+
[MIT](https://opensource.org/licenses/MIT)
|
1405
|
+
|
1406
|
+
Copyright (c) 2020 - Andy Maleh.
|
1407
|
+
See [LICENSE.txt](LICENSE.txt) for further details.
|
1408
|
+
|
1409
|
+
--
|
1410
|
+
|
1411
|
+
[<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=40 />](https://github.com/AndyObtiva/glimmer) Built for [Glimmer](https://github.com/AndyObtiva/glimmer) (Ruby Desktop Development GUI Library).
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/glimmer-dsl-opal.rb
CHANGED
@@ -1,13 +1,28 @@
|
|
1
1
|
require 'opal'
|
2
|
-
|
3
|
-
require '
|
4
|
-
require '
|
5
|
-
require '
|
2
|
+
if RUBY_PLATFORM == 'opal'
|
3
|
+
require 'opal-async'
|
4
|
+
require 'jquery' # included in glimmer-dsl-opal
|
5
|
+
require 'opal-jquery'
|
6
|
+
require 'glimmer'
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
# Spiking async logging
|
9
|
+
# logger = Glimmer::Config.logger
|
10
|
+
# original_add_method = logger.class.instance_method(:add)
|
11
|
+
# logger.define_singleton_method("__original_add", original_add_method)
|
12
|
+
# logger.singleton_class.send(:define_method, :add) do |*args|
|
13
|
+
# Async::Timeout.new 10000 do
|
14
|
+
# __original_add(*args)
|
15
|
+
# end
|
16
|
+
# end
|
17
|
+
|
18
|
+
GLIMMER_DSL_OPAL_ROOT = File.expand_path('../..', __FILE__)
|
19
|
+
GLIMMER_DSL_OPAL_LIB = File.join(GLIMMER_DSL_OPAL_ROOT, 'lib')
|
20
|
+
|
21
|
+
$LOAD_PATH.unshift(GLIMMER_DSL_OPAL_LIB)
|
22
|
+
|
23
|
+
require 'glimmer/dsl/opal/dsl'
|
24
|
+
require 'glimmer/data_binding/ext/observable_model'
|
25
|
+
|
26
|
+
require 'glimmer-dsl-xml'
|
27
|
+
Element.alias_native :replace_with, :replaceWith
|
28
|
+
end
|
@@ -24,10 +24,10 @@ module Glimmer
|
|
24
24
|
old_value = self.send(property_name)
|
25
25
|
unregister_dependent_observers(property_name, old_value)
|
26
26
|
self.send("__original_#{property_writer_name}", value)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
# Glimmer::Opal::DisplayProxy.instance.async_exec do
|
28
|
+
notify_observers(property_name)
|
29
|
+
ensure_array_object_observer(property_name, value, old_value)
|
30
|
+
# end
|
31
31
|
end
|
32
32
|
end
|
33
33
|
rescue => e
|
@@ -39,7 +39,7 @@ module Glimmer
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def call(value)
|
42
|
-
PROPERTY_TYPE_UPDATERS[@property_type].call(@element_proxy, value) unless evaluate_property == value
|
42
|
+
PROPERTY_TYPE_UPDATERS[@property_type].call(@element_proxy, value) unless !evaluate_property.is_a?(Array) && evaluate_property == value
|
43
43
|
end
|
44
44
|
|
45
45
|
def evaluate_property
|
@@ -2,8 +2,8 @@ require 'glimmer/data_binding/observable_array'
|
|
2
2
|
require 'glimmer/data_binding/observable_model'
|
3
3
|
require 'glimmer/data_binding/observable'
|
4
4
|
require 'glimmer/data_binding/observer'
|
5
|
-
require 'glimmer/
|
6
|
-
require 'glimmer/
|
5
|
+
require 'glimmer/swt/table_proxy'
|
6
|
+
require 'glimmer/swt/table_item_proxy'
|
7
7
|
|
8
8
|
module Glimmer
|
9
9
|
module DataBinding
|
@@ -47,7 +47,7 @@ module Glimmer
|
|
47
47
|
old_item_ids_per_model = old_items.reduce({}) {|hash, item| hash.merge(item.get_data.hash => item.id) }
|
48
48
|
parent.remove_all
|
49
49
|
model_collection.each do |model|
|
50
|
-
table_item = Glimmer::
|
50
|
+
table_item = Glimmer::SWT::TableItemProxy.new(parent)
|
51
51
|
for index in 0..(column_properties.size-1)
|
52
52
|
table_item.set_text(index, model.send(column_properties[index]).to_s)
|
53
53
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'glimmer/dsl/static_expression'
|
2
|
-
require 'glimmer/
|
2
|
+
require 'glimmer/swt/table_proxy'
|
3
3
|
|
4
4
|
module Glimmer
|
5
5
|
module DSL
|
@@ -10,7 +10,7 @@ module Glimmer
|
|
10
10
|
def can_interpret?(parent, keyword, *args, &block)
|
11
11
|
keyword == 'column_properties' and
|
12
12
|
block.nil? and
|
13
|
-
parent.is_a?(Glimmer::
|
13
|
+
parent.is_a?(Glimmer::SWT::TableProxy)
|
14
14
|
end
|
15
15
|
|
16
16
|
def interpret(parent, keyword, *args, &block)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'glimmer/dsl/expression'
|
2
2
|
require 'glimmer/data_binding/model_binding'
|
3
3
|
require 'glimmer/data_binding/element_binding'
|
4
|
-
require 'glimmer/
|
4
|
+
require 'glimmer/swt/combo_proxy'
|
5
5
|
|
6
6
|
module Glimmer
|
7
7
|
module DSL
|
@@ -10,7 +10,7 @@ module Glimmer
|
|
10
10
|
def can_interpret?(parent, keyword, *args, &block)
|
11
11
|
keyword == 'selection' and
|
12
12
|
block.nil? and
|
13
|
-
parent.is_a?(Glimmer::
|
13
|
+
parent.is_a?(Glimmer::SWT::ComboProxy) and
|
14
14
|
args.size == 1 and
|
15
15
|
args[0].is_a?(DataBinding::ModelBinding) and
|
16
16
|
args[0].evaluate_options_property.is_a?(Array)
|
data/lib/glimmer/dsl/opal/dsl.rb
CHANGED
@@ -1,31 +1,18 @@
|
|
1
|
-
require 'opal'
|
2
|
-
require 'browser'
|
3
|
-
|
4
1
|
require 'glimmer/dsl/engine'
|
5
2
|
# Dir[File.expand_path('../*_expression.rb', __FILE__)].each {|f| require f}
|
6
3
|
require 'glimmer/dsl/opal/shell_expression'
|
7
|
-
require 'glimmer/dsl/opal/
|
4
|
+
require 'glimmer/dsl/opal/widget_expression'
|
8
5
|
require 'glimmer/dsl/opal/property_expression'
|
9
|
-
require 'glimmer/dsl/opal/combo_expression'
|
10
|
-
require 'glimmer/dsl/opal/composite_expression'
|
11
|
-
require 'glimmer/dsl/opal/button_expression'
|
12
6
|
require 'glimmer/dsl/opal/bind_expression'
|
13
7
|
require 'glimmer/dsl/opal/data_binding_expression'
|
14
8
|
require 'glimmer/dsl/opal/combo_selection_data_binding_expression'
|
15
9
|
require 'glimmer/dsl/opal/widget_listener_expression'
|
16
|
-
require 'glimmer/dsl/opal/grid_layout_expression'
|
17
|
-
require 'glimmer/dsl/opal/text_expression'
|
18
|
-
require 'glimmer/dsl/opal/list_expression'
|
19
|
-
require 'glimmer/dsl/opal/browser_expression'
|
20
|
-
require 'glimmer/dsl/opal/tab_folder_expression'
|
21
|
-
require 'glimmer/dsl/opal/tab_item_expression'
|
22
10
|
require 'glimmer/dsl/opal/message_box_expression'
|
23
11
|
require 'glimmer/dsl/opal/async_exec_expression'
|
24
12
|
require 'glimmer/dsl/opal/observe_expression'
|
13
|
+
require 'glimmer/dsl/opal/layout_expression'
|
25
14
|
require 'glimmer/dsl/opal/layout_data_expression'
|
26
15
|
require 'glimmer/dsl/opal/list_selection_data_binding_expression'
|
27
|
-
require 'glimmer/dsl/opal/table_expression'
|
28
|
-
require 'glimmer/dsl/opal/table_column_expression'
|
29
16
|
require 'glimmer/dsl/opal/table_items_data_binding_expression'
|
30
17
|
require 'glimmer/dsl/opal/column_properties_expression'
|
31
18
|
|
@@ -40,8 +27,9 @@ module Glimmer
|
|
40
27
|
combo_selection_data_binding
|
41
28
|
list_selection_data_binding
|
42
29
|
data_binding
|
43
|
-
|
30
|
+
layout
|
44
31
|
property
|
32
|
+
widget
|
45
33
|
]
|
46
34
|
)
|
47
35
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'glimmer/dsl/static_expression'
|
2
2
|
require 'glimmer/dsl/parent_expression'
|
3
|
-
require 'glimmer/
|
3
|
+
require 'glimmer/swt/layout_data_proxy'
|
4
4
|
|
5
5
|
module Glimmer
|
6
6
|
module DSL
|
@@ -9,7 +9,7 @@ module Glimmer
|
|
9
9
|
include ParentExpression
|
10
10
|
|
11
11
|
def interpret(parent, keyword, *args, &block)
|
12
|
-
Glimmer::
|
12
|
+
Glimmer::SWT::LayoutDataProxy.new(parent, args)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
require 'glimmer/dsl/expression'
|
2
2
|
require 'glimmer/dsl/parent_expression'
|
3
|
-
require 'glimmer/
|
3
|
+
require 'glimmer/swt/layout_proxy'
|
4
4
|
|
5
5
|
module Glimmer
|
6
6
|
module DSL
|
7
7
|
module Opal
|
8
|
-
class
|
8
|
+
class LayoutExpression < Expression
|
9
9
|
include ParentExpression
|
10
10
|
|
11
11
|
def can_interpret?(parent, keyword, *args, &block)
|
12
|
-
|
12
|
+
parent.is_a?(Glimmer::SWT::CompositeProxy) &&
|
13
|
+
Glimmer::SWT::LayoutProxy.layout_exists?(keyword)
|
13
14
|
end
|
14
15
|
|
15
16
|
def interpret(parent, keyword, *args, &block)
|
16
|
-
|
17
|
-
Glimmer::Opal::InputProxy.new(parent, args)
|
17
|
+
Glimmer::SWT::LayoutProxy.for(keyword, parent, args)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -2,7 +2,7 @@ require 'glimmer/dsl/expression'
|
|
2
2
|
require 'glimmer/data_binding/model_binding'
|
3
3
|
require 'glimmer/data_binding/element_binding'
|
4
4
|
require 'glimmer/data_binding/list_selection_binding'
|
5
|
-
require 'glimmer/
|
5
|
+
require 'glimmer/swt/list_proxy'
|
6
6
|
|
7
7
|
module Glimmer
|
8
8
|
module DSL
|
@@ -11,7 +11,7 @@ module Glimmer
|
|
11
11
|
def can_interpret?(parent, keyword, *args, &block)
|
12
12
|
keyword == 'selection' and
|
13
13
|
block.nil? and
|
14
|
-
parent.is_a?(Glimmer::
|
14
|
+
parent.is_a?(Glimmer::SWT::ListProxy) and
|
15
15
|
args.size == 1 and
|
16
16
|
args[0].is_a?(DataBinding::ModelBinding) and
|
17
17
|
args[0].evaluate_options_property.is_a?(Array)
|
@@ -31,7 +31,6 @@ module Glimmer
|
|
31
31
|
list_selection_binding.call(model_binding.evaluate_property)
|
32
32
|
#TODO check if nested data binding works for list widget and other widgets that need custom data binding
|
33
33
|
list_selection_binding.observe(model, model_binding.property_name_expression)
|
34
|
-
|
35
34
|
parent.on_widget_selected do
|
36
35
|
model_binding.call(list_selection_binding.evaluate_property)
|
37
36
|
end
|