OK I'll start the ball rolling... [message #1881] |
Thu, 16 May 2002 13:14  |
Eclipse User |
|
|
|
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 16:54   |
Eclipse User |
|
|
|
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 #2096 is a reply to message #2084] |
Thu, 16 May 2002 20:20   |
Eclipse User |
|
|
|
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.04278 seconds