I've been spending the last couple of days with Prefuse with the intention of creating a Maven plugin to implement the Dependency Graphing proposal (http://docs.codehaus.org/display/MAVEN/Dependency+Graphing), also for Google Summer of Code. I have three concerns about the appropriateness of Prefuse for generating static UML-like diagrams.
First: My experience so far has been that Prefuse can create simple shapes (boxes, ellipses, etc) and does an excellent job with those in forced ("spring-loaded") layouts, but won't be appropriate for shapes as complex as UML classes and components, since Prefuse shapes are defined via enumeration (Constants.SHAPE_*) rather than subclassing. A second concern that I have for Piotr with the use of Prefuse for static diagrams is that Prefuse uses the AWT for rendering; this may cause problems on a UNIX build host that doesn't have a running X server. This is based on a vague memory, but it bears testing if this sort of environment is a priority. Finally, in static diagrams, there is a certain polish provided by snapping shapes to a grid, and having shapes that align with each other. With Prefuse, the user immediately gets the sense that edges in the graph are springs, so the smoothness of the animation gets a higher priority. I can't say that I have any better toolkits in mind, though, so I'm not going to argue whether Prefuse is the best platform available for the job. Peter Evan Worley wrote: > As for the graph and layout, I can attest that the Piotr has selecting > the > best graphing platform available. Prefuse has been able to do leaps and > bounds more than jung or jgraph, so I would be optimistic about his > ability > to manage the layout. > > Evan > > On 5/11/07, Milos Kleint <[EMAIL PROTECTED]> wrote: >> >> On 5/11/07, Jason van Zyl <[EMAIL PROTECTED]> wrote: >> > >> > On 11 May 07, at 2:08 PM 11 May 07, Barrie Treloar wrote: >> > >> > > On 5/11/07, Piotr Tabor <[EMAIL PROTECTED]> wrote: >> > >> I would like to provide two components: a graphical editor and a >> > >> Maven >> > >> plug-in. >> > >> 'The Graphical Editor will offer live (WYSIWYG) preparation of a >> > >> graphical presentation of the project by setting such properties >> as: >> > >> - Type and subset of data, we want to present, >> > >> - What part of the data is to be presented, >> > >> - The method of presenting of each type of diagram nodes >> > >> (that is, >> > >> what attributes of the item will be displayed), and the general >> > >> 'style' >> > >> of the presentation. I would like to provide UML-like design. >> > >> - The general layout algorithm >> > >> - The positions of selected locked nodes – which we want to >> > >> put in a >> > >> fixed area. All other nodes will be positioned automatically. >> > >> The schema of the diagram created by the editor will be saved to >> > >> an XML >> > >> file. >> > >> Additionally the editor may be used as a graphical browser >> > >> (explorer) of >> > >> chosen aspects of the project. The editor will use the Prefuse >> > >> library >> > >> (http://prefuse.org). >> > >> >> > >> The Maven Plug-in (maven-graph-plugin) – will be using the XML file >> > >> prepared by the Graphical Editor and the current state of >> project to >> > >> prepare images in various graphic formats (JPG, TIFF, PNG and >> others >> > >> supported by the Sun JAI library >> > >> (http://java.sun.com/javase/technologies/desktop/media/jai/). The >> > >> plug-in will be able to prepare >> > >> the HTML <map> tag for the picture too (to create an active area >> > >> on web >> > >> page containing the image). The resulting file will be ready to >> > >> use in >> > >> the next Maven phases by Doxia or other documenting tool. >> > > >> > > Does this mean we can export the graph of dependencies in a UML >> > > format? >> > >> > It's not a priority, but I'm sure it could be done. It's just going >> > to be a general graph model that can be attached to various sinks, or >> > a sink model (for ui tools) so you can easily add it. IDE integration >> > is the primary target. >> >> >> i'm not sure about the IDE integration usefulness. The workflow in IDE >> is a bit different from the proposed one. >> >> (Speaking of dependency graph only now) >> In the IDE you want interactivity with the optional persistence of the >> visual data. You want filters, finding specific artifacts in the tree, >> getting more information about them, answering questions like "why was >> this artifact included? why it changed scope or version?". And you >> want to take corrective action, like forcing a different version or >> excluding a certain transitive dependency. >> >> On top of that layouting complex dependencies with a lot of >> transitivity is extremely difficult even if you use some advanced >> algorithms. (I've done experiments layouts coming with jung, jgraph >> etc) so I'm somewhat sceptical towards the practical usefulness of an >> automated generation of jpeg pictures apart from being nice demoware >> in simple projects. >> >> Regards >> >> Milos >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]