GUMP (GUI Modeling Program) will allow a user to visually create a graphical user interface for an application, without entering actual programming language code.
GUMP is part of a larger CASE tool that the rest of the Fall 1998 CPSC 247 class will be developing. This tool is an Integrated Software Engineering (ISE) tool that encompasses various parts of the design of an object-oriented program. It uses a unified model to represent class diagrams, task models and other modeling views, thus bringing them together in one convenient package. As a part of this larger project, GUMP will interface with the unified database substrate that is common to all the parts of this larger tool.
GUMP will be written in Java using Sun's JDK 1.1 and using the Swing widget set. It will also build GUI interfaces using the Swing set. It will start the user out with a blank canvas, upon which the user will be able to add buttons, text fields, and other widgets. In addition to being able to add new widgets, the user shall be able to add widgets that have already been created as classes in some other part of the CASE tool.
The entire ISE project is to be built in Java, because of its cross-platform capabilities.
GUMP should be interactive, allowing the user to place widgets on a window with the mouse, and possibly move them around and change their attributes as they wish.
GUMP must integrate with the overall ISE project, not simply exist as an independent entity attached to the ISE project merely by association. It must do something useful with the underlying model of the entire project.
This is a prototype, so the important thing is to get the basics working. A complete program should not necessarily be the end result of our project. Rather, our client is looking for something that will prove the concept that all these seemingly disparate design processes can be unified.
GUMP should be modular, just like the other parts of the overall project. It should not try to do the tasks that belong to other modules or packages.
All parts of the ISE project should be easy and intuitive to learn and use. Each part must also have some kind of end-user help built in.
GUMP should be able to produce the code "stubs" corresponding to the GUI the user has just designed. Its code generator should be modular, separate from the rest of the GUMP model. Therefore, it should couple more directly with the substrate that underlies the entire ISE project.
Layout managers are an essential part of a good Swing GUI. Our first prototype will most likely use absolute positioning, as it is easier for us to work with. However, if we have the time, it would be nice to implement some mechanism by which the user can assign a layout manager to a frame, and then position widgets within the cells of that layout manager.
Some widgets are capable of containing other widgets. It would be nice to build into GUMP the capability to put child widgets on these widgets. This is somewhat similar to the layout manager feature.