Nebula 2.5.0.0.0
The Nebula Project is a collection of enterprise-grade high-quality SWT (Standard Widget Toolkit) custom widgets, made available for use with Glimmer DSL for SWT.
Project version numbers are in sync with the Nebula Project version (currently 2.5.0). The first 3 numbers represent the Nebula Project version. The last 2 numbers represent the minor and patch numbers of this Ruby gem.
This gem imports all of the Nebula Project custom widgets by default. If you prefer to bring in a single custom widget or just a few piecemeal, you can change the configuration or alternatively use one of the standalone Nebula custom widget gems like glimmer-cw-cdatetime-nebula by running the glimmer list:gems:customwidget
command.
Custom Widgets
Here is a list of custom widgets taken from the Nebula Project Official Website.
Custom Date Time
PShelf
Gantt Chart
Used in Are We There Yet?
Gallery
Grid
This is a richer alternative to the table
widget.
Paper Clips
Oscilloscope
PGroup
Rich Text
This is a richer alternative to the styled_text
widget with some caveats (uses the browser
widget behind the scenes).
Geo Map
Table Combo
XViewer
This is a richer alternative to the tree
widget.
Transition
Breadcrumb
Checkbox Group
Column Browser
Dialog
This is a richer alternative to the built-in dialog
widget.
Dual List
Header
Heap Manager
This shows memory usage in an application's Java Virtual Machine.
Login Dialog
Multi Choice
Notifier
Preference Window
Prompt Support
Range Slider
Rounded Toolbar
Star Rating
Text Assist
Tip of The Day
Titled Separator
Calculator
Horizontal Spinner
Launcher
Panels
Switch Button
Progress Circle
Nebula Slider
This is a richer alternative to the built-in slider
widget.
Split Button
This is an alternative to the combo
widget.
Rounded Checkbox
This is an alternative to the checkbox
widget (aka check
or button(:check)
widget).
Floating Text
Password Revealer
Custom Tree Combo
Badged Label
LED Display
Step Bar
Chips
Carousel
Font Awesome
Rounded Switch
Nat Table
A higher-performant alternative to the built-in table
widget.
Setup
This gem includes the Nebula Project JAR files, so you just need to install the gem to get started.
Bundler
gem 'glimmer-cw-nebula', '~> 2.5.0.0.0'
Direct
gem install glimmer-cw-nebula
Usage
Add the following require statement on top of your code (glimmer-dsl-swt
gets required automatically as part of it):
require 'glimmer-cw-nebula'
This imports all of the Nebula Project custom widgets. You can optionally bring in only the custom widgets you need through configuration.
Otherwise, just like with SWT widgets, you may use lowercase underscored keywords for Nebula custom widgets in Glimmer DSL for SWT.
Examples:
-
gantt_chart
(for GanttChart) -
progress_circle
(for ProgressCircle) -
password_revealer
(for PasswordRevealer)
For more details on what custom widgets are included in the Nebula Project, check out the official documentation below.
Nebula Project Official Website
Nebula Project Official Javadoc
Configuration
By default, this gem brings in all of the Nebula custom widgets. They are basically all the libraries that live under the gem's vendor/nebula directory minus the version number / file extension:
Packages:
org.eclipse.nebula.widgets.opal.heapmanager
org.eclipse.nebula.widgets.carousel
org.eclipse.nebula.widgets.badgedlabel
org.eclipse.nebula.widgets.passwordrevealer
org.eclipse.nebula.widgets.progresscircle
org.eclipse.nebula.widgets.opal.starrating
org.eclipse.nebula.widgets.opal.checkboxgroup
org.eclipse.nebula.widgets.opal.calculator
org.eclipse.nebula.widgets.xviewer
org.eclipse.nebula.widgets.floatingtext
org.eclipse.nebula.widgets.opal.dialog
org.eclipse.nebula.widgets.geomap
org.eclipse.nebula.widgets.richtext
org.eclipse.nebula.widgets.ganttchart
org.eclipse.nebula.widgets.chips
org.eclipse.nebula.widgets.segmentedbar
org.eclipse.nebula.paperclips.widgets
org.eclipse.nebula.widgets.opal.multichoice
org.eclipse.nebula.widgets.opal.preferencewindow
org.eclipse.nebula.widgets.splitbutton
org.eclipse.nebula.widgets.opal.switchbutton
org.eclipse.nebula.widgets.xviewer.core
org.eclipse.nebula.widgets.tablecombo
org.eclipse.nebula.paperclips.core
org.eclipse.nebula.widgets.pgroup
org.eclipse.nebula.widgets.cdatetime
org.eclipse.nebula.widgets.opal.launcher
org.eclipse.nebula.widgets.opal.propertytable
org.eclipse.nebula.widgets.opal.commons
org.eclipse.nebula.widgets.opal.textassist
org.eclipse.nebula.widgets.opal.duallist
org.eclipse.nebula.widgets.opal.rangeslider
org.eclipse.nebula.widgets.fontawesome
org.eclipse.nebula.widgets.roundedswitch
org.eclipse.nebula.widgets.opal.titledseparator
org.eclipse.nebula.widgets.stepbar
org.eclipse.nebula.cwt
org.eclipse.nebula.widgets.gallery
org.eclipse.nebula.widgets.pshelf
org.eclipse.nebula.effects.stw
org.eclipse.nebula.widgets.nebulaslider
org.eclipse.nebula.widgets.opal.header
org.eclipse.nebula.widgets.oscilloscope
org.eclipse.nebula.widgets.opal.notifier
org.eclipse.nebula.widgets.opal.promptsupport
org.eclipse.nebula.widgets.compositetable
org.eclipse.nebula.widgets.ctreecombo
org.eclipse.nebula.widgets.opal.panels
org.eclipse.nebula.widgets.opal.logindialog
org.eclipse.nebula.widgets.grid
org.eclipse.nebula.visualization.widgets
org.eclipse.nebula.widgets.opal.roundedtoolbar
org.eclipse.nebula.widgets.opal.columnbrowser
org.eclipse.nebula.widgets.opal.tipoftheday
org.eclipse.nebula.widgets.opal.horizontalspinner
org.eclipse.nebula.widgets.opal.breadcrumb
org.eclipse.nebula.widgets.led
To limit imported custom widgets, set one of the following variables before the gem require statment (require 'glimmer-cw-nebula'
):
-
ENV['NEBULA_SWT_PACKAGES']
environment variable: can hold a comma separated string list of multiple Nebula SWT packages (e.g.export NEBULA_SWT_PACKAGES="org.eclipse.nebula.widgets.led,org.eclipse.nebula.widgets.opal.breadcrumb"
). -
NEBULA_SWT_PACKAGES
Ruby constant: can hold an array of strings representing multiple Nebula SWT packages (e.g.NEBULA_SWT_PACKAGES = ['org.eclipse.nebula.widgets.led' , 'org.eclipse.nebula.widgets.opal.breadcrumb']
Example
Run:
girb
Enter this code (assuming you have gem installed):
# require './lib/glimmer-cw-nebula' # if run locally from cloned project
require 'glimmer-cw-nebula'
include Glimmer
shell {
minimum_size 100, 100
progress_circle {
show_text true
selection 53
}
}.open
Note about widgets without a standard SWT (parent, style)
constructor:
Some Nebula widgets do not follow the SWT convention of always having a constructor that receives only the (parent, style)
arguments, like text_assist
as documented in the TextAssist Nebula widget page:
There is a big difference with other SWT widget : there is no constructor TextAssist(Composite parent, int style).
The only constructor available is public TextAssist(final Composite parent, final int style, final TextAssistContentProvider contentProvider)
In that case, you would have to pass all widget arguments manually in the Glimmer GUI DSL, so instead of simply adding a call to text_assist
, you would have to pass all its arguments, including its parent as in text_assist(parent, style, content_provider)
. Learn more in the example below.
Example:
require 'glimmer-dsl-swt'
require 'glimmer-cw-nebula'
class EuropeanCountryContentProvider < org.eclipse.nebula.widgets.opal.textassist.TextAssistContentProvider
EUROZONE = ["Austria", "Belgium", "Cyprus",
"Estonia", "Finland", "France", "Germany", "Greece", "Ireland", "Italy",
"Luxembourg", "Malta", "Netherlands", "Portugal", "Slovakia", "Slovenia", "Spain"]
def getContent(entry)
EUROZONE.select { |country| country.downcase.start_with?(entry.to_s.downcase) }
end
end
include Glimmer
shell { |shell_proxy|
text 'Text Assist Demo'
text_assist(shell_proxy.swt_widget, :none, EuropeanCountryContentProvider.new)
}.open
TODO
Change Log
Contributing to glimmer-cw-nebula
- Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
- Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
- Fork the project.
- Start a feature/bugfix branch.
- Commit and push until you are happy with your contribution.
- Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
- Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
License
Copyright (c) 2021 - Andy Maleh
--
Built for Glimmer DSL for SWT (JRuby Desktop Development GUI Framework).