SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Simplifying Desktop
        Development with
            Glimmer
                                     Andy Maleh
                                Journeyman Craftsman
                                     Obtiva Corp.




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Preview

 
     Introduction
 
     Overview of Widgets
 
     Hello World
 
     Glimmer Listens
 
     Data-binding
 
     Test-driving with MVP
 
     First Glimmer Game




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Introduction

 
     Requirements for a Ruby UI Toolkit:
         Platform independence
         Native widget support
         Industry strength
         Ease of use




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Introduction

 
     Current Ruby UI Toolkits:
         TK
         FXRuby
         GTK
         wxWidgets
         Monkeybars
         Shoes
         Limelight
         ...




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Introduction

 
     Introducing Glimmer:
         Leverages SWT library used in Aptana RadRails IDE
         Works on Windows, Mac, and Linux
         Offers built in native widget support
         Provides an ultra-light UI authoring DSL
         Facilitates clean separation of logic and UI code via
          Data-Binding




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Overview of Widgets




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Overview of Widgets

 
     Shell
         Composite
            
                Group
            
                TabFolder
            
                Combo
            
                List
            
                Control
                    Text
                    Label
                    Spinner
                    Button




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Hello World




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Hello World
 
     SWT example in Java:
             Display display = Display.getDefault();
             Shell shell = new Shell(display);
             shell.setText(quot;SWTquot;);
             shell.setLayout(new FillLayout());
             Label label = new Label(composite, SWT.NONE);
             label.setText(quot;Hello World!quot;);
             shell.pack();
             shell.open();
             while (!display.isDisposed()) {
                if (!display.readAndDispatch()) {
                    display.sleep();
                }
             }
             display.dispose();




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Hello World

 
     API Goals
         Concise and DRY
         Asks for minimum info needed to accomplish task
         Convention over configuration
         As predictable as possible for existing SWT developers




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Hello World
 
     Glimmer example in JRuby:
        shell {
           text quot;SWTquot;
           label {
               text quot;Hello World!quot;
           }
        }




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Glimmer Listens
 
     Listeners allow user interaction with widgets
        text {
           on_modify_text {
               contact_model.validate
           }
           on_focus_lost {
               contact_model.save
           }
        }

        button {
           text quot;Deletequot;
           on_widget_selected {
               contact_model.delete
           }
        }




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Glimmer Listens




                              Demo
              (http://glimmer.rubyforge.org/svn/samples/login.rb/)




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Data Binding
 
     Enables syncing of UI state with model state bi-
     directionally
 
     Facilitates clean separation between application
     logic and UI code
 
     Requires much less code than listeners
 
     Relies on modified version of MVC pattern




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Data Binding




                              Demo
       (http://glimmer.rubyforge.org/svn/samples/contact_manager/)




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Test-driving with MVP

 
     A presenter is a special kind of model that handles
     presentation logic
         Examples:
            
                Enablement/disablement of fields based on certain events
            
                Action logic triggered by clicking a button
            
                Aggregation/formatting of data to display
 
     Abstracts the UI
         Properties represent different fields on the UI
         Methods represent different action widgets (e.g.
          buttons) on the UI




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Test-driving with MVP




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Test-driving with MVP
 
     Write UI code using Glimmer (without data-
     binding and event listeners)
 
     Test-drive presenter that abstracts UI
       Every UI field is represented by a property on
        the presenter
       Every UI button is represented by a method on
        the presenter
 
     Update UI code to data-bind fields to properties on
     the presenter and hook event listeners to methods
     on the presenter



Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
First Glimmer Game




                              Demo
             (http://glimmer.rubyforge.org/svn/samples/tictactoe/)




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Review

 
     Introduction
 
     Overview of Widgets
 
     Hello World
 
     Glimmer Listens
 
     Data-binding
 
     Test-driving with MVP
 
     First Glimmer Game




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Q&A




Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
More Information
Glimmer Eclipse Technology Project:
http://www.eclipse.org/proposals/glimmer/

Glimmer Newsgroup:
http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.glimmer

Original Glimmer Project Page at RubyForge (moving to Eclipse now):
http://rubyforge.org/projects/glimmer/

Glimmer InfoQ Interview:
http://www.infoq.com/news/2008/02/glimmer-jruby-swt

Glimmer EclipseZone Introductory Tutorial:
http://eclipse.dzone.com/articles/an-introduction-glimmer

Sneak Peak at Glimmer:
http://andymaleh.blogspot.com/2007/11/sneak-peak-at-glimmer.html



Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
Contact Info

                             Andy Maleh
                     andy@obtiva.com
                  andymaleh.blogspot.com



                            Obtiva Corp.
                                   obtiva.com


Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0

Contenu connexe

Tendances

Developing for Xoom with Flash and AIR
Developing for Xoom with Flash and AIRDeveloping for Xoom with Flash and AIR
Developing for Xoom with Flash and AIRTerry Ryan
 
Mobile Web Development with HTML5
Mobile Web Development with HTML5Mobile Web Development with HTML5
Mobile Web Development with HTML5Roy Clarkson
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsJohn M. Wargo
 
Discover Android Wear
Discover Android WearDiscover Android Wear
Discover Android WearTroy Miles
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium IntroNicholas Jansma
 
Firefox OS, introduction, concepts, architecture and hello world example
Firefox OS, introduction, concepts, architecture and hello world exampleFirefox OS, introduction, concepts, architecture and hello world example
Firefox OS, introduction, concepts, architecture and hello world exampleDiego Mendonça
 
Acquia Platform Updates: New Features and Capabilities
 Acquia Platform Updates: New Features and Capabilities Acquia Platform Updates: New Features and Capabilities
Acquia Platform Updates: New Features and CapabilitiesRachel Wandishin
 
Wikipedia Mobile App with PhoneGap
Wikipedia Mobile App with PhoneGapWikipedia Mobile App with PhoneGap
Wikipedia Mobile App with PhoneGapTed Chien
 
Ionic Mobile Applications - Hybrid Mobile Applications Without Compromises
Ionic Mobile Applications - Hybrid Mobile Applications Without CompromisesIonic Mobile Applications - Hybrid Mobile Applications Without Compromises
Ionic Mobile Applications - Hybrid Mobile Applications Without CompromisesJacob Friesen
 
Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learnedrajeevdayal
 
The Art of Tizen UI Theme Technology in Various Profiles
The Art of Tizen UI Theme Technology in Various ProfilesThe Art of Tizen UI Theme Technology in Various Profiles
The Art of Tizen UI Theme Technology in Various ProfilesDaniel Juyung Seo
 
Extending Spring MVC with Spring Mobile and JavaScript
Extending Spring MVC with Spring Mobile and JavaScriptExtending Spring MVC with Spring Mobile and JavaScript
Extending Spring MVC with Spring Mobile and JavaScriptRoy Clarkson
 
Build run first web application using flutter for web
Build run first web application using flutter for webBuild run first web application using flutter for web
Build run first web application using flutter for webConcetto Labs
 
Mobile Development with PhoneGap
Mobile Development with PhoneGapMobile Development with PhoneGap
Mobile Development with PhoneGapJoshua Johnson
 
Hybrid Mobile Development - Overview and Intro to Cordova/Ionic Framework
Hybrid Mobile Development - Overview and Intro to Cordova/Ionic FrameworkHybrid Mobile Development - Overview and Intro to Cordova/Ionic Framework
Hybrid Mobile Development - Overview and Intro to Cordova/Ionic FrameworkRashmika Nawaratne
 
Eclipse and Genymotion
Eclipse and GenymotionEclipse and Genymotion
Eclipse and GenymotionMichael Pan
 
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas sparkSalesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas sparkAldo Fernandez
 

Tendances (20)

Develop apps for (Apple) TV
Develop apps for (Apple) TVDevelop apps for (Apple) TV
Develop apps for (Apple) TV
 
Developing for Xoom with Flash and AIR
Developing for Xoom with Flash and AIRDeveloping for Xoom with Flash and AIR
Developing for Xoom with Flash and AIR
 
Mobile Web Development with HTML5
Mobile Web Development with HTML5Mobile Web Development with HTML5
Mobile Web Development with HTML5
 
NCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile AppsNCDevCon 2017 - Cross Platform Mobile Apps
NCDevCon 2017 - Cross Platform Mobile Apps
 
Discover Android Wear
Discover Android WearDiscover Android Wear
Discover Android Wear
 
Appcelerator Titanium Intro
Appcelerator Titanium IntroAppcelerator Titanium Intro
Appcelerator Titanium Intro
 
Firefox OS, introduction, concepts, architecture and hello world example
Firefox OS, introduction, concepts, architecture and hello world exampleFirefox OS, introduction, concepts, architecture and hello world example
Firefox OS, introduction, concepts, architecture and hello world example
 
Acquia Platform Updates: New Features and Capabilities
 Acquia Platform Updates: New Features and Capabilities Acquia Platform Updates: New Features and Capabilities
Acquia Platform Updates: New Features and Capabilities
 
Wikipedia Mobile App with PhoneGap
Wikipedia Mobile App with PhoneGapWikipedia Mobile App with PhoneGap
Wikipedia Mobile App with PhoneGap
 
Ionic Mobile Applications - Hybrid Mobile Applications Without Compromises
Ionic Mobile Applications - Hybrid Mobile Applications Without CompromisesIonic Mobile Applications - Hybrid Mobile Applications Without Compromises
Ionic Mobile Applications - Hybrid Mobile Applications Without Compromises
 
Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learned
 
The Art of Tizen UI Theme Technology in Various Profiles
The Art of Tizen UI Theme Technology in Various ProfilesThe Art of Tizen UI Theme Technology in Various Profiles
The Art of Tizen UI Theme Technology in Various Profiles
 
Extending Spring MVC with Spring Mobile and JavaScript
Extending Spring MVC with Spring Mobile and JavaScriptExtending Spring MVC with Spring Mobile and JavaScript
Extending Spring MVC with Spring Mobile and JavaScript
 
Build run first web application using flutter for web
Build run first web application using flutter for webBuild run first web application using flutter for web
Build run first web application using flutter for web
 
Mobile Development with PhoneGap
Mobile Development with PhoneGapMobile Development with PhoneGap
Mobile Development with PhoneGap
 
Hybrid Mobile Development - Overview and Intro to Cordova/Ionic Framework
Hybrid Mobile Development - Overview and Intro to Cordova/Ionic FrameworkHybrid Mobile Development - Overview and Intro to Cordova/Ionic Framework
Hybrid Mobile Development - Overview and Intro to Cordova/Ionic Framework
 
Eclipse and Genymotion
Eclipse and GenymotionEclipse and Genymotion
Eclipse and Genymotion
 
Universal Windows Platform
Universal Windows PlatformUniversal Windows Platform
Universal Windows Platform
 
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas sparkSalesforce1 dev week UYSDUG 2014 - the force canvas spark
Salesforce1 dev week UYSDUG 2014 - the force canvas spark
 
Revue des annonces WWDC2015
Revue des annonces WWDC2015Revue des annonces WWDC2015
Revue des annonces WWDC2015
 

Similaire à Simplifying Desktop Development With Glimmer

Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Mikkel Flindt Heisterberg
 
Alessandro Salvatico - Sviluppare J2EE con INGRES
Alessandro Salvatico - Sviluppare J2EE con INGRESAlessandro Salvatico - Sviluppare J2EE con INGRES
Alessandro Salvatico - Sviluppare J2EE con INGRESBetter Software
 
Desktop Applications with NetBeans
Desktop Applications with NetBeansDesktop Applications with NetBeans
Desktop Applications with NetBeansHuu Bang Le Phan
 
What's New in Plug-in Development (Galileo)
What's New in Plug-in Development (Galileo)What's New in Plug-in Development (Galileo)
What's New in Plug-in Development (Galileo)Chris Aniszczyk
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textToma Velev
 
Javafxpressentation 140524053934-phpapp01 (1)
Javafxpressentation 140524053934-phpapp01 (1)Javafxpressentation 140524053934-phpapp01 (1)
Javafxpressentation 140524053934-phpapp01 (1)ssuser4f9de3
 
Getting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platformGetting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platformJean-Michel Bouffard
 
Christophe Jolif - Flex Data Visualization going one step further with IBM IL...
Christophe Jolif - Flex Data Visualization going one step further with IBM IL...Christophe Jolif - Flex Data Visualization going one step further with IBM IL...
Christophe Jolif - Flex Data Visualization going one step further with IBM IL...360|Conferences
 
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...John Head
 
What is codename one
What is codename oneWhat is codename one
What is codename oneShai Almog
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Mikkel Flindt Heisterberg
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Mikkel Flindt Heisterberg
 
Ignite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseIgnite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseJen Looper
 
Domino X Pages 8.5
Domino X Pages 8.5Domino X Pages 8.5
Domino X Pages 8.5John Head
 
Silverlight overview
Silverlight overviewSilverlight overview
Silverlight overviewTaras Romanyk
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 

Similaire à Simplifying Desktop Development With Glimmer (20)

Ilog Ria2
Ilog Ria2Ilog Ria2
Ilog Ria2
 
Silverlight
SilverlightSilverlight
Silverlight
 
Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)Plug yourself in and your app will never be the same (1 hr edition)
Plug yourself in and your app will never be the same (1 hr edition)
 
Alessandro Salvatico - Sviluppare J2EE con INGRES
Alessandro Salvatico - Sviluppare J2EE con INGRESAlessandro Salvatico - Sviluppare J2EE con INGRES
Alessandro Salvatico - Sviluppare J2EE con INGRES
 
Desktop Applications with NetBeans
Desktop Applications with NetBeansDesktop Applications with NetBeans
Desktop Applications with NetBeans
 
What's New in Plug-in Development (Galileo)
What's New in Plug-in Development (Galileo)What's New in Plug-in Development (Galileo)
What's New in Plug-in Development (Galileo)
 
Flutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - textFlutter vs Java Graphical User Interface Frameworks - text
Flutter vs Java Graphical User Interface Frameworks - text
 
JavaFX Presentation
JavaFX PresentationJavaFX Presentation
JavaFX Presentation
 
Javafxpressentation 140524053934-phpapp01 (1)
Javafxpressentation 140524053934-phpapp01 (1)Javafxpressentation 140524053934-phpapp01 (1)
Javafxpressentation 140524053934-phpapp01 (1)
 
Getting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platformGetting started with open mobile development on the Openmoko platform
Getting started with open mobile development on the Openmoko platform
 
Christophe Jolif - Flex Data Visualization going one step further with IBM IL...
Christophe Jolif - Flex Data Visualization going one step further with IBM IL...Christophe Jolif - Flex Data Visualization going one step further with IBM IL...
Christophe Jolif - Flex Data Visualization going one step further with IBM IL...
 
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
BP218 IBM Lotus Notes 8 and IBM Lotus Expeditor Customization for LotusScript...
 
What is codename one
What is codename oneWhat is codename one
What is codename one
 
Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)Plug yourself in and your app will never be the same (2 hr editon)
Plug yourself in and your app will never be the same (2 hr editon)
 
Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)Plug yourself in and your app will never be the same (2 hour edition)
Plug yourself in and your app will never be the same (2 hour edition)
 
