SlideShare a Scribd company logo
1 of 22
Download to read offline
Alexander Nyßen!
itemis AG!
Graphical Editing Framework Project Lead
Image courtesy of Julie Lafrance / flickr
4There’s really something going on!
GEF celebrated 10th Birthday in 2012!!
Initial contribution by IBM in 2002!
Image courtesy of Will Clayton / flickr
GEF 3.x / Zest 1.x
• Standard for graphical editors/views in Eclipse!
• Mature project with quite long history
• Base technology with lot's of users (direct & indirect
through GMF/Graphiti)!
• Stable API, no breaking API changes since 2004 (GEF 3.0)
Image courtesy of peptic_ulcer/ flickr
But, there is quite some decay…
• API is organically evolved and there are ~400 bugzillas,
out of which several would require to break it
Image courtesy of Pietro Izzo / flickr
SomeTopics for a Renewal
• Support for modern rendering platforms (JavaFX)!
• Support for the E4 application model
• Support for new input devices (touch gestures)
• Re-thinking current modularization!
• Support for rotation and other transformations!
• Revision of connection handling (clipping, curved
connections, etc.)!
• Various renamings and restructurings on the detail level...
Image courtesy of racineur / flickr
GEF4
• Our approach to develop the next generation API
• Development takes place in parallel to maintenance of GEF
proper (Draw2D/GEF 3.x / Zest 1.x), API is provisional until a
final replacement
!
• Advantages of this procedure:!
• Clear distinction between GEF proper as the production
and GEF4 as the provisional component!
• Chance to not only refactor GEF components but the
modularization itself, which is only "historically" justified.
Image courtesy of edtechie99 / flickr
Concrete Goals for GEF4
• A technically (and not historically) justified modularity!
• Use of modern rendering technology!
• Being lightweight, i.e. no Eclipse-UI dependencies where
avoidable!
• Integration of automatic layouts also in editors!
• Support of touch-gestures!
• Support for „classical“ and „handheld-like“ look & feel
Image courtesy of Stefan Bucher (So gesehen) / flickr
GEF4 Cloudio
GEF4 -Vision
GEF4 Geometry
JavaFX
GEF4 SwtFXGEF4
Layout SWT
GEF4
MVC
Image courtesy of AndiH / flickr
GEF4 MVC.FXGEF4 Zest.FX
GEF4 MVC.FX.UI
JFaceGEF4 FX
GEF4 MVC.UI
GEF4
Graph/
DOT
Eclipse UI
GEF4 Zest.FX.UI
!UI-toolkit
independent
!Based on JavaFX,
Integration into Eclipse UI
via SwtFX
UI-toolkit

independent
UI-toolkit

independent
UI ≃ Eclipse UI!
FX ≃ JavaFX
Based on SWT, 

Direct Integration into
Eclipse UI
Based on SWT, 

