Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [gef-dev] GEF 3.x - GEF (MVC) Component refactoring proposal

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

Am 28.04.2014 um 17:08 schrieb Enrico Persiani <enrico.persiani@xxxxxxxxxxx>:

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


Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail


Back to the top