glimmer-dsl-swt 4.20.4.3 → 4.20.5.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: 13212fd4b8a440d635d5172b493b979d12a1ec1da94e7ea50c5c55521e4ae80c
4
- data.tar.gz: d7c3004d04d20b0c14e8f6f72ac4be6368844e0ecb892962c021414291e3a0d8
3
+ metadata.gz: 8b5a5a713224bb17bff5a0f19e1333a232c71871212e99be452753fe6821e407
4
+ data.tar.gz: 65c144171a3083704797b01c29b036463b27692461aeb0a11a7698ad24c400a5
5
5
  SHA512:
6
- metadata.gz: 6420272e89fe681bd64d68b4db5dc25ac19a52efd20e00e3a72b840ead51dcb3755396bd1b9e72a6e36b96719348c609c275e2827805809e7ecefdc00727d327
7
- data.tar.gz: 40b0acce99bf96c49f5499034271faf126c40b5e8870ff62c9b22bf8f6501448cd7256cf583c30d2928e06572ee02862cae1445feac71427b29ef7d829a09f6c
6
+ metadata.gz: 44d93271f4c7504605a23a665cc921bd8c364962f6e992f137c058b0361099593407eee8003ce1aa08cd58e1f36d8302ab3243d34dead3e8718971c25150cca9
7
+ data.tar.gz: e7921eb7002882585225e4580b02d81f17a471982905263abdaad87482e640edcc686a5ae9be9241dd2b0f9d9f37f0a29cbfc6c7d43e1e1d770c39d60ce7be35
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Change Log
2
2
 
3
+ ### 4.20.5.0
4
+
5
+ - Relax glimmer-dsl-swt version number when scaffolding custom shape/widget/shell gems. Keep it strict for app development.
6
+ - Explicit support for `tray_item` keyword as nested under `shell`, having `menu` nested under `tray_item`, automating everything relating to using SWT TrayItem (no need to work with the Display System Tray or Menu objects manually).
7
+ - Hello, Tray Item! Sample
8
+
3
9
  ### 4.20.4.2
4
10
 
5
11
  - Hello, Label!
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.20.4.3
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.20.5.0
2
2
  ## JRuby Desktop Development GUI Framework