Ignite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseIgnite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and Firebase
 
Domino X Pages 8.5
Domino X Pages 8.5Domino X Pages 8.5
Domino X Pages 8.5
 
Silverlight overview
Silverlight overviewSilverlight overview
Silverlight overview
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Building APIs with Mule and Spring Boot
Building APIs with Mule and Spring BootBuilding APIs with Mule and Spring Boot
Building APIs with Mule and Spring Boot
 

Plus de Andy Maleh

Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalAndy Maleh
 
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby MeetupBecoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby MeetupAndy Maleh
 
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ... Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...Andy Maleh
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in RubyAndy Maleh
 
Ultra Light and Maintainable Rails Wizards at RailsConf 2014
Ultra Light and Maintainable Rails Wizards at RailsConf 2014Ultra Light and Maintainable Rails Wizards at RailsConf 2014
Ultra Light and Maintainable Rails Wizards at RailsConf 2014Andy Maleh
 
RailsConf 2014 Recap at Montreal.rb by Andy Maleh
RailsConf 2014 Recap at Montreal.rb by Andy MalehRailsConf 2014 Recap at Montreal.rb by Andy Maleh
RailsConf 2014 Recap at Montreal.rb by Andy MalehAndy Maleh
 
Ultra Light and Maintainable Wizards in Rails at Montreal.rb
Ultra Light and Maintainable Wizards in Rails at Montreal.rbUltra Light and Maintainable Wizards in Rails at Montreal.rb
Ultra Light and Maintainable Wizards in Rails at Montreal.rbAndy Maleh
 
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012Andy Maleh
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringAndy Maleh
 
