SlideShare a Scribd company logo
1 of 53
Eclipse e4

                                 DI, services,
                                 CSS and the
                                  modeled
                                 Workbench
Lars Vogel
http://www.vogella.de
http://www.twitter.com/vogella
Mini-Agenda
Eclipse e4 Scope

Targets development for Eclipse
(plugins) or based on Eclipse
(Eclipse RCP).
Eclipse e4 Targets

Make Eclipse development more effective and the
result more visual appealing.
So, what’s wrong with
Eclipse 3.X?
Problems with the Eclipse 3.x programming
                    model
• Complex
• Lots of API
• Platform functionality via
  singletons
• Not easy to test
• Not a consistent way to
  define the UI
• UI makes assumptions, e.g.
  Editors / Views
If only Eclipse development
would be easier and the UI
would be more flexible.




                          7
Eclipse e4 – Building blocks

        Declarative Styling



          Rendering Engine


             Modeled Workbench


                    Dependecy Injection


                IEclipseContext


             Core Services
Eclipse e4 – Add-ons


XWT

        Open Social
         Gadgets


                      Toolkit
                      Model
The Modeled Workbench
The e4 Workbench Model
Eclipse Modeling Framework (EMF) is fantastic because:



              De-facto standard for modeling in Eclipse
 IfIf I only had a consistent
    I only had a consistent
 view and behavior of the
               Proven domain model technology
   view and behavior of the
 Eclipse workbenchsmall (1.5 MB) and highly
   Eclipse workbench
               Runtime
              optimized

              Tooling available

              Tap in to the EMF ecosystem (EMF-
              Compare, CDO, …)
The e4 Workbench Model
Model „ UIElements.ecore“ is contained in plugin „org.eclipse.e4.ui.model.workbench“
The e4 Workbench Model
Each application has it‘s live model



                                       • Workbench window
                                         – Menu with menu items
                                         – Window Trim, e.g. toolbar
                                           with toolbar items
                                         – Parts Sash Container
                                             • Parts
                                         – Part Stack (CTabFolder)
                                             • Parts
                                         – Handlers
                                         – Key Bindings
                                         – Commands
Model is Flexible
No distinction between View and
Editor

Perspectives are optional

Stack / Sash are optional

Several windows easily possible

Flexible Toolbars
Attention:

  IfIf I only had a consistent
     I only had a consistent
Inview and behaviorofofe4 a
    the context of theView and an Editor
    view and behavior the
  Eclipse workbench
are both so called “Parts”. Don’t get
    Eclipse workbench

confused if I speak about “Parts”.
Defining the model

   User changes
                      Base Model provided by
                      „Application.e4xmi“

                      Contributions possible via extension
                      point “org.eclipse.e4.workbench.model”
 Model Components
                      Model can be dynamically changed
                      by User or Code
Application.e4xmi
  Application.e4xmi   User model changes can be stored
Limits of the e4 application model

• Only models the Application (frame)


               Modeled
              Workbench



              Content of the
             view not part of
              the e4 model
Model URI’s
The Part in the Model




               The Part’s URI
Plain Old Java Objects
(POJO‘s)
Commands & Handlers
Handlers
• have and id and a command
• have an URI for the implementing class, e.g.
  platform:/plugin/...SaveHandler

Commands
• have and id and a name
• can be inserted in menus and toolbars
Menus / Toolbar
• Use commands or DirectItems
Model available at runtime
How is this model
translated into UI
components?




              © Lars Vogel and others, Licensed under Creative Commons by-nc-nd-3.0 (de)
Model and UI Renderers
Model

                I don’t care
               who draws me




              • The Workbench model is
                independent of a specific
                UI toolkit
Renderers
Renderer Factory

Eclipse default is the
SWT Renderer

Can be selected at
Startup via parameter
Renderers
Renderer Factory                          Widget Renderer




                      Returns for every
                      model element
Widget Renderer
• Each UI elements gets a renderer
• Renderer manage Lifecycle of the UI-Element
  – Creation
  – Model to widget binding
  – Rendering
  – Disposal
Renderer: flexible but complex
e4 CSS Styling
Eclipse 3.X - Styling the User Interface

• UI styling via
   – The Presentation API
   – Custom Widgets
• Very limited
In reality all RCP
apps look like the
      an IDE
Eclipse 3.X - IDE feeling                     Eclipse e4 – CSS Styling




 Example from Kai Toedter

 Some elements cannot currently not be styled:

 • Menu bar background
 • Table headers

 e4 supports theme switching during runtime
How to enable CSS Styling
Property "applicationCSS” in extension point
   “org.eclipse.core.runtime.products”

