glimmer-dsl-swt 4.17.9.0 → 4.17.10.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 +14 -0
- data/README.md +181 -4
- data/VERSION +1 -1
- data/glimmer-dsl-swt.gemspec +4 -3
- data/lib/glimmer/data_binding/table_items_binding.rb +5 -5
- data/lib/glimmer/dsl/swt/table_items_data_binding_expression.rb +3 -3
- data/lib/glimmer/swt/shell_proxy.rb +18 -3
- data/lib/glimmer/swt/tab_item_proxy.rb +6 -1
- data/lib/glimmer/swt/table_column_proxy.rb +7 -1
- data/lib/glimmer/swt/table_proxy.rb +133 -48
- data/lib/glimmer/swt/widget_proxy.rb +15 -1
- data/samples/elaborate/meta_sample.rb +9 -9
- data/samples/hello/hello_checkbox_group.rb +3 -0
- data/samples/hello/hello_combo.rb +5 -5
- data/samples/hello/hello_radio_group.rb +3 -0
- data/samples/hello/hello_sash_form.rb +3 -3
- data/samples/hello/hello_spinner.rb +69 -0
- data/samples/hello/hello_tab.rb +3 -3
- data/samples/hello/hello_table.rb +187 -38
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e98b64d0a38325d6474b61a1a411d910418fcf47448fe9d6a2c88742bc2109ed
|
4
|
+
data.tar.gz: dff1f5b21cc4b594be8f5b6eac5337e4ee4d072b1fb2bf87c3eb0e6728e1eb41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62c570e832502b5dcde331cc9ef6774d1a15353d7f33066641ce7b07fa3f5a278cb4b1031a1266996fc9d09e37aa1884523ffb57100e47605cc4c54225b1b0b0
|
7
|
+
data.tar.gz: acf8dd65d70769f0f7c27873715f1360f6847ad0ffe3f1eed4c5af0c58768ec2c8ca6d4d1e337c88bca2ecb771025ded162130ed48aa0eec57c04c32590eda91
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
### 4.17.10.0
|
4
|
+
|
5
|
+
- Support table editing via `date_time` for date/time values
|
6
|
+
- Support table default sort configuration via sort_property
|
7
|
+
- Support table default sort configuration via sort block
|
8
|
+
- Support table default sort configuration via sort_by block
|
9
|
+
- Hello, Table! Sample editor :date_time, property: :date_time in
|
10
|
+
- Hello, Table! Sample label for (Baseball Game Schedule)
|
11
|
+
- Hello, Table! Sample combo for selecting nlds, nlcs, alds, alcs, world series
|
12
|
+
- Hello, Table! Sample promotion field that indicates things like Free Bobblehead, Free Towel, Free Umbrella, etc...
|
13
|
+
- ShellProxy#include_focus_control?
|
14
|
+
- Fix issue with table selection data-binding when in single selection mode vs multi
|
15
|
+
- Hello, Spinner! Sample
|
16
|
+
|
3
17
|
### 4.17.9.0
|
4
18
|
|
5
19
|
- Add table style :editable to hook editing listener on mouse click automatically (instead of manually via on_widget_selected)
|
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 />](https://github.com/AndyObtiva/glimmer) Glimmer DSL for SWT 4.17.
|
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 SWT 4.17.10.0
|
2
2
|
|
3
3
|
## JRuby Desktop Development GUI Library
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
|
@@ -360,6 +360,8 @@ Glimmer App:
|
|
360
360
|
- [Hello, Directory Dialog!](#hello-directory-dialog)
|
361
361
|
- [Hello, File Dialog!](#hello-file-dialog)
|
362
362
|
- [Hello, Date Time!](#hello-date-time)
|
363
|
+
- [Hello, Spinner!](#hello-spinner)
|
364
|
+
- [Hello, Table!](#hello-table)
|
363
365
|
- [Elaborate Samples](#elaborate-samples)
|
364
366
|
- [User Profile](#user-profile)
|
365
367
|
- [Login](#login)
|
@@ -453,7 +455,7 @@ jgem install glimmer-dsl-swt
|
|
453
455
|
|
454
456
|
Or this command if you want a specific version:
|
455
457
|
```
|
456
|
-
jgem install glimmer-dsl-swt -v 4.17.
|
458
|
+
jgem install glimmer-dsl-swt -v 4.17.10.0
|
457
459
|
|
458
460
|
```
|
459
461
|
|
@@ -530,7 +532,7 @@ bin/glimmer samples
|
|
530
532
|
Below are the full usage instructions that come up when running `glimmer` without args.
|
531
533
|
|
532
534
|
```
|
533
|
-
Glimmer (Ruby Desktop Development GUI Library) - JRuby Gem: glimmer-dsl-swt v4.17.
|
535
|
+
Glimmer (Ruby Desktop Development GUI Library) - JRuby Gem: glimmer-dsl-swt v4.17.10.0
|
534
536
|
|
535
537
|
|
536
538
|
Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
|
@@ -1008,7 +1010,7 @@ Output:
|
|
1008
1010
|
|
1009
1011
|
Css glimmer-dsl-css 1.1.0 AndyMaleh Glimmer DSL for CSS
|
1010
1012
|
Opal glimmer-dsl-opal 0.4.0 AndyMaleh Glimmer DSL for Opal
|
1011
|
-
Swt glimmer-dsl-swt 4.17.
|
1013
|
+
Swt glimmer-dsl-swt 4.17.10.0
|
1012
1014
|
AndyMaleh Glimmer DSL for SWT
|
1013
1015
|
Tk glimmer-dsl-tk 0.0.6 AndyMaleh Glimmer DSL for Tk
|
1014
1016
|
Xml glimmer-dsl-xml 1.1.0 AndyMaleh Glimmer DSL for XML
|
@@ -2269,6 +2271,117 @@ This automatically leverages the SWT TableEditor custom class behind the scenes,
|
|
2269
2271
|
passed table item text into something else.
|
2270
2272
|
It automatically persists the change to `items` data-bound model on ENTER/FOCUS-OUT or cancels on ESC/NO-CHANGE.
|
2271
2273
|
|
2274
|
+
##### Table Selection
|
2275
|
+
|
2276
|
+
Table Selection data-binding is simply done via the `selection` property.
|
2277
|
+
|
2278
|
+
```ruby
|
2279
|
+
selection bind(group, :selected_person)
|
2280
|
+
```
|
2281
|
+
|
2282
|
+
If it's a multi-selection table (`table(:multi)`), then the data-bound model property oughta be a collection.
|
2283
|
+
|
2284
|
+
```ruby
|
2285
|
+
selection bind(group, :selected_people)
|
2286
|
+
```
|
2287
|
+
|
2288
|
+
##### Table Editing
|
2289
|
+
|
2290
|
+
Glimmer provides a custom SWT style for table editing called `:editable` to obviate the need for an `on_mouse_up` listener.
|
2291
|
+
|
2292
|
+
For example, the code above could be simplified as:
|
2293
|
+
|
2294
|
+
```ruby
|
2295
|
+
shell {
|
2296
|
+
@table = table(:editable) {
|
2297
|
+
table_column {
|
2298
|
+
text "Name"
|
2299
|
+
width 120
|
2300
|
+
}
|
2301
|
+
table_column {
|
2302
|
+
text "Age"
|
2303
|
+
width 120
|
2304
|
+
}
|
2305
|
+
table_column {
|
2306
|
+
text "Adult"
|
2307
|
+
width 120
|
2308
|
+
}
|
2309
|
+
items bind(group, :people), column_properties(:name, :age, :adult)
|
2310
|
+
selection bind(group, :selected_person)
|
2311
|
+
}
|
2312
|
+
}
|
2313
|
+
```
|
2314
|
+
|
2315
|
+
Additionally, Glimmer supports the idea of custom editors or no editor per column.
|
2316
|
+
|
2317
|
+
Example:
|
2318
|
+
|
2319
|
+
```ruby
|
2320
|
+
shell {
|
2321
|
+
@table = table(:editable) {
|
2322
|
+
table_column {
|
2323
|
+
text "Name"
|
2324
|
+
width 120
|
2325
|
+
}
|
2326
|
+
table_column {
|
2327
|
+
text "Age"
|
2328
|
+
width 120
|
2329
|
+
editor :spinner
|
2330
|
+
}
|
2331
|
+
table_column {
|
2332
|
+
text "Adult"
|
2333
|
+
width 120
|
2334
|
+
editor :checkbox
|
2335
|
+
}
|
2336
|
+
items bind(group, :people), column_properties(:name, :age, :adult)
|
2337
|
+
selection bind(group, :selected_person)
|
2338
|
+
}
|
2339
|
+
}
|
2340
|
+
```
|
2341
|
+
|
2342
|
+
The example above uses a `spinner` widget editor for the age column since it's an `Integer` and
|
2343
|
+
a `checkbox` widget (`button(:check)`) editor for the adult column since it's a `Boolean`
|
2344
|
+
|
2345
|
+
Here are all the supported types of table editors:
|
2346
|
+
- `text`: expects a `String` property
|
2347
|
+
- `combo`: expects a `String` property accompanied by a matching `property_options` property by convention to provide items to present in the `combo`
|
2348
|
+
- `checkbox`: expects a `Boolean` property
|
2349
|
+
- `radio`: expects a `Boolean` property
|
2350
|
+
- `spinner`: expects an `Integer` property
|
2351
|
+
- `date`: expects a `DateTime` property
|
2352
|
+
- `date_drop_down`: expects a `DateTime` property
|
2353
|
+
- `time`: expects a `DateTime` property
|
2354
|
+
|
2355
|
+
An editor may also take additional arguments (SWT styles such as :long for the date field) that are passed to the editor widget, as well as hash options to
|
2356
|
+
customize the property being used for editing (e.g. property: :raw_name for a :formatted_name field) in case it differs from the property used to display
|
2357
|
+
the data in the table.
|
2358
|
+
|
2359
|
+
Example:
|
2360
|
+
|
2361
|
+
```ruby
|
2362
|
+
shell {
|
2363
|
+
@table = table(:editable) {
|
2364
|
+
table_column {
|
2365
|
+
text "Date of Birth"
|
2366
|
+
width 120
|
2367
|
+
editor :date_drop_down, property: :date_time
|
2368
|
+
}
|
2369
|
+
table_column {
|
2370
|
+
text "Industry"
|
2371
|
+
width 120
|
2372
|
+
# assume there is a `Person#industry_options` property method on the model to provide items to the `combo`
|
2373
|
+
editor :combo, :read_only # passes :ready_only SWT style to `combo` widget
|
2374
|
+
}
|
2375
|
+
items bind(group, :people), column_properties(:formatted_date, :industry)
|
2376
|
+
selection bind(group, :selected_person)
|
2377
|
+
}
|
2378
|
+
}
|
2379
|
+
```
|
2380
|
+
|
2381
|
+
Check out [Hello, Table!](#hello-table) for an actual example including table editors.
|
2382
|
+
|
2383
|
+
[Are We There Yet?](#are-we-there-yet) is an actual production Glimmer application that takes full advantage of table capabilities.
|
2384
|
+
|
2272
2385
|
##### Table Sorting
|
2273
2386
|
|
2274
2387
|
Glimmer automatically adds sorting support to the SWT `Table` widget.
|
@@ -2285,6 +2398,8 @@ Should you have a special data type that could not be compared automatically, Gl
|
|
2285
2398
|
- `sort_by(&block)`: this works just like Ruby `Enumerable` `sort_by`. The block receives the table column data as argument.
|
2286
2399
|
- `sort(&comparator)`: this works just like Ruby `Enumerable` `sort`. The comparator block receives two objects from the table column data.
|
2287
2400
|
|
2401
|
+
These alternatives could be used inside `table_column` for column-clicked sorting or in the `table` body directly to set the initial default sort.
|
2402
|
+
|
2288
2403
|
You may also set `additional_sort_properties` on the parent `table` widget to have secondary sorting applied. For example, if you set `additional_sort_properties :name, :project_name`, then whenever you sort by `:name`, it additionally sorts by `:project_name` afterwards, and vice versa. This only works for columns that either have no custom sort set or have a `sort_property` with one property only (but no sort or sort_by block)
|
2289
2404
|
|
2290
2405
|
Example:
|
@@ -2392,6 +2507,8 @@ You can data-bind any of these properties:
|
|
2392
2507
|
|
2393
2508
|
Learn more at the [Hello, Date Time!](#hello-date-time) sample.
|
2394
2509
|
|
2510
|
+
If you need a better widget with the ability to customize the date format pattern, check out the [Nebula CDateTime Glimmer Custom Widget](https://github.com/AndyObtiva/glimmer-cw-cdatetime-nebula)
|
2511
|
+
|
2395
2512
|
### Observer
|
2396
2513
|
|
2397
2514
|
Glimmer comes with `Observer` module, which is used internally for data-binding, but can also be used externally for custom use of the Observer Pattern. It is hidden when observing widgets, and used explicitly when observing models.
|
@@ -3853,6 +3970,66 @@ Hello, Date Time!
|
|
3853
3970
|
|
3854
3971
|
![Hello Date Time](images/glimmer-hello-date-time.png)
|
3855
3972
|
|
3973
|
+
#### Hello, Spinner!
|
3974
|
+
|
3975
|
+
This sample demonstrates the use of `spinner` widget in Glimmer
|
3976
|
+
|
3977
|
+
Code:
|
3978
|
+
|
3979
|
+
[samples/hello/hello_spinner.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_spinner.rb)
|
3980
|
+
|
3981
|
+
Hello, Spinner!
|
3982
|
+
|
3983
|
+
![Hello Spinner](images/glimmer-hello-spinner.png)
|
3984
|
+
|
3985
|
+
#### Hello, Table!
|
3986
|
+
|
3987
|
+
This sample demonstrates the use of [table](#table) widget in Glimmer, including data-binding, multi-type editing, sorting, and filtering.
|
3988
|
+
|
3989
|
+
Code:
|
3990
|
+
|
3991
|
+
[samples/hello/hello_table.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_table.rb)
|
3992
|
+
|
3993
|
+
Hello, Table!
|
3994
|
+
|
3995
|
+
![Hello Table](images/glimmer-hello-table.png)
|
3996
|
+
|
3997
|
+
Hello, Table! Editing Game Date
|
3998
|
+
|
3999
|
+
![Hello Table](images/glimmer-hello-table-editing-game-date.png)
|
4000
|
+
|
4001
|
+
Hello, Table! Editing Game Time
|
4002
|
+
|
4003
|
+
![Hello Table](images/glimmer-hello-table-editing-game-time.png)
|
4004
|
+
|
4005
|
+
Hello, Table! Editing Home Team
|
4006
|
+
|
4007
|
+
![Hello Table](images/glimmer-hello-table-editing-home-team.png)
|
4008
|
+
|
4009
|
+
Hello, Table! Sorted Game Date Ascending
|
4010
|
+
|
4011
|
+
![Hello Table](images/glimmer-hello-table-sorted-game-date-ascending.png)
|
4012
|
+
|
4013
|
+
Hello, Table! Sorted Game Date Descending
|
4014
|
+
|
4015
|
+
![Hello Table](images/glimmer-hello-table-sorted-game-date-descending.png)
|
4016
|
+
|
4017
|
+
Hello, Table! Playoff Type Combo
|
4018
|
+
|
4019
|
+
![Hello Table](images/glimmer-hello-table-playoff-type-combo.png)
|
4020
|
+
|
4021
|
+
Hello, Table! Playoff Type Changed
|
4022
|
+
|
4023
|
+
![Hello Table](images/glimmer-hello-table-playoff-type-changed.png)
|
4024
|
+
|
4025
|
+
Hello, Table! Game Booked
|
4026
|
+
|
4027
|
+
![Hello Table](images/glimmer-hello-table-game-booked.png)
|
4028
|
+
|
4029
|
+
Hello, Table! Context Menu
|
4030
|
+
|
4031
|
+
![Hello Table](images/glimmer-hello-table-context-menu.png)
|
4032
|
+
|
3856
4033
|
### Elaborate Samples
|
3857
4034
|
|
3858
4035
|
For more elaborate samples, check the following:
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
4.17.
|
1
|
+
4.17.10.0
|
data/glimmer-dsl-swt.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: glimmer-dsl-swt 4.17.
|
5
|
+
# stub: glimmer-dsl-swt 4.17.10.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "glimmer-dsl-swt".freeze
|
9
|
-
s.version = "4.17.
|
9
|
+
s.version = "4.17.10.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["AndyMaleh".freeze]
|
14
|
-
s.date = "2020-11-
|
14
|
+
s.date = "2020-11-10"
|
15
15
|
s.description = "Glimmer DSL for SWT (JRuby Desktop Development GUI Library)".freeze
|
16
16
|
s.email = "andy.am@gmail.com".freeze
|
17
17
|
s.executables = ["glimmer".freeze, "girb".freeze]
|
@@ -152,6 +152,7 @@ Gem::Specification.new do |s|
|
|
152
152
|
"samples/hello/hello_radio.rb",
|
153
153
|
"samples/hello/hello_radio_group.rb",
|
154
154
|
"samples/hello/hello_sash_form.rb",
|
155
|
+
"samples/hello/hello_spinner.rb",
|
155
156
|
"samples/hello/hello_styled_text.rb",
|
156
157
|
"samples/hello/hello_tab.rb",
|
157
158
|
"samples/hello/hello_table.rb",
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright (c) 2007-2020 Andy Maleh
|
2
|
-
#
|
2
|
+
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
# a copy of this software and associated documentation files (the
|
5
5
|
# "Software"), to deal in the Software without restriction, including
|
@@ -7,10 +7,10 @@
|
|
7
7
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
8
|
# permit persons to whom the Software is furnished to do so, subject to
|
9
9
|
# the following conditions:
|
10
|
-
#
|
10
|
+
#
|
11
11
|
# The above copyright notice and this permission notice shall be
|
12
12
|
# included in all copies or substantial portions of the Software.
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
15
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
16
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
@@ -61,7 +61,7 @@ module Glimmer
|
|
61
61
|
add_dependent(@table_observer_registration => @table_items_observer_registration)
|
62
62
|
@model_collection = new_model_collection
|
63
63
|
end
|
64
|
-
populate_table(@model_collection, @table, @column_properties)
|
64
|
+
populate_table(@model_collection, @table, @column_properties)
|
65
65
|
end
|
66
66
|
|
67
67
|
def populate_table(model_collection, parent, column_properties)
|
@@ -79,7 +79,7 @@ module Glimmer
|
|
79
79
|
selected_table_items = parent.search {|item| selected_table_item_models.include?(item.getData) }
|
80
80
|
selected_table_items = [parent.swt_widget.getItems.first].to_java(TableItem) if selected_table_items.empty? && !parent.swt_widget.getItems.empty?
|
81
81
|
parent.swt_widget.setSelection(selected_table_items) unless selected_table_items.empty?
|
82
|
-
parent.sort
|
82
|
+
parent.sort!
|
83
83
|
parent.swt_widget.redraw if parent&.swt_widget&.respond_to?(:redraw)
|
84
84
|
end
|
85
85
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright (c) 2007-2020 Andy Maleh
|
2
|
-
#
|
2
|
+
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
# a copy of this software and associated documentation files (the
|
5
5
|
# "Software"), to deal in the Software without restriction, including
|
@@ -7,10 +7,10 @@
|
|
7
7
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
8
|
# permit persons to whom the Software is furnished to do so, subject to
|
9
9
|
# the following conditions:
|
10
|
-
#
|
10
|
+
#
|
11
11
|
# The above copyright notice and this permission notice shall be
|
12
12
|
# included in all copies or substantial portions of the Software.
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
15
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
16
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
@@ -88,18 +88,26 @@ module Glimmer
|
|
88
88
|
|
89
89
|
# Opens shell and starts SWT's UI thread event loop
|
90
90
|
def open
|
91
|
+
open_only
|
92
|
+
start_event_loop unless nested?
|
93
|
+
end
|
94
|
+
alias show open
|
95
|
+
|
96
|
+
# Opens without starting the event loop.
|
97
|
+
def open_only
|
91
98
|
if @opened_before
|
92
99
|
@swt_widget.setVisible(true)
|
93
|
-
# notify_observers('visible')
|
94
100
|
else
|
95
101
|
@opened_before = true
|
96
102
|
@swt_widget.pack
|
97
103
|
center
|
98
104
|
@swt_widget.open
|
99
|
-
start_event_loop
|
100
105
|
end
|
101
106
|
end
|
102
|
-
|
107
|
+
|
108
|
+
def nested?
|
109
|
+
!parent.nil?
|
110
|
+
end
|
103
111
|
|
104
112
|
def hide
|
105
113
|
@swt_widget.setVisible(false)
|
@@ -113,6 +121,10 @@ module Glimmer
|
|
113
121
|
def visible=(visibility)
|
114
122
|
visibility ? show : hide
|
115
123
|
end
|
124
|
+
|
125
|
+
def include_focus_control?
|
126
|
+
DisplayProxy.instance.focus_control&.shell == swt_widget
|
127
|
+
end
|
116
128
|
|
117
129
|
def pack
|
118
130
|
@swt_widget.pack
|
@@ -169,6 +181,9 @@ module Glimmer
|
|
169
181
|
super
|
170
182
|
end
|
171
183
|
end
|
184
|
+
|
172
185
|
end
|
186
|
+
|
173
187
|
end
|
188
|
+
|
174
189
|
end
|
@@ -39,6 +39,7 @@ module Glimmer
|
|
39
39
|
#
|
40
40
|
# Follows the Proxy Design Pattern
|
41
41
|
class TabItemProxy < WidgetProxy
|
42
|
+
ATTRIBUTES = %w[text image]
|
42
43
|
include_package 'org.eclipse.swt.widgets'
|
43
44
|
|
44
45
|
attr_reader :widget_proxy, :swt_tab_item
|
@@ -51,7 +52,7 @@ module Glimmer
|
|
51
52
|
end
|
52
53
|
|
53
54
|
def has_attribute?(attribute_name, *args)
|
54
|
-
if attribute_name.to_s
|
55
|
+
if ATTRIBUTES.include?(attribute_name.to_s)
|
55
56
|
true
|
56
57
|
else
|
57
58
|
super(attribute_name, *args)
|
@@ -63,6 +64,8 @@ module Glimmer
|
|
63
64
|
if attribute_name.to_s == "text"
|
64
65
|
text_value = args[0]
|
65
66
|
@swt_tab_item.setText text_value
|
67
|
+
elsif attribute_name.to_s == "image"
|
68
|
+
widget_proxy.set_attribute('image', *args)
|
66
69
|
else
|
67
70
|
super(attribute_name, *args)
|
68
71
|
end
|
@@ -71,6 +74,8 @@ module Glimmer
|
|
71
74
|
def get_attribute(attribute_name)
|
72
75
|
if attribute_name.to_s == "text"
|
73
76
|
@swt_tab_item.getText
|
77
|
+
elsif attribute_name.to_s == "image"
|
78
|
+
widget_proxy.get_attribute('image')
|
74
79
|
else
|
75
80
|
super(attribute_name)
|
76
81
|
end
|
@@ -20,6 +20,7 @@
|
|
20
20
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
21
|
|
22
22
|
require 'glimmer/swt/widget_proxy'
|
23
|
+
require 'glimmer/swt/swt_proxy'
|
23
24
|
|
24
25
|
module Glimmer
|
25
26
|
module SWT
|
@@ -34,7 +35,7 @@ module Glimmer
|
|
34
35
|
@no_sort = args.delete(:no_sort)
|
35
36
|
super
|
36
37
|
on_widget_selected do |event|
|
37
|
-
parent.sort_by_column(self)
|
38
|
+
parent.sort_by_column!(self)
|
38
39
|
end unless no_sort?
|
39
40
|
end
|
40
41
|
|
@@ -42,10 +43,15 @@ module Glimmer
|
|
42
43
|
@sort_property = args unless args.empty?
|
43
44
|
end
|
44
45
|
|
46
|
+
# Sets editor (e.g. combo)
|
45
47
|
def editor=(args)
|
46
48
|
@editor = args
|
47
49
|
end
|
48
50
|
|
51
|
+
def editable?
|
52
|
+
!@editor&.include?(:none)
|
53
|
+
end
|
54
|
+
|
49
55
|
end
|
50
56
|
end
|
51
57
|
end
|