glimmer-cw-cdatetime-nebula 1.4.0.1 → 1.4.0.2.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.
- checksums.yaml +4 -4
- data/README.md +232 -32
- data/VERSION +1 -1
- data/lib/glimmer-cw-cdatetime-nebula.rb +64 -0
- data/lib/glimmer-cw-cdatetime-nebula/ext/glimmer/dsl/swt/cdt_expression.rb +23 -0
- data/lib/glimmer-cw-cdatetime-nebula/ext/glimmer/swt/c_date_time_proxy.rb +78 -0
- data/lib/glimmer-cw-cdatetime-nebula/ext/glimmer/swt/cdt_proxy.rb +55 -0
- data/lib/views/nebula/c_date_time.rb +1 -1
- data/samples/nebula/c_date_time_gallery.rb +157 -0
- metadata +10 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b37eeaba86e192bbf3f0e00c57b267ab0c56e6574c310567489c23f1837c2190
|
4
|
+
data.tar.gz: 33f2acdd08fad52407236b598046aad6da491bdd61adc95c31ca89781acca617
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 173b9ff49a578b5e5952eb88513c6b5bf5518eb47036d915bbfc52bba7ce90906d93f6b4cb1cb1e7f825f9c22bca4c78bfb99263bb182d0021f96b146802eec4
|
7
|
+
data.tar.gz: a0b93d1badec9d7054197b44bfc3610b0f6ad0b8c5c329ae920c0d1ea083311c3335e7849ee0f32570b8b98eba7c5de60728347033f6ad9bb2d9054c89582864
|
data/README.md
CHANGED
@@ -1,22 +1,53 @@
|
|
1
|
-
# Nebula CDateTime Widget 1.4.0.
|
1
|
+
# Nebula CDateTime Widget 1.4.0.2.0
|
2
2
|
## [<img src="https://raw.githubusercontent.com/AndyObtiva/glimmer/master/images/glimmer-logo-hi-res.png" height=40 /> Glimmer Custom Widget](https://github.com/AndyObtiva/glimmer#custom-widget-gem)
|
3
3
|
[](http://badge.fury.io/rb/glimmer-cw-cdatetime-nebula)
|
4
4
|
|
5
5
|
[<img alt="Nebula CDateTime Widget" src="https://www.eclipse.org/nebula/widgets/cdatetime/images/CDTSnippet02.png" />](https://www.eclipse.org/nebula/widgets/cdatetime/cdatetime.php)
|
6
6
|
|
7
|
-
The [Nebula CDateTime Widget](https://www.eclipse.org/nebula/widgets/cdatetime/cdatetime.php) is a Date and Time selection widget that can be used in a
|
7
|
+
The [Nebula CDateTime Widget](https://www.eclipse.org/nebula/widgets/cdatetime/cdatetime.php) is a Date and Time selection widget that can be used in a plain (graphical), dropdown, spinner, or compact text style.
|
8
8
|
|
9
9
|
Packaged as a [Glimmer Custom Widget](https://github.com/AndyObtiva/glimmer#custom-widget-gem) to provide date/time selection via a combo/dropdown-style widget in [Glimmer](https://github.com/AndyObtiva/glimmer) using the `c_date_time` [Glimmer DSL](https://github.com/AndyObtiva/glimmer#glimmer-dsl-syntax) keyword.
|
10
10
|
|
11
|
-
[glimmer-cw-cdatetime-nebula](https://rubygems.org/gems/glimmer-cw-cdatetime-nebula) 1.4.0.x gem versions map to Nebula CDateTime Widget version 1.4.0
|
12
|
-
|
13
|
-
##
|
14
|
-
|
15
|
-
[
|
16
|
-
-
|
17
|
-
-
|
18
|
-
|
19
|
-
|
11
|
+
[glimmer-cw-cdatetime-nebula](https://rubygems.org/gems/glimmer-cw-cdatetime-nebula) 1.4.0.x.y gem versions map to Nebula CDateTime Widget version 1.4.0
|
12
|
+
|
13
|
+
## Table of contents
|
14
|
+
|
15
|
+
- [Nebula CDateTime Widget 1.4.0.2.0](#nebula-cdatetime-widget-14020)
|
16
|
+
- [Pre-requisites](#pre-requisites)
|
17
|
+
- [Setup](#setup)
|
18
|
+
- [Glimmer Application](#glimmer-application)
|
19
|
+
- [Glimmer Custom Shell or Glimmer Custom Widget](#glimmer-custom-shell-or-glimmer-custom-widget)
|
20
|
+
- [Java Imports](#java-imports)
|
21
|
+
- [Instructions](#instructions)
|
22
|
+
- [Sample](#sample)
|
23
|
+
- [Plain](#plain)
|
24
|
+
- [`c_date_time`](#cdatetime)
|
25
|
+
- [`c_date`](#cdate)
|
26
|
+
- [`c_time`](#ctime)
|
27
|
+
- [Drop Down](#drop-down)
|
28
|
+
- [`c_date_time_drop_down`](#cdatetimedropdown)
|
29
|
+
- [`c_date_drop_down`](#cdatedropdown)
|
30
|
+
- [`c_time_drop_down`](#ctimedropdown)
|
31
|
+
- [Spinner](#spinner)
|
32
|
+
- [`c_date_time_spinner`](#cdatetimespinner)
|
33
|
+
- [`c_date_spinner`](#cdatespinner)
|
34
|
+
- [`c_time_spinner`](#ctimespinner)
|
35
|
+
- [Compact](#compact)
|
36
|
+
- [`c_date_time_compact`](#cdatetimecompact)
|
37
|
+
- [`c_date_compact`](#cdatecompact)
|
38
|
+
- [`c_time_compact`](#ctimecompact)
|
39
|
+
- [Style](#style)
|
40
|
+
- [`cdt`](#cdt)
|
41
|
+
- [Data-Binding and Observers:](#data-binding-and-observers)
|
42
|
+
- [Table Editing](#table-editing)
|
43
|
+
- [API](#api)
|
44
|
+
- [Glimmer Custom API](#glimmer-custom-api)
|
45
|
+
- [`toggle_open`](#toggleopen)
|
46
|
+
- [`text_widget_proxy`](#textwidgetproxy)
|
47
|
+
- [TODO](#todo)
|
48
|
+
- [Change Log](#change-log)
|
49
|
+
- [Contributing to glimmer-cw-cdatetime-nebula](#contributing-to-glimmer-cw-cdatetime-nebula)
|
50
|
+
- [Copyright](#copyright)
|
20
51
|
|
21
52
|
## Pre-requisites
|
22
53
|
|
@@ -26,12 +57,16 @@ It also configures them in [Glimmer](https://github.com/AndyObtiva/glimmer) for
|
|
26
57
|
|
27
58
|
## Setup
|
28
59
|
|
60
|
+
Versions follow this convention:
|
61
|
+
- First 3 digits map to the official Nebula CDateTime library version (e.g. 1.4.0)
|
62
|
+
- Last 2 digits map to minor and patch versions for Glimmer Custom Widget wrapper
|
63
|
+
|
29
64
|
### Glimmer Application
|
30
65
|
|
31
66
|
Add the following to a [Glimmer](https://github.com/AndyObtiva/glimmer) application `Gemfile`:
|
32
67
|
|
33
68
|
```ruby
|
34
|
-
gem 'glimmer-cw-cdatetime-nebula', '1.4.0.
|
69
|
+
gem 'glimmer-cw-cdatetime-nebula', '1.4.0.2.0'
|
35
70
|
```
|
36
71
|
|
37
72
|
Run:
|
@@ -40,41 +75,170 @@ Run:
|
|
40
75
|
jruby -S bundle
|
41
76
|
```
|
42
77
|
|
43
|
-
(or just `bundle` if using RVM)
|
78
|
+
(or just `bundle` if using [RVM)
|
44
79
|
|
45
80
|
### Glimmer Custom Shell or Glimmer Custom Widget
|
46
81
|
|
47
|
-
When reusing in a [Glimmer](https://github.com/AndyObtiva/glimmer) custom shell or custom widget, you can follow the same steps for Glimmer application, and then add a require statement to your library file after `glimmer` and before additional library require statements:
|
82
|
+
When reusing in a [Glimmer](https://github.com/AndyObtiva/glimmer) custom shell or custom widget, you can follow the same steps for Glimmer application, and then add a require statement to your library file after `glimmer-dsl-swt` and before additional library require statements:
|
48
83
|
|
49
84
|
```ruby
|
50
|
-
require 'glimmer'
|
85
|
+
require 'glimmer-dsl-swt'
|
51
86
|
require 'glimmer-cw-cdatetime-nebula'
|
52
87
|
# ... more require statements follow
|
53
88
|
```
|
54
89
|
|
55
|
-
|
90
|
+
### Java Imports
|
56
91
|
|
57
|
-
|
92
|
+
Requiring the gem automatically configures java imports in [Glimmer](https://github.com/AndyObtiva/glimmer) for auto import via [JRuby](https://www.jruby.org/) `include_package` on first use:
|
93
|
+
- `org.eclipse.nebula.cwt`
|
94
|
+
- `org.eclipse.nebula.widgets.cdatetime`
|
58
95
|
|
59
|
-
|
96
|
+
## Usage Instructions
|
60
97
|
|
61
|
-
[https://
|
98
|
+
This [glimmer-cw-cdatetime-nebula](https://rubygems.org/gems/glimmer-cw-cdatetime-nebula) gem adds the `c_date_time` keyword to the [Glimmer GUI DSL](https://github.com/AndyObtiva/glimmer#glimmer-dsl-syntax) as well as other alias keywords as explained below.
|
62
99
|
|
63
|
-
|
100
|
+
The `c_date_time` keyword takes [`CDT`](#cdt) style bits as arguments.
|
101
|
+
|
102
|
+
Example:
|
103
|
+
|
104
|
+
```ruby
|
105
|
+
c_date_time(:border, :compact, :drop_down, :date_long)
|
106
|
+
```
|
107
|
+
|
108
|
+
Further instructions may be found at the [Nebula CDateTime Widget homepage](https://www.eclipse.org/nebula/widgets/cdatetime/cdatetime.php).
|
109
|
+
|
110
|
+
### Sample
|
111
|
+
|
112
|
+
Please run the following command to launch the [Nebula CDateTime Glimmer Custom Widget Gallery](samples/nebula/c_date_time_gallery.rb) app:
|
113
|
+
|
114
|
+
```
|
115
|
+
glimmer sample:run[c_date_time_gallery]
|
116
|
+
```
|
117
|
+
|
118
|
+
### Plain
|
119
|
+
|
120
|
+

|
121
|
+
|
122
|
+
#### `c_date_time`
|
123
|
+
|
124
|
+
Main keyword representing the Nebula CDateTime custom widget. Defaults to date/time pattern `'MM/dd/yyyy hh:mm a'` and plain style with a border
|
125
|
+
|
126
|
+
#### `c_date`
|
127
|
+
|
128
|
+
Alias keyword that specifies date pattern `'MM/dd/yyyy'` and plain style with a border
|
129
|
+
|
130
|
+
#### `c_time`
|
131
|
+
|
132
|
+
Alias keyword that specifies time pattern `'hh:mm a'` and plain style with a border
|
133
|
+
|
134
|
+
### Drop Down
|
135
|
+
|
136
|
+

|
137
|
+
|
138
|
+
#### `c_date_time_drop_down`
|
139
|
+
|
140
|
+
Alias keyword that specifies date/time pattern `'MM/dd/yyyy hh:mm a'` and drop down style with a border
|
141
|
+
|
142
|
+

|
143
|
+
|
144
|
+
#### `c_date_drop_down`
|
145
|
+
|
146
|
+
Alias keyword that specifies date pattern `'MM/dd/yyyy'` and drop down style with a border
|
147
|
+
|
148
|
+

|
149
|
+
|
150
|
+
#### `c_time_drop_down`
|
151
|
+
|
152
|
+
Alias that specifies time pattern `'hh:mm a'` and drop down style with a border
|
153
|
+
|
154
|
+

|
155
|
+
|
156
|
+
### Spinner
|
157
|
+
|
158
|
+

|
159
|
+
|
160
|
+
#### `c_date_time_spinner`
|
161
|
+
|
162
|
+
Alias that specifies date/time pattern `'MM/dd/yyyy hh:mm a'` and spinner style with a border
|
163
|
+
|
164
|
+
#### `c_date_spinner`
|
165
|
+
|
166
|
+
Alias that specifies date pattern `'MM/dd/yyyy'` and spinner style with a border
|
167
|
+
|
168
|
+
#### `c_time_spinner`
|
169
|
+
|
170
|
+
Alias that specifies time pattern `'hh:mm a'` and spinner style with a border
|
171
|
+
|
172
|
+
### Compact
|
173
|
+
|
174
|
+

|
175
|
+
|
176
|
+
#### `c_date_time_compact`
|
64
177
|
|
65
|
-
|
178
|
+
Alias that specifies date/time pattern `'MM/dd/yyyy hh:mm a'` and compact style (just a text field) with a border
|
66
179
|
|
67
|
-
|
180
|
+
#### `c_date_compact`
|
68
181
|
|
69
|
-
|
182
|
+
Alias that specifies date pattern `'MM/dd/yyyy'` and compact style (just a text field) with a border
|
70
183
|
|
71
|
-
|
184
|
+
#### `c_time_compact`
|
185
|
+
|
186
|
+
Alias that specifies time pattern `'hh:mm a'` and compact style (just a text field) with a border
|
187
|
+
|
188
|
+
### Style
|
189
|
+
|
190
|
+
#### `cdt`
|
191
|
+
|
192
|
+
[`CDT`](https://www.eclipse.org/nebula/releases/latest/javadoc/org/eclipse/nebula/widgets/cdatetime/CDT.html) styles are fully documented in the [Nebula `CDT` Javadoc](https://www.eclipse.org/nebula/releases/latest/javadoc/org/eclipse/nebula/widgets/cdatetime/CDT.html).
|
193
|
+
|
194
|
+
The `cdt` keyword builds a [`CDT`](https://www.eclipse.org/nebula/releases/latest/javadoc/org/eclipse/nebula/widgets/cdatetime/CDT.html) style by passing in comma-separated symbols (e.g. `cdt(:border, :drop_down, :date_long)`)
|
195
|
+
|
196
|
+
For example, instead of passing style as bit-or'ed `CDT` Constant style bits:
|
197
|
+
|
198
|
+
```ruby
|
199
|
+
c_date_time(CDT::BORDER | CDT::COMPACT | CDT::DROP_DOWN | CDT::DATE_LONG)
|
200
|
+
```
|
201
|
+
|
202
|
+
You instead pass style as comma-separated symbols:
|
203
|
+
|
204
|
+
```ruby
|
205
|
+
c_date_time(cdt(:border, :compact, :drop_down, :date_long))
|
206
|
+
```
|
207
|
+
|
208
|
+
However, `c_date_time` goes one step further and uses it internally automatically by all `c_date_time` keyword initializers, so you could ditch the `cdt` entirely when constructing a widget.
|
209
|
+
|
210
|
+
```ruby
|
211
|
+
c_date_time(:border, :compact, :drop_down, :date_long)
|
212
|
+
```
|
213
|
+
|
214
|
+
Furthermore, `c_date_time` has pre-configured smart defaults for `CDT` styles:
|
215
|
+
|
216
|
+
```
|
217
|
+
'c_date_time' => [:border, :tab_fields, :simple],
|
218
|
+
'c_date' => [:border, :tab_fields, :date_short, :simple],
|
219
|
+
'c_time' => [:border, :tab_fields, :time_short, :simple],
|
220
|
+
'c_date_time_compact' => [:border, :tab_fields, :compact],
|
221
|
+
'c_date_compact' => [:border, :tab_fields, :date_short, :compact],
|
222
|
+
'c_time_compact' => [:border, :tab_fields, :time_short, :compact],
|
223
|
+
'c_date_time_spinner' => [:border, :tab_fields, :spinner],
|
224
|
+
'c_date_spinner' => [:border, :tab_fields, :date_short, :spinner],
|
225
|
+
'c_time_spinner' => [:border, :tab_fields, :time_short, :spinner],
|
226
|
+
'c_date_time_drop_down' => [:border, :tab_fields, :drop_down],
|
227
|
+
'c_date_drop_down' => [:border, :tab_fields, :drop_down, :date_short],
|
228
|
+
'c_time_drop_down' => [:border, :tab_fields, :drop_down, :time_short],
|
229
|
+
```
|
230
|
+
|
231
|
+
### Data-Binding and Observers:
|
232
|
+
|
233
|
+
The `selection` property provides access to the value selected by the user. It can be hooked with basic data-binding to a model property. Additionaly observers may be attached too, such as `on_widget_selected` and `on_key_pressed`.
|
234
|
+
|
235
|
+
Example:
|
72
236
|
|
73
237
|
```ruby
|
74
238
|
# ...
|
75
239
|
composite {
|
76
240
|
# ...
|
77
|
-
@start_at = c_date_time(
|
241
|
+
@start_at = c_date_time(:border, :drop_down, :date_long) {
|
78
242
|
# ...
|
79
243
|
selection bind(@task, :start_at)
|
80
244
|
on_key_pressed { |event|
|
@@ -85,9 +249,13 @@ Here is the Nebula CDateTime Widget [Javadoc API page](https://www.eclipse.org/n
|
|
85
249
|
# ...
|
86
250
|
```
|
87
251
|
|
88
|
-

|
252
|
+

|
253
|
+
|
254
|
+
### Table Editing
|
89
255
|
|
90
|
-
|
256
|
+
`c_date_time` can be used as a `table` / `table_column` editor.
|
257
|
+
|
258
|
+
Example:
|
91
259
|
|
92
260
|
```ruby
|
93
261
|
# ...
|
@@ -96,12 +264,12 @@ Here is the Nebula CDateTime Widget [Javadoc API page](https://www.eclipse.org/n
|
|
96
264
|
table_column {
|
97
265
|
text 'Start Date'
|
98
266
|
width CONFIG[:table_column_width_hint]
|
99
|
-
editor :c_date_time,
|
267
|
+
editor :c_date_time, cdt(:border, :drop_down, :date_long), property: :start_at
|
100
268
|
}
|
101
269
|
table_column {
|
102
270
|
text 'End Date'
|
103
271
|
width CONFIG[:table_column_width_hint]
|
104
|
-
editor :c_date_time,
|
272
|
+
editor :c_date_time, cdt(:border, :drop_down, :date_long), property: :end_at
|
105
273
|
}
|
106
274
|
# ... other table_column declarations
|
107
275
|
items bind(Task, :list), column_properties(:project_name, :task_type, :name, :start_date, :end_date, :duration, :priority)
|
@@ -110,12 +278,44 @@ Here is the Nebula CDateTime Widget [Javadoc API page](https://www.eclipse.org/n
|
|
110
278
|
# ...
|
111
279
|
```
|
112
280
|
|
113
|
-

|
281
|
+

|
282
|
+
|
283
|
+
## API
|
284
|
+
|
285
|
+
You may check out the Nebula CDateTime Widget [Javadoc API](https://www.eclipse.org/nebula/releases/latest/javadoc/org/eclipse/nebula/widgets/cdatetime/CDateTime.html).
|
286
|
+
|
287
|
+
### Glimmer Custom API
|
288
|
+
|
289
|
+
Glimmer adds a few extra API methods to CDateTime from Nebula.
|
290
|
+
|
291
|
+
#### `toggle_open`
|
292
|
+
|
293
|
+
Programmatically toggle date/time dropdown as open (simpler than directly calling `.swt_widget.set_open` in certain circumstances)
|
294
|
+
|
295
|
+
#### `text_widget_proxy`
|
296
|
+
|
297
|
+
Provides access to the inner text widget to allow programmatic adding of obesrvers and/or data-binding.
|
298
|
+
|
299
|
+
Example:
|
300
|
+
|
301
|
+
```
|
302
|
+
c_time { |proxy|
|
303
|
+
proxy.text_widget_proxy.content {
|
304
|
+
on_swt_mouseup { |event|
|
305
|
+
proxy.toggle_open
|
306
|
+
}
|
307
|
+
}
|
308
|
+
}
|
309
|
+
```
|
310
|
+
|
311
|
+
|
312
|
+
## TODO
|
313
|
+
|
314
|
+
[TODO.md](TODO.md)
|
114
315
|
|
115
316
|
## Change Log
|
116
317
|
|
117
|
-
|
118
|
-
- 1.4.0.0: Initial version
|
318
|
+
[CHANGELOG.md](CHANGELOG.md)
|
119
319
|
|
120
320
|
## Contributing to glimmer-cw-cdatetime-nebula
|
121
321
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.4.0.
|
1
|
+
1.4.0.2.0
|
@@ -1,3 +1,24 @@
|
|
1
|
+
# Copyright (c) 2020 - Andy Maleh
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
# a copy of this software and associated documentation files (the
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
# the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be
|
12
|
+
# included in all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
1
22
|
$LOAD_PATH.unshift(File.expand_path('..', __FILE__))
|
2
23
|
$LOAD_PATH.unshift(File.expand_path('../..', __FILE__))
|
3
24
|
|
@@ -11,4 +32,47 @@ Glimmer::Config.import_swt_packages += [
|
|
11
32
|
'org.eclipse.nebula.widgets.cdatetime',
|
12
33
|
]
|
13
34
|
|
35
|
+
require 'glimmer-cw-cdatetime-nebula/ext/glimmer/dsl/swt/cdt_expression'
|
36
|
+
require 'glimmer-cw-cdatetime-nebula/ext/glimmer/swt/c_date_time_proxy'
|
14
37
|
require 'views/nebula/c_date_time'
|
38
|
+
|
39
|
+
Glimmer::SWT::WidgetProxy::DEFAULT_STYLES.merge!(
|
40
|
+
'c_date_time' => [:border, :tab_fields, :simple],
|
41
|
+
'c_date' => [:border, :tab_fields, :date_short, :simple],
|
42
|
+
'c_time' => [:border, :tab_fields, :time_short, :simple],
|
43
|
+
'c_date_time_compact' => [:border, :tab_fields, :compact],
|
44
|
+
'c_date_compact' => [:border, :tab_fields, :date_short, :compact],
|
45
|
+
'c_time_compact' => [:border, :tab_fields, :time_short, :compact],
|
46
|
+
'c_date_time_spinner' => [:border, :tab_fields, :spinner],
|
47
|
+
'c_date_spinner' => [:border, :tab_fields, :date_short, :spinner],
|
48
|
+
'c_time_spinner' => [:border, :tab_fields, :time_short, :spinner],
|
49
|
+
'c_date_time_drop_down' => [:border, :tab_fields, :drop_down],
|
50
|
+
'c_date_drop_down' => [:border, :tab_fields, :drop_down, :date_short],
|
51
|
+
'c_time_drop_down' => [:border, :tab_fields, :drop_down, :time_short],
|
52
|
+
)
|
53
|
+
|
54
|
+
Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_date_time'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_date_time_compact'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_date_time_spinner'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_date_time_drop_down'] = lambda do |widget|
|
55
|
+
widget.pattern = 'MM/dd/yyyy hh:mm a'
|
56
|
+
end
|
57
|
+
Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_date'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_date_compact'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_date_spinner'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_date_drop_down'] = lambda do |widget|
|
58
|
+
widget.pattern = 'MM/dd/yyyy'
|
59
|
+
end
|
60
|
+
Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_time'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_time_compact'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_time_spinner'] = Glimmer::SWT::WidgetProxy::DEFAULT_INITIALIZERS['c_time_drop_down'] = lambda do |widget|
|
61
|
+
widget.pattern = 'hh:mm a'
|
62
|
+
end
|
63
|
+
|
64
|
+
Glimmer::SWT::WidgetProxy::KEYWORD_ALIASES.merge!(
|
65
|
+
'c_date' => 'c_date_time',
|
66
|
+
'c_time' => 'c_date_time',
|
67
|
+
'c_date_time_compact' => 'c_date_time',
|
68
|
+
'c_date_compact' => 'c_date_time',
|
69
|
+
'c_time_compact' => 'c_date_time',
|
70
|
+
'c_date_time_spinner' => 'c_date_time',
|
71
|
+
'c_date_spinner' => 'c_date_time',
|
72
|
+
'c_time_spinner' => 'c_date_time',
|
73
|
+
'c_date_time_drop_down' => 'c_date_time',
|
74
|
+
'c_date_drop_down' => 'c_date_time',
|
75
|
+
'c_time_drop_down' => 'c_date_time',
|
76
|
+
)
|
77
|
+
|
78
|
+
Glimmer::Config::SAMPLE_DIRECTORIES << File.expand_path('../../samples/nebula', __FILE__)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'glimmer/dsl/static_expression'
|
2
|
+
require 'glimmer-cw-cdatetime-nebula/ext/glimmer/swt/cdt_proxy'
|
3
|
+
|
4
|
+
module Glimmer
|
5
|
+
module DSL
|
6
|
+
module SWT
|
7
|
+
# Extends Glimmer DSL to easily build CDT constant values with `cdt(arg)`
|
8
|
+
#
|
9
|
+
# Named CdtExpression (not CDTExpression) so that the DSL engine
|
10
|
+
# discovers quickly by convention
|
11
|
+
class CdtExpression < StaticExpression
|
12
|
+
def can_interpret?(parent, keyword, *args, &block)
|
13
|
+
block.nil? &&
|
14
|
+
args.size > 0
|
15
|
+
end
|
16
|
+
|
17
|
+
def interpret(parent, keyword, *args, &block)
|
18
|
+
Glimmer::SWT::CDTProxy[*args]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# Copyright (c) 2020 - Andy Maleh
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
# a copy of this software and associated documentation files (the
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
# the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be
|
12
|
+
# included in all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
22
|
+
module Glimmer
|
23
|
+
module SWT
|
24
|
+
# This modules just configures Glimmer to work with Nebula CDateTime
|
25
|
+
# Since it is wrapping an existing SWT widget with the same name,
|
26
|
+
# it is not implemented as a typical "Glimmer Custom Widget", yet
|
27
|
+
# just a Glimmer widget proxy that extends Glimmer::SWT::WidgetProxy
|
28
|
+
class CDateTimeProxy < Glimmer::SWT::WidgetProxy
|
29
|
+
def text_widget_proxy
|
30
|
+
Glimmer::SWT::WidgetProxy.new(swt_widget: swt_widget.text_widget.control)
|
31
|
+
end
|
32
|
+
|
33
|
+
def toggle_open
|
34
|
+
swt_widget.set_open(!swt_widget.is_open)
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def has_style?(style)
|
40
|
+
begin
|
41
|
+
comparison = CDTProxy[style]
|
42
|
+
rescue
|
43
|
+
begin
|
44
|
+
comparison = SWTProxy[style]
|
45
|
+
rescue
|
46
|
+
comparison = DNDProxy[style]
|
47
|
+
end
|
48
|
+
end
|
49
|
+
(@swt_widget.style & comparison) == comparison
|
50
|
+
end
|
51
|
+
|
52
|
+
def default_style(underscored_widget_name)
|
53
|
+
styles = DEFAULT_STYLES[underscored_widget_name] || [:none]
|
54
|
+
CDTProxy[styles] rescue SWTProxy[styles] rescue DNDProxy[styles]
|
55
|
+
end
|
56
|
+
|
57
|
+
def style(underscored_widget_name, styles)
|
58
|
+
styles = [styles].flatten.compact
|
59
|
+
if styles.empty?
|
60
|
+
default_style(underscored_widget_name)
|
61
|
+
else
|
62
|
+
begin
|
63
|
+
CDTProxy[*styles]
|
64
|
+
rescue
|
65
|
+
begin
|
66
|
+
SWTProxy[*styles]
|
67
|
+
rescue
|
68
|
+
DNDProxy[*styles]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# Copyright (c) 2020 - Andy Maleh
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
# a copy of this software and associated documentation files (the
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
# the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be
|
12
|
+
# included in all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
22
|
+
require 'glimmer/swt/style_constantizable'
|
23
|
+
|
24
|
+
module Glimmer
|
25
|
+
module SWT
|
26
|
+
# Proxy for org.eclipse.nebula.widgets.cdatetime.CDT
|
27
|
+
#
|
28
|
+
# Follows the Proxy Design Pattern
|
29
|
+
class CDTProxy
|
30
|
+
include Glimmer::SWT::StyleConstantizable
|
31
|
+
|
32
|
+
class << self
|
33
|
+
JAVA_IMPORT = 'org.eclipse.nebula.widgets.cdatetime.CDT'
|
34
|
+
|
35
|
+
java_import JAVA_IMPORT
|
36
|
+
|
37
|
+
def constant_java_import
|
38
|
+
JAVA_IMPORT
|
39
|
+
end
|
40
|
+
|
41
|
+
def constant_source_class
|
42
|
+
CDT
|
43
|
+
end
|
44
|
+
|
45
|
+
def constant_value_none
|
46
|
+
CDT::NONE
|
47
|
+
end
|
48
|
+
|
49
|
+
def extra_styles
|
50
|
+
{}
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -6,7 +6,7 @@ module Nebula
|
|
6
6
|
Glimmer::SWT::TableProxy.editors[:c_date_time] ||= {
|
7
7
|
widget_value_property: :selection,
|
8
8
|
editor_gui: lambda do |args, model, property, table_proxy|
|
9
|
-
args <<
|
9
|
+
args << cdt(:drop_down) if args.empty?
|
10
10
|
table_editor_widget_proxy = c_date_time(*args) {
|
11
11
|
table_proxy.table_editor.minimumHeight = 20
|
12
12
|
selection model.send(property)
|
@@ -0,0 +1,157 @@
|
|
1
|
+
# Copyright (c) 2020 - Andy Maleh
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
# a copy of this software and associated documentation files (the
|
5
|
+
# "Software"), to deal in the Software without restriction, including
|
6
|
+
# without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
# permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
# the following conditions:
|
10
|
+
#
|
11
|
+
# The above copyright notice and this permission notice shall be
|
12
|
+
# included in all copies or substantial portions of the Software.
|
13
|
+
#
|
14
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
22
|
+
require_relative '../../lib/glimmer-cw-cdatetime-nebula'
|
23
|
+
|
24
|
+
class CDateTimeGallery
|
25
|
+
include Glimmer
|
26
|
+
|
27
|
+
def open
|
28
|
+
shell {
|
29
|
+
grid_layout(4, false) {
|
30
|
+
vertical_spacing 20
|
31
|
+
}
|
32
|
+
text 'Nebula CDateTime Glimmer Custom Widget Gallery'
|
33
|
+
|
34
|
+
label {
|
35
|
+
layout_data(:center, :center, true, false) {
|
36
|
+
horizontal_span 4
|
37
|
+
}
|
38
|
+
text 'Nebula CDateTime Glimmer Custom Widget Gallery'
|
39
|
+
font height: 24, style: :bold
|
40
|
+
}
|
41
|
+
|
42
|
+
tab_folder {
|
43
|
+
tab_item {
|
44
|
+
grid_layout 2, false
|
45
|
+
text 'Plain'
|
46
|
+
|
47
|
+
label {
|
48
|
+
text 'c_date_time'
|
49
|
+
font name: 'Consolas', height: 14
|
50
|
+
}
|
51
|
+
c_date_time
|
52
|
+
|
53
|
+
label {
|
54
|
+
text 'c_date'
|
55
|
+
font name: 'Consolas', height: 14
|
56
|
+
}
|
57
|
+
c_date
|
58
|
+
|
59
|
+
label {
|
60
|
+
text 'c_time'
|
61
|
+
font name: 'Consolas', height: 14
|
62
|
+
}
|
63
|
+
c_time
|
64
|
+
}
|
65
|
+
|
66
|
+
tab_item {
|
67
|
+
grid_layout 2, false
|
68
|
+
text 'Drop Down'
|
69
|
+
|
70
|
+
label {
|
71
|
+
text 'c_date_time_drop_down'
|
72
|
+
font name: 'Consolas', height: 14
|
73
|
+
}
|
74
|
+
c_date_time_drop_down {
|
75
|
+
layout_data(:fill, :center, true, true)
|
76
|
+
}
|
77
|
+
|
78
|
+
label {
|
79
|
+
text 'c_date_drop_down'
|
80
|
+
font name: 'Consolas', height: 14
|
81
|
+
}
|
82
|
+
c_date_drop_down {
|
83
|
+
layout_data(:fill, :center, true, true)
|
84
|
+
}
|
85
|
+
|
86
|
+
label {
|
87
|
+
text 'c_time_drop_down'
|
88
|
+
font name: 'Consolas', height: 14
|
89
|
+
}
|
90
|
+
c_time_drop_down {
|
91
|
+
layout_data(:fill, :center, true, true)
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
95
|
+
tab_item {
|
96
|
+
grid_layout 2, false
|
97
|
+
text 'Spinner'
|
98
|
+
|
99
|
+
label {
|
100
|
+
text 'c_date_time_spinner'
|
101
|
+
font name: 'Consolas', height: 14
|
102
|
+
}
|
103
|
+
c_date_time_spinner {
|
104
|
+
layout_data(:fill, :center, true, true)
|
105
|
+
}
|
106
|
+
|
107
|
+
label {
|
108
|
+
text 'c_date_spinner'
|
109
|
+
font name: 'Consolas', height: 14
|
110
|
+
}
|
111
|
+
c_date_spinner {
|
112
|
+
layout_data(:fill, :center, true, true)
|
113
|
+
}
|
114
|
+
|
115
|
+
label {
|
116
|
+
text 'c_time_spinner'
|
117
|
+
font name: 'Consolas', height: 14
|
118
|
+
}
|
119
|
+
c_time_spinner {
|
120
|
+
layout_data(:fill, :center, true, true)
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
tab_item {
|
125
|
+
grid_layout 2, false
|
126
|
+
text 'Compact'
|
127
|
+
|
128
|
+
label {
|
129
|
+
text 'c_date_time_compact'
|
130
|
+
font name: 'Consolas', height: 14
|
131
|
+
}
|
132
|
+
c_date_time_compact {
|
133
|
+
layout_data(:fill, :center, true, true)
|
134
|
+
}
|
135
|
+
|
136
|
+
label {
|
137
|
+
text 'c_date_compact'
|
138
|
+
font name: 'Consolas', height: 14
|
139
|
+
}
|
140
|
+
c_date_compact {
|
141
|
+
layout_data(:fill, :center, true, true)
|
142
|
+
}
|
143
|
+
|
144
|
+
label {
|
145
|
+
text 'c_time_compact'
|
146
|
+
font name: 'Consolas', height: 14
|
147
|
+
}
|
148
|
+
c_time_compact {
|
149
|
+
layout_data(:fill, :center, true, true)
|
150
|
+
}
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}.open
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
CDateTimeGallery.new.open
|
metadata
CHANGED
@@ -1,21 +1,21 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glimmer-cw-cdatetime-nebula
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.0.
|
4
|
+
version: 1.4.0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andy Maleh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-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.
|
18
|
+
version: 0.6.8
|
19
19
|
- - "<"
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 2.0.0
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.6.8
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 2.0.0
|
@@ -87,7 +87,8 @@ dependencies:
|
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
89
|
description: Nebula CDateTime Widget - Glimmer Custom Widget - A Date and Time selection
|
90
|
-
widget that can be used in a
|
90
|
+
widget that can be used in a plain (graphical), dropdown, spinner, or compact text
|
91
|
+
style.
|
91
92
|
email: andy.am@gmail.com
|
92
93
|
executables: []
|
93
94
|
extensions: []
|
@@ -99,7 +100,11 @@ files:
|
|
99
100
|
- README.md
|
100
101
|
- VERSION
|
101
102
|
- lib/glimmer-cw-cdatetime-nebula.rb
|
103
|
+
- lib/glimmer-cw-cdatetime-nebula/ext/glimmer/dsl/swt/cdt_expression.rb
|
104
|
+
- lib/glimmer-cw-cdatetime-nebula/ext/glimmer/swt/c_date_time_proxy.rb
|
105
|
+
- lib/glimmer-cw-cdatetime-nebula/ext/glimmer/swt/cdt_proxy.rb
|
102
106
|
- lib/views/nebula/c_date_time.rb
|
107
|
+
- samples/nebula/c_date_time_gallery.rb
|
103
108
|
- vendor/nebula/org.eclipse.nebula.cwt_1.1.0.jar
|
104
109
|
- vendor/nebula/org.eclipse.nebula.widgets.cdatetime_1.4.0.jar
|
105
110
|
homepage: http://github.com/AndyObtiva/glimmer-cw-cdatetime-nebula
|