[kepler-dev] scrollbar additions to kepler
Chad Berkley
berkley at nceas.ucsb.edu
Tue Jul 27 10:47:49 PDT 2004
Hi,
I've been working the last 4 days to add scrollbars to the vergil
canvas. I've had limited success and I've run into a couple problems.
I wanted to see what others thought of this before I continue.
There are two different places where this functionality can be added.
The first one (and probably the technically correct place) is in the
Diva library. Diva is the library ptolemy uses to provide all of the
graph editing functionality. Diva also provides the panner (the widget
in the bottom left that allows you to move around the workspace). The
second place this functionality can be added is to the Vergil gui classes.
Placing the code in diva is probably the best way to do this because
then it would integrate seamlessly into the current view and allow the
scrollbars to interact with the panner. Changing Diva to do this is not
trivial. Diva has it's own layer system built around AWT with some
Swing components. Also, if we change diva, it's going to be much harder
to make this a "pluggable" change without making some architectural
change to diva itself.
Placing the code in the BasicGraphFrame class of vergil is the most
straight forward way to do it because the vergil gui uses all swing
components and places diva widgets inside the swing components. This is
the way I have partially implemented the scrollbars now (using a
JScrollPane). There are several problems with this. First of all,
getting the scrollbars to interact with the panner correctly seems
mostly impossible. Basically, i have to remove the panner or else
things get chaotic real quick. If the user moves the workspace via the
panner, there is no event to catch when this happens, so the scrollbars
can't be updated accordingly. I've also had to make major changes to
the zoom code. The two advantages of doing it this way are that it's
easier to code since one can work with only swing components and i think
it will be easier to make this a pluggable change since some people have
said they don't want scrollbars on the canvas.
Another thing I thought of the other day while working with photoshop
(which has scrollbars on it's canvas), is that we could add a "hand"
tool which would serve one of the purposes of the panner (to let you
move around the workspace). I like the panner and don't really want to
get rid of it anyway. I think the panner, scrollbars and a potential
hand tool would work well together. It's just a matter of figuring out
the best way to do it. Ptolemy folks: how hard do you think it would be
to add this to Diva?
thoughts?
chad
More information about the Kepler-dev
mailing list