UC IRVINE - ICS 125 PROJECT IN SYSTEM DESIGNPROJECT DESCRIPTION |
Students will adapt GEF to use Java2D and develop an exmaple drawing/drafting application.
Java2D is a new Java API for very high quality graphics. It includes such things as transperency, line styles, filled and stroked paths, etc. Students will adapt GEF to use Java2D and develop an exmaple drawing/drafting application. Most of their effort would be in understanding and bringing together the Java2D library with GEF. They would also need to do a good amount of data structure and user interface design for their sample application. Extra credit for implementing efficent spacial data structures to keep redraw and pick operations reasonable when the diagram has thousands of shapes. I think Java2D requires a PC to run. The result would be freely distributed on the internet and must be of a quality that others can understand and reuse.
Most undergraduates are not taught user interface design. If they do learn about UI design, it is usually limited to designing forms of standard widgets. This project will allow you to learn the design and implementation of a complex, custom user interface for interactive direct-manipultion graphic. The concepts in GEF's design are based on previous work in custom drawing tools and are broadly applicable to other direct-manipulation user interfaces.
Building on an existing direct-manipulation tools is rewarding because you will achieve visible results immediately, and there are numerous possible directions for you to take in making your own enhacements.
The example application you build will be of nearly commercial quality. You will compare exisiting commericial drawing tools (such as Corel Draw, Corel Flow, Visio, Canvas, or Micrografix Designer) to choose the set of features to implement.
The development and distribution of free software over the internet is challenging and rewarding. A free software package called GEF was originally developed by ICS 125b students two years ago, and has now been used by over 500 people, including students doing project course at other universities, governement researchers, and commercial software developers. Unlike a homework assignment, the results your team produces will be looked at and used by other people. Students may optionally produce a web site to promote and distribute the application.