Alexander Nyßen, itemis AG

Project Lead
Image courtesy of Stefan Rimaila/ flickr
The next generation Eclipse
Graphical Editing Framework
GEF 3.x
• Provides framework components for Eclipse-integrated
graphical editors and views
• Based on SWT as underlying rendering technology
• Initial contribution by IBM in 2002 and Chisel Group in 2007
• In pure maintenance mode, but remains on the ‚train‘
Image courtesy of Hamad Aziz/ flickr
Draw2d
Draw2d & GEF (MVC)
Zest
GEF4
• Provides end-user tools and framework components for
graphical rich-client Java applications, Eclipse-
integrated and standalone
• Based on JavaFX as underlying rendering technology

• Graduation release (1.0.0) with Neon
• Bugfix release (1.1.0) with Neon.1
Image courtesy of NASA
The next generation has (finally) taken over…
GEF „Generations“
GEF4
GEF
GEF-Legacy
GEF
0.1.0/0.2.0 1.0.0/1.1.0
5.0.03.10.0/3.10.1 3.11.0
3.10.0/3.10.1

(Mars)
4.0.0/4.1.0

(Neon)
5.0.0

(Oxygen)
?
[Draw2d, GEF (MVC), Zest]
[Common, Geometry, FX, MVC, 

Graph, Layout, Zest, DOT, Cloudio]
Project Releases
Image courtesy of zeitfaenger.at / flickr
https://github.com/eclipse/gef
https://github.com/eclipse/gef-legacy
GEF@GitHub
GEF-Legacy@GitHub
GEF „Generations“
Cloudio
GEF Components
Image courtesy of Michael Stern / flickr
DOT
Common Geometry FX MVC
Graph Layout Zest
• GEF provides nine loosely coupled components.
• Cloudio and DOT provide end-user features
• The other components form two basic framework stacks:
• Common Geometry FX MVC
• Graph Layout Zest
Cloudio -TagCloudView
DOT - Editor & GraphView
AbstractBehavior
Neon
• Disclosure of preliminary API
• Validation for style, splineType, point, arrowType, shape
• Rendering of decorations, splines, and labels
• Native layout integration
DOTCloudio
Oxygen
• Further editing and rendering capabilities ✓
• Support for HTML-like labels and subgraphs ✓
• Bundling of Graphviz executable (CQ 11140) ✗
Undeployed Examples
GEF - Components
UI ≃ Eclipse UI
FX ≃ JavaFX
Geometry
FX.JFace
Layout
MVC.FX.UI Zest.FX
MVC.FX
FX
Graph
Zest.FX.UI
DOT
Common
Cloudio.UI
FX.SWT
Zest.FX.JFace
DOT.UI
Geometry.Convert.FX Geometry.Convert.SWT
DEMO - MVC Logo Example
NeonOxygen
• Connection Decoration Clipping
• Orthogonal Router & Orthogonal Bending
• Palette Support
Common Geometry FX MVC
• Major API revision (MVC & MVC.FX) ✓
• Viewport actions (scroll/zoom) ✓
• Snap-To-Geometry Support ✓
GEF - Components
UI ≃ Eclipse UI
FX ≃ JavaFX
Geometry
FX.JFace
Layout
MVC.FX.UI Zest.FX
MVC.FX
FX
Graph
Zest.FX.UI
DOT
Common
Cloudio.UI
FX.SWT
Zest.FX.JFace
DOT.UI
Geometry.Convert.FX Geometry.Convert.SWT
DEMO - Zest Graph Example
NeonOxygen
• Enhanced builder API
• Layout now Graph-based (I/O model)
• JFace-API cleanups
Graph Layout Zest
• API-Cleanup ✓
• Live vs. Background Layout ✗
• FXCanvasEx provides workarounds for the following issues:
• JDK-8143596: Forward touch gestures to FXCanvas embedded scene.
• JDK-8161282: FXCanvas does not forward horizontal mouse scroll events to the embedded
scene.
• JDK-8088147: Image cursors not supported.
• JDK-8159227: KeyEvent.doit should be forwarded to KeyEvent.consumed().
• JDK-8161587: FXCanvas does not update SWT display.
• JDK-8088862: Provide possibility to traverse focus out of FX scene.
• Fixes for those requiring access to JDK-internals have been
contributed to OpenJFX 9 directly.
• FXCanvasEx can now transparently be used for Java 8 and 9.
readiness
https://info.itemis.com/en/gef/tutorials/
Evaluate the Sessions
Sign in and vote at eclipseconverge.org
+1-1 0