<extension
   id="product"
   point="org.eclipse.core.runtime.products">
   <product
     application="org.eclipse.e4.ui.workbench.swt.application"
     name="E4 Contacs Demo">
     <property
        name="applicationCSS"
        value="platform:/plugin/contacts/css/dark.css">
     </property>
   </product>
</extension>
Example CSS
Label {
   font: Verdana 8px;
   color: rgb(240, 240, 240);
}

Table {
   background-color: gradient radial #575757 #101010 100%;
   color: rgb(240, 240, 240);
   font: Verdana 8px;
}

ToolBar {
   background-color: #777777 #373737 #202020 50% 50%;
   color: white;
   font: Verdana 8px;
}
Assign custom attributes
• Java

  Label label =
     new Label(parent, SWT.NONE);
  label.setData("org.eclipse.e4.ui.css.id",
                "SeparatorLabel");

• CSS
   #SeparatorLabel {
       color: #f08d00;
   }
New Look & Feel for Eclipse e4 – SDK




https://bugs.eclipse.org/bugs/show_bug.cgi?id=293481
The e4 Programming
       Model
• Inversion of control: The necessary
  functionality is injected into the class
• JSR 330 compatible injection implementation
  – @javax.inject.Inject – Field, Constructor and
    Method injection
  – @javax.inject.Named – Specify a custom qualifier
    to context object (default is fully qualified
    classname of the injected type)
• e4 specific annotations, e.g. @Optional
Services are injected
                                       via the the e4
                                       framework

public class ListView {

 @Inject
 private IEclipseContext context;
 @Inject
 private Logger logger;

 @Inject
 public ListView(Composite parent) {
     // ...
Lifecycle


     •   @PostConstruct: Called after
         Object created and Fields- and
         Methods-Injection finished

     •   @PreDestroy: Called before
         the object is destroyed (e.g. the
         Part shown in the UI is
         removed)
public class MyPart {
  @Inject
  private ITimerService timerService;

    @PostConstruct
    private void init() {
      if(timerService != null) {
        // Do something
      }
    }

    @PreDestroy
    private void uninit() {
      if(timerService != null) {
        // Do something
      }
    }
}
– Stores information of possible Injection Values
– Hierarchical Datastructure
– OSGi Services part of the Context
– Dynamic context information: Possibility to
  contribute an IContextFunction through DS to
  construct Objects on the fly
• Implement an Execute-Method
    – Can have any number of arguments
    – Use IServiceConstants for general context
      informations

public class AboutHandler {
  public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell){
    MessageDialog.openInformation(
      shell, "About", "e4 Application example.");
  }
}
© Lars Vogel and others, Licensed under Creative Commons by-nc-nd-3.0 (de)
Eclipse Application Services (“Twenty Things”)


 Editor lifecycle                     Long-running operations
 Receiving input                      Progress reporting
 Producing selection                  Error handling
 Standard dialogs                     Navigation model
 Persisting UI state                  Resource management
 Logging                              Status line
 Interface to help system             Drag and drop
 Menu contributions                   Undo/Redo
 Authentication                       Accessing preferences
 Authorization


                            Don‘t forget: OSGi services are also
                            available via dependency injection
Photo credits
•   Hammer http://www.sxc.hu/photo/ 604247       •   Thank you picture http://www.sxc.hu/photo/
•   Open Door                                        986313
    http://www.sxc.hu/photo/1228296              •   Gummibaerchen 191472
•   Corn http://www.sxc.hu/photo/ 939151         •   Runtime model http://www.sxc.hu/photo/
•   Thinking man http://www.sxc.hu/photo/            765733
    324541                                       •   Binder: http://www.sxc.hu/photo/443042
•   Chess http://www.sxc.hu/photo/ 958410        •   Praying Girl
•   Pill box http://www.sxc.hu/photo/ 510413         http://www.sxc.hu/photo/646227
•   Under construction                           •   Box: http://www.sxc.hu/photo/502457
    http://www.sxc.hu/photo/ 1268302             •   Screws http://www.sxc.hu/photo/1148064
•   Singleton: http://www.sxc.hu/photo/ 988381   •   House with compartments
•   Frame for EMF reasons                            http://www.sxc.hu/photo/494103
    http://www.sxc.hu/photo/ 461975              •   Stacked stones
•   Syringe / Injection:                             http://www.sxc.hu/photo/998524
    http://www.sxc.hu/photo/ 468493              •   Thinking Guy
•   Smiley http://www.sxc.hu/photo/ 1211480          http://www.sxc.hu/photo/130484
•   Lock http://www.sxc.hu/photo/ 352344         •   Drawing Hand
•   Life Cycle http://www.sxc.hu/photo/              http://www.sxc.hu/photo/264208
    1265027                                      •   Waiter http://www.sxc.hu/photo/157966
Thank you
For further questions:

Lars.Vogel@gmail.com
http://www.vogella.de
http://www.twitter.com/vogella
e4: Where to go from here:
Eclipse e4 Tutorial
   http://www.vogella.de/articles/EclipseE4/article.html
Eclipse e4 Wiki
   http://wiki.eclipse.org/E4
Eclipse e4 Whitepaper
   http://www.eclipse.org/e4/resources/e4-whitepaper.php
License & Acknowledgements
• This work is licensed under the Creative Commons
  Attribution-Noncommercial-No Derivative Works 3.0
  Germany License