3
3
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
4
4
  [![Travis CI](https://travis-ci.com/AndyObtiva/glimmer-dsl-swt.svg?branch=master)](https://travis-ci.com/github/AndyObtiva/glimmer-dsl-swt)
@@ -15,7 +15,7 @@
15
15
  [<img src="https://covers.oreillystatic.com/images/9780596519650/lrg.jpg" width=105 /><br />
16
16
  Featured in JRuby Cookbook](http://shop.oreilly.com/product/9780596519650.do) and [Chalmers/Gothenburg University Software Engineering Master's Lecture Material](http://www.cse.chalmers.se/~bergert/slides/guest_lecture_DSLs.pdf)
17
17
 
18
- [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.20.4.3 includes [SWT 4.20](https://download.eclipse.org/eclipse/downloads/drops4/R-4.20-202106111600/), which was released on June 11, 2021. Gem version numbers are in sync with the SWT library versions. The first two digits represent the SWT version number. The last two digits represent the minor and patch versions of Glimmer DSL for SWT. Note that SWT now supports AARCH64 on Mac and Linux, but it is not fully tested in Glimmer DSL for SWT yet, so deem its support experimental for the time being without guarantees for functionality until declared otherwise (report any issues you may encounter).
18
+ [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) 4.20.5.0 includes [SWT 4.20](https://download.eclipse.org/eclipse/downloads/drops4/R-4.20-202106111600/), which was released on June 11, 2021. Gem version numbers are in sync with the SWT library versions. The first two digits represent the SWT version number. The last two digits represent the minor and patch versions of Glimmer DSL for SWT. Note that SWT now supports AARCH64 on Mac and Linux, but it is not fully tested in Glimmer DSL for SWT yet, so deem its support experimental for the time being without guarantees for functionality until declared otherwise (report any issues you may encounter).
19
19
 
20
20
  **Starting in version 4.20.0.0, [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) comes with the new [***Shine***](/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#shine) syntax** for highly intuitive and visually expressive View/Model Attribute Mapping, relying on `<=>` for bidirectional (two-way) data-binding and `<=` for unidirectional (one-way) data-binding, providing an alternative to the `bind` keyword (keep in mind that it is still a beta, so default back to `bind` whenever needed).
21
21
 
@@ -347,7 +347,7 @@ jgem install glimmer-dsl-swt
347
347
 
348
348
  Or this command if you want a specific version:
349
349
  ```
350
- jgem install glimmer-dsl-swt -v 4.20.4.3
350
+ jgem install glimmer-dsl-swt -v 4.20.5.0
351
351
  ```
352
352
 
353
353
  `jgem` is JRuby's version of `gem` command.
@@ -375,7 +375,7 @@ Note: if you're using activerecord or activesupport, keep in mind that Glimmer u
375
375
 
376
376
  Add the following to `Gemfile`:
377
377
  ```
378
- gem 'glimmer-dsl-swt', '~> 4.20.4.3'
378
+ gem 'glimmer-dsl-swt', '~> 4.20.5.0'
379
379
  ```
380
380
 
381
381
  And, then run:
@@ -396,7 +396,7 @@ glimmer
396
396
  ```
397
397
 
398
398
  ```
399
- Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.20.4.3
399
+ Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.20.5.0
400
400
 
401
401
  Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
402
402
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 4.20.4.3
1
+ 4.20.5.0
@@ -52,6 +52,7 @@
52
52
  - [Hello, Custom Shape!](#hello-custom-shape)
53
53
  - [Hello, Tool Bar!](#hello-tool-bar)
54
54
  - [Hello, Cool Bar!](#hello-cool-bar)
55
+ - [Hello, Tray Item!](#hello-tray-item)
55
56
  - [Elaborate Samples](#elaborate-samples)
56
57
  - [User Profile](#user-profile)
57
58
  - [Login](#login)
@@ -942,6 +943,26 @@ Hello, Cool Bar!
942
943
 
943
944
  ![Hello Cool Bar Reorg3](/images/glimmer-hello-cool-bar-reorg3.png)
944
945
 
946
+ #### Hello, Tray Item!
947
+
948
+ This sample demonstrates the use of `tray_item`, which enables hiding an app (sending to background) and showing again on top of all other apps. It can also show an About Message Box and exit completely if needed.
949
+
950
+ Code:
951
+
952
+ [samples/hello/hello_tray_item.rb](/samples/hello/hello_tray_item.rb)
953
+
954
+ Hello, Tray Item Icon!
955
+
956
+ ![Hello Tray Item Icon](/images/glimmer-hello-tray-item.png)
957
+
958
+ Hello, Tray Item Icon App!
959
+
960
+ ![Hello Tray Item App](/images/glimmer-hello-tray-item-app.png)
961
+
962
+ Hello, Tray Item Icon About Message Box!
963
+
964
+ ![Hello Tray Item Åbout](/images/glimmer-hello-tray-item-about.png)
965
+
945
966
  ### Elaborate Samples
946
967
 
947
968
  For more elaborate samples, check the following:
Binary file
@@ -0,0 +1,43 @@
1
+ # Copyright (c) 2007-2021 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/dsl/static_expression'
23
+ require 'glimmer/dsl/parent_expression'
24
+ require 'glimmer/swt/display_proxy'
25
+ require 'glimmer/swt/tray_proxy'
26
+
27
+ module Glimmer
28
+ module DSL
29
+ module SWT
30
+ class TrayExpression < StaticExpression
31
+ include ParentExpression
32
+
33
+ def can_interpret?(parent, keyword, *args, &block)
34
+ super && parent.is_a?(Glimmer::SWT::DisplayProxy) && args.empty?
35
+ end
36
+
37
+ def interpret(parent, keyword, *args, &block)
38
+ Glimmer::SWT::TrayProxy.instance
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,48 @@
1
+ # Copyright (c) 2007-2021 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/dsl/static_expression'
23
+ require 'glimmer/dsl/parent_expression'
24
+ require 'glimmer/swt/display_proxy'
25
+ require 'glimmer/swt/tray_proxy'
26
+ require 'glimmer/swt/tray_item_proxy'
27
+
28
+ module Glimmer
29
+ module DSL
30
+ module SWT
31
+ class TrayItemExpression < StaticExpression
32
+ include ParentExpression
33
+
34
+ include_package 'org.eclipse.swt.widgets'
35
+
36
+ def can_interpret?(parent, keyword, *args, &block)
37
+ super and
38
+ parent.swt_widget.is_a?(Shell) and
39
+ args.empty?
40
+ end
41
+
42
+ def interpret(parent, keyword, *args, &block)
43
+ Glimmer::SWT::TrayItemProxy.new(parent, *args)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -106,15 +106,23 @@ module Glimmer
106
106
  /vendor/jars/
107
107
  MULTI_LINE_STRING
108
108
 
109
- GEMFILE = <<~MULTI_LINE_STRING
109
+ GEMFILE_PREFIX = <<~MULTI_LINE_STRING
110
110
  # frozen_string_literal: true
111
111
 
112
112
  source 'https://rubygems.org'
113
113
 
114
114
  git_source(:github) {|repo_name| "https://github.com/\#{repo_name}" }
115
-
115
+ MULTI_LINE_STRING
116
+ GEMFILE_APP_MIDFIX = <<~MULTI_LINE_STRING
117
+
116
118
  gem 'glimmer-dsl-swt', '~> #{VERSION}'
117
-
119
+ MULTI_LINE_STRING
120
+ GEMFILE_GEM_MIDFIX = <<~MULTI_LINE_STRING
121
+
122
+ gem 'glimmer-dsl-swt', '~> #{VERSION.split('.')[0...2].join('.')}'
123
+ MULTI_LINE_STRING
124
+ GEMFILE_SUFFIX = <<~MULTI_LINE_STRING
125
+
118
126
  group :development do
119
127
  gem 'rspec', '~> 3.5.0'
120
128
  gem 'juwelier', '2.4.9'
@@ -122,6 +130,8 @@ module Glimmer
122
130
  gem 'simplecov', '>= 0'
123
131
  end
124
132
  MULTI_LINE_STRING
133
+ APP_GEMFILE = GEMFILE_PREFIX + GEMFILE_APP_MIDFIX + GEMFILE_SUFFIX
134
+ GEM_GEMFILE = GEMFILE_PREFIX + GEMFILE_GEM_MIDFIX + GEMFILE_SUFFIX
125
135
 
126
136
  def app(app_name)
127
137
  common_app(app_name)
@@ -250,7 +260,7 @@ module Glimmer
250
260
  write '.ruby-version', RUBY_VERSION
251
261
  write '.ruby-gemset', gem_name
252
262
  write 'VERSION', '1.0.0'
253
- write 'Gemfile', GEMFILE
263
+ write 'Gemfile', GEM_GEMFILE
254
264
  write 'Rakefile', gem_rakefile(custom_shell_name, namespace, gem_name)
255
265
  append "lib/#{gem_name}.rb", gem_main_file(custom_shell_name, namespace)
256
266
  custom_shell(custom_shell_name, namespace, :gem)
@@ -321,7 +331,7 @@ module Glimmer
321
331
  write '.ruby-version', RUBY_VERSION
322
332
  write '.ruby-gemset', gem_name
323
333
  write 'VERSION', '1.0.0'
324
- write 'Gemfile', GEMFILE
334
+ write 'Gemfile', GEM_GEMFILE
325
335
  write 'Rakefile', gem_rakefile
326
336
  append "lib/#{gem_name}.rb", gem_main_file(custom_widget_name, namespace)
327
337
  custom_widget(custom_widget_name, namespace)
@@ -359,7 +369,7 @@ module Glimmer
359
369
  write '.ruby-version', RUBY_VERSION
360
370
  write '.ruby-gemset', gem_name
361
371
  write 'VERSION', '1.0.0'
362
- write 'Gemfile', GEMFILE
372
+ write 'Gemfile', GEM_GEMFILE
363
373
  write 'Rakefile', gem_rakefile
364
374
  append "lib/#{gem_name}.rb", gem_main_file(custom_shape_name, namespace)
365
375
  custom_shape(custom_shape_name, namespace)
@@ -418,7 +428,7 @@ module Glimmer
418
428
 
419
429
  def gemfile(shell_type)
420
430
  if shell_type == :desktopify
421
- lines = GEMFILE.split("\n")
431
+ lines = APP_GEMFILE.split("\n")
422
432
  require_glimmer_dsl_swt_index = lines.index(lines.detect {|l| l.include?("gem 'glimmer-dsl-swt'") })
423
433
  lines[(require_glimmer_dsl_swt_index + 1)..(require_glimmer_dsl_swt_index + 1)] = [
424
434
  "",
@@ -428,7 +438,7 @@ module Glimmer
428
438
  ]
429
439
  lines.join("\n")
430
440
  else
431
- GEMFILE
441
+ APP_GEMFILE
432
442
  end
433
443
  end
434
444
 
@@ -63,6 +63,9 @@ module Glimmer
63
63
  @swt_menu_item.setMenu(swt_widget)
64
64
  elsif parent.swt_widget.is_a?(Shell)
65
65
  @swt_widget = swt_widget_class.new(parent.swt_widget, style('menu', styles))
66
+ elsif parent.swt_widget.is_a?(TrayItem)
67
+ @swt_widget = swt_widget_class.new(parent.shell_proxy.swt_widget, style('menu', styles))
68
+ parent.menu_proxy = self
66
69
  else
67
70
  @swt_widget = swt_widget_class.new(parent.swt_widget)
68
71
  end
@@ -70,7 +73,18 @@ module Glimmer
70
73
  if styles.include?(:bar)
71
74
  DisplayProxy.instance.auto_exec { parent.swt_widget.setMenuBar(swt_widget) }
72
75
  elsif styles.include?(:pop_up)
73
- DisplayProxy.instance.auto_exec { parent.swt_widget.setMenu(swt_widget) }
76
+ if parent.swt_widget.is_a?(TrayItem)
77
+ parent.on_widget_selected {
78
+ self.visible = true
79
+ }
80
+ parent.on_menu_detected {
81
+ self.visible = true
82
+ }
83
+ else
84
+ DisplayProxy.instance.auto_exec {
85
+ parent.swt_widget.setMenu(swt_widget) unless parent.swt_widget.is_a?(TrayItem)
86
+ }
87
+ end
74
88
  end
75
89
  end
76
90
 
@@ -0,0 +1,44 @@
1
+ # Copyright (c) 2007-2021 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/swt_proxy'
23
+ require 'glimmer/swt/widget_proxy'
24
+ require 'glimmer/swt/tray_proxy'
25
+
26
+ module Glimmer
27
+ module SWT
28
+ # Proxy for org.eclipse.swt.widgets.TrayItem
29
+ #
30
+ # Invoking `#swt_widget` returns the SWT TrayItem object wrapped by this proxy
31
+ #
32
+ # Follows the Proxy Design Pattern and Flyweight Design Pattern (caching memoization)
33
+ class TrayItemProxy < Glimmer::SWT::WidgetProxy
34
+ attr_reader :tray_proxy, :shell_proxy
35
+ attr_accessor :menu_proxy
36
+
37
+ def initialize(shell_proxy, *args)
38
+ @shell_proxy = shell_proxy
39
+ @tray_proxy = Glimmer::SWT::TrayProxy.instance
40
+ super('tray_item', @tray_proxy, args)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,64 @@
1
+ # Copyright (c) 2007-2021 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/display_proxy'
23
+
24
+ module Glimmer
25
+ module SWT
26
+ # Proxy for org.eclipse.swt.widgets.Tray
27
+ #
28
+ # Invoking `#swt_widget` returns the SWT Tray object wrapped by this proxy
29
+ #
30
+ # Follows the Proxy Design Pattern and Flyweight Design Pattern (caching memoization)
31
+ class TrayProxy
32
+ class << self
33
+ def instance
34
+ @instance ||= new(Glimmer::SWT::DisplayProxy.instance)
35
+ end
36
+ end
37
+
38
+ attr_reader :swt_widget
39
+
40
+ def initialize(display_proxy)
41
+ @swt_widget = display_proxy.getSystemTray
42
+ end
43
+
44
+ def method_missing(method, *args, &block)
45
+ @swt_widget.send(method, *args, &block)
46
+ end
47
+
48
+ def respond_to?(method, *args, &block)
49
+ super || @swt_widget.respond_to?(method, *args, &block)
50
+ end
51
+
52
+ def post_initialize_child(child)
53
+ # No Op
54
+ end
55
+
56
+ # Subclasses may override to perform post add_content work.
57
+ # Make sure its logic detects if it ran before since it could run multiple times
58
+ # when adding content multiple times post creation.
59
+ def post_add_content
60
+ # No Op
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,135 @@
1
+ # Copyright (c) 2007-2021 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-dsl-swt'
23
+
24
+ class HelloTrayItem
25
+ include Glimmer::UI::CustomShell
26
+
27
+ # boolean that indicates if application is visible
28
+ attr_accessor :show_application
29
+
30
+ before_body {
31
+ # application starts visible
32
+ @show_application = true
33
+ # pre-render an icon image using the Canvas Shape DSL
34
+ @image = image(16, 16) {
35
+ rectangle(0, 0, 16, 16) {
36
+ background :black
37
+ }
38
+ oval(1, 1, [:default, - 2], [:default, - 2]) {
39
+ foreground :white
40
+ }
41
+ oval(3, 3, [:default, - 6], [:default, - 6]) {
42
+ foreground :white
43
+ }
44
+ oval(5, 5, [:default, - 10], [:default, - 10]) {
45
+ foreground :white
46
+ }
47
+ oval(7, 7, [:default, - 14], [:default, - 14]) {
48
+ foreground :white
49
+ }
50
+ }
51
+ }
52
+
53
+ body {
54
+ shell(:shell_trim, :on_top) { # make it always appear on top of everything
55
+ row_layout(:vertical) {
56
+ center true
57
+ }
58
+ text 'Hello, Tray Item!'
59
+
60
+ on_shell_closed do |event|
61
+ # do not perform event that closes app when shell is closed
62
+ event.doit = false
63
+ # body_root is the root shell
64
+ body_root.hide
65
+ self.show_application = false # updates Show Application checkbox menu item indirectly
66
+ end
67
+
68
+ tray_item {
69
+ tool_tip_text 'Glimmer'
70
+ image @image # could use an image path instead
71
+
72
+ menu {
73
+ menu_item {
74
+ text 'About'
75
+
76
+ on_widget_selected do
77
+ message_box {
78
+ text 'Glimmer - About'
79
+ message 'This is a Glimmer DSL for SWT Tray Item'
80
+ }.open
81
+ end
82
+ }
83
+ menu_item(:separator)
84
+ menu_item(:check) {
85
+ text 'Show Application'
86
+ selection <=> [self, :show_application]
87
+
88
+ on_widget_selected do
89
+ # body_root is the root shell
90
+ if body_root.visible?
91
+ body_root.hide
92
+ else
93
+ body_root.show
94
+ end
95
+ end
96
+ }
97
+ menu_item(:separator)
98
+ menu_item {
99
+ text 'Exit'
100
+
101
+ on_widget_selected {
102
+ exit(0)
103
+ }
104
+ }
105
+ }
106
+
107
+ # supported tray item listeners (you can try to add actions to them when needed)
108
+ # on_swt_Show {
109
+ # }
110
+ #
111
+ # on_swt_Hide {
112
+ # }
113
+ #
114
+ # on_widget_selected {
115
+ # }
116
+ #
117
+ # on_menu_detected {
118
+ # }
119
+ }
120
+
121
+ label(:center) {
122
+ text 'This is the application'
123
+ font height: 30
124
+ }
125
+ label {
126
+ text 'Click on the tray item (circles icon) to open its menu'
127
+ }
128
+ label {
129
+ text 'Uncheck Show Application to hide the app and recheck it to show the app'
130
+ }
131
+ }
132
+ }
133
+ end
134
+
135
+ HelloTrayItem.launch
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glimmer-dsl-swt
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.20.4.3
4
+ version: 4.20.5.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: 2021-07-15 00:00:00.000000000 Z
11
+ date: 2021-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -457,6 +457,8 @@ files:
457
457
  - lib/glimmer/dsl/swt/table_items_data_binding_expression.rb
458
458
  - lib/glimmer/dsl/swt/timer_exec_expression.rb
459
459
  - lib/glimmer/dsl/swt/transform_expression.rb
460
+ - lib/glimmer/dsl/swt/tray_expression.rb
461
+ - lib/glimmer/dsl/swt/tray_item_expression.rb
460
462
  - lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb
461
463
  - lib/glimmer/dsl/swt/tree_properties_expression.rb
462
464
  - lib/glimmer/dsl/swt/widget_expression.rb
@@ -516,6 +518,8 @@ files:
516
518
  - lib/glimmer/swt/table_proxy.rb
517
519
  - lib/glimmer/swt/tool_bar_proxy.rb
518
520
  - lib/glimmer/swt/transform_proxy.rb
521
+ - lib/glimmer/swt/tray_item_proxy.rb
522
+ - lib/glimmer/swt/tray_proxy.rb
519
523
  - lib/glimmer/swt/tree_proxy.rb
520
524
  - lib/glimmer/swt/widget_listener_proxy.rb
521
525
  - lib/glimmer/swt/widget_proxy.rb
@@ -615,6 +619,7 @@ files:
615
619
  - samples/hello/hello_table/baseball_park.png
616
620
  - samples/hello/hello_text.rb
617
621
  - samples/hello/hello_tool_bar.rb
622
+ - samples/hello/hello_tray_item.rb
618
623
  - samples/hello/hello_tree.rb
619
624
  - samples/hello/hello_world.rb
620
625
  - samples/hello/images/denmark.png