Thank you for expressing in interest in the UCI Graph Editing
Framework.

This file was prepared: 7/29/96.

This file gives some information on known bugs, things that will
change, things that have changed recently, etc.

Please see Overview.txt for an overview of the framework.

This is an "early experience" release. I call it that because I am not
ready to call it a "beta" yet. There are several bugs, and there are
several changes and additions that I want to make that will cause
code reorganizations.  For that reason, I am not planning on doing
much support of this version. Instead I am asking for your support!
Please send me comments about what you would like to see. If you fix
bugs, please send me the fixes. I will try to get a new release out as
soon as it makes sense to do so.

KNOWN BUGS AND MISFEATURES:

1. ArcPerspectives do not always draw properly. I am not covering all
the logical cases that need to be covered.

2. Sometimes the handles are drawn under new figures instead of over
them.

3. Spawning a new view makes an instance of class Editor, which does
not support subclassing of Editor very well.

4. The user interaction for resizing figures is awkward.

5. Highlighting the "stuck" palette button does not work on most
platforms.

6. The RedrawManager can cause out of memory errors on some (most?)
platforms. It allocates too many off screen bit maps. On Win95 it can
crash the browser or debugger. On Solaris it seems to take a lot
longer to crash, but there are noticable pauses ever so often. The
current work around is to modify Prefs.javs so that
_redrawTimeThreshhold = 0, and thus off screen bit maps are never
used. 

7. Dragging the mouse outside the editor window during any interaction
ends that interaction.

8. Sometimes redrawing leaves junk if you move the mouse really
fast. I must be missing some thread interactions here...

9. Opening more than 2 or 3 views makes redraws go really slow.


UNIMPLEMENTED FEATURES AND FUTURE TASKS:

The following features are planned but not yet implemented. If you
would like to help, these are some needed improvements. And they are
the kind of thing that you are likely to want for whatever application
you are building anyway.

1. Multiple perspectives for a given class of nodes.

2. Interactive perspective editor.

3. Alternative views on the same NetList.

4. Zooming, scrolling, small panner/overview window.

5. Layers menu, hide, layer, show layer, spawn layer, add, remove.

6. MouseGrid, snapToGrid.

7. Align centers.

8. Better examples of subclassing different nodes, arcs, perspectives,
layers.

9. Arc perspectives. E.g. curved arcs perspectives would be really
nice.  Polygons, Gifs, rounded rects, splines.

10. Grouping and ungrouping.

11. Better text features, specifically styled text and support for
arrow keys to move cursor through text, mouse support...

12. Better keyboard support, keys for nudging, scrolling, tabbing
among nodes.

13. A more general purpose, table driven, way to select Actions for
execution given user interface events (key and mouse) and current
mode.

14. Ability to download new classes of NetPrimitive, DiagramElement,
Actions, and Modes from the net. Also each of those will have
about-box methods.

15. Cut, copy, paste, replicate.

16. Rotation of DiagramElement's and layers.


CHANGES THAT WILL BE MADE IN THE NEAR FUTURE:

1. I'll try to finish the 'recent' changes listed below, some of them
are incomplete.

2. Javadoc comments in the code.

3. OMT style class diagrams.

4. A "Cookbook" document that gives instructions for extending the
framework to a specific application. I plan to do it in HTML.

5. Debugging, reacting to comments from interested "early experience"
partners.

6. Setting up a UCI Graph Editing Framework home page and maybe
a mailing list.

7. Making thecode stylistically self-consistant.

8. I have not yet, but I intend to take a serious look at HotDraw and
other graph editing frameworks that have been around for a while. I
find this generally interesting, I wanted to try to make my own
contribution and work through various problems before I looked at how
others have done such things. If anyone would like to do a critical
comparison against HotDraw or anything else I would be very interested.



RECENT CHANGES:

1. Changed several names of classes. This change is complete in that
it compiles, but the variable and method names are often very
concusing because they still use the old class names! Here is a table
of (most of) the changes for your reference. Also be prepared for the
method and variable names to change to match these new class
names. The new names are generally shorter, more descriptive, and
follow what I call the "binomial naming scheme" (but i am sure I am
not the first to use it).

	Old class name		New class name
	--------------------------------------
	GraphPrimitive		DiagramElement
	Painter			Fig
	PainterList		FigList
	Command			Mode or Action
	GraphEditingWindow	Editor
	Node, Arc, Port		NetNode, NetArc, NetPort
	GraphList		NetList
	ModelPrimitive		NetPrimitive
	Constant		none
	PerspectiveList		none
	ExamplePalette		PaletteExample

2. I added the ability to spawn multiple editors on the same
view. This is not so useful in its current form, but this feature is
needed to support multiple, coordinated views in general. In the
future, each window might show a the same NetList in a slightly
different way, not just any copy of the exact same view. Currently I
do this all through Observer/Observable relationships that have far
too many levels of indirection. Also the standard implementation of
java.util.Observable is rather inefficent. This change is complete,
but I might try to refine this code. There seem to be too many
"damagedIn()" and "startTrans()" and "endTrans()" calls sprinkled
through the code.

3. There is now a separate set of classes to represent editor
selections. Previously each DiagramElement had two methods draw() and
drawSelected(). Where drawSelected() showed the handles or selection
box. This change is not really complete. Individual DiagramElement
classes still have to much selection related code.