Direct Integration into
Eclipse UI
GEF4 Geometry
• No distinction in low and high precision, but just a single double-
precision API (with built-in imprecision for comparisons).!
!
• Different geometric abstractions for different purposes:!
• Euclidean (Vector, Straight,Angle)!
• Projective (Vector3D, Straight3D)!
• Planar (Point, Dimension, Line, QuadraticCurve, CubicCurve,
BezierCurve, Polyline, PolyBezier, Ellipse, Rectangle, Pie,Arc, Polygon,
CurvedPolygon, RoundedRectangle, Ring, Region, Path)!
!
• Conversions to/from AWT, SWT, and JavaFX (and between them)
GEF4 Geometry - Examples
GEF4 FX
• Provides JavaFX-related additions to be used in upstream
components like MVC.FX or Zest.FX:!
• FXGeometryNode to create IGeometry-based shapes !
• IFXAnchor abstraction and implementations (static, chopbox)!
• IFXConnection abstraction with default FXCurveConnection
implementation, based on FXGeometricNode<ICurve>.!
• Gesture-/Compound-Listener support!
!
• Future additions: Decorators, Widgets, …
GEF4 FX - Example
public Scene createScene() {	
FXGeometryNode<CurvedPolygon> eLetterShape = new FXGeometryNode<CurvedPolygon>(createEShapeGeometry());	
eLetterShape.setTranslateX(25);	
eLetterShape.setTranslateY(25);	
eLetterShape.resize(200, 250);	
eLetterShape.setEffect(GEF_SHADOW_EFFECT);	
eLetterShape.setFill(GEF_COLOR_BLUE);	
!
HBox hbox = new HBox();	
hbox.getChildren().add(eLetterShape);	
return new Scene(hbox, 250, 300);	
}	
!
private CurvedPolygon createEShapeGeometry() {	
List<BezierCurve> segments = new ArrayList<BezierCurve>();	
segments.add(new Line(1, 10, 6, 10));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(6, 10, 5, 25, 7, 52, 6, 70, 6, 81).toBezier()));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(6, 81, 5, 81, 3, 84).toBezier()));	
segments.add(new Line(3, 84, 3, 87));	
segments.add(new Line(3, 87, 64, 86));	
segments.add(new Line(64, 86, 65, 79));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(65, 79, 59, 81, 51, 82).toBezier()));	
segments.add(new Line(51, 82, 12, 82));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(12, 82, 11, 56, 11, 30).toBezier()));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(11, 30, 27, 30, 45, 31).toBezier()));	
segments.add(new Line(45, 31, 48, 25));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(48, 25, 35, 27, 19, 27, 10, 26).toBezier()));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(10, 26, 10, 20, 11, 10).toBezier()));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(11, 10, 24, 11, 31, 11, 51, 12).toBezier()));	
segments.add(new Line(51, 12, 55, 6));	
segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(55, 6, 45, 7, 33, 8, 15, 7, 7, 6).toBezier()));	
segments.add(new Line(7, 6, 1, 10));	
return new CurvedPolygon(segments);	
}
GEF4 SwtFX
• Provides SwtFXCanvas as a specialization of FXCanvas
(javafx.embed.swt), which provides:!
• forwarding of SWT touch gesture events to JavaFX
(SwtToFXGestureConverter)*!
• transparent integration of SWT Controls into a JavaFX
scene (SwtFXScene)!
!
• Future: Support additional SWT controls and Z-ordering
Image courtesy of Ruben Holthuijsen / flickr
*) Contribution of J. Köhnlein
GEF4 SwtFX - Example
public SwtFXScene createScene() {	
HBox hbox = new HBox();	
VBox col1 = new VBox();	
VBox col2 = new VBox();	
hbox.getChildren().addAll(col1, col2);	
HBox.setHgrow(col1, Priority.ALWAYS);	
HBox.setHgrow(col2, Priority.ALWAYS);	
!
col1.getChildren().addAll(	
new Button("JavaFX 1"),	
shape(new Arc(0, 0, 50, 50, 15, 120) {	
{	
setType(ArcType.ROUND);	
}	
}, 0.52, 0.49, 0.15), new SwtFXButton("SwtFX 1"));	
!
col2.getChildren().addAll(	
shape(new Rectangle(0, 0, 100, 50), 0.49, 0.36, 0.20),	
new SwtFXButton("SwtFX 2"),	
shape(new Rectangle(0, 0, 100, 100) {	
{	
setArcHeight(20);	
setArcWidth(20);	
}	
}, 0.87, 0.83, 0.49), 	
new Button("JavaFX 2"));	
return new SwtFXScene(hbox, 400, 400);	
}	
!
private static Shape shape(Shape shape, double r, double g, double b) {	
shape.setFill(new Color(r, g, b, 1));	
shape.setStroke(new Color(0, 0, 0, 1));	
return shape;	
}
GEF4 MVC
• Dedicated to graphical editors and views (no tree support)!
• Intentionally light-weight:
• Split into UI-toolkit-independent abstractions (MVC), JavaFX-
based specializations (MVC.FX), and related Eclipse UI-
integration (MVC.UI/MVC.FX.UI)!
• Transfers (but revises) core concepts of GEF (MVC) 3.x.:!
• Controller (IVisualPart) hierarchy with explicit parts for content,
feedback, and handles (IContentPart, IHandlePart, IFeedbackPart).!
• Modularized interaction behavior (ITool, IBehavior, IPolicy) with
aspect-bound interfaces (FXDragTool,AbstractFXDragPolicy)
DEMO - GEF4 MVC.FX.UI Example
GEF4 MVC - Details
• No dedicated connection layer, instead dedicated layers for
contents, feedback, and handles
• No dedicated connection parts, but parent⬌child and/or
anchorage⬌anchored relationships!
• Accessible viewer/interaction state via explicit models
(ISelectionModel, IContentModel, IZoomModel, …)!
• No own command-framework but direct integration with
IUndoableOperationHistory!
• Continuous interaction feedback and nice look & feel (via
GEF4 FX and JavaFX)
Status Quo
• GEF4 Geometry (✓)!
• Is already quite stable, but still requires some performance optimizations and
will probably be extended to provide change notification support.!
• GEF4 FX (✓)!
• Will have to be extended with additional anchor implementations, decorations,
and custom widgets.!
• GEF4 SwtFX (✓) !
• Needs to be matured and dedicated support for additional SWT controls will
have to be added.!
• GEF4 MVC / MVC.UI / MVC.FX / MVC.FX.UI (✓) !
• Already provides the basics that are needed to build up graphical viewers,
interaction support however is just being built-up.
Image courtesy of pareeerica / flickr
Status Quo (continued)
• GEF4 Cloudio (✓)
• A word-cloud-viewer based on SWT/JFace, integrated in the Eclipse UI, currently not intended to be
ported to JavaFX!
• GEF4 Graph (✓)!
• Provides a very simply data-model (Graph, Node, Edge).Will need to be extended to suit as
underlying data model for GEF4 Layout (sub-graphs)!
• GEF4 Layout (✓)!
• Provides data-model facade and layout implementations.Will have to be internally refactored and
harmonized with GEF4 Graph!
• GEF4 DOT (✓)!
• Provides GraphViz DOT-Editor (Xtext) and import/export to GEF4 Graph.Will have to be
extended to e.g. support sub-graphs.!
• GEF4 Zest.FX / Zest.FX.UI (✗)!
• Encapsulates the original Zest2 code base without those parts already extracted into GEF4 Layout,
GEF4 Graph, GEF4 DOT, and GEF4 Cloudio, only adopted to GEF4 namespace
Image courtesy of pareeerica / flickr
Future Plans - Roadmap
• Extend functionality of FX, SwtFX, and MVC components
to close the remaining gap to Draw2d/GEF (MVC) 3.x.!
• Complete refactoring of Layout, Graph, and Zest
components and built-up Zest.FX and Zest.FX.UI
components so GEF4 is fully self-contained.!
• Join Mars release train with a first initial release of GEF4
components, based on yet provisional API.
Please get involved!
• Evaluate and Provide Feedback!!
• Try out early snapshots!!
• Report bugs, request enhancements!!
• Contribute!
• Participate in discussions (bugzilla, mailing list)!
• Supply patches
Image courtesy of EricMagnuson / flickr
Evaluate(This(Session
Sign1in:(www.eclipsecon.org
Select(session(from(schedule
Evaluate:
1
2
3

More Related Content

What's hot

Quick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersQuick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersPaweł Żurowski
 
Building a website with angular
Building a website with angularBuilding a website with angular
Building a website with angularJoseph Jorden
 
Angular 2: core concepts
Angular 2: core conceptsAngular 2: core concepts
Angular 2: core conceptsCodemotion
 
Schematron 2016 and SQF Update
Schematron 2016 and SQF Update Schematron 2016 and SQF Update
Schematron 2016 and SQF Update Octavian Nadolu
 
Building scalable modular app with Angular2 concept
Building scalable modular app with Angular2 conceptBuilding scalable modular app with Angular2 concept
Building scalable modular app with Angular2 conceptkzw
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous DeliveryJadson Santos
 
Design Summit - Automate roadmap - Madhu Kanoor
Design Summit - Automate roadmap - Madhu KanoorDesign Summit - Automate roadmap - Madhu Kanoor
Design Summit - Automate roadmap - Madhu KanoorManageIQ
 
Angular 2 - Core Concepts
Angular 2 - Core ConceptsAngular 2 - Core Concepts
Angular 2 - Core ConceptsFabio Biondi
 
Angular App Presentation
Angular App PresentationAngular App Presentation
Angular App PresentationElizabeth Long
 
Angular Ivy- An Overview
Angular Ivy- An OverviewAngular Ivy- An Overview
Angular Ivy- An OverviewJalpesh Vadgama
 
Swift LA Meetup at eHarmony- Swift and Enterprise and eHarmony with Heena Ras...
Swift LA Meetup at eHarmony- Swift and Enterprise and eHarmony with Heena Ras...Swift LA Meetup at eHarmony- Swift and Enterprise and eHarmony with Heena Ras...
Swift LA Meetup at eHarmony- Swift and Enterprise and eHarmony with Heena Ras...Claire Townend Gee
 
[SiriusCon 2018] Eclipse Sirius applied to a RAD Tool in Japan
[SiriusCon 2018] Eclipse Sirius applied to a RAD Tool in Japan[SiriusCon 2018] Eclipse Sirius applied to a RAD Tool in Japan
[SiriusCon 2018] Eclipse Sirius applied to a RAD Tool in JapanObeo
 
Mastering angular - Dot Net Tricks
Mastering angular - Dot Net TricksMastering angular - Dot Net Tricks
Mastering angular - Dot Net TricksGaurav Singh
 
An Intro to Angular 2
An Intro to Angular 2An Intro to Angular 2
An Intro to Angular 2Ron Heft
 

What's hot (20)

Quick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developersQuick introduction to Angular 4 for AngularJS 1.5 developers
Quick introduction to Angular 4 for AngularJS 1.5 developers
 
Angular 9
Angular 9 Angular 9
Angular 9
 
Angular 4 - quick view
Angular 4 - quick viewAngular 4 - quick view
Angular 4 - quick view
 
Building a website with angular
Building a website with angularBuilding a website with angular
Building a website with angular
 
Angular2
Angular2Angular2
Angular2
 
Angular 2: core concepts
Angular 2: core conceptsAngular 2: core concepts
Angular 2: core concepts
 
Schematron 2016 and SQF Update
Schematron 2016 and SQF Update Schematron 2016 and SQF Update
Schematron 2016 and SQF Update
 
Building scalable modular app with Angular2 concept
Building scalable modular app with Angular2 conceptBuilding scalable modular app with Angular2 concept
Building scalable modular app with Angular2 concept
 
Jenkins Continuous Delivery
Jenkins Continuous DeliveryJenkins Continuous Delivery
Jenkins Continuous Delivery
 
Angular 2
Angular 2Angular 2
Angular 2
 
Design Summit - Automate roadmap - Madhu Kanoor
Design Summit - Automate roadmap - Madhu KanoorDesign Summit - Automate roadmap - Madhu Kanoor
Design Summit - Automate roadmap - Madhu Kanoor
 
Angular 2
Angular 2Angular 2
Angular 2
 
Angular 2 - Core Concepts
Angular 2 - Core ConceptsAngular 2 - Core Concepts
Angular 2 - Core Concepts
 
An Overview of Angular 4
An Overview of Angular 4 An Overview of Angular 4
An Overview of Angular 4
 
Angular App Presentation
Angular App PresentationAngular App Presentation
Angular App Presentation
 
Angular Ivy- An Overview
Angular Ivy- An OverviewAngular Ivy- An Overview
Angular Ivy- An Overview
 
Swift LA Meetup at eHarmony- Swift and Enterprise and eHarmony with Heena Ras...
Swift LA Meetup at eHarmony- Swift and Enterprise and eHarmony with Heena Ras...Swift LA Meetup at eHarmony- Swift and Enterprise and eHarmony with Heena Ras...
Swift LA Meetup at eHarmony- Swift and Enterprise and eHarmony with Heena Ras...
 
[SiriusCon 2018] Eclipse Sirius applied to a RAD Tool in Japan
[SiriusCon 2018] Eclipse Sirius applied to a RAD Tool in Japan[SiriusCon 2018] Eclipse Sirius applied to a RAD Tool in Japan
[SiriusCon 2018] Eclipse Sirius applied to a RAD Tool in Japan
 
Mastering angular - Dot Net Tricks
Mastering angular - Dot Net TricksMastering angular - Dot Net Tricks
Mastering angular - Dot Net Tricks
 
An Intro to Angular 2
An Intro to Angular 2An Intro to Angular 2
An Intro to Angular 2
 

Similar to GEF4 - There's really something going on!

GEF Past, present, future
GEF Past, present, futureGEF Past, present, future
GEF Past, present, futureitemis AG
 
dojox.gfx : the foundation for your crossbrowser advanced visualization.
dojox.gfx : the foundation for your crossbrowser advanced visualization.dojox.gfx : the foundation for your crossbrowser advanced visualization.
dojox.gfx : the foundation for your crossbrowser advanced visualization.pruzand
 
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011Max Katz
 
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra  SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra Sencha
 
EGL Conference 2011 - Futures
EGL Conference 2011 - FuturesEGL Conference 2011 - Futures
EGL Conference 2011 - FuturesWill Smythe
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Lars Vogel
 
Griffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyGriffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyJames Williams
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemAlexander Casall
 
RichFaces 4 webinar #1: Everything You Need To Know
RichFaces 4 webinar #1: Everything You Need To KnowRichFaces 4 webinar #1: Everything You Need To Know
RichFaces 4 webinar #1: Everything You Need To KnowMax Katz
 
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF SummitAjax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF SummitMax Katz
 
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSAjax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSMax Katz
 
Zepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksZepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksThomas Fuchs
 
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
 
SoCal Code Camp 2011 - ASP.NET MVC 4
SoCal Code Camp 2011 - ASP.NET MVC 4SoCal Code Camp 2011 - ASP.NET MVC 4
SoCal Code Camp 2011 - ASP.NET MVC 4Jon Galloway
 
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011Max Katz
 
Google tools for webmasters
Google tools for webmastersGoogle tools for webmasters
Google tools for webmastersRujata Patil
 
Learn about Eclipse e4 from Lars Vogel at SF-JUG
Learn about Eclipse e4 from Lars Vogel at SF-JUGLearn about Eclipse e4 from Lars Vogel at SF-JUG
Learn about Eclipse e4 from Lars Vogel at SF-JUGMarakana Inc.
 

Similar to GEF4 - There's really something going on! (20)

GEF Past, present, future
GEF Past, present, futureGEF Past, present, future
GEF Past, present, future
 
struts
strutsstruts
struts
 
dojox.gfx : the foundation for your crossbrowser advanced visualization.
dojox.gfx : the foundation for your crossbrowser advanced visualization.dojox.gfx : the foundation for your crossbrowser advanced visualization.
dojox.gfx : the foundation for your crossbrowser advanced visualization.
 
Lezione 03 Introduzione a react
Lezione 03   Introduzione a reactLezione 03   Introduzione a react
Lezione 03 Introduzione a react
 
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011
Ajax Applications with JSF 2 and New RichFaces 4 - CONFESS 2011
 
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra  SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
SenchaCon 2016: Learn the Top 10 Best ES2015 Features - Lee Boonstra
 
EGL Conference 2011 - Futures
EGL Conference 2011 - FuturesEGL Conference 2011 - Futures
EGL Conference 2011 - Futures
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4
 
Griffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java TechnologyGriffon: Re-imaging Desktop Java Technology
Griffon: Re-imaging Desktop Java Technology
 
JavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and EcosystemJavaOne - The JavaFX Community and Ecosystem
JavaOne - The JavaFX Community and Ecosystem
 
RichFaces 4 webinar #1: Everything You Need To Know
RichFaces 4 webinar #1: Everything You Need To KnowRichFaces 4 webinar #1: Everything You Need To Know
RichFaces 4 webinar #1: Everything You Need To Know
 
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF SummitAjax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
Ajax Applications with JSF 2 and New RichFaces 4 - JAX/JSF Summit
 
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJSAjax Applications with JSF 2 and New RichFaces 4 - TSSJS
Ajax Applications with JSF 2 and New RichFaces 4 - TSSJS
 
Zepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-FrameworksZepto and the rise of the JavaScript Micro-Frameworks
Zepto and the rise of the JavaScript Micro-Frameworks
 
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
 
SoCal Code Camp 2011 - ASP.NET MVC 4
SoCal Code Camp 2011 - ASP.NET MVC 4SoCal Code Camp 2011 - ASP.NET MVC 4
SoCal Code Camp 2011 - ASP.NET MVC 4
 
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011
Ajax Applications with JSF2 and New RichFaces 4 at JAX 2011
 
Google tools for webmasters
Google tools for webmastersGoogle tools for webmasters
Google tools for webmasters
 
Eclipse e4
Eclipse e4Eclipse e4
Eclipse e4
 
Learn about Eclipse e4 from Lars Vogel at SF-JUG
Learn about Eclipse e4 from Lars Vogel at SF-JUGLearn about Eclipse e4 from Lars Vogel at SF-JUG
Learn about Eclipse e4 from Lars Vogel at SF-JUG
 

Recently uploaded

Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxAnnaArtyushina1
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benonimasabamasaba
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 

Recently uploaded (20)

Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
WSO2Con2024 - GitOps in Action: Navigating Application Deployment in the Plat...
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 

GEF4 - There's really something going on!

  • 1. Alexander Nyßen! itemis AG! Graphical Editing Framework Project Lead Image courtesy of Julie Lafrance / flickr 4There’s really something going on!
  • 2. GEF celebrated 10th Birthday in 2012!! Initial contribution by IBM in 2002! Image courtesy of Will Clayton / flickr
  • 3. GEF 3.x / Zest 1.x • Standard for graphical editors/views in Eclipse! • Mature project with quite long history • Base technology with lot's of users (direct & indirect through GMF/Graphiti)! • Stable API, no breaking API changes since 2004 (GEF 3.0) Image courtesy of peptic_ulcer/ flickr
  • 4. But, there is quite some decay… • API is organically evolved and there are ~400 bugzillas, out of which several would require to break it Image courtesy of Pietro Izzo / flickr
  • 5. SomeTopics for a Renewal • Support for modern rendering platforms (JavaFX)! • Support for the E4 application model • Support for new input devices (touch gestures) • Re-thinking current modularization! • Support for rotation and other transformations! • Revision of connection handling (clipping, curved connections, etc.)! • Various renamings and restructurings on the detail level... Image courtesy of racineur / flickr
  • 6. GEF4 • Our approach to develop the next generation API • Development takes place in parallel to maintenance of GEF proper (Draw2D/GEF 3.x / Zest 1.x), API is provisional until a final replacement ! • Advantages of this procedure:! • Clear distinction between GEF proper as the production and GEF4 as the provisional component! • Chance to not only refactor GEF components but the modularization itself, which is only "historically" justified. Image courtesy of edtechie99 / flickr
  • 7. Concrete Goals for GEF4 • A technically (and not historically) justified modularity! • Use of modern rendering technology! • Being lightweight, i.e. no Eclipse-UI dependencies where avoidable! • Integration of automatic layouts also in editors! • Support of touch-gestures! • Support for „classical“ and „handheld-like“ look & feel Image courtesy of Stefan Bucher (So gesehen) / flickr
  • 8. GEF4 Cloudio GEF4 -Vision GEF4 Geometry JavaFX GEF4 SwtFXGEF4 Layout SWT GEF4 MVC Image courtesy of AndiH / flickr GEF4 MVC.FXGEF4 Zest.FX GEF4 MVC.FX.UI JFaceGEF4 FX GEF4 MVC.UI GEF4 Graph/ DOT Eclipse UI GEF4 Zest.FX.UI !UI-toolkit independent !Based on JavaFX, Integration into Eclipse UI via SwtFX UI-toolkit
 independent UI-toolkit
 independent UI ≃ Eclipse UI! FX ≃ JavaFX Based on SWT, 
 Direct Integration into Eclipse UI Based on SWT, 
 Direct Integration into Eclipse UI
  • 9. GEF4 Geometry • No distinction in low and high precision, but just a single double- precision API (with built-in imprecision for comparisons).! ! • Different geometric abstractions for different purposes:! • Euclidean (Vector, Straight,Angle)! • Projective (Vector3D, Straight3D)! • Planar (Point, Dimension, Line, QuadraticCurve, CubicCurve, BezierCurve, Polyline, PolyBezier, Ellipse, Rectangle, Pie,Arc, Polygon, CurvedPolygon, RoundedRectangle, Ring, Region, Path)! ! • Conversions to/from AWT, SWT, and JavaFX (and between them)
  • 10. GEF4 Geometry - Examples
  • 11. GEF4 FX • Provides JavaFX-related additions to be used in upstream components like MVC.FX or Zest.FX:! • FXGeometryNode to create IGeometry-based shapes ! • IFXAnchor abstraction and implementations (static, chopbox)! • IFXConnection abstraction with default FXCurveConnection implementation, based on FXGeometricNode<ICurve>.! • Gesture-/Compound-Listener support! ! • Future additions: Decorators, Widgets, …
  • 12. GEF4 FX - Example public Scene createScene() { FXGeometryNode<CurvedPolygon> eLetterShape = new FXGeometryNode<CurvedPolygon>(createEShapeGeometry()); eLetterShape.setTranslateX(25); eLetterShape.setTranslateY(25); eLetterShape.resize(200, 250); eLetterShape.setEffect(GEF_SHADOW_EFFECT); eLetterShape.setFill(GEF_COLOR_BLUE); ! HBox hbox = new HBox(); hbox.getChildren().add(eLetterShape); return new Scene(hbox, 250, 300); } ! private CurvedPolygon createEShapeGeometry() { List<BezierCurve> segments = new ArrayList<BezierCurve>(); segments.add(new Line(1, 10, 6, 10)); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(6, 10, 5, 25, 7, 52, 6, 70, 6, 81).toBezier())); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(6, 81, 5, 81, 3, 84).toBezier())); segments.add(new Line(3, 84, 3, 87)); segments.add(new Line(3, 87, 64, 86)); segments.add(new Line(64, 86, 65, 79)); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(65, 79, 59, 81, 51, 82).toBezier())); segments.add(new Line(51, 82, 12, 82)); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(12, 82, 11, 56, 11, 30).toBezier())); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(11, 30, 27, 30, 45, 31).toBezier())); segments.add(new Line(45, 31, 48, 25)); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(48, 25, 35, 27, 19, 27, 10, 26).toBezier())); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(10, 26, 10, 20, 11, 10).toBezier())); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(11, 10, 24, 11, 31, 11, 51, 12).toBezier())); segments.add(new Line(51, 12, 55, 6)); segments.addAll(Arrays.asList(PolyBezier.interpolateCubic(55, 6, 45, 7, 33, 8, 15, 7, 7, 6).toBezier())); segments.add(new Line(7, 6, 1, 10)); return new CurvedPolygon(segments); }
  • 13. GEF4 SwtFX • Provides SwtFXCanvas as a specialization of FXCanvas (javafx.embed.swt), which provides:! • forwarding of SWT touch gesture events to JavaFX (SwtToFXGestureConverter)*! • transparent integration of SWT Controls into a JavaFX scene (SwtFXScene)! ! • Future: Support additional SWT controls and Z-ordering Image courtesy of Ruben Holthuijsen / flickr *) Contribution of J. Köhnlein
  • 14. GEF4 SwtFX - Example public SwtFXScene createScene() { HBox hbox = new HBox(); VBox col1 = new VBox(); VBox col2 = new VBox(); hbox.getChildren().addAll(col1, col2); HBox.setHgrow(col1, Priority.ALWAYS); HBox.setHgrow(col2, Priority.ALWAYS); ! col1.getChildren().addAll( new Button("JavaFX 1"), shape(new Arc(0, 0, 50, 50, 15, 120) { { setType(ArcType.ROUND); } }, 0.52, 0.49, 0.15), new SwtFXButton("SwtFX 1")); ! col2.getChildren().addAll( shape(new Rectangle(0, 0, 100, 50), 0.49, 0.36, 0.20), new SwtFXButton("SwtFX 2"), shape(new Rectangle(0, 0, 100, 100) { { setArcHeight(20); setArcWidth(20); } }, 0.87, 0.83, 0.49), new Button("JavaFX 2")); return new SwtFXScene(hbox, 400, 400); } ! private static Shape shape(Shape shape, double r, double g, double b) { shape.setFill(new Color(r, g, b, 1)); shape.setStroke(new Color(0, 0, 0, 1)); return shape; }
  • 15. GEF4 MVC • Dedicated to graphical editors and views (no tree support)! • Intentionally light-weight: • Split into UI-toolkit-independent abstractions (MVC), JavaFX- based specializations (MVC.FX), and related Eclipse UI- integration (MVC.UI/MVC.FX.UI)! • Transfers (but revises) core concepts of GEF (MVC) 3.x.:! • Controller (IVisualPart) hierarchy with explicit parts for content, feedback, and handles (IContentPart, IHandlePart, IFeedbackPart).! • Modularized interaction behavior (ITool, IBehavior, IPolicy) with aspect-bound interfaces (FXDragTool,AbstractFXDragPolicy)
  • 16. DEMO - GEF4 MVC.FX.UI Example
  • 17. GEF4 MVC - Details • No dedicated connection layer, instead dedicated layers for contents, feedback, and handles • No dedicated connection parts, but parent⬌child and/or anchorage⬌anchored relationships! • Accessible viewer/interaction state via explicit models (ISelectionModel, IContentModel, IZoomModel, …)! • No own command-framework but direct integration with IUndoableOperationHistory! • Continuous interaction feedback and nice look & feel (via GEF4 FX and JavaFX)
  • 18. Status Quo • GEF4 Geometry (✓)! • Is already quite stable, but still requires some performance optimizations and will probably be extended to provide change notification support.! • GEF4 FX (✓)! • Will have to be extended with additional anchor implementations, decorations, and custom widgets.! • GEF4 SwtFX (✓) ! • Needs to be matured and dedicated support for additional SWT controls will have to be added.! • GEF4 MVC / MVC.UI / MVC.FX / MVC.FX.UI (✓) ! • Already provides the basics that are needed to build up graphical viewers, interaction support however is just being built-up. Image courtesy of pareeerica / flickr
  • 19. Status Quo (continued) • GEF4 Cloudio (✓) • A word-cloud-viewer based on SWT/JFace, integrated in the Eclipse UI, currently not intended to be ported to JavaFX! • GEF4 Graph (✓)! • Provides a very simply data-model (Graph, Node, Edge).Will need to be extended to suit as underlying data model for GEF4 Layout (sub-graphs)! • GEF4 Layout (✓)! • Provides data-model facade and layout implementations.Will have to be internally refactored and harmonized with GEF4 Graph! • GEF4 DOT (✓)! • Provides GraphViz DOT-Editor (Xtext) and import/export to GEF4 Graph.Will have to be extended to e.g. support sub-graphs.! • GEF4 Zest.FX / Zest.FX.UI (✗)! • Encapsulates the original Zest2 code base without those parts already extracted into GEF4 Layout, GEF4 Graph, GEF4 DOT, and GEF4 Cloudio, only adopted to GEF4 namespace Image courtesy of pareeerica / flickr
  • 20. Future Plans - Roadmap • Extend functionality of FX, SwtFX, and MVC components to close the remaining gap to Draw2d/GEF (MVC) 3.x.! • Complete refactoring of Layout, Graph, and Zest components and built-up Zest.FX and Zest.FX.UI components so GEF4 is fully self-contained.! • Join Mars release train with a first initial release of GEF4 components, based on yet provisional API.
  • 21. Please get involved! • Evaluate and Provide Feedback!! • Try out early snapshots!! • Report bugs, request enhancements!! • Contribute! • Participate in discussions (bugzilla, mailing list)! • Supply patches Image courtesy of EricMagnuson / flickr