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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b56026edb0b7ab096e2b972afcc99f2914db153e52fa52616859b44e86d0ad8c
4
- data.tar.gz: aa94ad9ded4e7cac3ec706db46a012861e9c1e3a0d0026cdcc7833f43733eba0
3
+ metadata.gz: b86a4ab59fb47c8fd2e21c3f88d790942b19461e159b613edab602c250c0d9e7
4
+ data.tar.gz: 121b3220b1bdb4848ce065564f108bc03f0d8145a2e35d07936ed69f66d52e8a
5
5
  SHA512:
6
- metadata.gz: 66e958ca4e486e0a33908fb21d72322c375da35774a86e0514898a50b214bff0ecd7e7f4f5ce930983394cf49d9386ddce45f9ddcc0eb5e0074c455e8ebb87c9
7
- data.tar.gz: 9e57c5f9a2bb433f182e7f7ce392f19985796cd56f8f40bed01bfed2e7385a25b4bf3fb7b06c541dae0b77cda2a981ac71d2a094d21f0beede0f8867b3fd1333
6
+ metadata.gz: e5a6fd8bb27c826ffbfa8baf5a0ab006f5756125eae25cea4fd08911c65736899520c8bbe1fafa6e1e9941ad1902dc90a62630170a2c0afec9f0420e4ec3911c
7
+ data.tar.gz: dfb9b7195d02486125efff51d9abb1c3c14ba62e9450f597d1508418155962eef0e00a7e2149f501de0f5fdf589fc4c71038392b743c42a43b9c83e914264462
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ## 0.1.0
4
+
5
+ - Code redesign to better match the glimmer-dsl-swt APIs
6
+ - opal-jquery refactoring
7
+ - opal-rspec test coverage
8
+
3
9
  ## 0.0.9
4
10
 
5
11
  - Upgraded to glimmer gem v0.9.3
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=65 /> Glimmer DSL for Opal 0.0.9 (Webify Desktop Apps)
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](https://github.com/AndyObtiva/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.
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
- NOTE: Alpha Version 0.0.9 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):
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, they are probably fixed in master or development/wip branch, you may check out instead)
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-browser', '~> 0.2.0'
71
- gem 'glimmer-dsl-opal', '~> 0.0.9', require: false
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: "Barry",
234
- last_name: "McKibbin",
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 "Hello Computed"
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 "First &Name: "}
268
+ label {text 'First &Name: '}
250
269
  text {
251
270
  text bind(@contact, :first_name)
252
271
  layout_data {
253
- horizontalAlignment :fill
254
- grabExcessHorizontalSpace true
272
+ horizontal_alignment :fill
273
+ grab_excess_horizontal_space true
255
274
  }
256
275
  }
257
- label {text "&Last Name: "}
276
+ label {text '&Last Name: '}
258
277
  text {
259
278
  text bind(@contact, :last_name)
260
279
  layout_data {
261
- horizontalAlignment :fill
262
- grabExcessHorizontalSpace true
280
+ horizontal_alignment :fill
281
+ grab_excess_horizontal_space true
263
282
  }
264
283
  }
265
- label {text "&Year of Birth: "}
284
+ label {text '&Year of Birth: '}
266
285
  text {
267
286
  text bind(@contact, :year_of_birth)
268
287
  layout_data {
269
- horizontalAlignment :fill
270
- grabExcessHorizontalSpace true
288
+ horizontal_alignment :fill
289
+ grab_excess_horizontal_space true
271
290
  }
272
291
  }
273
- label {text "Name: "}
292
+ label {text 'Name: '}
274
293
  label {
275
294
  text bind(@contact, :name, computed_by: [:first_name, :last_name])
276
295
  layout_data {
277
- horizontalAlignment :fill
278
- grabExcessHorizontalSpace true
296
+ horizontal_alignment :fill
297
+ grab_excess_horizontal_space true
279
298
  }
280
299
  }
281
- label {text "Age: "}
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
- horizontalAlignment :fill
286
- grabExcessHorizontalSpace true
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
- Copyright (c) 2020 Andy Maleh.
1382
- See LICENSE.txt for further details.
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.9
1
+ 0.1.0
@@ -1,13 +1,28 @@
1
1
  require 'opal'
2
- require 'opal-async'
3
- require 'browser'
4
- require 'browser/effects'
5
- require 'glimmer'
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
- GLIMMER_DSL_OPAL_ROOT = File.expand_path('../..', __FILE__)
8
- GLIMMER_DSL_OPAL_LIB = File.join(GLIMMER_DSL_OPAL_ROOT, 'lib')
9
-
10
- $LOAD_PATH.unshift(GLIMMER_DSL_OPAL_LIB)
11
-
12
- require 'glimmer/dsl/opal/dsl'
13
- require 'glimmer/data_binding/ext/observable_model'
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
@@ -27,7 +27,7 @@ module Glimmer
27
27
  @element.set_attribute(@property, converted_value) unless evaluate_property == converted_value
28
28
  end
29
29
 
30
- def evaluate_property
30
+ def evaluate_property
31
31
  @element.send(@property)
32
32
  end
33
33
  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
- Glimmer::Opal::DisplayProxy.instance.async_exec do
28
- notify_observers(property_name)
29
- ensure_array_object_observer(property_name, value, old_value)
30
- end
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/opal/table_proxy'
6
- require 'glimmer/opal/table_item'
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::Opal::TableItem.new(parent)
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/opal/table_proxy'
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::Opal::TableProxy)
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/opal/select_proxy'
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::Opal::SelectProxy) and
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)
@@ -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/label_expression'
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
- text
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/opal/layout_data_proxy'
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::Opal::LayoutDataProxy.new(parent, args)
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/opal/input_proxy'
3
+ require 'glimmer/swt/layout_proxy'
4
4
 
5
5
  module Glimmer
6
6
  module DSL
7
7
  module Opal
8
- class TextExpression < Expression
8
+ class LayoutExpression < Expression
9
9
  include ParentExpression
10
10
 
11
11
  def can_interpret?(parent, keyword, *args, &block)
12
- keyword == 'text' and parent and block_given?
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
- args << {type: 'text'}
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/opal/list_proxy'
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::Opal::ListProxy) and
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