glimmer-dsl-swt 4.17.10.5 → 4.18.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +39 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +421 -95
  5. data/RUBY_VERSION +1 -1
  6. data/VERSION +1 -1
  7. data/bin/girb +1 -1
  8. data/bin/girb_runner.rb +1 -1
  9. data/bin/glimmer +1 -1
  10. data/glimmer-dsl-swt.gemspec +53 -32
  11. data/lib/ext/glimmer.rb +1 -1
  12. data/lib/ext/glimmer/config.rb +1 -1
  13. data/lib/glimmer-dsl-swt.rb +2 -1
  14. data/lib/glimmer/Rakefile +1 -1
  15. data/lib/glimmer/data_binding/list_selection_binding.rb +1 -1
  16. data/lib/glimmer/data_binding/observable_widget.rb +1 -1
  17. data/lib/glimmer/data_binding/shine.rb +1 -1
  18. data/lib/glimmer/data_binding/table_items_binding.rb +1 -1
  19. data/lib/glimmer/data_binding/tree_items_binding.rb +1 -1
  20. data/lib/glimmer/data_binding/widget_binding.rb +1 -1
  21. data/lib/glimmer/dsl/swt/async_exec_expression.rb +1 -1
  22. data/lib/glimmer/dsl/swt/bind_expression.rb +1 -1
  23. data/lib/glimmer/dsl/swt/block_property_expression.rb +1 -1
  24. data/lib/glimmer/dsl/swt/checkbox_group_selection_data_binding_expression.rb +1 -1
  25. data/lib/glimmer/dsl/swt/color_expression.rb +1 -1
  26. data/lib/glimmer/dsl/swt/column_properties_expression.rb +1 -1
  27. data/lib/glimmer/dsl/swt/combo_selection_data_binding_expression.rb +1 -1
  28. data/lib/glimmer/dsl/swt/cursor_expression.rb +1 -1
  29. data/lib/glimmer/dsl/swt/custom_widget_expression.rb +1 -1
  30. data/lib/glimmer/dsl/swt/data_binding_expression.rb +1 -1
  31. data/lib/glimmer/dsl/swt/dialog_expression.rb +1 -1
  32. data/lib/glimmer/dsl/swt/directory_dialog_expression.rb +1 -1
  33. data/lib/glimmer/dsl/swt/display_expression.rb +1 -1
  34. data/lib/glimmer/dsl/swt/dnd_expression.rb +1 -1
  35. data/lib/glimmer/dsl/swt/dsl.rb +1 -1
  36. data/lib/glimmer/dsl/swt/exec_expression.rb +5 -5
  37. data/lib/glimmer/dsl/swt/expand_item_expression.rb +1 -1
  38. data/lib/glimmer/dsl/swt/file_dialog_expression.rb +1 -1
  39. data/lib/glimmer/dsl/swt/font_expression.rb +1 -1
  40. data/lib/glimmer/dsl/swt/image_expression.rb +1 -1
  41. data/lib/glimmer/dsl/swt/layout_data_expression.rb +1 -1
  42. data/lib/glimmer/dsl/swt/layout_expression.rb +1 -1
  43. data/lib/glimmer/dsl/swt/list_selection_data_binding_expression.rb +1 -1
  44. data/lib/glimmer/dsl/swt/menu_bar_expression.rb +1 -1
  45. data/lib/glimmer/dsl/swt/menu_expression.rb +1 -1
  46. data/lib/glimmer/dsl/swt/message_box_expression.rb +1 -1
  47. data/lib/glimmer/dsl/swt/observe_expression.rb +1 -1
  48. data/lib/glimmer/dsl/swt/property_expression.rb +1 -1
  49. data/lib/glimmer/dsl/swt/radio_group_selection_data_binding_expression.rb +1 -1
  50. data/lib/glimmer/dsl/swt/rgb_expression.rb +1 -1
  51. data/lib/glimmer/dsl/swt/rgba_expression.rb +1 -1
  52. data/lib/glimmer/dsl/swt/shell_expression.rb +1 -1
  53. data/lib/glimmer/dsl/swt/swt_expression.rb +1 -1
  54. data/lib/glimmer/dsl/swt/sync_exec_expression.rb +1 -1
  55. data/lib/glimmer/dsl/swt/tab_item_expression.rb +1 -1
  56. data/lib/glimmer/dsl/swt/table_items_data_binding_expression.rb +1 -1
  57. data/lib/glimmer/dsl/swt/tree_items_data_binding_expression.rb +1 -1
  58. data/lib/glimmer/dsl/swt/tree_properties_expression.rb +1 -1
  59. data/lib/glimmer/dsl/swt/widget_expression.rb +1 -1
  60. data/lib/glimmer/dsl/swt/widget_listener_expression.rb +1 -1
  61. data/lib/glimmer/launcher.rb +1 -1
  62. data/lib/glimmer/rake_task.rb +1 -1
  63. data/lib/glimmer/rake_task/list.rb +1 -1
  64. data/lib/glimmer/rake_task/package.rb +1 -1
  65. data/lib/glimmer/rake_task/scaffold.rb +1 -1
  66. data/lib/glimmer/swt/color_proxy.rb +1 -1
  67. data/lib/glimmer/swt/cursor_proxy.rb +1 -1
  68. data/lib/glimmer/swt/custom/checkbox_group.rb +1 -1
  69. data/lib/glimmer/swt/custom/radio_group.rb +1 -1
  70. data/lib/glimmer/swt/date_time_proxy.rb +1 -1
  71. data/lib/glimmer/swt/directory_dialog_proxy.rb +1 -1
  72. data/lib/glimmer/swt/display_proxy.rb +1 -1
  73. data/lib/glimmer/swt/dnd_proxy.rb +1 -1
  74. data/lib/glimmer/swt/expand_item_proxy.rb +1 -1
  75. data/lib/glimmer/swt/file_dialog_proxy.rb +1 -1
  76. data/lib/glimmer/swt/font_proxy.rb +1 -1
  77. data/lib/glimmer/swt/image_proxy.rb +12 -11
  78. data/lib/glimmer/swt/layout_data_proxy.rb +1 -1
  79. data/lib/glimmer/swt/layout_proxy.rb +8 -4
  80. data/lib/glimmer/swt/menu_proxy.rb +10 -6
  81. data/lib/glimmer/swt/message_box_proxy.rb +1 -1
  82. data/lib/glimmer/swt/packages.rb +1 -1
  83. data/lib/glimmer/swt/sash_form_proxy.rb +2 -2
  84. data/lib/glimmer/swt/scrolled_composite_proxy.rb +1 -1
  85. data/lib/glimmer/swt/shell_proxy.rb +1 -1
  86. data/lib/glimmer/swt/style_constantizable.rb +9 -5
  87. data/lib/glimmer/swt/styled_text_proxy.rb +1 -1
  88. data/lib/glimmer/swt/swt_proxy.rb +1 -1
  89. data/lib/glimmer/swt/tab_item_proxy.rb +1 -1
  90. data/lib/glimmer/swt/table_column_proxy.rb +1 -1
  91. data/lib/glimmer/swt/table_proxy.rb +1 -1
  92. data/lib/glimmer/swt/tree_proxy.rb +26 -22
  93. data/lib/glimmer/swt/widget_listener_proxy.rb +1 -1
  94. data/lib/glimmer/swt/widget_proxy.rb +70 -24
  95. data/lib/glimmer/ui/custom_shell.rb +1 -1
  96. data/lib/glimmer/ui/custom_widget.rb +1 -1
  97. data/lib/glimmer/util/proc_tracker.rb +1 -1
  98. data/samples/elaborate/contact_manager.rb +1 -1
  99. data/samples/elaborate/contact_manager/contact.rb +1 -1
  100. data/samples/elaborate/contact_manager/contact_manager_presenter.rb +1 -1
  101. data/samples/elaborate/contact_manager/contact_repository.rb +1 -1
  102. data/samples/elaborate/login.rb +11 -14
  103. data/samples/elaborate/meta_sample.rb +80 -20
  104. data/samples/elaborate/tic_tac_toe.rb +2 -2
  105. data/samples/elaborate/tic_tac_toe/board.rb +1 -1
  106. data/samples/elaborate/tic_tac_toe/cell.rb +1 -1
  107. data/samples/elaborate/user_profile.rb +1 -1
  108. data/samples/hello/hello_browser.rb +3 -1
  109. data/samples/hello/hello_button.rb +1 -1
  110. data/samples/hello/hello_checkbox.rb +1 -1
  111. data/samples/hello/hello_checkbox_group.rb +1 -1
  112. data/samples/hello/hello_combo.rb +1 -1
  113. data/samples/hello/hello_computed.rb +10 -4
  114. data/samples/hello/hello_computed/contact.rb +1 -1
  115. data/samples/hello/hello_custom_shell.rb +1 -1
  116. data/samples/hello/hello_custom_widget.rb +1 -1
  117. data/samples/hello/hello_date_time.rb +1 -1
  118. data/samples/hello/hello_dialog.rb +78 -0
  119. data/samples/hello/hello_directory_dialog.rb +1 -1
  120. data/samples/hello/hello_drag_and_drop.rb +1 -1
  121. data/samples/hello/hello_expand_bar.rb +1 -1
  122. data/samples/hello/hello_file_dialog.rb +1 -1
  123. data/samples/hello/hello_group.rb +1 -1
  124. data/samples/hello/hello_link.rb +80 -0
  125. data/samples/hello/hello_list_multi_selection.rb +23 -18
  126. data/samples/hello/hello_list_single_selection.rb +6 -6
  127. data/samples/hello/hello_menu_bar.rb +185 -29
  128. data/samples/hello/hello_message_box.rb +10 -9
  129. data/samples/hello/hello_pop_up_context_menu.rb +34 -7
  130. data/samples/hello/hello_radio.rb +1 -1
  131. data/samples/hello/hello_radio_group.rb +1 -1
  132. data/samples/hello/hello_sash_form.rb +1 -1
  133. data/samples/hello/hello_spinner.rb +1 -1
  134. data/samples/hello/hello_styled_text.rb +1 -1
  135. data/samples/hello/hello_tab.rb +1 -1
  136. data/samples/hello/hello_table.rb +1 -1
  137. data/samples/hello/hello_world.rb +1 -1
  138. data/vendor/swt/linux/swt.jar +0 -0
  139. data/vendor/swt/mac/swt.jar +0 -0
  140. data/vendor/swt/windows/swt.jar +0 -0
  141. metadata +60 -40
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 811cbe738d6049291f6f00f32234ebef5af6d334009136314a309bf96807d863
4
- data.tar.gz: f2618026dc2b90cd076a75ffde44334aac013dc412afd23368cc0f072c4b5ed5
3
+ metadata.gz: 773a763de14bf4235417825e86edd36b703b202f5012b9461a6d6aa63cc671e3
4
+ data.tar.gz: 4dc41f837cbb1eb8e7a90bf0209236f326e26c7af3774b5def8bd3c47fab731c
5
5
  SHA512:
