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.