Enrico,
thank's for sharing your migration experiences with the GEF community. It's good to see people care about how to bring our project forward.
Let me say that we also see the problems you have mentioned, especially w.r.t. the monolithic structure of GEF (MVC) 3.x. And let me add that we are addressing exactly these kinds of problems within our new GEF4 MVC component, which is meant to be the replacement of GEF (MVC) 3.x. There, we have separated out all the lightweight concepts into an own plug-in, namely org.eclipse.gef4.mvc, which does not have any Eclipse UI dependencies. In addition to what you have done, we have further refined/refactored them to be actually free from any UI-toolkit dependencies, and we have clarified/revised some of them to be more flexible. For instance, we have removed the separation between nodes and connections on the edit part (now visual part) level. Instead, visual parts that control feedback and handles have become first-level concepts, so providing live feedback is more feasible. We have also replaced the request-response pattern with a aspect-based coupling of tools and policies through dedicated interfaces. There are a couple of other improvements that have been realized.
We have not yet reached a state where everything that is currently covered by GEF (MVC) 3.x is also available within GEF4 MVC. However, there is already a profound base, and we are trying to close the remaining gap as soon as possible. Maybe you might want to take a look. BTW, the UI-tookit dependent specializations we provide (which use JavaFX rather than Draw2d) have been placed within the org.eclipse.gef4.mvc.fx plug-in, while the Eclipse Workbench UI related things have been separated out into org.eclipse.gef4.mvc.ui and org.eclipse.gef4.mvc.fx.ui respectively.
Best Regards Alexander Good afternoon,
I'm a GEF developer since 2005 and in the past 9 years I've acquired a deep understanding of both its architecture and features. After the introduction of the Eclipse 4 SDK and the E4 Tools libraries I started to port the Whole Platform, an open source project that uses GEF, to the new E4 API, with the aim to eventually remove all of the org.eclipse.ui dependencies and create an E4 product.
Eventually, I succeeded in the complete removal of all the org.eclipse.ui dependencies from the target project, but I'm stuck with the GEF (MVC) bundle not providing a clean separation of the older UI dependencies.
More specifically, even if I use only the lightweight API (the part of GEF that actually doesn't depend on the org.eclipse.ui) I still have many E3.x workbench dependencies due to the monolithic nature of the org.eclipse.gef bundle.
Last week I tried to move the lightweight part of GEF (MVC) in a separate bundle (calling it org.eclipse.gef.lightweight) and making it a dependency of the base org.eclipse.gef plugin. The newly introduced bundle (org.eclipse.gef.lightweight) depends only on Draw2d, JFace and Core Runtime, while the original one (org.eclipse.gef) maintains the same dependencies while adding and reexporting the new lightweight bundle.
Basically, the original org.eclipse.gef contains all the E3.x Workbench dependent stuff (including the GraphicalEditor, PaletteView, ConsoleView, ...) while the lightweight one contains all of the lightweight API (including EditPart, EditPolicy, Requests, ...)
To perform this clean separation I had only to extract a new super class from EditDomain, called LightweightEditDomain, which actually contains all of the EditDomain behavior but the parts pertaining to the PaletteViewer.
The following resources should help the community try and review these developments:
1. The topic branch I started to track the changes from the GitHub fork:
2. A prebuilt P2 repository:
3. The Whole Platform GitHub repository that actually depends only on the GEF Lightweight bundle:
Best Regards, Enrico
-- Enrico Persiani Software Engineer
_______________________________________________ gef-dev mailing list gef-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/gef-dev
-- Dr. Alexander Nyßen Dipl.-Inform. Software-Engineer
Telefon: +49 (0) 231 / 98 60-210 Telefax: +49 (0) 231 / 98 60-211 Mobil: +49 (0) 151 / 17396743
http://www.itemis.de alexander.nyssen@xxxxxxxxx
itemis AG Am Brambusch 15-24 44536 Lünen
Rechtlicher Hinweis:
Amtsgericht Dortmund, HRB 20621
Vorstand: Jens Wagener (Vors.), Wolfgang Neuhaus, Dr. Georg Pietrek, Jens Trompeter, Sebastian Neus
Aufsichtsrat: Dr. Burkhard Igel (Vors.), Stephan Grollmann, Michael Neuhaus
|