Changes from GEF v03 to v04. This file prepared 3/4/97.

1. Added support for grid snap. Added classes Guide and GuideGrid, and
made small modifications to Editor and most Mode's.

2. Added support for rectilinear polygons that can be edited instead
of the fixed routing of previous versions. Changed FigPoly and
ArcPerzRectilinear.

3. Added Handle objects to hold the index of a handle being dragged by
the user. These are not very significant objects. Added class
Handle. Modified all implementors of dragHandle, basically
DiagramElement and all subclasses.

4. Added support for "hidden" ports that are only visible when the
mouse is inside a node perspective. This allows nodes to have much
cleaner looking perspectives. See SampleNode2 for an example. Modified
Perspective.

5. Added more colors to FigText. Now it uses LineColor and FillColor
only for the bounding box rectangle, and it uses TextColor for text
and TextFillColor for the area behind individual characters.

6. Added support for Aligning to grid and aligning centers. Changed
ActionAlign. Moved much of the alignment code from SelectionMultiple
into DiagramElement. Also changed EditorMenu.

7. Added a little support for Java1.1. Basically I got GEF to compile
under 1.1. I have not changed over to the new event model and I don't
know when I will do that. You should be able to compile under 1.0.2 or
1.1 by editing Compat.java. If you are running on Unix and have the m4
utility, you can just edit Makefile.config instead of
Compat.java. Also changed FigPoly so that it makes a call to
Compat.drawPolyline instead of calling Graphics.drawPolygon. The class
Compat implements two versions of several functions: one for jdk1.0.2 and
one for jdk1.1.

8. Added ActionPrint to print one page under Java1.1. This file will
not compile under JDK 1.0.2. When diagrams include text I have not
been able to print them. However if I save to a postscript file I am
able to print it later. Also had to modify LayerGrid and Prefs to
support printing with and without a background.

9. Added LayerPageBreaks to indicate where page breaks will fall when
printing. Modified EditorMenus.

10. Added FigImage and ModeCreateFigImage. Modified PaletteFig to add
the new Fig types. The initial version of this code was donated by a
GEF user. See demo.NodeCPU and demo.NodePrinter for examples. It might
be a good idea to get the images locally instead of using a URL at
UCI.

11. Added an example in package demo. The example allows you to plug a
computer and printer into a power outlet on the wall and connect the
serial port on the commputer to the printer. The example demonstrates
using typed ports, ports that determine the type or arc that will be
used, typed arcs, arcs with different perspectives, nodes with
perspectives that include images.

12. Added ActionInsertVertex and ActionRemoveVertex to add or remove a
vertex on a selected FigPoly. Also modified FigPoly.

13. Added asynchonous event handling. That is to say, when the Editor
gets an event it simply stores it in uci.util.EventQueue (not to be
confused with java.awt.EventQueue under jdk1.1). Later, when the
editor gets a chance it processes all events in that queue. The
advantage of doing this is that I can skip some events if they are not
so important: for example, I can skip a mouseMove if there is another
mouseMove after it in the queue. Also, Editor does not request a
redraw untill all pending events are processed. This makes it
"impossible" for you to "get ahead of the editor" and have it do lots
of redraws after you drag an object fast. Actually, you can still get
ahead of the editor if the PropertySheet slows things down, see below.

14. When creating a Fig (e.g. FigRect) a single click will create the
same size Fig as the last one that was drawn. That makes it less
likely that users will make zero sized Figs and get confused when
nothing is visible.

15. Added a PropertySheet window which shows the attributes of the
currently selected DiagramElement. Boolean attributes are shown as
checkboxes. Enumerated types use Choice. Colors allow editing of red,
green, and blue values. Other attributes types are displayed as
strings. The property editor is useful for debugging so that you can
see somethings about your DiagramElement's while the program is
running. I have made some small effort to make this efficient,
although it is still rather wasteful in terms of the numbe of objects
created and AWT operations. The interactive performance of GEF can be
notably slower when a PropertySheet is open. This part of the
framework is not finished or well documented and will probably change
in the next release.

16. Added attributes to FigText to control font style (plain, bold,
italic, or bold-italic).

17. Added support for locked DiagramElement's that cannot be moved by
the user. This is helpful when you know that something is in the right
place and you don't want to accidentally move it. Also, it shows off
the ability to use booleans in the PropertySheet.

18. Previously objectFillColor or objectLineColor could be null to
indicate transparent objects or objects with no border. Now I have
separate properties Filled and LineWidth that control what gets
drawn. The colors are always instances of Color, never null. Removed
support for setting FillColor to "Transparent", you should set Filled
to false instead.

19. Tried to speed up the performance of GEF by reducing the number of
objects that are allocated (and then garbage collected). In part I
have done this by using static variables instead of locals. This
reduces garbage, but it means that any function using the static
variable must be synchronized. I am not sure if this actually has
produced better preformance, and if so, if that performance was worth
the added complexity. If you have comments about this, please email
me.

20. Added constrained movement in ModeModify to drag objects up/down
or left/right. Changed ModeModify.java.

21. Now you can more easily construct an editor that displays a given
Layer. Changed Editor.java.

22. Moved much of the geometric logic to class Geometry. This
simplified some of the other classes and provides a place to share
geometric logic. I plan to add some more geometric features to GEF in
the future, some of them are already dormant in Geometry.java.

23. Changed Action to store its arguments in a Hashtable instead of a
java.util.Properties object. Also space to hold Action args is not
allocated until they are actually needed. That is to say, _args can be
null if there are no arguments, instead of refering to an empty
Hashtable.

24. Made it much easier to select a FigPoly by clicking on an edge or
vertex.

25. Changed the way that Node and Arc Perspectives are
instanciated. It was the case that NetNode's made a single Perspective
for themselves in thier constructor. Now NetNodes and NetArcs should
implement a function makePerspective(Layer) to instanciate and return
a perspective. See NodeCPU.java or ArcPower.java for an example.

