Nebula - 55+ Glimmer Desktop GUI Custom Widgets
Tags: ruby, gui, dsl, desktop
Published: 2021-03-11 01:46:38

Originally Posted at: https://andymaleh.blogspot.com/2021/03/nebula-glimmer-custom-widget.html

[Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt)'s got a new custom widget (or more accurately 55+ new custom widgets): [Nebula](https://github.com/AndyObtiva/glimmer-cw-nebula)

The Nebula Project is a collection of enterprise-grade high-quality SWT (Standard Widget Toolkit) custom widgets, which are made available for use with Glimmer DSL for SWT in this Ruby gem. They cover many different widgets, such as breadcrumbs, wizard step bars, shelf groups, geo maps, and even oscilloscopes.

Thanks to Glimmer's unique [DSL Auto-Expansion](https://github.com/AndyObtiva/glimmer-dsl-swt/blob/master/docs/reference/GLIMMER_GUI_DSL_SYNTAX.md#dsl-auto-expansion) feature, its GUI DSL automatically grows when new custom widget libraries are imported, even if they were originally written in Java, like the Nebula Project.

Below is the list of custom widgets newly added by the Nebula Custom Widget.

### Custom Date Time

![c_date_time](https://www.eclipse.org/nebula/images/cdatetime.png)

### PShelf

![p_shelf](https://www.eclipse.org/nebula/images/pshelf.png)

### Gantt Chart

![gantt_chart](https://www.eclipse.org/nebula/images/ganttchart.png)

Used in [Are We There Yet?](https://github.com/AndyObtiva/are-we-there-yet)

![Are We There Yet](https://github.com/AndyObtiva/are-we-there-yet/raw/master/are-we-there-yet-screenshot-windows.png)

### Gallery

![Gallery](https://www.eclipse.org/nebula/images/gallery.png)

### Grid

This is a richer alternative to the `table` widget.

![Grid](https://www.eclipse.org/nebula/images/grid.png)

### Paper Clips

![Paper Clips](https://www.eclipse.org/nebula/images/paperclips.jpg)

### Oscilloscope

![Oscilloscope](https://www.eclipse.org/nebula/images/scope.gif)

### PGroup

![PGroup](https://www.eclipse.org/nebula/images/pgroup.png)

### Rich Text

This is a richer alternative to the `styled_text` widget with some caveats (uses the `browser` widget behind the scenes).

![Rich Text](https://www.eclipse.org/nebula/images/richtext.png)

### Geo Map

![Geo Map](https://www.eclipse.org/nebula/images/example_geomap.png)

### Table Combo

![TableCombo](https://www.eclipse.org/nebula/images/tablecombo.png)

### XViewer

This is a richer alternative to the `tree` widget.

![XViewer](https://www.eclipse.org/nebula/images/xviewer.png)

### Transition

![Transition](https://www.eclipse.org/nebula/images/stw1.gif)

### Breadcrumb

![Breadcrumb](https://www.eclipse.org/nebula/images/opal/breadcrumb.png)

### Checkbox Group

![Checkbox Group](https://www.eclipse.org/nebula/images/opal/checkboxgroup.png)

### Column Browser

![Column Browser](https://www.eclipse.org/nebula/images/opal/columnbrowser.png)

### Dialog

This is a richer alternative to the built-in `dialog` widget.

![Dialog](https://www.eclipse.org/nebula/images/opal/dialog.png)

### Dual List

![Dual List](https://www.eclipse.org/nebula/images/opal/duallist.jpg)

### Header

![Header](https://www.eclipse.org/nebula/images/opal/header.png)

### Heap Manager

This shows memory usage in an application's Java Virtual Machine.

![Heap Manager](https://wiki.eclipse.org/Nebula_HeapManager)

### Login Dialog

![Login Dialog](https://www.eclipse.org/nebula/images/opal/login.png)

### Multi Choice

![Multi Choice](https://www.eclipse.org/nebula/images/opal/multichoice.png)

### Notifier

![Notifier](https://www.eclipse.org/nebula/images/opal/notifier.png)

### Preference Window

![Preference Window](https://www.eclipse.org/nebula/images/opal/preferencewindow.png)

### Prompt Support

![Prompt Support](https://www.eclipse.org/nebula/images/opal/promptsupport.png)

### Range Slider

![Range Slider](https://www.eclipse.org/nebula/images/opal/rangeslider.png)

### Rounded Toolbar

![Rounded Toolbar](https://www.eclipse.org/nebula/images/opal/roundedtoolbar.png)

### Star Rating

![Star Rating](https://www.eclipse.org/nebula/images/opal/starrating.png)

### Text Assist

![Text Assist](https://www.eclipse.org/nebula/images/opal/textassist.png)

### Tip of The Day

![Tip of the Day](https://www.eclipse.org/nebula/images/opal/totd.png)

### Titled Separator

![Titled Separator](https://www.eclipse.org/nebula/images/opal/titledseparator.png)

### Calculator

![Calculator](https://www.eclipse.org/nebula/images/opal/calculator.png)

### Horizontal Spinner

![Horizontal Spinner](https://www.eclipse.org/nebula/images/opal/horizontalSpinner.png)

### Launcher

![Launcher](https://www.eclipse.org/nebula/images/opal/launcher.png)

### Panels

![Panels](https://www.eclipse.org/nebula/images/opal/darkPanel.png)

### Switch Button

![Switch Button](https://www.eclipse.org/nebula/images/opal/switchbutton.jpg)

### Progress Circle

![Progress Circle](https://www.eclipse.org/nebula/images/progresscircle.png)

### Nebula Slider

This is a richer alternative to the built-in `slider` widget.

![Nebula Slider](https://www.eclipse.org/nebula/images/nebulaslider.png)

### Split Button

This is an alternative to the `combo` widget.

![Split Button](https://www.eclipse.org/nebula/images/splitbutton.png)

### Rounded Checkbox

This is an alternative to the `checkbox` widget (aka `check` or `button(:check)` widget).

![Rounded Checkbox](https://www.eclipse.org/nebula/images/roundedcheckbox.png)

### Floating Text

![Floating Text](https://www.eclipse.org/nebula/images/floatingtext.gif)

### Password Revealer

![Password Revealer](https://www.eclipse.org/nebula/images/passwordrevealer.png)

### Custom Tree Combo

![Custom Tree Combo](https://www.eclipse.org/nebula/images/ctreecombo.png)

### Badged Label

![Badged Label](https://www.eclipse.org/nebula/images/badgedlabel.png)

### LED Display

![LED Display](https://www.eclipse.org/nebula/images/ledwidget.png)

### Step Bar

![Step Bar](https://www.eclipse.org/nebula/images/stepbar.png)

### Chips

![Chips](https://www.eclipse.org/nebula/images/chips.png)

### Carousel

![Carousel](https://www.eclipse.org/nebula/images/carousel.png)

### Font Awesome

![Font Awesome](https://www.eclipse.org/nebula/images/fontawesome.png)

### Rounded Switch

![Rounded Switch](https://www.eclipse.org/nebula/images/roundedswitch.png)

### Nat Table

A higher-performant alternative to the built-in `table` widget.

![Nat Table](https://www.eclipse.org/nattable/images/FeatureScreenShot.png)

[Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt) is more than feature-complete. It is enterprise-grade-complete! As such, Glimmer absolutely outdoes its competition in the Ruby world, and I would dare say the entire desktop development world. No other GUI library comes even close to what Glimmer DSL for SWT offers in terms of productivity, readability, maintainability, and extensibility. Think of it like this! While some other libraries are still learning how to wear shoes, Glimmer DSL for SWT has learned to run, drive a car, fly an airplane, launch rockets into space, and zoom at light speed!!! The sky is the limit with Glimmer DSL for SWT. You could think up any desktop application custom widget or custom shape, and your wish is Glimmer DSL for SWT's command with the absolute minimum syntax possible! Go ahead world and make trillions of dollars in service of others by leveraging [Glimmer](https://github.com/AndyObtiva/glimmer)! 

I envision Glimmer DSL for SWT to eventually have thousands if not millions of custom widget gems made by the community. As long as they follow the “glimmer-cw-name-namespace” convention, they can be discovered and listed by the “glimmer list:gems:customwidget” command automatically when needed. So, while software developers are too busy crawling in other frameworks, Glimmer DSL for SWT users and software engineers will be delivering excellent service to their customers at warp speed!

Here are some articles to get started with [Glimmer DSL for SWT](https://github.com/AndyObtiva/glimmer-dsl-swt):
- [How To Write a Glimmer Timer Desktop App in One Hour](https://andymaleh.blogspot.com/search/label/Glimmer?updated-max=2020-10-13T21:03:00-04:00&max-results=20&start=37&by-date=false#:~:text=How%20To%20Write%20a%20Glimmer%20Timer%20Desktop%20App%20in%20One%20Hour)
- [Glimmer Tetris in One Day](https://andymaleh.blogspot.com/2021/01/glimmer-tetris-in-one-day.html)

Happy [Glimmering](https://github.com/AndyObtiva/glimmer-dsl-swt)!