6
- metadata.gz: ad40ab20b33c48f575ac525b88e1c6c3fd38a5db937416afa748b6d4700f0b0930a3dbf000b69c3ac03cbdc092510762aeacc8a1588616679db6a783ce26fbfc
7
- data.tar.gz: 6bc20ea164c4fda7e35e5400ceb6e864205dc6be59eefc98a296f3df3fd795594b2f054988cbdd55ac6d0bbf555546dfdcad8231906a810ef099212420749aae
6
+ metadata.gz: 1365b3d2c0f322b4ea9ce4457c9bd6ccceaf1ea637b916927d21fd2d6da5d0d339944619326027c520e3fb7408d326ced0a09b8ba9e999aa572553fac3532c90
7
+ data.tar.gz: f6292d8563b0bb7159dd0124a8c2abe184ff0a89d77a47ddc452abab4dbfa0972ab32663cc90866cabad19091e0f128d405942f8fa9d8cbe7ba871bf54728bd2
@@ -1,5 +1,44 @@
1
1
  # Change Log
2
2
 
3
+ ### 4.18.0.1
4
+
5
+ - Hello, Dialog! Sample
6
+ - Added Glimmer icon to Glimmer Meta-Sample (Sample of Samples)
7
+ - Upgrade Scaffolded projects to JRuby v9.2.14.0
8
+ - Switch back to official git gem v1.8.1 now that glimmer-git gem branch is merged into it
9
+ - Fix issue with not reporting exception encountered in editing a tree item if consumer code had a bug
10
+
11
+ ### 4.18.0.0
12
+
13
+ - Upgrade to SWT v4.18
14
+ - Upgrade to JRuby v9.2.14.0
15
+ - Apply all WidgetProxy property converters upon normal setting of properties too (not just in DSL) (like `some_widget.background = color_symbol`)
16
+ - Update Hello, Menu Bar! sample to show accelerators on menu items
17
+ - Have the `swt` keyword (SWTProxy) support accepting a string character (to build an accelerator style)
18
+ - Make accelerator property accept symbols and character directly (without swt)
19
+ - Write meta-sample changes to user directory to avoid permission issues
20
+ - Zero margin_left, margin_right, margin_top, margin_bottom in layouts given that margin_width and margin_height are set by default
21
+ - Prevent editing/launching meta-sample from Glimmer Meta-Sample
22
+ - Fix enablement on `menu` (as opposed to menu_item, where it works)
23
+ - Fix issue relating to background image scaling on resize of widget
24
+
25
+ ### 4.17.10.8
26
+
27
+ - Support editing sample code in the Glimmer Meta-Sample to enable experimentation and learning
28
+ - Add a "Reset" button to the Glimmer Meta-Sample to allow resetting sample code changes
29
+ - Refactor/revise hello_message_box.rb and hello_pop_up_context_menu.rb samples
30
+ - Upgrade to glimmer 1.0.6
31
+
32
+ ### 4.17.10.7
33
+
34
+ - Loosened dependencies on most Glimmer author-owned gems
35
+ - Refactored/Simplified/Fixed Hello, Link! Sample
36
+
37
+ ### 4.17.10.6
38
+
39
+ - Hello, Link! Sample
40
+ - Refactor hello list samples
41
+
3
42
  ### 4.17.10.5
4
43
 
5
44
  - Hello, Button! Sample
@@ -1,4 +1,4 @@
1
- Copyright (c) 2007-2020 Andy Maleh
1
+ Copyright (c) 2007-2021 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
data/README.md CHANGED
@@ -1,4 +1,5 @@
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.5
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.18.0.1
2
+
2
3
 
3
4
  ## JRuby Desktop Development GUI Framework