   – See http://creativecommons.org/licenses/by-nc-
     nd/3.0/de/deed.en_US


• Many slides are based on the work of: Tom Schindl
  and Kai Tödter
   – Tom Schindl, BestSolution, see http://www.bestsolution.at
   – Kai Tödter, Siemens AG

More Related Content

What's hot

Styling components with JavaScript
Styling components with JavaScriptStyling components with JavaScript
Styling components with JavaScriptbensmithett
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_uDoris Chen
 
Working with the django admin
Working with the django admin Working with the django admin
Working with the django admin flywindy
 
Web Components v1
Web Components v1Web Components v1
Web Components v1Mike Wilcox
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchMats Bryntse
 
Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3Fabien Potencier
 
RapidApp - YAPC::NA 2014
RapidApp - YAPC::NA 2014RapidApp - YAPC::NA 2014
RapidApp - YAPC::NA 2014Henry Van Styn
 
Real World Web components
Real World Web componentsReal World Web components
Real World Web componentsJarrod Overson
 
Rapi::Blog talk - TPC 2017
Rapi::Blog talk - TPC 2017Rapi::Blog talk - TPC 2017
Rapi::Blog talk - TPC 2017Henry Van Styn
 
Introduction to Selenium and Ruby
Introduction to Selenium and RubyIntroduction to Selenium and Ruby
Introduction to Selenium and RubyYnon Perek
 
Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptfranksvalli
 
AtlasCamp 2010: Making Confluence Macros Easy (for the user) - Dave Taylor
AtlasCamp 2010: Making Confluence Macros Easy (for the user) - Dave TaylorAtlasCamp 2010: Making Confluence Macros Easy (for the user) - Dave Taylor
AtlasCamp 2010: Making Confluence Macros Easy (for the user) - Dave TaylorAtlassian
 
Automation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and BeyondAutomation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and BeyondAlan Richardson
 
In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engineWO Community
 
Developing Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSDeveloping Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSShekhar Gulati
 
Js Saturday 2013 your jQuery could perform better
Js Saturday 2013 your jQuery could perform betterJs Saturday 2013 your jQuery could perform better
Js Saturday 2013 your jQuery could perform betterIvo Andreev
 
D2W Stateful Controllers
D2W Stateful ControllersD2W Stateful Controllers
D2W Stateful ControllersWO Community
 
Automation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and BeyondAutomation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and BeyondTechWell
 

What's hot (20)

Styling components with JavaScript
Styling components with JavaScriptStyling components with JavaScript
Styling components with JavaScript
 
Angular mobile angular_u
Angular mobile angular_uAngular mobile angular_u
Angular mobile angular_u
 
Working with the django admin
Working with the django admin Working with the django admin
Working with the django admin
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
 
Testing Ext JS and Sencha Touch
Testing Ext JS and Sencha TouchTesting Ext JS and Sencha Touch
Testing Ext JS and Sencha Touch
 
[2015/2016] JavaScript
[2015/2016] JavaScript[2015/2016] JavaScript
[2015/2016] JavaScript
 
Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3
 
RapidApp - YAPC::NA 2014
RapidApp - YAPC::NA 2014RapidApp - YAPC::NA 2014
RapidApp - YAPC::NA 2014
 
Real World Web components
Real World Web componentsReal World Web components
Real World Web components
 
Rapi::Blog talk - TPC 2017
Rapi::Blog talk - TPC 2017Rapi::Blog talk - TPC 2017
Rapi::Blog talk - TPC 2017
 
[2015/2016] Backbone JS
[2015/2016] Backbone JS[2015/2016] Backbone JS
[2015/2016] Backbone JS
 
Introduction to Selenium and Ruby
Introduction to Selenium and RubyIntroduction to Selenium and Ruby
Introduction to Selenium and Ruby
 
Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScript
 
AtlasCamp 2010: Making Confluence Macros Easy (for the user) - Dave Taylor
AtlasCamp 2010: Making Confluence Macros Easy (for the user) - Dave TaylorAtlasCamp 2010: Making Confluence Macros Easy (for the user) - Dave Taylor
AtlasCamp 2010: Making Confluence Macros Easy (for the user) - Dave Taylor
 
Automation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and BeyondAutomation Abstraction Layers: Page Objects and Beyond
Automation Abstraction Layers: Page Objects and Beyond
 
In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engine
 
Developing Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSDeveloping Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJS
 
Js Saturday 2013 your jQuery could perform better
Js Saturday 2013 your jQuery could perform betterJs Saturday 2013 your jQuery could perform better
Js Saturday 2013 your jQuery could perform better
 
D2W Stateful Controllers
D2W Stateful ControllersD2W Stateful Controllers
D2W Stateful Controllers
 
Automation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and BeyondAutomation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and Beyond
 

Viewers also liked

JClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupJClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupMarakana Inc.
 
Learn about JRuby Internals from one of the JRuby Lead Developers, Thomas Enebo
Learn about JRuby Internals from one of the JRuby Lead Developers, Thomas EneboLearn about JRuby Internals from one of the JRuby Lead Developers, Thomas Enebo
Learn about JRuby Internals from one of the JRuby Lead Developers, Thomas EneboMarakana Inc.
 
What's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovationWhat's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovationMarakana Inc.
 
Pictures from "Learn about RenderScript" meetup at SF Android User Group
Pictures from "Learn about RenderScript" meetup at SF Android User GroupPictures from "Learn about RenderScript" meetup at SF Android User Group
Pictures from "Learn about RenderScript" meetup at SF Android User GroupMarakana Inc.
 
2010 07-18.wa.rails tdd-6
2010 07-18.wa.rails tdd-62010 07-18.wa.rails tdd-6
2010 07-18.wa.rails tdd-6Marakana Inc.
 
The State of Nextwave Greentech Investing
The State of Nextwave Greentech InvestingThe State of Nextwave Greentech Investing
The State of Nextwave Greentech Investinggreentechmediaevents
 
The Latest on Semantic Web
The Latest on Semantic WebThe Latest on Semantic Web
The Latest on Semantic WebMarakana Inc.
 
Latest on Semantic Web
Latest on Semantic WebLatest on Semantic Web
Latest on Semantic WebShamod Lacoul
 

Viewers also liked (8)

JClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupJClouds at San Francisco Java User Group
JClouds at San Francisco Java User Group
 
Learn about JRuby Internals from one of the JRuby Lead Developers, Thomas Enebo
Learn about JRuby Internals from one of the JRuby Lead Developers, Thomas EneboLearn about JRuby Internals from one of the JRuby Lead Developers, Thomas Enebo
Learn about JRuby Internals from one of the JRuby Lead Developers, Thomas Enebo
 
What's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovationWhat's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovation
 
Pictures from "Learn about RenderScript" meetup at SF Android User Group
Pictures from "Learn about RenderScript" meetup at SF Android User GroupPictures from "Learn about RenderScript" meetup at SF Android User Group
Pictures from "Learn about RenderScript" meetup at SF Android User Group
 
2010 07-18.wa.rails tdd-6
2010 07-18.wa.rails tdd-62010 07-18.wa.rails tdd-6
2010 07-18.wa.rails tdd-6
 
The State of Nextwave Greentech Investing
The State of Nextwave Greentech InvestingThe State of Nextwave Greentech Investing
The State of Nextwave Greentech Investing
 
The Latest on Semantic Web
The Latest on Semantic WebThe Latest on Semantic Web
The Latest on Semantic Web
 
Latest on Semantic Web
Latest on Semantic WebLatest on Semantic Web
Latest on Semantic Web
 

Similar to Learn about Eclipse e4 from Lars Vogel at SF-JUG

Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Lars Vogel
 
Eclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayEclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayLars Vogel
 
Eclipse e4 Overview
Eclipse e4 OverviewEclipse e4 Overview
Eclipse e4 OverviewLars Vogel
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Lars Vogel
 
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Lars Vogel
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsLars Vogel
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 
SharePoint Framework, Angular and Azure Functions
SharePoint Framework, Angular and Azure FunctionsSharePoint Framework, Angular and Azure Functions
SharePoint Framework, Angular and Azure FunctionsSébastien Levert
 
WebObjects Developer Tools
WebObjects Developer ToolsWebObjects Developer Tools
WebObjects Developer ToolsWO Community
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceAntonio García-Domínguez
 
Siebel Open UI Presentation
Siebel Open UI PresentationSiebel Open UI Presentation
Siebel Open UI PresentationAjeeth Pingle
 
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING	 iPAD STORYBOARDS IN OBJ-­‐C LESSON 1LEARNING	 iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1Rich Helton
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts weili_at_slideshare
 
Eclipse Training - Introduction
Eclipse Training - IntroductionEclipse Training - Introduction
Eclipse Training - IntroductionLuca D'Onofrio
 
AngularJS Beginners Workshop
AngularJS Beginners WorkshopAngularJS Beginners Workshop
AngularJS Beginners WorkshopSathish VJ
 
Handlebars and Require.js
Handlebars and Require.jsHandlebars and Require.js
Handlebars and Require.jsIvano Malavolta
 

Similar to Learn about Eclipse e4 from Lars Vogel at SF-JUG (20)

Eclipse e4
Eclipse e4Eclipse e4
Eclipse e4
 
Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010
 
Eclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayEclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse Day
 
Eclipse e4 Overview
Eclipse e4 OverviewEclipse e4 Overview
Eclipse e4 Overview
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4
 
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
Creation&imitation
Creation&imitationCreation&imitation
Creation&imitation
 
SharePoint Framework, Angular and Azure Functions
SharePoint Framework, Angular and Azure FunctionsSharePoint Framework, Angular and Azure Functions
SharePoint Framework, Angular and Azure Functions
 
Protractor survival guide
Protractor survival guideProtractor survival guide
Protractor survival guide
 
WebObjects Developer Tools
WebObjects Developer ToolsWebObjects Developer Tools
WebObjects Developer Tools
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
 
Siebel Open UI Presentation
Siebel Open UI PresentationSiebel Open UI Presentation
Siebel Open UI Presentation
 
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING	 iPAD STORYBOARDS IN OBJ-­‐C LESSON 1LEARNING	 iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
LEARNING  iPAD STORYBOARDS IN OBJ-­‐C LESSON 1
 
Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts Build Java Web Application Using Apache Struts
Build Java Web Application Using Apache Struts
 
Eclipse Training - Introduction
Eclipse Training - IntroductionEclipse Training - Introduction
Eclipse Training - Introduction
 
AngularJS Beginners Workshop
AngularJS Beginners WorkshopAngularJS Beginners Workshop
AngularJS Beginners Workshop
 
Handlebars and Require.js
Handlebars and Require.jsHandlebars and Require.js
Handlebars and Require.js
 

More from Marakana Inc.

Android Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar GargentaAndroid Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar GargentaMarakana Inc.
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven DevelopmentMarakana Inc.
 
Martin Odersky: What's next for Scala
Martin Odersky: What's next for ScalaMartin Odersky: What's next for Scala
Martin Odersky: What's next for ScalaMarakana Inc.
 
Why Java Needs Hierarchical Data
Why Java Needs Hierarchical DataWhy Java Needs Hierarchical Data
Why Java Needs Hierarchical DataMarakana Inc.
 
Deep Dive Into Android Security
Deep Dive Into Android SecurityDeep Dive Into Android Security
Deep Dive Into Android SecurityMarakana Inc.
 
Android UI Tips, Tricks and Techniques
Android UI Tips, Tricks and TechniquesAndroid UI Tips, Tricks and Techniques
Android UI Tips, Tricks and TechniquesMarakana Inc.
 
Graphicsand animations devoxx2010 (1)
Graphicsand animations devoxx2010 (1)Graphicsand animations devoxx2010 (1)
Graphicsand animations devoxx2010 (1)Marakana Inc.
 
jQuery State of the Union - Yehuda Katz
jQuery State of the Union - Yehuda KatzjQuery State of the Union - Yehuda Katz
jQuery State of the Union - Yehuda KatzMarakana Inc.
 
Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...
Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...
Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...Marakana Inc.
 
Replacing Java Incrementally
Replacing Java IncrementallyReplacing Java Incrementally
Replacing Java IncrementallyMarakana Inc.
 
Learn to Build like you Code with Apache Buildr
Learn to Build like you Code with Apache BuildrLearn to Build like you Code with Apache Buildr
Learn to Build like you Code with Apache BuildrMarakana Inc.
 
Learn How to Unit Test Your Android Application (with Robolectric)
Learn How to Unit Test Your Android Application (with Robolectric)Learn How to Unit Test Your Android Application (with Robolectric)
Learn How to Unit Test Your Android Application (with Robolectric)Marakana Inc.
 
Learn Learn how to build your mobile back-end with MongoDB
Learn Learn how to build your mobile back-end with MongoDBLearn Learn how to build your mobile back-end with MongoDB
Learn Learn how to build your mobile back-end with MongoDBMarakana Inc.
 
A hands on overview of the semantic web
A hands on overview of the semantic webA hands on overview of the semantic web
A hands on overview of the semantic webMarakana Inc.
 
Super simple application security with Apache Shiro
Super simple application security with Apache ShiroSuper simple application security with Apache Shiro
Super simple application security with Apache ShiroMarakana Inc.
 
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGOverview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGMarakana Inc.
 
JavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUGJavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUGMarakana Inc.
 

More from Marakana Inc. (20)

Android Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar GargentaAndroid Services Black Magic by Aleksandar Gargenta
Android Services Black Magic by Aleksandar Gargenta
 
JRuby at Square
JRuby at SquareJRuby at Square
JRuby at Square
 
Behavior Driven Development
Behavior Driven DevelopmentBehavior Driven Development
Behavior Driven Development
 
Martin Odersky: What's next for Scala
Martin Odersky: What's next for ScalaMartin Odersky: What's next for Scala
Martin Odersky: What's next for Scala
 
Why Java Needs Hierarchical Data
Why Java Needs Hierarchical DataWhy Java Needs Hierarchical Data
Why Java Needs Hierarchical Data
 
Deep Dive Into Android Security
Deep Dive Into Android SecurityDeep Dive Into Android Security
Deep Dive Into Android Security
 
Securing Android
Securing AndroidSecuring Android
Securing Android
 
Android UI Tips, Tricks and Techniques
Android UI Tips, Tricks and TechniquesAndroid UI Tips, Tricks and Techniques
Android UI Tips, Tricks and Techniques
 
Graphicsand animations devoxx2010 (1)
Graphicsand animations devoxx2010 (1)Graphicsand animations devoxx2010 (1)
Graphicsand animations devoxx2010 (1)
 
jQuery State of the Union - Yehuda Katz
jQuery State of the Union - Yehuda KatzjQuery State of the Union - Yehuda Katz
jQuery State of the Union - Yehuda Katz
 
Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...
Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...
Pics from: "James Gosling on Apple, Apache, Google, Oracle and the Future of ...
 
Replacing Java Incrementally
Replacing Java IncrementallyReplacing Java Incrementally
Replacing Java Incrementally
 
Learn to Build like you Code with Apache Buildr
Learn to Build like you Code with Apache BuildrLearn to Build like you Code with Apache Buildr
Learn to Build like you Code with Apache Buildr
 
Learn How to Unit Test Your Android Application (with Robolectric)
Learn How to Unit Test Your Android Application (with Robolectric)Learn How to Unit Test Your Android Application (with Robolectric)
Learn How to Unit Test Your Android Application (with Robolectric)
 
Learn Learn how to build your mobile back-end with MongoDB
Learn Learn how to build your mobile back-end with MongoDBLearn Learn how to build your mobile back-end with MongoDB
Learn Learn how to build your mobile back-end with MongoDB
 
A hands on overview of the semantic web
A hands on overview of the semantic webA hands on overview of the semantic web
A hands on overview of the semantic web
 
Jena framework
Jena frameworkJena framework
Jena framework
 
Super simple application security with Apache Shiro
Super simple application security with Apache ShiroSuper simple application security with Apache Shiro
Super simple application security with Apache Shiro
 
Overview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUGOverview of Java EE 6 by Roberto Chinnici at SFJUG
Overview of Java EE 6 by Roberto Chinnici at SFJUG
 
JavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUGJavaEE 6 and GlassFish v3 at SFJUG
JavaEE 6 and GlassFish v3 at SFJUG
 

Recently uploaded

fourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingfourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingTeacherCyreneCayanan
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...christianmathematics
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfJayanti Pande
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...fonyou31
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxheathfieldcps1
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdfSoniaTolstoy
 

Recently uploaded (20)

fourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writingfourth grading exam for kindergarten in writing
fourth grading exam for kindergarten in writing
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptxINDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
INDIA QUIZ 2024 RLAC DELHI UNIVERSITY.pptx
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1Código Creativo y Arte de Software | Unidad 1
Código Creativo y Arte de Software | Unidad 1
 
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Web & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdfWeb & Social Media Analytics Previous Year Question Paper.pdf
Web & Social Media Analytics Previous Year Question Paper.pdf
 
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
Ecosystem Interactions Class Discussion Presentation in Blue Green Lined Styl...
 
The basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptxThe basics of sentences session 2pptx copy.pptx
The basics of sentences session 2pptx copy.pptx
 
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdfBASLIQ CURRENT LOOKBOOK  LOOKBOOK(1) (1).pdf
BASLIQ CURRENT LOOKBOOK LOOKBOOK(1) (1).pdf
 

Learn about Eclipse e4 from Lars Vogel at SF-JUG

