glimmer-dsl-swt 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70cb97f3e5f058b49cb24ddbe87281e9db925f6708e03d9d520545878608a3e7
4
- data.tar.gz: 73ad3cf16e2a30f4227135ce0eed679a40d3ca222780b1f9b998535274eed720
3
+ metadata.gz: 1b818d6b949f1a1c4388ecad2f9d6f425afbdf0c772a99031c2ea1cf1276dc1c
4
+ data.tar.gz: 7f9f78326e9a083b170f9606bfb7337963bda57c4648e7f585c435747f77e94a
5
5
  SHA512:
6
- metadata.gz: 0f0842bb53f0f8703970924e6f21374d1e64c955fd7a7135b4c864d7158221285a5ef9c89b7e01508d1393a5130388d79659672ad0fa4e1c35b4363bb772c47a
7
- data.tar.gz: 65c239a07dd7a216873fbe6f56842c5b2e15ea9d6aa3a77ac301b3e064f2c6521afcb07731ba0a5df20fe7ea877f25716581386621ac987c00a73c77da0988a3
6
+ metadata.gz: e56deeff2d43d47a8e875ed1e32ba54f6cca9398053afdd5351257a2b0da3326384412635cf0c41529e8d961abab5de32d69cc5b6e23e67f1ebec23bb372b174
7
+ data.tar.gz: 49dc96a0dc0921bac9b0cd048d9e33d1436dffa09b4bcb48704f162a30209c52209b3ca03318c89e7277835e682821ec89fb4f32f9c26218fb8ed1812a340dcb
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # <img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 /> Glimmer DSL for SWT 0.2.0 (Desktop GUI)
1
+ # <img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=85 /> Glimmer DSL for SWT 0.3.0 (Desktop GUI)
2
2
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
3
3
  [![Travis CI](https://travis-ci.com/AndyObtiva/glimmer-dsl-swt.svg?branch=master)](https://travis-ci.com/github/AndyObtiva/glimmer-dsl-swt)
4
4
  [![Coverage Status](https://coveralls.io/repos/github/AndyObtiva/glimmer-dsl-swt/badge.svg?branch=master)](https://coveralls.io/github/AndyObtiva/glimmer-dsl-swt?branch=master)
@@ -10,7 +10,7 @@
10
10
 
11
11
  You may find full setup/usage instructions at the main [Glimmer project page](https://github.com/AndyObtiva/glimmer).
12
12
 
13
- Other Glimmer DSL gems:
13
+ Other [Glimmer](https://github.com/AndyObtiva/glimmer) DSL gems:
14
14
  - [glimmer-dsl-opal](https://github.com/AndyObtiva/glimmer-dsl-opal): Glimmer DSL for Opal (Web GUI Adapter for Desktop Apps)
15
15
  - [glimmer-dsl-xml](https://github.com/AndyObtiva/glimmer-dsl-xml): Glimmer DSL for XML (& HTML)
16
16
  - [glimmer-dsl-css](https://github.com/AndyObtiva/glimmer-dsl-css): Glimmer DSL for CSS (Cascading Style Sheets)
@@ -1 +1 @@
1
- jruby-9.2.11.1
1
+ jruby-9.2.12.0
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -3,11 +3,18 @@ require 'glimmer/swt/packages'
3
3
  module Glimmer
4
4
  class << self
5
5
  def included(klass)
6
+ if Object.const_defined?(:ActiveSupport) && ActiveSupport.const_defined?(:Dependencies)
7
+ begin
8
+ ActiveSupport::Dependencies.unhook!
9
+ rescue => e
10
+ # noop TODO support logging unimportant details below debug level
11
+ end
12
+ end
6
13
  if Config.import_swt_packages
7
14
  klass.include(SWT::Packages)
8
15
  klass.extend(SWT::Packages)
9
- klass.extend(Glimmer)
10
16
  end
17
+ klass.extend(Glimmer)
11
18
  end
12
19
  end
13
20
  end
@@ -1,16 +1,24 @@
1
1
  module Glimmer
2
2
  module Config
3
+ DEFAULT_IMPORT_SWT_PACKAGES = [
4
+ 'org.eclipse.swt',
5
+ 'org.eclipse.swt.widgets',
6
+ 'org.eclipse.swt.layout',
7
+ 'org.eclipse.swt.graphics',
8
+ 'org.eclipse.swt.browser',
9
+ 'org.eclipse.swt.custom',
10
+ 'org.eclipse.swt.dnd',
11
+ ]
12
+
3
13
  class << self
4
14
  # Tells Glimmer to import SWT packages into including class (default: true)
5
15
  def import_swt_packages=(value)
6
- @@import_swt_packages = !!value
16
+ @@import_swt_packages = value
7
17
  end
8
18
 
9
19
  # Returns whether Glimmer will import SWT packages into including class
10
20
  def import_swt_packages
11
- unless defined? @@import_swt_packages
12
- @@import_swt_packages = true
13
- end
21
+ @@import_swt_packages = DEFAULT_IMPORT_SWT_PACKAGES if !defined?(@@import_swt_packages) || (defined?(@@import_swt_packages) && @@import_swt_packages == true)
14
22
  @@import_swt_packages
15
23
  end
16
24
  end
@@ -15,6 +15,7 @@ module Glimmer
15
15
  def initialize(parent, model_binding, column_properties)
16
16
  @table = parent
17
17
  @model_binding = model_binding
18
+ @table.swt_widget.data = @model_binding
18
19
  @column_properties = column_properties
19
20
  if @table.respond_to?(:column_properties=)
20
21
  @table.column_properties = @column_properties
@@ -22,14 +23,14 @@ module Glimmer
22
23
  @table.body_root.column_properties = @column_properties
23
24
  end
24
25
  call(@model_binding.evaluate_property)
25
- model = model_binding.base_model
26
- observe(model, model_binding.property_name_expression)
26
+ observe(model_binding)
27
27
  @table.on_widget_disposed do |dispose_event|
28
28
  unregister_all_observables
29
29
  end
30
30
  end
31
31
 
32
32
  def call(new_model_collection=nil)
33
+ new_model_collection = @model_binding.evaluate_property # this ensures applying converters (e.g. :on_read)
33
34
  if new_model_collection and new_model_collection.is_a?(Array)
34
35
  observe(new_model_collection, @column_properties)
35
36
  @model_collection = new_model_collection
@@ -0,0 +1,20 @@
1
+ require 'glimmer/dsl/expression'
2
+
3
+ module Glimmer
4
+ module DSL
5
+ module SWT
6
+ class BlockPropertyExpression < Expression
7
+ def can_interpret?(parent, keyword, *args, &block)
8
+ block_given? and
9
+ args.size == 0 and
10
+ parent.respond_to?("#{keyword}_block=")
11
+ end
12
+
13
+ def interpret(parent, keyword, *args, &block)
14
+ parent.send("#{keyword}_block=", block)
15
+ nil
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -35,6 +35,10 @@ module Glimmer
35
35
  parent.on_widget_selected do
36
36
  model_binding.call(widget_binding.evaluate_property)
37
37
  end
38
+
39
+ parent.on_modify_text do
40
+ model_binding.call(widget_binding.evaluate_property)
41
+ end
38
42
  end
39
43
  end
40
44
  end
@@ -25,6 +25,7 @@ module Glimmer
25
25
  table_items_data_binding
26
26
  data_binding
27
27
  property
28
+ block_property
28
29
  widget
29
30
  custom_widget
30
31
  ]
@@ -31,5 +31,7 @@ module Glimmer
31
31
  end
32
32
 
33
33
  require 'glimmer/swt/widget_proxy'
34
+ require 'glimmer/swt/scrolled_composite_proxy'
34
35
  require 'glimmer/swt/tree_proxy'
35
36
  require 'glimmer/swt/table_proxy'
37
+ require 'glimmer/swt/table_column_proxy'
@@ -7,6 +7,12 @@ module Glimmer
7
7
  class << self
8
8
  attr_accessor :javapackager_extra_args
9
9
 
10
+ def clean
11
+ require 'fileutils'
12
+ FileUtils.rm_rf('dist')
13
+ FileUtils.rm_rf('packages')
14
+ end
15
+
10
16
  def config
11
17
  project_name = File.basename(File.expand_path('.'))
12
18
  if !File.exists?('config/warble.rb')
@@ -15,7 +21,7 @@ module Glimmer
15
21
  system('warble config')
16
22
  new_config = File.read('config/warble.rb').split("\n").inject('') do |output, line|
17
23
  if line.include?('config.dirs =')
18
- line = line.sub('# ', '').sub(/=[^=\n]+$/, '= %w(app config db lib script bin docs fonts icons images sounds videos)')
24
+ line = line.sub('# ', '').sub(/=[^=\n]+$/, '= %w(app config db lib script bin docs fonts icons images sounds videos vendor)')
19
25
  end
20
26
  if line.include?('config.includes =')
21
27
  line = line.sub('# ', '').sub(/=[^=\n]+$/, "= FileList['LICENSE.txt', 'VERSION']")
@@ -4,6 +4,11 @@ require_relative 'package'
4
4
 
5
5
  namespace :glimmer do
6
6
  namespace :package do
7
+ desc 'Clean by removing "dist" and "packages" directories'
8
+ task :clean do
9
+ Glimmer::Package.clean
10
+ end
11
+
7
12
  desc 'Generate JAR config file'
8
13
  task :config do
9
14
  Glimmer::Package.config
@@ -58,7 +58,7 @@ class Scaffold
58
58
 
59
59
  # for a library or gem, you might want to ignore these files since the code is
60
60
  # intended to run in multiple environments; otherwise, check them in:
61
- Gemfile.lock
61
+ # Gemfile.lock
62
62
  # .ruby-version
63
63
  # .ruby-gemset
64
64
 
@@ -179,6 +179,7 @@ class Scaffold
179
179
  end
180
180
 
181
181
  def custom_shell_gem(custom_shell_name, namespace)
182
+ return puts('Namespace is required! Usage: glimmer scaffold:custom_shell_gem[custom_shell_name,namespace]') unless `git config --get github.user`.to_s.strip == 'AndyObtiva'
182
183
  gem_name = "glimmer-cs-#{compact_name(custom_shell_name)}"
183
184
  gem_summary = "#{human_name(custom_shell_name)} - Glimmer Custom Shell"
184
185
  if namespace
@@ -218,6 +219,7 @@ class Scaffold
218
219
  end
219
220
 
220
221
  def custom_widget_gem(custom_widget_name, namespace)
222
+ return puts('Namespace is required! Usage: glimmer scaffold:custom_widget_gem[custom_widget_name,namespace]') unless `git config --get github.user`.to_s.strip == 'AndyObtiva'
221
223
  gem_name = "glimmer-cw-#{compact_name(custom_widget_name)}"
222
224
  gem_summary = "#{human_name(custom_widget_name)} - Glimmer Custom Widget"
223
225
  if namespace
@@ -483,12 +485,10 @@ class Scaffold
483
485
  custom_shell_file_content += <<-MULTI_LINE_STRING
484
486
 
485
487
  def display_about_dialog
486
- message_box = MessageBox.new(swt_widget)
487
- message_box.setText("About")
488
- message = "#{human_name(namespace)} - #{human_name(custom_shell_name)} \#{VERSION}\n\n"
489
- message += LICENSE
490
- message_box.setMessage(message)
491
- message_box.open
488
+ message_box(body_root) {
489
+ text 'About'
490
+ message "#{human_name(namespace)} - #{human_name(custom_shell_name)} \#{VERSION}\\n\\n\#{LICENSE}"
491
+ }.open
492
492
  end
493
493
 
494
494
  def display_preferences_dialog
@@ -1,14 +1,16 @@
1
+ require 'ext/glimmer/config'
2
+
1
3
  module Glimmer
2
4
  module SWT
3
5
  # This contains Java imports of SWT Java packages
4
6
  module Packages
5
- include_package 'org.eclipse.swt'
6
- include_package 'org.eclipse.swt.widgets'
7
- include_package 'org.eclipse.swt.layout'
8
- include_package 'org.eclipse.swt.graphics'
9
- include_package 'org.eclipse.swt.browser'
10
- include_package 'org.eclipse.swt.custom'
11
- include_package 'org.eclipse.swt.dnd'
7
+ class << self
8
+ def included(klass)
9
+ Glimmer::Config.import_swt_packages.to_a.each do |package|
10
+ include_package(package) if package.is_a?(String)
11
+ end
12
+ end
13
+ end
12
14
  end
13
15
  end
14
16
  end
@@ -0,0 +1,21 @@
1
+ require 'glimmer/swt/widget_proxy'
2
+
3
+ module Glimmer
4
+ module SWT
5
+ class ScrolledCompositeProxy < Glimmer::SWT::WidgetProxy
6
+ def initialize(underscored_widget_name, parent, args)
7
+ unless args.first.is_a?(Numeric)
8
+ args.unshift(:h_scroll)
9
+ args.unshift(:v_scroll)
10
+ end
11
+ super
12
+ swt_widget.expand_horizontal = true
13
+ swt_widget.expand_vertical = true
14
+ end
15
+
16
+ def post_initialize_child(child)
17
+ swt_widget.content = child.swt_widget
18
+ end
19
+ end
20
+ end
21
+ end
@@ -31,7 +31,8 @@ module Glimmer
31
31
  end
32
32
 
33
33
  EXTRA_STYLES = {
34
- NO_RESIZE: self[:shell_trim, :resize!, :max!]
34
+ NO_RESIZE: self[:shell_trim, :resize!, :max!],
35
+ NO_SORT: -7,
35
36
  }
36
37
  end
37
38
  end
@@ -0,0 +1,24 @@
1
+ require 'glimmer/swt/widget_proxy'
2
+
3
+ module Glimmer
4
+ module SWT
5
+ class TableColumnProxy < Glimmer::SWT::WidgetProxy
6
+ attr_reader :no_sort, :sort_property
7
+ alias no_sort? no_sort
8
+ attr_accessor :sort_block, :sort_by_block
9
+
10
+ def initialize(underscored_widget_name, parent, args)
11
+ @no_sort = args.delete(:no_sort)
12
+ super
13
+ on_widget_selected do |event|
14
+ parent.sort_by_column(self)
15
+ end unless no_sort?
16
+ end
17
+
18
+ def sort_property=(args)
19
+ @sort_property = args unless args.empty?
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -1,4 +1,4 @@
1
- require 'glimmer/swt/widget_proxy'
1
+ require 'glimmer/swt/widget_proxy'
2
2
 
3
3
  module Glimmer
4
4
  module SWT
@@ -33,7 +33,7 @@ module Glimmer
33
33
  end
34
34
  end
35
35
 
36
- attr_reader :table_editor, :table_editor_text_proxy
36
+ attr_reader :table_editor, :table_editor_text_proxy, :sort_property, :sort_direction, :sort_block, :sort_type, :sort_by_block, :additional_sort_properties
37
37
  attr_accessor :column_properties
38
38
 
39
39
  def initialize(underscored_widget_name, parent, args)
@@ -43,7 +43,91 @@ module Glimmer
43
43
  @table_editor.grabHorizontal = true
44
44
  @table_editor.minimumHeight = 20
45
45
  end
46
-
46
+
47
+ def model_binding
48
+ swt_widget.data
49
+ end
50
+
51
+ def sort_by_column(table_column_proxy)
52
+ index = swt_widget.columns.to_a.index(table_column_proxy.swt_widget)
53
+ new_sort_property = table_column_proxy.sort_property || [column_properties[index]]
54
+ if new_sort_property.size == 1 && !additional_sort_properties.to_a.empty?
55
+ selected_additional_sort_properties = additional_sort_properties.clone
56
+ if selected_additional_sort_properties.include?(new_sort_property.first)
57
+ selected_additional_sort_properties.delete(new_sort_property.first)
58
+ new_sort_property += selected_additional_sort_properties
59
+ else
60
+ new_sort_property += additional_sort_properties
61
+ end
62
+ end
63
+
64
+ @sort_direction = @sort_direction.nil? || @sort_property != new_sort_property || @sort_direction == :descending ? :ascending : :descending
65
+ swt_widget.sort_direction = @sort_direction == :ascending ? SWTProxy[:up] : SWTProxy[:down]
66
+
67
+ @sort_property = new_sort_property
68
+ swt_widget.sort_column = table_column_proxy.swt_widget
69
+
70
+ @sort_by_block = nil
71
+ @sort_block = nil
72
+ @sort_type = nil
73
+ if table_column_proxy.sort_by_block
74
+ @sort_by_block = table_column_proxy.sort_by_block
75
+ elsif table_column_proxy.sort_block
76
+ @sort_block = table_column_proxy.sort_block
77
+ else
78
+ detect_sort_type
79
+ end
80
+ sort
81
+ end
82
+
83
+ def detect_sort_type
84
+ @sort_type = sort_property.size.times.map { String }
85
+ array = model_binding.evaluate_property
86
+ sort_property.each_with_index do |a_sort_property, i|
87
+ values = array.map { |object| object.send(a_sort_property) }
88
+ value_classes = values.map(&:class).uniq
89
+ if value_classes.size == 1
90
+ @sort_type[i] = value_classes.first
91
+ elsif value_classes.include?(Integer)
92
+ @sort_type[i] = Integer
93
+ elsif value_classes.include?(Float)
94
+ @sort_type[i] = Float
95
+ end
96
+ end
97
+ end
98
+
99
+ def additional_sort_properties=(args)
100
+ @additional_sort_properties = args unless args.empty?
101
+ end
102
+
103
+ def sort
104
+ return unless sort_property && (sort_type || sort_block || sort_by_block)
105
+ array = model_binding.evaluate_property
106
+ # Converting value to_s first to handle nil cases. Should work with numeric, boolean, and date fields
107
+ if sort_block
108
+ sorted_array = array.sort(&sort_block)
109
+ elsif sort_by_block
110
+ sorted_array = array.sort_by(&sort_by_block)
111
+ else
112
+ sorted_array = array.sort_by do |object|
113
+ sort_property.each_with_index.map do |a_sort_property, i|
114
+ value = object.send(a_sort_property)
115
+ # handle nil and difficult to compare types gracefully
116
+ if sort_type[i] == Integer
117
+ value = value.to_i
118
+ elsif sort_type[i] == Float
119
+ value = value.to_f
120
+ elsif sort_type[i] == String
121
+ value = value.to_s
122
+ end
123
+ value
124
+ end
125
+ end
126
+ end
127
+ sorted_array = sorted_array.reverse if sort_direction == :descending
128
+ model_binding.call(sorted_array)
129
+ end
130
+
47
131
  # Performs a search for table items matching block condition
48
132
  # If no condition block is passed, returns all table items
49
133
  # Returns a Java TableItem array to easily set as selection on org.eclipse.swt.Table if needed
@@ -61,6 +61,12 @@ module Glimmer
61
61
  swt_widget_class = self.class.swt_widget_class_for(underscored_widget_name)
62
62
  @swt_widget = swt_widget_class.new(parent.swt_widget, style(underscored_widget_name, styles), *extra_options)
63
63
  DEFAULT_INITIALIZERS[underscored_widget_name]&.call(@swt_widget)
64
+ parent.post_initialize_child(self)
65
+ end
66
+
67
+ # Subclasses may override to perform post initialization work on an added child
68
+ def post_initialize_child(child)
69
+ # No Op by default
64
70
  end
65
71
 
66
72
  def extract_args(underscored_widget_name, args)
@@ -75,7 +81,18 @@ module Glimmer
75
81
  if @arg_extractor_mapping[underscored_widget_name]
76
82
  @arg_extractor_mapping[underscored_widget_name].call(args)
77
83
  else
78
- [args, []]
84
+ extra_options = []
85
+ style_args = args.select {|arg| arg.is_a?(Symbol) || arg.is_a?(String)}
86
+ if style_args.any?
87
+ style_arg_start_index = args.index(style_args.first)
88
+ style_arg_last_index = args.index(style_args.last)
89
+ extra_options = args[style_arg_last_index+1..-1]
90
+ args = args[style_arg_start_index..style_arg_last_index]
91
+ elsif args.first.is_a?(Integer)
92
+ extra_options = args[1..-1]
93
+ args = args[0..0]
94
+ end
95
+ [args, extra_options]
79
96
  end
80
97
  end
81
98
 
@@ -134,6 +151,23 @@ module Glimmer
134
151
  observer.call(false)
135
152
  }
136
153
  end,
154
+ :selection => lambda do |observer|
155
+ on_widget_selected { |selection_event|
156
+ observer.call(@swt_widget.getSelection)
157
+ } if can_handle_observation_request?(:on_widget_selected)
158
+ end,
159
+ :text => lambda do |observer|
160
+ on_modify_text { |modify_event|
161
+ observer.call(@swt_widget.getText)
162
+ } if can_handle_observation_request?(:on_modify_text)
163
+ end,
164
+ },
165
+ Java::OrgEclipseSwtWidgets::Combo => {
166
+ :text => lambda do |observer|
167
+ on_modify_text { |modify_event|
168
+ observer.call(@swt_widget.getText)
169
+ }
170
+ end,
137
171
  },
138
172
  Java::OrgEclipseSwtWidgets::Text => {
139
173
  :text => lambda do |observer|
@@ -238,11 +272,11 @@ module Glimmer
238
272
  end
239
273
  swt_widget_class
240
274
  rescue NameError => e
241
- Glimmer::Config.logger&.debug e.message
275
+ Glimmer::Config.logger&.debug e.full_message
242
276
  # Glimmer::Config.logger&.debug("#{e.message}\n#{e.backtrace.join("\n")}")
243
277
  nil
244
278
  rescue => e
245
- Glimmer::Config.logger&.debug e.message
279
+ Glimmer::Config.logger&.debug e.full_message
246
280
  # Glimmer::Config.logger&.debug("#{e.message}\n#{e.backtrace.join("\n")}")
247
281
  nil
248
282
  end
@@ -278,9 +312,7 @@ module Glimmer
278
312
  def add_observer(observer, property_name)
279
313
  property_listener_installers = @swt_widget.class.ancestors.map {|ancestor| widget_property_listener_installers[ancestor]}.compact
280
314
  widget_listener_installers = property_listener_installers.map{|installer| installer[property_name.to_s.to_sym]}.compact if !property_listener_installers.empty?
281
- widget_listener_installers.to_a.each do |widget_listener_installer|
282
- widget_listener_installer.call(observer)
283
- end
315
+ widget_listener_installers.to_a.first&.call(observer)
284
316
  end
285
317
 
286
318
  def remove_observer(observer, property_name)
@@ -137,6 +137,11 @@ module Glimmer
137
137
  execute_hooks('after_body')
138
138
  @swt_widget = @body_root.swt_widget
139
139
  end
140
+
141
+ # Subclasses may override to perform post initialization work on an added child
142
+ def post_initialize_child(child)
143
+ body_root.post_initialize_child(child)
144
+ end
140
145
 
141
146
  def can_handle_observation_request?(observation_request)
142
147
  result = false
metadata CHANGED
@@ -1,21 +1,21 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-swt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AndyMaleh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-30 00:00:00.000000000 Z
11
+ date: 2020-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 0.9.3
18
+ version: 0.9.4
19
19
  name: glimmer
20
20
  type: :runtime
21
21
  prerelease: false
@@ -23,7 +23,7 @@ dependencies:
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.9.3
26
+ version: 0.9.4
27
27
  - !ruby/object:Gem::Dependency
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
@@ -256,7 +256,7 @@ dependencies:
256
256
  - - "~>"
257
257
  - !ruby/object:Gem::Version
258
258
  version: 0.7.0
259
- description: Glimmer DSL for SWT (Desktop GUI)
259
+ description: Glimmer DSL for SWT (Desktop GUI) - JRuby on SWT
260
260
  email: andy.am@gmail.com
261
261
  executables:
262
262
  - glimmer
@@ -285,6 +285,7 @@ files:
285
285
  - lib/glimmer/data_binding/widget_binding.rb
286
286
  - lib/glimmer/dsl/swt/async_exec_expression.rb
287
287
  - lib/glimmer/dsl/swt/bind_expression.rb
288
+ - lib/glimmer/dsl/swt/block_property_expression.rb
288
289
  - lib/glimmer/dsl/swt/color_expression.rb
289
290
  - lib/glimmer/dsl/swt/column_properties_expression.rb
290
291
  - lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb
@@ -328,10 +329,12 @@ files:
328
329
  - lib/glimmer/swt/menu_proxy.rb
329
330
  - lib/glimmer/swt/message_box_proxy.rb
330
331
  - lib/glimmer/swt/packages.rb
332
+ - lib/glimmer/swt/scrolled_composite_proxy.rb
331
333
  - lib/glimmer/swt/shell_proxy.rb
332
334
  - lib/glimmer/swt/style_constantizable.rb
333
335
  - lib/glimmer/swt/swt_proxy.rb
334
336
  - lib/glimmer/swt/tab_item_proxy.rb
337
+ - lib/glimmer/swt/table_column_proxy.rb
335
338
  - lib/glimmer/swt/table_proxy.rb
336
339
  - lib/glimmer/swt/tree_proxy.rb
337
340
  - lib/glimmer/swt/widget_listener_proxy.rb