The Next Generation Eclipse Graphical Editing Framework

  • 1.
    Alexander Nyßen, itemisAG
 Project Lead Image courtesy of Stefan Rimaila/ flickr The next generation Eclipse Graphical Editing Framework
  • 2.
    GEF 3.x • Providesframework components for Eclipse-integrated graphical editors and views • Based on SWT as underlying rendering technology • Initial contribution by IBM in 2002 and Chisel Group in 2007 • In pure maintenance mode, but remains on the ‚train‘ Image courtesy of Hamad Aziz/ flickr
  • 3.
  • 4.
  • 5.
  • 6.
    GEF4 • Provides end-usertools and framework components for graphical rich-client Java applications, Eclipse- integrated and standalone • Based on JavaFX as underlying rendering technology
 • Graduation release (1.0.0) with Neon • Bugfix release (1.1.0) with Neon.1 Image courtesy of NASA
  • 7.
    The next generationhas (finally) taken over… GEF „Generations“ GEF4 GEF GEF-Legacy GEF 0.1.0/0.2.0 1.0.0/1.1.0 5.0.03.10.0/3.10.1 3.11.0 3.10.0/3.10.1
 (Mars) 4.0.0/4.1.0
 (Neon) 5.0.0
 (Oxygen) ? [Draw2d, GEF (MVC), Zest] [Common, Geometry, FX, MVC, 
 Graph, Layout, Zest, DOT, Cloudio] Project Releases Image courtesy of zeitfaenger.at / flickr
  • 8.
  • 9.
    Cloudio GEF Components Image courtesyof Michael Stern / flickr DOT Common Geometry FX MVC Graph Layout Zest • GEF provides nine loosely coupled components. • Cloudio and DOT provide end-user features • The other components form two basic framework stacks: • Common Geometry FX MVC • Graph Layout Zest
  • 10.
  • 11.
    DOT - Editor& GraphView AbstractBehavior
  • 12.
    Neon • Disclosure ofpreliminary API • Validation for style, splineType, point, arrowType, shape • Rendering of decorations, splines, and labels • Native layout integration DOTCloudio Oxygen • Further editing and rendering capabilities ✓ • Support for HTML-like labels and subgraphs ✓ • Bundling of Graphviz executable (CQ 11140) ✗
  • 13.
  • 14.
    GEF - Components UI≃ Eclipse UI FX ≃ JavaFX Geometry FX.JFace Layout MVC.FX.UI Zest.FX MVC.FX FX Graph Zest.FX.UI DOT Common Cloudio.UI FX.SWT Zest.FX.JFace DOT.UI Geometry.Convert.FX Geometry.Convert.SWT
  • 15.
    DEMO - MVCLogo Example
  • 16.
    NeonOxygen • Connection DecorationClipping • Orthogonal Router & Orthogonal Bending • Palette Support Common Geometry FX MVC • Major API revision (MVC & MVC.FX) ✓ • Viewport actions (scroll/zoom) ✓ • Snap-To-Geometry Support ✓
  • 17.
    GEF - Components UI≃ Eclipse UI FX ≃ JavaFX Geometry FX.JFace Layout MVC.FX.UI Zest.FX MVC.FX FX Graph Zest.FX.UI DOT Common Cloudio.UI FX.SWT Zest.FX.JFace DOT.UI Geometry.Convert.FX Geometry.Convert.SWT
  • 18.
    DEMO - ZestGraph Example
  • 19.
    NeonOxygen • Enhanced builderAPI • Layout now Graph-based (I/O model) • JFace-API cleanups Graph Layout Zest • API-Cleanup ✓ • Live vs. Background Layout ✗
  • 20.
    • FXCanvasEx providesworkarounds for the following issues: • JDK-8143596: Forward touch gestures to FXCanvas embedded scene. • JDK-8161282: FXCanvas does not forward horizontal mouse scroll events to the embedded scene. • JDK-8088147: Image cursors not supported. • JDK-8159227: KeyEvent.doit should be forwarded to KeyEvent.consumed(). • JDK-8161587: FXCanvas does not update SWT display. • JDK-8088862: Provide possibility to traverse focus out of FX scene. • Fixes for those requiring access to JDK-internals have been contributed to OpenJFX 9 directly. • FXCanvasEx can now transparently be used for Java 8 and 9. readiness
  • 21.
  • 22.
    Evaluate the Sessions Signin and vote at eclipseconverge.org +1-1 0