4
5
  [![Gem Version](https://badge.fury.io/rb/glimmer-dsl-swt.svg)](http://badge.fury.io/rb/glimmer-dsl-swt)
@@ -11,29 +12,29 @@
11
12
 
12
13
  (The Original Glimmer Library Since 2007. Beware of Imitators!)
13
14
 
14
- [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer) is a native-GUI cross-platform desktop development library written in [JRuby](https://www.jruby.org/), an OS-threaded faster version of [Ruby](https://www.ruby-lang.org/en/). [Glimmer](https://github.com/AndyObtiva/glimmer)'s main innovation is a declarative [Ruby DSL](#glimmer-dsl-syntax) that enables productive and efficient authoring of desktop application user-interfaces while relying on the robust [Eclipse SWT library](https://www.eclipse.org/swt/). [Glimmer](https://rubygems.org/gems/glimmer) additionally innovates by having built-in [data-binding](#data-binding) support, which greatly facilitates synchronizing the GUI with domain models, thus achieving true decoupling of object oriented components and enabling developers to solve business problems (test-first) without worrying about GUI concerns. To get started quickly, [Glimmer](https://rubygems.org/gems/glimmer) offers [scaffolding](#scaffolding) options for [Apps](#in-production), [Gems](#custom-shell-gem), and [Custom Widgets](#custom-widgets). [Glimmer](https://rubygems.org/gems/glimmer) also includes native-executable [packaging](#packaging--distribution) support, sorely lacking in other libraries, thus enabling the delivery of desktop apps written in [Ruby](https://www.ruby-lang.org/en/) as truly native DMG/PKG/APP files on the [Mac](https://www.apple.com/ca/macos) + [App Store](https://developer.apple.com/macos/distribution/), MSI/EXE files on [Windows](https://www.microsoft.com/en-ca/windows), and [Gem Packaged Shell Scripts](#custom-shell-gem) on [Linux](https://www.linux.org/).
15
+ [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer) is a native-GUI cross-platform desktop development library written in [JRuby](https://www.jruby.org/), an OS-threaded faster version of [Ruby](https://www.ruby-lang.org/en/). [Glimmer](https://github.com/AndyObtiva/glimmer)'s main innovation is a declarative [Ruby DSL](#glimmer-dsl-syntax) that enables productive and efficient authoring of desktop application user-interfaces while relying on the robust [Eclipse SWT library](https://www.eclipse.org/swt/). [Glimmer](https://rubygems.org/gems/glimmer) additionally innovates by having built-in [data-binding](#data-binding) support, which greatly facilitates synchronizing the GUI with domain models, thus achieving true decoupling of object oriented components and enabling developers to solve business problems (test-first) without worrying about GUI concerns, or alternatively drive development GUI-first, and then write clean business models (test-first) afterwards. To get started quickly, [Glimmer](https://rubygems.org/gems/glimmer) offers [scaffolding](#scaffolding) options for [Apps](#in-production), [Gems](#custom-shell-gem), and [Custom Widgets](#custom-widgets). [Glimmer](https://rubygems.org/gems/glimmer) also includes native-executable [packaging](#packaging--distribution) support, sorely lacking in other libraries, thus enabling the delivery of desktop apps written in [Ruby](https://www.ruby-lang.org/en/) as truly native DMG/PKG/APP files on the [Mac](https://www.apple.com/ca/macos) + [App Store](https://developer.apple.com/macos/distribution/), MSI/EXE files on [Windows](https://www.microsoft.com/en-ca/windows), and [Gem Packaged Shell Scripts](#custom-shell-gem) on [Linux](https://www.linux.org/).
15
16
 
16
17
  [Glimmer receives two updates per month](https://rubygems.org/gems/glimmer-dsl-swt/versions). You can trust [Glimmer](https://rubygems.org/gems/glimmer) with your Ruby desktop GUI development needs. Please make [Glimmer](https://rubygems.org/gems/glimmer) even better by providing feedback and [contributing](#contributing) when possible.
17
18
 
18
19
  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.
19
20
 
20
- [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) versions 4.17.x.y come with [SWT 4.17](https://download.eclipse.org/eclipse/downloads/drops4/R-4.17-202009021800/), which was released on September 2, 2020.
21
+ [Glimmer DSL for SWT](https://rubygems.org/gems/glimmer-dsl-swt) versions 4.18.x.y come with [SWT 4.18](https://download.eclipse.org/eclipse/downloads/drops4/R-4.18-202012021800/), which was released on December 2, 2020.
21
22
 
22
23
  [<img src="https://covers.oreillystatic.com/images/9780596519650/lrg.jpg" width=105 /><br />
23
- Featured in<br />JRuby Cookbook](http://shop.oreilly.com/product/9780596519650.do)
24
+ 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)
24
25
 
25
26
  Glimmer DSL gems:
26
- - [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (JRuby Desktop GUI)
27
- - [glimmer-dsl-tk](https://github.com/AndyObtiva/glimmer-dsl-tk): Glimmer DSL for Tk (Ruby Desktop GUI)
28
- - [glimmer-dsl-opal](https://github.com/AndyObtiva/glimmer-dsl-opal): Glimmer DSL for Opal (Web GUI Adapter for Desktop Apps)
27
+ - [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt): Glimmer DSL for SWT (JRuby Desktop Development GUI Framework)
28
+ - [glimmer-dsl-opal](https://github.com/AndyObtiva/glimmer-dsl-opal): Glimmer DSL for Opal (Pure Ruby Web GUI and Auto-Webifier of Desktop Apps)
29
29
  - [glimmer-dsl-xml](https://github.com/AndyObtiva/glimmer-dsl-xml): Glimmer DSL for XML (& HTML)
30
30
  - [glimmer-dsl-css](https://github.com/AndyObtiva/glimmer-dsl-css): Glimmer DSL for CSS
31
+ - [glimmer-dsl-tk](https://github.com/AndyObtiva/glimmer-dsl-tk): Glimmer DSL for Tk (Ruby Desktop Development GUI Library)
31
32
 
32
33
  ## Examples
33
34
 
34
35
  ### Hello, World!
35
36
 
36
- Glimmer code (from [samples/hello/hello_world.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_world.rb)):
37
+ Glimmer code (from [samples/hello/hello_world.rb](samples/hello/hello_world.rb)):
37
38
  ```ruby
38
39
  include Glimmer
39
40
 
@@ -57,7 +58,7 @@ Glimmer app:
57
58
 
58
59
  ### Tic Tac Toe
59
60
 
60
- Glimmer code (from [samples/elaborate/tic_tac_toe.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/elaborate/tic_tac_toe.rb)):
61
+ Glimmer code (from [samples/elaborate/tic_tac_toe.rb](samples/elaborate/tic_tac_toe.rb)):
61
62
 
62
63
  ```ruby
63
64
  # ...
@@ -96,7 +97,7 @@ Glimmer app:
96
97
 
97
98
  ### Contact Manager
98
99
 
99
- Glimmer code (from [samples/elaborate/contact_manager.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/elaborate/contact_manager.rb)):
100
+ Glimmer code (from [samples/elaborate/contact_manager.rb](samples/elaborate/contact_manager.rb)):
100
101
 
101
102
  ```ruby
102
103
  # ...
@@ -266,6 +267,7 @@ Glimmer App:
266
267
  - [Glimmer GUI DSL Syntax](#glimmer-gui-dsl-syntax)
267
268
  - [DSL Auto-Expansion](#dsl-auto-expansion)
268
269
  - [Widgets](#widgets)
270
+ - [Glimmer GUI DSL Keywords](#glimmer-gui-dsl-keywords)
269
271
  - [SWT Proxies](#swt-proxies)
270
272
  - [Dialog](#dialog)
271
273
  - [Display](#display)
@@ -355,6 +357,8 @@ Glimmer App:
355
357
  - [Hello, Spinner!](#hello-spinner)
356
358
  - [Hello, Table!](#hello-table)
357
359
  - [Hello, Button!](#hello-button)
360
+ - [Hello, Link!](#hello-link)
361
+ - [Hello, Dialog!](#hello-dialog)
358
362
  - [Elaborate Samples](#elaborate-samples)
359
363
  - [User Profile](#user-profile)
360
364
  - [Login](#login)
@@ -415,13 +419,13 @@ https://www.eclipse.org/swt/faq.php
415
419
  ## Pre-requisites
416
420
 
417
421
  - JDK 8u241 (1.8.0_241) (find at https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html)
418
- - JRuby 9.2.13.0 (supporting Ruby 2.5.x syntax) (get via [RVM](http://rvm.io) on Mac and Linux or find at [https://www.jruby.org/download](https://www.jruby.org/download) for Windows)
419
- - SWT 4.17 (already included in the [glimmer-dsl-swt](https://rubygems.org/gems/glimmer-dsl-swt) gem)
422
+ - JRuby 9.2.14.0 (supporting Ruby 2.5.x syntax) (get via [RVM](http://rvm.io) on Mac and Linux or find at [https://www.jruby.org/download](https://www.jruby.org/download) for Windows)
423
+ - SWT 4.18 (already included in the [glimmer-dsl-swt](https://rubygems.org/gems/glimmer-dsl-swt) gem)
420
424
 
421
425
  To obtain JRuby through [RVM](http://rvm.io), you may run:
422
426
 
423
427
  ```bash
424
- rvm install jruby-9.2.13.0
428
+ rvm install jruby-9.2.14.0
425
429
  ```
426
430
 
427
431
  Glimmer might still work on other versions of Java, JRuby and SWT, but there are no guarantees, so it is best to stick to the pre-requisites outlined above.
@@ -448,7 +452,8 @@ jgem install glimmer-dsl-swt
448
452
 
449
453
  Or this command if you want a specific version:
450
454
  ```
451
- jgem install glimmer-dsl-swt -v 4.17.10.5
455
+ jgem install glimmer-dsl-swt -v 4.18.0.1
456
+
452
457
 
453
458
  ```
454
459
 
@@ -467,7 +472,8 @@ Note: if you're using activerecord or activesupport, keep in mind that Glimmer u
467
472
 
468
473
  Add the following to `Gemfile`:
469
474
  ```
470
- gem 'glimmer-dsl-swt', '~> 4.17'
475
+ gem 'glimmer-dsl-swt', '~> 4.18.0.1
476
+ '
471
477
  ```
472
478
 
473
479
  And, then run:
@@ -525,7 +531,8 @@ bin/glimmer samples
525
531
  Below are the full usage instructions that come up when running `glimmer` without args.
526
532
 
527
533
  ```
528
- Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.17.10.5
534
+ Glimmer (JRuby Desktop Development GUI Framework) - JRuby Gem: glimmer-dsl-swt v4.18.0.1
535
+
529
536
 
530
537
 
531
538
  Usage: glimmer [--bundler] [--pd] [--quiet] [--debug] [--log-level=VALUE] [[ENV_VAR=VALUE]...] [[-jruby-option]...] (application.rb or task[task_args]) [[application2.rb]...]
@@ -1002,8 +1009,9 @@ Output:
1002
1009
  Name Gem Version Author Description
1003
1010
 
1004
1011
  Css glimmer-dsl-css 1.1.0 AndyMaleh Glimmer DSL for CSS
1005
- Opal glimmer-dsl-opal 0.4.0 AndyMaleh Glimmer DSL for Opal
1006
- Swt glimmer-dsl-swt 4.17.10.5
1012
+ Opal glimmer-dsl-opal 0.8.0 AndyMaleh Glimmer DSL for Opal
1013
+ Swt glimmer-dsl-swt 4.18.0.1
1014
+
1007
1015
  AndyMaleh Glimmer DSL for SWT
1008
1016
  Tk glimmer-dsl-tk 0.0.6 AndyMaleh Glimmer DSL for Tk
1009
1017
  Xml glimmer-dsl-xml 1.1.0 AndyMaleh Glimmer DSL for XML
@@ -1084,7 +1092,7 @@ Keep in mind that all samples live under [https://github.com/AndyObtiva/glimmer-
1084
1092
 
1085
1093
  Glimmer's core is a GUI DSL with a lightweight visual syntax that makes it easy to visualize the nesting of widgets in the GUI hierarchy tree.
1086
1094
 
1087
- It is available through mixing in the `Glimmer` module, which makes Glimmer GUI DSL keywords available to both the instance scope and class scope:
1095
+ It is available through mixing in the `Glimmer` module, which makes [Glimmer GUI DSL Keywords](#glimmer-gui-dsl-keywords) available to both the instance scope and class scope:
1088
1096
 
1089
1097
  ```ruby
1090
1098
  include Glimmer
@@ -1270,12 +1278,73 @@ shell {
1270
1278
  }.open
1271
1279
  ```
1272
1280
 
1273
- If you are new to Glimmer, you have learned enough to start running some [samples](#samples). Go ahead and run all Glimmer [samples](#samples), and come back to read the rest in any order you like since this material is more organized like a reference.
1281
+ If you are new to Glimmer, you have learned enough to start running some [samples](#samples) directly or by reading through [Glimmer GUI DSL Keywords](#glimmer-gui-dsl-keywords) (which list each keyword's samples). Go ahead and run all Glimmer [samples](#samples), and come back to read the rest in any order you like since this material is more organized like a reference.
1274
1282
 
1275
1283
  If you are advanced and need more widgets, check out the [Nebula Project](https://www.eclipse.org/nebula/) for an extensive list of high quality custom widgets:
1276
1284
 
1277
1285
  https://www.eclipse.org/nebula/
1278
1286
 
1287
+ #### Glimmer GUI DSL Keywords
1288
+
1289
+ This is not an exaustive list, but should give you a good start in learning Glimmer GUI DSL keywords, keeping in mind that the full list can be derived from the [SWT documentation](https://www.eclipse.org/swt/widgets/). More will be explained in the following sections.
1290
+
1291
+ **Widgets:**
1292
+ - `button`: featured in [Hello, Checkbox!](#hello-checkbox) / [Hello, Button!](#hello-button) / [Hello, Table!](#hello-table) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Message Box!](#hello-message-box) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Hello, Group!](#hello-group) / [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Contact Manager](#contact-manager) / [Tic Tac Toe](#tic-tac-toe) / [Login](#login)
1293
+ - `browser`: featured in [Hello, Browser!](#hello-browser)
1294
+ - `calendar`: featured in [Hello, Date Time!](#hello-date-time)
1295
+ - `checkbox`: featured in [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox)
1296
+ - `checkbox_group`: featured in [Hello, Checkbox Group!](#hello-checkbox-group)
1297
+ - `combo`: featured in [Hello, Table!](#hello-table) / [Hello, Combo!](#hello-combo)
1298
+ - `composite`: featured in [Hello, Radio!](#hello-radio) / [Hello, Computed!](#hello-computed) / [Hello, Checkbox!](#hello-checkbox) / [Tic Tac Toe](#tic-tac-toe) / [Login](#login) / [Contact Manager](#contact-manager)
1299
+ - `date`: featured in [Hello, Table!](#hello-table) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Shell!](#hello-custom-shell) / [Tic Tac Toe](#tic-tac-toe)
1300
+ - `date_drop_down`: featured in [Hello, Table!](#hello-table) / [Hello, Date Time!](#hello-date-time)
1301
+ - `group`: featured in [Hello, Group!](#hello-group) / [Contact Manager](#contact-manager)
1302
+ - `label`: featured in [Hello, Computed!](#hello-computed) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Hello, World!](#hello-world) / [Hello, Table!](#hello-table) / [Hello, Tab!](#hello-tab) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Menu Bar!](#hello-menu-bar) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Custom Shell!](#hello-custom-shell) / [Contact Manager](#contact-manager) / [Login](#login)
1303
+ - `list` (w/ optional `:multi` SWT style): featured in [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Contact Manager](#contact-manager)
1304
+ - `menu`: featured in [Hello, Menu Bar!](#hello-menu-bar) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Table!](#hello-table)
1305
+ - `menu_bar`: featured in [Hello, Menu Bar!](#hello-menu-bar)
1306
+ - `menu_item`: featured in [Hello, Table!](#hello-table) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Menu Bar!](#hello-menu-bar)
1307
+ - `message_box`: featured in [Hello, Table!](#hello-table) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Message Box!](#hello-message-box) / [Hello, Menu Bar!](#hello-menu-bar)
1308
+ - `radio`: featured in [Hello, Radio!](#hello-radio) / [Hello, Group!](#hello-group)
1309
+ - `radio_group`: featured in [Hello, Radio Group!](#hello-radio-group)
1310
+ - `scrolled_composite`
1311
+ - `shell`: featured in [Hello, Checkbox!](#hello-checkbox) / [Hello, Button!](#hello-button) / [Hello, Table!](#hello-table) / [Hello, Tab!](#hello-tab) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Hello, Group!](#hello-group) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Shell!](#hello-custom-shell) / [Hello, Computed!](#hello-computed) / [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Contact Manager](#contact-manager) / [Tic Tac Toe](#tic-tac-toe) / [Login](#login)
1312
+ - `tab_folder`: featured in [Hello, Tab!](#hello-tab)
1313
+ - `tab_item`: featured in [Hello, Tab!](#hello-tab)
1314
+ - `table`: featured in [Hello, Custom Shell!](#hello-custom-shell) / [Hello, Table!](#hello-table) / [Contact Manager](#contact-manager)
1315
+ - `table_column`: featured in [Hello, Table!](#hello-table) / [Hello, Custom Shell!](#hello-custom-shell) / [Contact Manager](#contact-manager)
1316
+ - `text`: featured in [Hello, Computed!](#hello-computed) / [Login](#login) / [Contact Manager](#contact-manager)
1317
+ - `time`: featured in [Hello, Table!](#hello-table) / [Hello, Date Time!](#hello-date-time)
1318
+ - Glimmer::UI::CustomWidget: ability to define any keyword as a custom widget - featured in [Hello, Custom Widget!](#hello-custom-widget)
1319
+ - Glimmer::UI::CustomShell: ability to define any keyword as a custom shell (aka custom window) that opens in a new browser window (tab) automatically unless there is no shell open in the current browser window (tab) - featured in [Hello, Custom Shell!](#hello-custom-shell)
1320
+
1321
+ **Layouts:**
1322
+ - `grid_layout`: featured in [Hello, Custom Shell!](#hello-custom-shell) / [Hello, Computed!](#hello-computed) / [Hello, Table!](#hello-table) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Menu Bar!](#hello-menu-bar) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Contact Manager](#contact-manager) / [Login](#login) / [Tic Tac Toe](#tic-tac-toe)
1323
+ - `row_layout`: featured in [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Group!](#hello-group) / [Hello, Date Time!](#hello-date-time) / [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Contact Manager](#contact-manager)
1324
+ - `fill_layout`: featured in [Hello, Custom Widget!](#hello-custom-widget)
1325
+ - `layout_data`: featured in [Hello, Table!](#hello-table) / [Hello, Custom Shell!](#hello-custom-shell) / [Hello, Computed!](#hello-computed) / [Tic Tac Toe](#tic-tac-toe) / [Contact Manager](#contact-manager)
1326
+
1327
+ **Graphics/Style:**
1328
+ - `color`: featured in [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Menu Bar!](#hello-menu-bar)
1329
+ - `font`: featured in [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Hello, Table!](#hello-table) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Menu Bar!](#hello-menu-bar) / [Hello, Group!](#hello-group) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Custom Shell!](#hello-custom-shell) / [Contact Manager](#contact-manager) / [Tic Tac Toe](#tic-tac-toe)
1330
+ - `Point` class used in setting location on widgets
1331
+ - `swt` and `SWT` class to set SWT styles on widgets - featured in [Hello, Custom Shell!](#hello-custom-shell) / [Login](#login) / [Contact Manager](#contact-manager)
1332
+
1333
+ **Data-Binding/Observers:**
1334
+ - `bind`: featured in [Hello, Computed!](#hello-computed) / [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Hello, Button!](#hello-button) / [Hello, Table!](#hello-table) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Hello, Group!](#hello-group) / [Hello, Date Time!](#hello-date-time) / [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Custom Shell!](#hello-custom-shell) / [Login](#login) / [Contact Manager](#contact-manager) / [Tic Tac Toe](#tic-tac-toe)
1335
+ - `observe`: featured in [Hello, Table!](#hello-table) / [Tic Tac Toe](#tic-tac-toe)
1336
+ - `on_widget_selected`: featured in [Hello, Combo!](#hello-combo) / [Hello, Checkbox Group!](#hello-checkbox-group) / [Hello, Checkbox!](#hello-checkbox) / [Hello, Button!](#hello-button) / [Hello, Table!](#hello-table) / [Hello, Radio Group!](#hello-radio-group) / [Hello, Radio!](#hello-radio) / [Hello, Pop Up Context Menu!](#hello-pop-up-context-menu) / [Hello, Message Box!](#hello-message-box) / [Hello, Menu Bar!](#hello-menu-bar) / [Hello, List Single Selection!](#hello-list-single-selection) / [Hello, List Multi Selection!](#hello-list-multi-selection) / [Hello, Group!](#hello-group) / [Contact Manager](#contact-manager) / [Login](#login) / [Tic Tac Toe](#tic-tac-toe)
1337
+ - `on_modify_text`
1338
+ - `on_key_pressed` (and SWT alias `on_swt_keydown`) - featured in [Login](#login) / [Contact Manager](#contact-manager)
1339
+ - `on_key_released` (and SWT alias `on_swt_keyup`)
1340
+ - `on_mouse_down` (and SWT alias `on_swt_mousedown`)
1341
+ - `on_mouse_up` (and SWT alias `on_swt_mouseup`) - featured in [Hello, Custom Shell!](#hello-custom-shell) / [Contact Manager](#contact-manager)
1342
+
1343
+ **Event loop:**
1344
+ - `display`: featured in [Tic Tac Toe](#tic-tac-toe)
1345
+ - `async_exec`: featured in [Hello, Custom Widget!](#hello-custom-widget) / [Hello, Custom Shell!](#hello-custom-shell)
1346
+
1347
+
1279
1348
  #### SWT Proxies
1280
1349
 
1281
1350
  Glimmer follows Proxy Design Pattern by having Ruby proxy wrappers for all SWT objects:
@@ -1360,9 +1429,11 @@ Dialog is a variation on Shell. It is basically a shell that is modal (blocks wh
1360
1429
 
1361
1430
  Glimmer facilitates building dialogs by using the `dialog` keyword, which automatically adds the SWT.DIALOG_TRIM and SWT.APPLICATION_MODAL [widget styles](#widget-styles) needed for a dialog.
1362
1431
 
1432
+ Check out [Hello, Dialog!](#hello-dialog) sample to learn more.
1433
+
1363
1434
  ##### message_box
1364
1435
 
1365
- The Glimmer DSL `message_box` keyword is similar to `shell`, but renders a modal dialog with a title `text` property and main body `message` property. It may also be opened via the `#open` method.
1436
+ The Glimmer DSL `message_box` keyword is similar to `shell` and `dialog`, but renders a modal dialog with a title `text` property, main body `message` property, and dismissal button(s) only (OK button by default or [more options](https://www.eclipse.org/swt/javadoc.php)). It may also be opened via the `#open` method.
1366
1437
 
1367
1438
  Example (you may copy/paste in [`girb`](#girb-glimmer-irb-command)):
1368
1439
 
@@ -1476,47 +1547,54 @@ The ampersand symbol indicates the keyboard shortcut key for the menu item (e.g.
1476
1547
  Example of a Menu Bar (you may copy/paste in [`girb`](#girb-glimmer-irb-command)):
1477
1548
 
1478
1549
  ```ruby
1479
- shell { |shell_proxy|
1550
+ include Glimmer
1551
+
1552
+ COLORS = [:white, :red, :yellow, :green, :blue, :magenta, :gray, :black]
1553
+
1554
+ shell {
1555
+ grid_layout {
1556
+ margin_width 0
1557
+ margin_height 0
1558
+ }
1559
+
1480
1560
  text 'Hello, Menu Bar!'
1481
- grid_layout
1482
- label(:center) {
1483
- font height: 16
1484
- text 'Check Out The File Menu and History Menu in The Menu Bar Above!'
1561
+
1562
+ @label = label(:center) {
1563
+ font height: 50
1564
+ text 'Check Out The Menu Bar Above!'
1485
1565
  }
1566
+
1486
1567
  menu_bar {
1487
1568
  menu {
1488
1569
  text '&File'
1489
1570
  menu_item {
1490
- text 'E&xit'
1491
- }
1492
- menu_item(0) {
1493
1571
  text '&New'
1572
+ accelerator :command, :N
1573
+
1494
1574
  on_widget_selected {
1495
- message_box(shell_proxy) {
1496
- text 'New File'
1497
- message 'New File Contents'
1575
+ message_box {
1576
+ text 'New'
1577
+ message 'New file created.'
1498
1578
  }.open
1499
1579
  }
1500
1580
  }
1501
- menu(1) {
1502
- text '&Options'
1503
- menu_item(:radio) {
1504
- text 'Option 1'
1505
- }
1506
- menu_item(:separator)
1507
- menu_item(:check) {
1508
- text 'Option 3'
1581
+ menu_item {
1582
+ text '&Open...'
1583
+ accelerator :command, :O
1584
+
1585
+ on_widget_selected {
1586
+ message_box {
1587
+ text 'Open'
1588
+ message 'Opening File...'
1589
+ }.open
1509
1590
  }
1510
1591
  }
1511
- }
1512
- menu {
1513
- text '&History'
1514
1592
  menu {
1515
- text '&Recent'
1593
+ text 'Open &Recent'
1516
1594
  menu_item {
1517
1595
  text 'File 1'
1518
1596
  on_widget_selected {
1519
- message_box(shell_proxy) {
1597
+ message_box {
1520
1598
  text 'File 1'
1521
1599
  message 'File 1 Contents'
1522
1600
  }.open
@@ -1525,13 +1603,167 @@ shell { |shell_proxy|
1525
1603
  menu_item {
1526
1604
  text 'File 2'
1527
1605
  on_widget_selected {
1528
- message_box(shell_proxy) {
1606
+ message_box {
1529
1607
  text 'File 2'
1530
1608
  message 'File 2 Contents'
1531
1609
  }.open
1532
1610
  }
1533
1611
  }
1534
1612
  }
1613
+ menu_item(:separator)
1614
+ menu_item {
1615
+ text 'E&xit'
1616
+
1617
+ on_widget_selected {
1618
+ exit(0)
1619
+ }
1620
+ }
1621
+ }
1622
+ menu {
1623
+ text '&Edit'
1624
+ menu_item {
1625
+ text 'Cut'
1626
+ accelerator :command, :X
1627
+ }
1628
+ menu_item {
1629
+ text 'Copy'
1630
+ accelerator :command, :C
1631
+ }
1632
+ menu_item {
1633
+ text 'Paste'
1634
+ accelerator :command, :V
1635
+ }
1636
+ }
1637
+ menu {
1638
+ text '&Options'
1639
+
1640
+ menu_item(:radio) {
1641
+ text '&Enabled'
1642
+
1643
+ on_widget_selected {
1644
+ @select_one_menu.enabled = true
1645
+ @select_multiple_menu.enabled = true
1646
+ }
1647
+ }
1648
+ @select_one_menu = menu {
1649
+ text '&Select One'
1650
+ enabled false
1651
+
1652
+ menu_item(:radio) {
1653
+ text 'Option 1'
1654
+ }
1655
+ menu_item(:radio) {
1656
+ text 'Option 2'
1657
+ }
1658
+ menu_item(:radio) {
1659
+ text 'Option 3'
1660
+ }
1661
+ }
1662
+ @select_multiple_menu = menu {
1663
+ text '&Select Multiple'
1664
+ enabled false
1665
+
1666
+ menu_item(:check) {
1667
+ text 'Option 4'
1668
+ }
1669
+ menu_item(:check) {
1670
+ text 'Option 5'
1671
+ }
1672
+ menu_item(:check) {
1673
+ text 'Option 6'
1674
+ }
1675
+ }
1676
+ }
1677
+ menu {
1678
+ text '&Format'
1679
+ menu {
1680
+ text '&Background Color'
1681
+ COLORS.each { |color_style|
1682
+ menu_item(:radio) {
1683
+ text color_style.to_s.split('_').map(&:capitalize).join(' ')
1684
+
1685
+ on_widget_selected {
1686
+ @label.background = color_style
1687
+ }
1688
+ }
1689
+ }
1690
+ }
1691
+ menu {
1692
+ text 'Foreground &Color'
1693
+ COLORS.each { |color_style|
1694
+ menu_item(:radio) {
1695
+ text color_style.to_s.split('_').map(&:capitalize).join(' ')
1696
+
1697
+ on_widget_selected {
1698
+ @label.foreground = color_style
1699
+ }
1700
+ }
1701
+ }
1702
+ }
1703
+ }
1704
+ menu {
1705
+ text '&View'
1706
+ menu_item(:radio) {
1707
+ text 'Small'
1708
+
1709
+ on_widget_selected {
1710
+ @label.font = {height: 25}
1711
+ @label.parent.pack
1712
+ }
1713
+ }
1714
+ menu_item(:radio) {
1715
+ text 'Medium'
1716
+ selection true
1717
+
1718
+ on_widget_selected {
1719
+ @label.font = {height: 50}
1720
+ @label.parent.pack
1721
+ }
1722
+ }
1723
+ menu_item(:radio) {
1724
+ text 'Large'
1725
+
1726
+ on_widget_selected {
1727
+ @label.font = {height: 75}
1728
+ @label.parent.pack
1729
+ }
1730
+ }
1731
+ }
1732
+ menu {
1733
+ text '&Help'
1734
+ menu_item {
1735
+ text '&Manual'
1736
+ accelerator :command, :shift, :M
1737
+
1738
+ on_widget_selected {
1739
+ message_box {
1740
+ text 'Manual'
1741
+ message 'Manual Contents'
1742
+ }.open
1743
+ }
1744
+ }
1745
+ menu_item {
1746
+ text '&Tutorial'
1747
+ accelerator :command, :shift, :T
1748
+
1749
+ on_widget_selected {
1750
+ message_box {
1751
+ text 'Tutorial'
1752
+ message 'Tutorial Contents'
1753
+ }.open
1754
+ }
1755
+ }
1756
+ menu_item(:separator)
1757
+ menu_item {
1758
+ text '&Report an Issue...'
1759
+
1760
+ on_widget_selected {
1761
+ message_box {
1762
+ text 'Report an Issue'
1763
+ message 'Reporting an issue...'
1764
+ }.open
1765
+ }
1766
+ }
1535
1767
  }
1536
1768
  }
1537
1769
  }.open
@@ -1540,12 +1772,20 @@ shell { |shell_proxy|
1540
1772
  Example of a Pop Up Context Menu (you may copy/paste in [`girb`](#girb-glimmer-irb-command)):
1541
1773
 
1542
1774
  ```ruby
1543
- shell { |shell_proxy|
1775
+ include Glimmer
1776
+
1777
+ shell {
1778
+ grid_layout {
1779
+ margin_width 0
1780
+ margin_height 0
1781
+ }
1782
+
1544
1783
  text 'Hello, Pop Up Context Menu!'
1545
- grid_layout
1784
+
1546
1785
  label {
1547
- font height: 16
1548
- text 'Right-Click To Pop Up a Context Menu'
1786
+ text "Right-Click on the Text to\nPop Up a Context Menu"
1787
+ font height: 50
1788
+
1549
1789
  menu {
1550
1790
  menu {
1551
1791
  text '&History'
@@ -1554,7 +1794,7 @@ shell { |shell_proxy|
1554
1794
  menu_item {
1555
1795
  text 'File 1'
1556
1796
  on_widget_selected {
1557
- message_box(shell_proxy) {
1797
+ message_box {
1558
1798
  text 'File 1'
1559
1799
  message 'File 1 Contents'
1560
1800
  }.open
@@ -1563,13 +1803,34 @@ shell { |shell_proxy|
1563
1803
  menu_item {
1564
1804
  text 'File 2'
1565
1805
  on_widget_selected {
1566
- message_box(shell_proxy) {
1806
+ message_box {
1567
1807
  text 'File 2'
1568
1808
  message 'File 2 Contents'
1569
1809
  }.open
1570
1810
  }
1571
1811
  }
1572
1812
  }
1813
+ menu {
1814
+ text '&Archived'
1815
+ menu_item {
1816
+ text 'File 3'
1817
+ on_widget_selected {
1818
+ message_box {
1819
+ text 'File 3'
1820
+ message 'File 3 Contents'
1821
+ }.open
1822
+ }
1823
+ }
1824
+ menu_item {
1825
+ text 'File 4'
1826
+ on_widget_selected {
1827
+ message_box {
1828
+ text 'File 4'
1829
+ message 'File 4 Contents'
1830
+ }.open
1831
+ }
1832
+ }
1833
+ }
1573
1834
  }
1574
1835
  }
1575
1836
  }
@@ -2373,7 +2634,7 @@ shell {
2373
2634
 
2374
2635
  Check out [Hello, Table!](#hello-table) for an actual example including table editors.
2375
2636
 
2376
- [Are We There Yet?](#are-we-there-yet) is an actual production Glimmer application that takes full advantage of table capabilities.
2637
+ [Are We There Yet?](#are-we-there-yet) is an actual production Glimmer application that takes full advantage of table capabilities, storing model data in a database via ActiveRecord. As such, it's an excellent demonstration of how to use Glimmer DSL for SWT with a database.
2377
2638
 
2378
2639
  ##### Table Sorting
2379
2640
 
@@ -3285,15 +3546,14 @@ Glimmer Meta-Sample Code Example:
3285
3546
 
3286
3547
  ```ruby
3287
3548
  # ...
3288
- code_text {
3289
- text bind(SampleDirectory, 'selected_sample.content')
3290
- editable false
3291
- caret nil
3549
+ @code_text = code_text {
3550
+ text bind(SampleDirectory, 'selected_sample.code', read_only: true)
3551
+ editable bind(SampleDirectory, 'selected_sample.editable')
3292
3552
  }
3293
3553
  # ...
3294
3554
  ```
3295
3555
 
3296
- To use, simply use `code_text` in place of `text` or `styled_text` widget. If you set its `text` value to Ruby code, it automatically styles it with syntax highlighting.
3556
+ To use, simply use `code_text` in place of the `text` or `styled_text` widget. If you set its `text` value to Ruby code, it automatically styles it with syntax highlighting.
3297
3557
 
3298
3558
  #### Video Widget
3299
3559
 
@@ -3624,7 +3884,7 @@ https://www.eclipse.org/nebula/
3624
3884
 
3625
3885
  ## Samples
3626
3886
 
3627
- Check the [samples](samples) directory in [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt) for examples on how to write Glimmer applications. To run a sample, make sure to install the `glimmer` gem first and then use the `glimmer` command to run it (alternatively, you may clone the repo, follow [CONTRIBUTING.md](CONTRIBUTING.md) instructions, and run samples locally with development glimmer command: `bin/glimmer`).
3887
+ Check the [samples](samples) directory in [glimmer-dsl-swt](https://github.com/AndyObtiva/glimmer-dsl-swt) for examples on how to write Glimmer applications. To run a sample, make sure to install the `glimmer` gem first and then use the `glimmer samples` command to run it (alternatively, you may clone the repo, follow [CONTRIBUTING.md](CONTRIBUTING.md) instructions, and run samples locally with development glimmer command: `bin/glimmer`).
3628
3888
 
3629
3889
  You may run any sample via this command:
3630
3890
 
@@ -3636,6 +3896,8 @@ This brings up the [Glimmer Meta-Sample (The Sample of Samples)](samples/elabora
3636
3896
 
3637
3897
  ![Glimmer Meta-Sample](images/glimmer-meta-sample.png)
3638
3898
 
3899
+ You may edit the code of any sample before launching it by clicking on the "Launch" button. This helps you learn by experimenting with Glimmer GUI DSL syntax. To go back to original code, simply hit the "Reset" button.
3900
+
3639
3901
  ### Hello Samples
3640
3902
 
3641
3903
  For hello-type simple samples, check the following.
@@ -3644,7 +3906,7 @@ For hello-type simple samples, check the following.
3644
3906
 
3645
3907
  Code:
3646
3908
 
3647
- [samples/hello/hello_world.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_world.rb)
3909
+ [samples/hello/hello_world.rb](samples/hello/hello_world.rb)
3648
3910
 
3649
3911
  ![Hello World](images/glimmer-hello-world.png)
3650
3912
 
@@ -3652,7 +3914,7 @@ Code:
3652
3914
 
3653
3915
  Code:
3654
3916
 
3655
- [samples/hello/hello_tab.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_tab.rb)
3917
+ [samples/hello/hello_tab.rb](samples/hello/hello_tab.rb)
3656
3918
 
3657
3919
  ![Hello Tab English](images/glimmer-hello-tab-english.png)
3658
3920
  ![Hello Tab French](images/glimmer-hello-tab-french.png)
@@ -3663,7 +3925,7 @@ This sample demonstrates combo data-binding.
3663
3925
 
3664
3926
  Code:
3665
3927
 
3666
- [samples/hello/hello_combo.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_combo.rb)
3928
+ [samples/hello/hello_combo.rb](samples/hello/hello_combo.rb)
3667
3929
 
3668
3930
  ![Hello Combo](images/glimmer-hello-combo.png)
3669
3931
  ![Hello Combo Expanded](images/glimmer-hello-combo-expanded.png)
@@ -3674,7 +3936,7 @@ This sample demonstrates list single-selection data-binding.
3674
3936
 
3675
3937
  Code:
3676
3938
 
3677
- [samples/hello/hello_list_single_selection.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_list_single_selection.rb)
3939
+ [samples/hello/hello_list_single_selection.rb](samples/hello/hello_list_single_selection.rb)
3678
3940
 
3679
3941
  ![Hello List Single Selection](images/glimmer-hello-list-single-selection.png)
3680
3942
 
@@ -3684,7 +3946,7 @@ This sample demonstrates list multi-selection data-binding.
3684
3946
 
3685
3947
  Code:
3686
3948
 
3687
- [samples/hello/hello_list_multi_selection.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_list_multi_selection.rb)
3949
+ [samples/hello/hello_list_multi_selection.rb](samples/hello/hello_list_multi_selection.rb)
3688
3950
 
3689
3951
  ![Hello List Multi Selection](images/glimmer-hello-list-multi-selection.png)
3690
3952
 
@@ -3694,7 +3956,7 @@ This sample demonstrates computed data-binding.
3694
3956
 
3695
3957
  Code:
3696
3958
 
3697
- [samples/hello/hello_computed.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_computed.rb)
3959
+ [samples/hello/hello_computed.rb](samples/hello/hello_computed.rb)
3698
3960
 
3699
3961
  ![Hello Browser](images/glimmer-hello-computed.png)
3700
3962
 
@@ -3704,7 +3966,7 @@ This sample demonstrates a `message_box` dialog.
3704
3966
 
3705
3967
  Code:
3706
3968
 
3707
- [samples/hello/hello_message_box.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_message_box.rb)
3969
+ [samples/hello/hello_message_box.rb](samples/hello/hello_message_box.rb)
3708
3970
 
3709
3971
  ![Hello Message Box](images/glimmer-hello-message-box.png)
3710
3972
  ![Hello Message Box Dialog](images/glimmer-hello-message-box-dialog.png)
@@ -3715,7 +3977,7 @@ This sample demonstrates the `browser` widget.
3715
3977
 
3716
3978
  Code:
3717
3979
 
3718
- [samples/hello/hello_browser.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_browser.rb)
3980
+ [samples/hello/hello_browser.rb](samples/hello/hello_browser.rb)
3719
3981
 
3720
3982
  ![Hello Browser](images/glimmer-hello-browser.png)
3721
3983
 
@@ -3725,21 +3987,53 @@ This sample demonstrates drag and drop in Glimmer.
3725
3987
 
3726
3988
  Code:
3727
3989
 
3728
- [samples/hello/hello_drag_and_drop.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_drag_and_drop.rb)
3990
+ [samples/hello/hello_drag_and_drop.rb](samples/hello/hello_drag_and_drop.rb)
3729
3991
 
3730
3992
  ![Hello Drag and Drop](images/glimmer-hello-drag-and-drop.gif)
3731
3993
 
3732
3994
  #### Hello, Menu Bar!
3733
3995
 
3734
- This sample demonstrates menus in Glimmer.
3996
+ This sample demonstrates menus in Glimmer, including accelerators on the Mac.
3735
3997
 
3736
3998
  Code:
3737
3999
 
3738
- [samples/hello/hello_menu_bar.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_menu_bar.rb)
4000
+ [samples/hello/hello_menu_bar.rb](samples/hello/hello_menu_bar.rb)
3739
4001
 
3740
4002
  ![Hello Menu Bar](images/glimmer-hello-menu-bar.png)
4003
+
3741
4004
  ![Hello Menu Bar File Menu](images/glimmer-hello-menu-bar-file-menu.png)
3742
- ![Hello Menu Bar History Menu](images/glimmer-hello-menu-bar-history-menu.png)
4005
+
4006
+ The Mac Menu includes Accelerator Keys (keyboard shortcuts).
4007
+
4008
+ ![Hello Menu Bar File Menu Mac Accelerators](images/glimmer-hello-menu-bar-file-menu-mac-accelerators.png)
4009
+
4010
+ ![Hello Menu Bar Edit Menu](images/glimmer-hello-menu-bar-edit-menu.png)
4011
+
4012
+ The Mac Menu includes Accelerator Keys (keyboard shortcuts).
4013
+
4014
+ ![Hello Menu Bar Edit Menu Mac Accelerators](images/glimmer-hello-menu-bar-edit-menu-mac-accelerators.png)
4015
+
4016
+ ![Hello Menu Bar Options Menu Disabled](images/glimmer-hello-menu-bar-options-menu-disabled.png)
4017
+
4018
+ ![Hello Menu Bar Options Menu Select One](images/glimmer-hello-menu-bar-options-menu-select-one.png)
4019
+
4020
+ ![Hello Menu Bar Options Menu Select Multiple](images/glimmer-hello-menu-bar-options-menu-select-multiple.png)
4021
+
4022
+ ![Hello Menu Bar Format Menu Background Color](images/glimmer-hello-menu-bar-format-menu-background-color.png)
4023
+
4024
+ ![Hello Menu Bar Format Menu Foreground Color](images/glimmer-hello-menu-bar-format-menu-foreground-color.png)
4025
+
4026
+ ![Hello Menu Bar View Menu](images/glimmer-hello-menu-bar-view-menu.png)
4027
+
4028
+ ![Hello Menu Bar View Small](images/glimmer-hello-menu-bar-view-small.png)
4029
+
4030
+ ![Hello Menu Bar View Large](images/glimmer-hello-menu-bar-view-large.png)
4031
+
4032
+ ![Hello Menu Bar Help Menu](images/glimmer-hello-menu-bar-help-menu.png)
4033
+
4034
+ The Mac Menu includes Accelerator Keys (keyboard shortcuts) and Mac built-in Search.
4035
+
4036
+ ![Hello Menu Bar Help Menu Mac Accelerators](images/glimmer-hello-menu-bar-help-menu-mac-accelerators.png)
3743
4037
 
3744
4038
  #### Hello, Pop Up Context Menu!
3745
4039
 
@@ -3747,7 +4041,7 @@ This sample demonstrates pop up context menus in Glimmer.
3747
4041
 
3748
4042
  Code:
3749
4043
 
3750
- [samples/hello/hello_pop_up_context_menu.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_pop_up_context_menu.rb)
4044
+ [samples/hello/hello_pop_up_context_menu.rb](samples/hello/hello_pop_up_context_menu.rb)
3751
4045
 
3752
4046
  ![Hello Pop Up Context Menu](images/glimmer-hello-pop-up-context-menu.png)
3753
4047
  ![Hello Pop Up Context Menu Popped Up](images/glimmer-hello-pop-up-context-menu-popped-up.png)
@@ -3758,7 +4052,7 @@ This sample demonstrates the use of a custom widget in Glimmer.
3758
4052
 
3759
4053
  Code:
3760
4054
 
3761
- [samples/hello/hello_custom_widget.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_custom_widget.rb)
4055
+ [samples/hello/hello_custom_widget.rb](samples/hello/hello_custom_widget.rb)
3762
4056
 
3763
4057
  ![Hello Custom Widget](images/glimmer-hello-custom-widget.gif)
3764
4058
 
@@ -3768,7 +4062,7 @@ This sample demonstrates the use of a custom shell (aka custom window) in Glimme
3768
4062
 
3769
4063
  Code:
3770
4064
 
3771
- [samples/hello/hello_custom_shell.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_custom_shell.rb)
4065
+ [samples/hello/hello_custom_shell.rb](samples/hello/hello_custom_shell.rb)
3772
4066
 
3773
4067
  ![Hello Custom Shell](images/glimmer-hello-custom-shell.png)
3774
4068
  ![Hello Custom Shell Email1](images/glimmer-hello-custom-shell-email1.png)
@@ -3781,7 +4075,7 @@ This sample demonstrates the use of a `sash_form` in Glimmer.
3781
4075
 
3782
4076
  Code:
3783
4077
 
3784
- [samples/hello/hello_sash_form.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_sash_form.rb)
4078
+ [samples/hello/hello_sash_form.rb](samples/hello/hello_sash_form.rb)
3785
4079
 
3786
4080
  Hello, Sash Form! Horizontal Orientation
3787
4081
 
@@ -3813,7 +4107,7 @@ This sample demonstrates the use of a `styled_text` in Glimmer.
3813
4107
 
3814
4108
  Code:
3815
4109
 
3816
- [samples/hello/hello_styled_text.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_styled_text.rb)
4110
+ [samples/hello/hello_styled_text.rb](samples/hello/hello_styled_text.rb)
3817
4111
 
3818
4112
  Hello, Styled Text!
3819
4113
 
@@ -3825,7 +4119,7 @@ This sample demonstrates the use of a `expand_bar` and `expand_item` in Glimmer.
3825
4119
 
3826
4120
  Code:
3827
4121
 
3828
- [samples/hello/hello_expand_bar.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_expand_bar.rb)
4122
+ [samples/hello/hello_expand_bar.rb](samples/hello/hello_expand_bar.rb)
3829
4123
 
3830
4124
  Hello, Expand Bar! All Expanded
3831
4125
 
@@ -3849,7 +4143,7 @@ This sample demonstrates the use of a `radio` (aka `button(:radio)`) in Glimmer.
3849
4143
 
3850
4144
  Code:
3851
4145
 
3852
- [samples/hello/hello_radio.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_radio.rb)
4146
+ [samples/hello/hello_radio.rb](samples/hello/hello_radio.rb)
3853
4147
 
3854
4148
  Hello, Radio!
3855
4149
 
@@ -3861,7 +4155,7 @@ This sample demonstrates the use of a `radio_group` in Glimmer, which provides t
3861
4155
 
3862
4156
  Code:
3863
4157
 
3864
- [samples/hello/hello_radio_group.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_radio_group.rb)
4158
+ [samples/hello/hello_radio_group.rb](samples/hello/hello_radio_group.rb)
3865
4159
 
3866
4160
  Hello, Radio Group!
3867
4161
 
@@ -3873,7 +4167,7 @@ This sample demonstrates the use of a `group` in Glimmer (not to be confused wit
3873
4167
 
3874
4168
  Code:
3875
4169
 
3876
- [samples/hello/hello_group.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_group.rb)
4170
+ [samples/hello/hello_group.rb](samples/hello/hello_group.rb)
3877
4171
 
3878
4172
  Hello, Group!
3879
4173
 
@@ -3885,7 +4179,7 @@ This sample demonstrates the use of a `checkbox` (aka `check` or `button(:check)
3885
4179
 
3886
4180
  Code:
3887
4181
 
3888
- [samples/hello/hello_checkbox.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_checkbox.rb)
4182
+ [samples/hello/hello_checkbox.rb](samples/hello/hello_checkbox.rb)
3889
4183
 
3890
4184
  Hello, Checkbox!
3891
4185
 
@@ -3897,7 +4191,7 @@ This sample demonstrates the use of a `checkbox_group` (aka `check_group`) in Gl
3897
4191
 
3898
4192
  Code:
3899
4193
 
3900
- [samples/hello/hello_checkbox_group.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_checkbox_group.rb)
4194
+ [samples/hello/hello_checkbox_group.rb](samples/hello/hello_checkbox_group.rb)
3901
4195
 
3902
4196
  Hello, Checkbox Group!
3903
4197
 
@@ -3909,7 +4203,7 @@ This sample demonstrates the use of a `directory_dialog` in Glimmer.
3909
4203
 
3910
4204
  Code:
3911
4205
 
3912
- [samples/hello/hello_directory_dialog.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_directory_dialog.rb)
4206
+ [samples/hello/hello_directory_dialog.rb](samples/hello/hello_directory_dialog.rb)
3913
4207
 
3914
4208
  Hello, Directory Dialog!
3915
4209
 
@@ -3929,7 +4223,7 @@ This sample demonstrates the use of a `file_dialog` in Glimmer.
3929
4223
 
3930
4224
  Code:
3931
4225
 
3932
- [samples/hello/hello_file_dialog.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_file_dialog.rb)
4226
+ [samples/hello/hello_file_dialog.rb](samples/hello/hello_file_dialog.rb)
3933
4227
 
3934
4228
  Hello, File Dialog!
3935
4229
 
@@ -3949,7 +4243,7 @@ This sample demonstrates the use of [date_time](#datetime) widget keywords in Gl
3949
4243
 
3950
4244
  Code:
3951
4245
 
3952
- [samples/hello/hello_date_time.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_date_time.rb)
4246
+ [samples/hello/hello_date_time.rb](samples/hello/hello_date_time.rb)
3953
4247
 
3954
4248
  Hello, Date Time!
3955
4249
 
@@ -3961,7 +4255,7 @@ This sample demonstrates the use of `spinner` widget in Glimmer
3961
4255
 
3962
4256
  Code:
3963
4257
 
3964
- [samples/hello/hello_spinner.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_spinner.rb)
4258
+ [samples/hello/hello_spinner.rb](samples/hello/hello_spinner.rb)
3965
4259
 
3966
4260
  Hello, Spinner!
3967
4261
 
@@ -3973,7 +4267,7 @@ This sample demonstrates the use of [table](#table) widget in Glimmer, including
3973
4267
 
3974
4268
  Code:
3975
4269
 
3976
- [samples/hello/hello_table.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_table.rb)
4270
+ [samples/hello/hello_table.rb](samples/hello/hello_table.rb)
3977
4271
 
3978
4272
  Hello, Table!
3979
4273
 
@@ -4017,11 +4311,11 @@ Hello, Table! Context Menu
4017
4311
 
4018
4312
  #### Hello, Button!
4019
4313
 
4020
- This sample demonstrates the use of `button` widget in Glimmer, including data-binding and click event triggering via `on_widget_selected`.
4314
+ This sample demonstrates the use of the `button` widget in Glimmer, including data-binding and click event triggering via `on_widget_selected`.
4021
4315
 
4022
4316
  Code:
4023
4317
 
4024
- [samples/hello/hello_button.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/hello/hello_button.rb)
4318
+ [samples/hello/hello_button.rb](samples/hello/hello_button.rb)
4025
4319
 
4026
4320
  Hello, Button!
4027
4321
 
@@ -4031,6 +4325,38 @@ Hello, Button! Incremented 7 times!
4031
4325
 
4032
4326
  ![Hello Button Incremented](images/glimmer-hello-button-incremented.png)
4033
4327
 
4328
+ #### Hello, Link!
4329
+
4330
+ This sample demonstrates the use of the `link` widget in Glimmer, including identifying which link was clicked and performing an action (displaying help) based on its location.
4331
+
4332
+ Code:
4333
+
4334
+ [samples/hello/hello_link.rb](samples/hello/hello_link.rb)
4335
+
4336
+ Hello, Link!
4337
+
4338
+ ![Hello Link](images/glimmer-hello-link.png)
4339
+
4340
+ Hello, Link! Clicked
4341
+
4342
+ ![Hello Link Clicked](images/glimmer-hello-link-clicked.png)
4343
+
4344
+ #### Hello, Dialog!
4345
+
4346
+ This sample demonstrates the use of the `dialog` widget in Glimmer, which provides a modal `shell` that blocks shells beneath it until closed. And unlike `message_box`, it can contain arbitrary widgets (not just a message).
4347
+
4348
+ Code:
4349
+
4350
+ [samples/hello/hello_dialog.rb](samples/hello/hello_dialog.rb)
4351
+
4352
+ Hello, Dialog!
4353
+
4354
+ ![Hello Dialog](images/glimmer-hello-dialog.png)
4355
+
4356
+ Hello, Dialog! Open Dialog
4357
+
4358
+ ![Hello Dialog Open Dialog](images/glimmer-hello-dialog-open-dialog.png)
4359
+
4034
4360
  ### Elaborate Samples
4035
4361
 
4036
4362
  For more elaborate samples, check the following:
@@ -4043,7 +4369,7 @@ Please note that the code has changed since that article was written (the GUI DS
4043
4369
 
4044
4370
  Code:
4045
4371
 
4046
- [samples/elaborate/user_profile.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/elaborate/user_profile.rb)
4372
+ [samples/elaborate/user_profile.rb](samples/elaborate/user_profile.rb)
4047
4373
 
4048
4374
  ![User Profile](images/glimmer-user-profile.png)
4049
4375
 
@@ -4053,7 +4379,7 @@ This sample demonstrates basic data-binding, password and text fields, and field
4053
4379
 
4054
4380
  Code:
4055
4381
 
4056
- [samples/elaborate/login.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/elaborate/login.rb)
4382
+ [samples/elaborate/login.rb](samples/elaborate/login.rb)
4057
4383
 
4058
4384
  ![Login](images/glimmer-login.png)
4059
4385
  ![Login Filled In](images/glimmer-login-filled-in.png)
@@ -4067,7 +4393,7 @@ Code:
4067
4393
 
4068
4394
  (Please note that on some Linux instances where the display x-axis is set to double-scale, you need to set the `shell` `minimum_size` to `300, 178` instead of `150, 178`)
4069
4395
 
4070
- [samples/elaborate/tic_tac_toe.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/elaborate/tic_tac_toe.rb)
4396
+ [samples/elaborate/tic_tac_toe.rb](samples/elaborate/tic_tac_toe.rb)
4071
4397
 
4072
4398
  ![Tic Tac Toe](images/glimmer-tic-tac-toe.png)
4073
4399
  ![Tic Tac Toe In Progress](images/glimmer-tic-tac-toe-in-progress.png)
@@ -4079,7 +4405,7 @@ This sample demonstrates table data-binding, sorting, filtering, GUI layout, MVP
4079
4405
 
4080
4406
  Code:
4081
4407
 
4082
- [samples/elaborate/contact_manager.rb](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/samples/elaborate/contact_manager.rb)
4408
+ [samples/elaborate/contact_manager.rb](samples/elaborate/contact_manager.rb)
4083
4409
 
4084
4410
  Contact Manager
4085
4411
 
@@ -4350,7 +4676,7 @@ Here is a list of notable 3rd party gems used by Glimmer:
4350
4676
 
4351
4677
  ## Glimmer Process
4352
4678
 
4353
- [Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md) is the lightweight software development process used for building Glimmer libraries and Glimmer apps, which goes beyond Agile, rendering all Agile processes obsolete. [Glimmer Process](PROCESS.md) is simply made up of 7 guidelines to pick and choose as necessary until software development needs are satisfied.
4679
+ [Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md) is the lightweight software development process used for building Glimmer libraries and Glimmer apps, which goes beyond Agile, rendering all Agile processes obsolete. [Glimmer Process](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md) is simply made up of 7 guidelines to pick and choose as necessary until software development needs are satisfied.
4354
4680
 
4355
4681
  Learn more by reading the [GPG](https://github.com/AndyObtiva/glimmer/blob/master/PROCESS.md) (Glimmer Process Guidelines)
4356
4682
 
@@ -4420,7 +4746,7 @@ If your company would like to invest fulltime in further development of the Glim
4420
4746
 
4421
4747
  [MIT](LICENSE.txt)
4422
4748
 
4423
- Copyright (c) 2007-2020 - Andy Maleh.
4749
+ Copyright (c) 2007-2021 - Andy Maleh.
4424
4750
 
4425
4751
  --
4426
4752