Rails Engine Patterns
Rails Engine PatternsRails Engine Patterns
Rails Engine PatternsAndy Maleh
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Andy Maleh
 
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Andy Maleh
 
Software Design Trilogy Part II - Design Patterns for Rubyists
Software Design Trilogy Part II - Design Patterns for RubyistsSoftware Design Trilogy Part II - Design Patterns for Rubyists
Software Design Trilogy Part II - Design Patterns for RubyistsAndy Maleh
 
Software Design Trilogy Part I - Responsibility Driven Design for Rubyists
Software Design Trilogy Part I - Responsibility Driven Design for RubyistsSoftware Design Trilogy Part I - Responsibility Driven Design for Rubyists
Software Design Trilogy Part I - Responsibility Driven Design for RubyistsAndy Maleh
 
The Rails Engine That Could - In Motion
The Rails Engine That Could - In MotionThe Rails Engine That Could - In Motion
The Rails Engine That Could - In MotionAndy Maleh
 
The Rails Engine That Could
The Rails Engine That CouldThe Rails Engine That Could
The Rails Engine That CouldAndy Maleh
 
How I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsHow I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsAndy Maleh
 

Plus de Andy Maleh (17)

Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - Opal
 
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby MeetupBecoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
 
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ... Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in Ruby
 
Ultra Light and Maintainable Rails Wizards at RailsConf 2014
Ultra Light and Maintainable Rails Wizards at RailsConf 2014Ultra Light and Maintainable Rails Wizards at RailsConf 2014
Ultra Light and Maintainable Rails Wizards at RailsConf 2014
 
