|
Re: OK I'll start the ball rolling... [message #1896 is a reply to message #1881] |
Thu, 16 May 2002 17:29 |
Eclipse User |
|
|
|
Originally posted by: none.ibm.com
We would like to have such a feature in GEF.
I would *guess* that what you want is a used invoked action that positions
the nodes and bends the arcs, and the user could then move things around.
This type of feature would be implemented differently than if you wanted it
to be automatic ALL the time.
An automatic graph layout could be implemented as a draw2d LayoutManager and
a corresponding ConnectionRouter. The manual layout could be implemented as
an Action that generates new XY constraints for the existing XY Layout and
bendpoints for the existing BendpointRouter.
IBM has some open source code already for doing this. Perhaps someone wants
to port it to GEF?
"Jeff Turnham" <turnham@ca.ibm.com> wrote in message
news:ac0ovs$au$1@rogue.oti.com...
> Hi,
>
> Just wondering if anyone is working on what I guess would be called a
"GraphLayout" that could be used to layout
> components in an abstract graph. Typical example is in the CDT (C/C++
Development Tools) we have a model that stores
> information about class inheritance. Ideally we would like to just walk
our model creating the appropriate figures and
> arcs, and be able to use a "GraphLayout" to do all the real work of
presentation.
>
> Thanks...
>
> Jeff.
>
>
|
|
|
|
Re: OK I'll start the ball rolling... [message #2041 is a reply to message #1988] |
Thu, 16 May 2002 19:55 |
Eclipse User |
|
|
|
Originally posted by: none.ibm.com
Are you sure? In multiple inheritance cases the algorithm won't really know
what the "primary" superclass is, and the subtype will get positioned pretty
much randomly.
"Jeff Turnham" <turnham@ca.ibm.com> wrote in message
news:ac11lp$4lf$1@rogue.oti.com...
> I'd be content with the Automatic layout as long as the support for
Zooming, Navigating and Searching support was top
> notch.
>
> Jeff.
> "Randy Hudson" <none@ibm.com> wrote in message
news:ac0pmt$mr$1@rogue.oti.com...
> > We would like to have such a feature in GEF.
> >
> > I would *guess* that what you want is a used invoked action that
positions
> > the nodes and bends the arcs, and the user could then move things
around.
> > This type of feature would be implemented differently than if you wanted
it
> > to be automatic ALL the time.
> >
> > An automatic graph layout could be implemented as a draw2d LayoutManager
and
> > a corresponding ConnectionRouter. The manual layout could be implemented
as
> > an Action that generates new XY constraints for the existing XY Layout
and
> > bendpoints for the existing BendpointRouter.
> >
> > IBM has some open source code already for doing this. Perhaps someone
wants
> > to port it to GEF?
> >
> > "Jeff Turnham" <turnham@ca.ibm.com> wrote in message
> > news:ac0ovs$au$1@rogue.oti.com...
> > > Hi,
> > >
> > > Just wondering if anyone is working on what I guess would be called a
> > "GraphLayout" that could be used to layout
> > > components in an abstract graph. Typical example is in the CDT (C/C++
> > Development Tools) we have a model that stores
> > > information about class inheritance. Ideally we would like to just
walk
> > our model creating the appropriate figures and
> > > arcs, and be able to use a "GraphLayout" to do all the real work of
> > presentation.
> > >
> > > Thanks...
> > >
> > > Jeff.
> > >
> > >
> >
> >
>
>
|
|
|
Re: OK I'll start the ball rolling... [message #2069 is a reply to message #2041] |
Thu, 16 May 2002 20:54 |
Jeff Turnham Messages: 67 Registered: July 2009 |
Member |
|
|
Hmm...well I don't want to get into a full-fledged design discussion since I'm really only asking this for interest's
sake,
but I'm not sure what you mean by "primary superclass". If you mean a class that doesn't derive from any others
wouldn't that be trivial for the algorithm to figure out (non-existence of "inherits from" arcs)? Maybe I'm missing
something as I have no experience implementing this type of thing. What I'm picturing is a view that can take either a
Project or a Class as input.
When a project is the input, the view shows all the classes with directional arcs representing inheritance. In this
case I don't really care about how what part of the graph I'm currently looking at as long as I have the ability zoom
in\out, move around, and search to find the particular class I care about. Once thing to note: this graph will almost
definitely be disconnected since it is not common for a non-trivial C++ project to only have a single class hierarchy
(not like languages like Java where everything derives from Object). When a class is the input to the view, I would
expect the node representing the class to be centered in the view and all classes that are not connected to this class
by inheritance to be "hidden".
I guess I'm not sure where the separation of work would be between GEF, draw2d and the provider of the figures and arcs,
but I haven't played with GEF at all, so don't feel the need to explain something I could learn from the docs and
experimentation.
Jeff.
"Randy Hudson" <none@ibm.com> wrote in message news:ac1279$4tu$1@rogue.oti.com...
> Are you sure? In multiple inheritance cases the algorithm won't really know
> what the "primary" superclass is, and the subtype will get positioned pretty
> much randomly.
>
>
> "Jeff Turnham" <turnham@ca.ibm.com> wrote in message
> news:ac11lp$4lf$1@rogue.oti.com...
> > I'd be content with the Automatic layout as long as the support for
> Zooming, Navigating and Searching support was top
> > notch.
> >
> > Jeff.
> > "Randy Hudson" <none@ibm.com> wrote in message
> news:ac0pmt$mr$1@rogue.oti.com...
> > > We would like to have such a feature in GEF.
> > >
> > > I would *guess* that what you want is a used invoked action that
> positions
> > > the nodes and bends the arcs, and the user could then move things
> around.
> > > This type of feature would be implemented differently than if you wanted
> it
> > > to be automatic ALL the time.
> > >
> > > An automatic graph layout could be implemented as a draw2d LayoutManager
> and
> > > a corresponding ConnectionRouter. The manual layout could be implemented
> as
> > > an Action that generates new XY constraints for the existing XY Layout
> and
> > > bendpoints for the existing BendpointRouter.
> > >
> > > IBM has some open source code already for doing this. Perhaps someone
> wants
> > > to port it to GEF?
> > >
> > > "Jeff Turnham" <turnham@ca.ibm.com> wrote in message
> > > news:ac0ovs$au$1@rogue.oti.com...
> > > > Hi,
> > > >
> > > > Just wondering if anyone is working on what I guess would be called a
> > > "GraphLayout" that could be used to layout
> > > > components in an abstract graph. Typical example is in the CDT (C/C++
> > > Development Tools) we have a model that stores
> > > > information about class inheritance. Ideally we would like to just
> walk
> > > our model creating the appropriate figures and
> > > > arcs, and be able to use a "GraphLayout" to do all the real work of
> > > presentation.
> > > >
> > > > Thanks...
> > > >
> > > > Jeff.
> > > >
> > > >
> > >
> > >
> >
> >
>
>
|
|
|
Re: OK I'll start the ball rolling... [message #2084 is a reply to message #2069] |
Thu, 16 May 2002 22:28 |
Eclipse User |
|
|
|
Originally posted by: none.ibm.com
Imagine you have:
MyButton
extends Button
implements Serializable {}
The user might want MyButton to be positioned under the node Button, but the
algorithm might place it under Serializable, which is really just a mix-in
class.
Single inheritance is probably very easy to do. I don't have any experience
either in implementing graph layout either.
|
|
|
Re: OK I'll start the ball rolling... [message #2096 is a reply to message #2084] |
Fri, 17 May 2002 00:20 |
Jeff Turnham Messages: 67 Registered: July 2009 |
Member |
|
|
Ahh OK I see what you mean...That's not really an issue for us in C++. In C++, MyButton would look like this:
class MyButton: public Button, public Serializable {};
Both of these Base Classes are the same "type" of inheritance. The difference between specialization, composition,
implementing intefaces, etc is not enforced (and easy to abuse) in C++. Perhaps distinguishing between public, private
and protected inheritance could be something that would make sense, but I assume that could be done with different types
of arcs.
Jeff.
"Randy Hudson" <none@ibm.com> wrote in message news:ac1b6f$8pd$1@rogue.oti.com...
> Imagine you have:
> MyButton
> extends Button
> implements Serializable {}
>
> The user might want MyButton to be positioned under the node Button, but the
> algorithm might place it under Serializable, which is really just a mix-in
> class.
>
> Single inheritance is probably very easy to do. I don't have any experience
> either in implementing graph layout either.
>
>
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.10302 seconds