This file gives a brief overview of the structure and style of the code in the UCI Graph Editing Framework.
This file was prepared on: 5/30/97.
Copyright (c) 1995, 1996 Regents of the University of California. All rights reserved.
This software was developed by the Arcadia project at the University of California, Irvine.
Redistribution and use in source and binary forms are permitted provided that the above copyright notice and this paragraph are duplicated in all such forms and that any documentation, advertising materials, and other materials related to such distribution and use acknowledge that the software was developed by the University of California, Irvine. The name of the University may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Basically, I want to have a nice, stable graph editing and MacDraw-style graphics editing framework. I need that as a starting point for a tool I am building for my Ph.D. research, and I think that others need a framework like that as well.
Some of the goals of the framework are to support these features:
I think it would be really interesting to organanize a "virtual software development team" over the internet so that: (1) I don't have to do all the coding myself, (2) the final framework is tempered by actual application, (3) we all get experience in distributed development, (4) I get in contact with professional developers for future collaboration, user testing, and even job offers. As virtual team leader I promise to integrate changes, run the project web page, suggest projects, and avoid duplication of effort. I am especially interested in instructors at universities who want to use this software as material for project classes (see the history section of the GEF home page). I have not yet worked out exactly what the copyright terms will be for sumbitted code. I just don't want to get anyone in trouble or discourage contributions.
The framework should promote the creation of good demos for the www. That means that they should download quickly, look nice, have enough features to look perfesional, and let the user get to the point of the demo without fighting with a difficult interface.
More importantly, the framework should promote the creation of good applications. It should have a rich set of basic features. It should be easily customized to a given application. It should look nice and be easy to use (or at least be like other applications).
There are two main levels in the Graph Editing Framework (GEF) representation: (1) the net level, and (2) the diagram level. The net level holds nodes which are logical objects that may have application specific data and behavior. The diagram level made up of DiagramElements for structured and unstructured graphics that visually depict the net and various annotations.
I expect that people will use the framework by extending it by adding new classes. In Java the class is the most important unit of syntax, version control, code distribution, and dynamic loading. I have tried design the framework so that people never have to modify existing code. I don't know if that is not the case yet, but hopefully it will be.
The graph editor (in class Editor) is just a shell that dispatches control to various other objects that do the actual drawing and processing of input events. The supporting classes are in several clusters described below.
I am including this section (1) so that anyone who modifies this code can work toward the same style that I am tring to achieve throughout the source code, (2) as a form of documentation so that you know what you are reading. Unfortuantly, the code does not consistantly follow all of these rules yet, but it will.