RailsConf 2014 Recap at Montreal.rb by Andy Maleh
RailsConf 2014 Recap at Montreal.rb by Andy MalehRailsConf 2014 Recap at Montreal.rb by Andy Maleh
RailsConf 2014 Recap at Montreal.rb by Andy Maleh
 
Ultra Light and Maintainable Wizards in Rails at Montreal.rb
Ultra Light and Maintainable Wizards in Rails at Montreal.rbUltra Light and Maintainable Wizards in Rails at Montreal.rb
Ultra Light and Maintainable Wizards in Rails at Montreal.rb
 
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
 
Rails Engine Patterns
Rails Engine PatternsRails Engine Patterns
Rails Engine Patterns
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)
 
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
 
Software Design Trilogy Part II - Design Patterns for Rubyists
Software Design Trilogy Part II - Design Patterns for RubyistsSoftware Design Trilogy Part II - Design Patterns for Rubyists
Software Design Trilogy Part II - Design Patterns for Rubyists
 
Software Design Trilogy Part I - Responsibility Driven Design for Rubyists
Software Design Trilogy Part I - Responsibility Driven Design for RubyistsSoftware Design Trilogy Part I - Responsibility Driven Design for Rubyists
Software Design Trilogy Part I - Responsibility Driven Design for Rubyists
 
