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
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
|
[![Gem Version](https://badge.fury.io/rb/glimmer-dsl-opal.svg)](http://badge.fury.io/rb/glimmer-dsl-opal)
|
3
3
|
[![Join the chat at https://gitter.im/AndyObtiva/glimmer](https://badges.gitter.im/AndyObtiva/glimmer.svg)](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
|
![Glimmer DSL for Opal Contact Manager Edit Done](images/glimmer-dsl-opal-contact-manager-edit-done.png)
|
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
|