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