The Rails Engine That Could - In Motion
The Rails Engine That Could - In MotionThe Rails Engine That Could - In Motion
The Rails Engine That Could - In Motion
 
The Rails Engine That Could
The Rails Engine That CouldThe Rails Engine That Could
The Rails Engine That Could
 
How I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsHow I Learned To Apply Design Patterns
How I Learned To Apply Design Patterns
 

Dernier

Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 

Dernier (20)

Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 

Simplifying Desktop Development With Glimmer

  • 1. Simplifying Desktop Development with Glimmer Andy Maleh Journeyman Craftsman Obtiva Corp. Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 2. Preview  Introduction  Overview of Widgets  Hello World  Glimmer Listens  Data-binding  Test-driving with MVP  First Glimmer Game Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 3. Introduction  Requirements for a Ruby UI Toolkit:  Platform independence  Native widget support  Industry strength  Ease of use Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 4. Introduction  Current Ruby UI Toolkits:  TK  FXRuby  GTK  wxWidgets  Monkeybars  Shoes  Limelight  ... Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 5. Introduction  Introducing Glimmer:  Leverages SWT library used in Aptana RadRails IDE  Works on Windows, Mac, and Linux  Offers built in native widget support  Provides an ultra-light UI authoring DSL  Facilitates clean separation of logic and UI code via Data-Binding Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 6. Overview of Widgets Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 7. Overview of Widgets  Shell  Composite  Group  TabFolder  Combo  List  Control  Text  Label  Spinner  Button Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 8. Hello World Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 9. Hello World  SWT example in Java: Display display = Display.getDefault(); Shell shell = new Shell(display); shell.setText(quot;SWTquot;); shell.setLayout(new FillLayout()); Label label = new Label(composite, SWT.NONE); label.setText(quot;Hello World!quot;); shell.pack(); shell.open(); while (!display.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 10. Hello World  API Goals  Concise and DRY  Asks for minimum info needed to accomplish task  Convention over configuration  As predictable as possible for existing SWT developers Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 11. Hello World  Glimmer example in JRuby: shell { text quot;SWTquot; label { text quot;Hello World!quot; } } Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 12. Glimmer Listens  Listeners allow user interaction with widgets text { on_modify_text { contact_model.validate } on_focus_lost { contact_model.save } } button { text quot;Deletequot; on_widget_selected { contact_model.delete } } Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 13. Glimmer Listens Demo (http://glimmer.rubyforge.org/svn/samples/login.rb/) Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 14. Data Binding  Enables syncing of UI state with model state bi- directionally  Facilitates clean separation between application logic and UI code  Requires much less code than listeners  Relies on modified version of MVC pattern Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 15. Data Binding Demo (http://glimmer.rubyforge.org/svn/samples/contact_manager/) Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 16. Test-driving with MVP  A presenter is a special kind of model that handles presentation logic  Examples:  Enablement/disablement of fields based on certain events  Action logic triggered by clicking a button  Aggregation/formatting of data to display  Abstracts the UI  Properties represent different fields on the UI  Methods represent different action widgets (e.g. buttons) on the UI Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 17. Test-driving with MVP Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 18. Test-driving with MVP  Write UI code using Glimmer (without data- binding and event listeners)  Test-drive presenter that abstracts UI  Every UI field is represented by a property on the presenter  Every UI button is represented by a method on the presenter  Update UI code to data-bind fields to properties on the presenter and hook event listeners to methods on the presenter Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 19. First Glimmer Game Demo (http://glimmer.rubyforge.org/svn/samples/tictactoe/) Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 20. Review  Introduction  Overview of Widgets  Hello World  Glimmer Listens  Data-binding  Test-driving with MVP  First Glimmer Game Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 21. Q&A Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 22. More Information Glimmer Eclipse Technology Project: http://www.eclipse.org/proposals/glimmer/ Glimmer Newsgroup: http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.glimmer Original Glimmer Project Page at RubyForge (moving to Eclipse now): http://rubyforge.org/projects/glimmer/ Glimmer InfoQ Interview: http://www.infoq.com/news/2008/02/glimmer-jruby-swt Glimmer EclipseZone Introductory Tutorial: http://eclipse.dzone.com/articles/an-introduction-glimmer Sneak Peak at Glimmer: http://andymaleh.blogspot.com/2007/11/sneak-peak-at-glimmer.html Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0
  • 23. Contact Info Andy Maleh andy@obtiva.com andymaleh.blogspot.com Obtiva Corp. obtiva.com Simplifying Desktop Development with Glimmer ®2008 by Annas Maleh; made available under the EPL v1.0