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]

Reply via email to