[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[gef-dev] GEF Incubator Proposal - Advanced Editing Features
You might probably have noticed that recently a quite active discussion has been going on about an GEF incubator proposal, to which I added some of the initial topics. While my idea of introducing a flexible notation model is pretty much out of direct scope of GEF proper, some of the ideas I was referring to with "advanced editing features", could be candidates for a direct integration into GEF proper itself. Having been requested by Anthony to do so, I would like to state some of the things I have in mind, so we can start an active discussion on whether this could actually be part of GEF proper here.
Let me state in advance that I have generally gained the impression (from having worked with GEF myself, as well as from discussions with other GEF users) that the framework is quite well suited to develop "graph-like" diagram editors (like e.g. UML class diagrams), but it tends to struggle when it comes to implementing more advanced editors as UML sequence diagram editors, or editors as they are needed in the domain of dynamical systems modeling, where connections and their routing/handling play a more important role.
Let me just name three concrete areas of concern that I think to be part of the cause for these problems:
- The handling of connections is quite limited currently. That is, despite the handling of simple bend points and the offering of routing algorithms based on these, the framework does not offer much support. What is e.g. missing is proper support (including figures as well as handles and requests/edit policies to edit them) for "splined curve" connections in the style of B splines or Bezier curves as well as "multi-edges" like used e.g. in dynamical systems modeling, where a connection consists of several segments, being not necessary sequentially combined (having junctions). Furthermore the restriction of having all connections being placed within a single dedicated connection layer (while this is not "hard-coded", it is pretty much the framework's convention) makes it e.g. difficult to handle connection inside viewports. Here a more flexible concept could improve a lot.
- Decent support for rotation/flipping of nodes on the level of EditParts/EditPolicies and Figures is needed (currently this is only covered in the context of Graphics). Here support for appropriate handles as well as requests/edit policies to support interaction is required. Support for proper handling of rotated figures w.r.t- clipping/layouting would be beneficial also, but I think could only be realized properly by using more arbitrary geometric shapes than rectangles as bounds.
- Better support for working with viewports would be wishful, e.g. by offering better ways to navigate within viewports or by providing some feedback about the not visible content. Together with one of my students I have implemented a first idea w.r.t. this in my time at university, which we referred to as "viewport ghost image feedback" (we implemented an edit policy to show the overall contents of a viewport by means some alpha image; I have embedded two screenshots).
There may be other points as well, but I think this already gives a quite good impression about what I had in mind with "advanced editing features". While not having any out-of-the-box solutions for these issues (despite the ghost image feedback, which could most probably be contributed; it is currently part of a university project I initiated, being offered under terms of the EPL), I would of course offer my support to work on these issues not only as part of a potential GEF incubator but as well as part of GEF proper, if they are found to be within scope.
Dr. Alexander Nyßen
Telefon: +49 (0) 231 / 98 60-210
Telefax: +49 (0) 231 / 98 60-211
Mobil: +49 (0) 151 / 17396743
Am Brambusch 22
Amtsgericht Dortmund, HRB 20621
Vorstand: Wolfgang Neuhaus, Jens Wagener, Dr. Georg Pietrek
Aufsichtsrat: Dr. Burkhard Igel(Vors.), Stephan Grollmann, Michael Neuhaus