  • 1. Eclipse e4 DI, services, CSS and the modeled Workbench Lars Vogel http://www.vogella.de http://www.twitter.com/vogella
  • 3. Eclipse e4 Scope Targets development for Eclipse (plugins) or based on Eclipse (Eclipse RCP).
  • 4. Eclipse e4 Targets Make Eclipse development more effective and the result more visual appealing.
  • 5. So, what’s wrong with Eclipse 3.X?
  • 6. Problems with the Eclipse 3.x programming model • Complex • Lots of API • Platform functionality via singletons • Not easy to test • Not a consistent way to define the UI • UI makes assumptions, e.g. Editors / Views
  • 7. If only Eclipse development would be easier and the UI would be more flexible. 7
  • 8. Eclipse e4 – Building blocks Declarative Styling Rendering Engine Modeled Workbench Dependecy Injection IEclipseContext Core Services
  • 9. Eclipse e4 – Add-ons XWT Open Social Gadgets Toolkit Model
  • 12. Eclipse Modeling Framework (EMF) is fantastic because: De-facto standard for modeling in Eclipse IfIf I only had a consistent I only had a consistent view and behavior of the Proven domain model technology view and behavior of the Eclipse workbenchsmall (1.5 MB) and highly Eclipse workbench Runtime optimized Tooling available Tap in to the EMF ecosystem (EMF- Compare, CDO, …)
  • 13. The e4 Workbench Model Model „ UIElements.ecore“ is contained in plugin „org.eclipse.e4.ui.model.workbench“
  • 14. The e4 Workbench Model Each application has it‘s live model • Workbench window – Menu with menu items – Window Trim, e.g. toolbar with toolbar items – Parts Sash Container • Parts – Part Stack (CTabFolder) • Parts – Handlers – Key Bindings – Commands
  • 15. Model is Flexible No distinction between View and Editor Perspectives are optional Stack / Sash are optional Several windows easily possible Flexible Toolbars
  • 16. Attention: IfIf I only had a consistent I only had a consistent Inview and behaviorofofe4 a the context of theView and an Editor view and behavior the Eclipse workbench are both so called “Parts”. Don’t get Eclipse workbench confused if I speak about “Parts”.
  • 17. Defining the model User changes Base Model provided by „Application.e4xmi“ Contributions possible via extension point “org.eclipse.e4.workbench.model” Model Components Model can be dynamically changed by User or Code Application.e4xmi Application.e4xmi User model changes can be stored
  • 18. Limits of the e4 application model • Only models the Application (frame) Modeled Workbench Content of the view not part of the e4 model
  • 19. Model URI’s The Part in the Model The Part’s URI
  • 20. Plain Old Java Objects (POJO‘s)
  • 21.
  • 22. Commands & Handlers Handlers • have and id and a command • have an URI for the implementing class, e.g. platform:/plugin/...SaveHandler Commands • have and id and a name • can be inserted in menus and toolbars Menus / Toolbar • Use commands or DirectItems
  • 24. How is this model translated into UI components? © Lars Vogel and others, Licensed under Creative Commons by-nc-nd-3.0 (de)
  • 25. Model and UI Renderers Model I don’t care who draws me • The Workbench model is independent of a specific UI toolkit
  • 26. Renderers Renderer Factory Eclipse default is the SWT Renderer Can be selected at Startup via parameter
  • 27. Renderers Renderer Factory Widget Renderer Returns for every model element
  • 28. Widget Renderer • Each UI elements gets a renderer • Renderer manage Lifecycle of the UI-Element – Creation – Model to widget binding – Rendering – Disposal
  • 31. Eclipse 3.X - Styling the User Interface • UI styling via – The Presentation API – Custom Widgets • Very limited
  • 32. In reality all RCP apps look like the an IDE
  • 33. Eclipse 3.X - IDE feeling Eclipse e4 – CSS Styling Example from Kai Toedter Some elements cannot currently not be styled: • Menu bar background • Table headers e4 supports theme switching during runtime
  • 34. How to enable CSS Styling Property "applicationCSS” in extension point “org.eclipse.core.runtime.products” <extension id="product" point="org.eclipse.core.runtime.products"> <product application="org.eclipse.e4.ui.workbench.swt.application" name="E4 Contacs Demo"> <property name="applicationCSS" value="platform:/plugin/contacts/css/dark.css"> </property> </product> </extension>
  • 35. Example CSS Label { font: Verdana 8px; color: rgb(240, 240, 240); } Table { background-color: gradient radial #575757 #101010 100%; color: rgb(240, 240, 240); font: Verdana 8px; } ToolBar { background-color: #777777 #373737 #202020 50% 50%; color: white; font: Verdana 8px; }
  • 36. Assign custom attributes • Java Label label = new Label(parent, SWT.NONE); label.setData("org.eclipse.e4.ui.css.id", "SeparatorLabel"); • CSS #SeparatorLabel { color: #f08d00; }
  • 37. New Look & Feel for Eclipse e4 – SDK https://bugs.eclipse.org/bugs/show_bug.cgi?id=293481
  • 39. • Inversion of control: The necessary functionality is injected into the class
  • 40. • JSR 330 compatible injection implementation – @javax.inject.Inject – Field, Constructor and Method injection – @javax.inject.Named – Specify a custom qualifier to context object (default is fully qualified classname of the injected type) • e4 specific annotations, e.g. @Optional
  • 41. Services are injected via the the e4 framework public class ListView { @Inject private IEclipseContext context; @Inject private Logger logger; @Inject public ListView(Composite parent) { // ...
  • 42. Lifecycle • @PostConstruct: Called after Object created and Fields- and Methods-Injection finished • @PreDestroy: Called before the object is destroyed (e.g. the Part shown in the UI is removed)
  • 43. public class MyPart { @Inject private ITimerService timerService; @PostConstruct private void init() { if(timerService != null) { // Do something } } @PreDestroy private void uninit() { if(timerService != null) { // Do something } } }
  • 44.
  • 45. – Stores information of possible Injection Values – Hierarchical Datastructure – OSGi Services part of the Context – Dynamic context information: Possibility to contribute an IContextFunction through DS to construct Objects on the fly
  • 46. • Implement an Execute-Method – Can have any number of arguments – Use IServiceConstants for general context informations public class AboutHandler { public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell shell){ MessageDialog.openInformation( shell, "About", "e4 Application example."); } }
  • 47. © Lars Vogel and others, Licensed under Creative Commons by-nc-nd-3.0 (de)
  • 48. Eclipse Application Services (“Twenty Things”) Editor lifecycle Long-running operations Receiving input Progress reporting Producing selection Error handling Standard dialogs Navigation model Persisting UI state Resource management Logging Status line Interface to help system Drag and drop Menu contributions Undo/Redo Authentication Accessing preferences Authorization Don‘t forget: OSGi services are also available via dependency injection
  • 49. Photo credits • Hammer http://www.sxc.hu/photo/ 604247 • Thank you picture http://www.sxc.hu/photo/ • Open Door 986313 http://www.sxc.hu/photo/1228296 • Gummibaerchen 191472 • Corn http://www.sxc.hu/photo/ 939151 • Runtime model http://www.sxc.hu/photo/ • Thinking man http://www.sxc.hu/photo/ 765733 324541 • Binder: http://www.sxc.hu/photo/443042 • Chess http://www.sxc.hu/photo/ 958410 • Praying Girl • Pill box http://www.sxc.hu/photo/ 510413 http://www.sxc.hu/photo/646227 • Under construction • Box: http://www.sxc.hu/photo/502457 http://www.sxc.hu/photo/ 1268302 • Screws http://www.sxc.hu/photo/1148064 • Singleton: http://www.sxc.hu/photo/ 988381 • House with compartments • Frame for EMF reasons http://www.sxc.hu/photo/494103 http://www.sxc.hu/photo/ 461975 • Stacked stones • Syringe / Injection: http://www.sxc.hu/photo/998524 http://www.sxc.hu/photo/ 468493 • Thinking Guy • Smiley http://www.sxc.hu/photo/ 1211480 http://www.sxc.hu/photo/130484 • Lock http://www.sxc.hu/photo/ 352344 • Drawing Hand • Life Cycle http://www.sxc.hu/photo/ http://www.sxc.hu/photo/264208 1265027 • Waiter http://www.sxc.hu/photo/157966
  • 50.
  • 51. Thank you For further questions: Lars.Vogel@gmail.com http://www.vogella.de http://www.twitter.com/vogella
  • 52. e4: Where to go from here: Eclipse e4 Tutorial http://www.vogella.de/articles/EclipseE4/article.html Eclipse e4 Wiki http://wiki.eclipse.org/E4 Eclipse e4 Whitepaper http://www.eclipse.org/e4/resources/e4-whitepaper.php
  • 53. License & Acknowledgements • This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License – See http://creativecommons.org/licenses/by-nc- nd/3.0/de/deed.en_US • Many slides are based on the work of: Tom Schindl and Kai Tödter – Tom Schindl, BestSolution, see http://www.bestsolution.at – Kai Tödter, Siemens AG