Roles in GUI-Building
- Separation of Responsibilities
- Role of SwingEmpire FormBuilder/-Loader
Separation of Responsibilities
Expert of ergonomics is responsible for the overall appearance/layout of the ui. Her output is a description of the layout of widgets in terms of position, sizing, alignment. S/he decides which type of widget to use for a given interaction.
Expert of the socio-cultural aspects;is responsible for the presentation details. Her output is a description of the presentation aspects of the widgets in terms of texts, icons,....
Developer/Programmer is responsible for wiring the ui to the business model. Her output is an instance of a container hierarchy that allows access to the model.
Now think of these three roles as being filled by three real persons working in parallel in different regions of the world. First they need to agree on some kind of dictionary that describe the items of the business model that should appear in the ui as well. After doing so, they go ahead and work on their respective aspects of the development. Their combined output is the application.
They want to:
- work indepently
- easily use the output of the others
- not be disturbed when one or both of the other outputs are changed
changes to 1. and 2. should not require re-compiling of the application - UI-Designer and Translator can do their work without the help of a programmer, they only need some "current" version of the runtime application and restart it with a changed version of their output to see the effect of their own work. This rules out any code generating tool.
The output of 1. and 2. should be accessible from code in a generic way -> the programmer can use the current version of the resource, starting with some bare-bone if necessary. Easiest are standard persistent mechanism like XMLEncoder, or ResourceBundles.
The output of 3 should be readable to produce a starting input for both 1. and 2 -> roundtrip for iterative development.
Role of SwingEmpire FormBuilder/-Loader
The main target of the SE FormBuilder is to support the UI-Designer role and produce an output that is independently usable by the other two. This corresponds to the "Layout Editor" window of the tool.
A secondary target of the builder is to provide a basic support for the Translator role - base presentation templates can be defined while building the layout. This corresponds to the "Presentation Editor" window. The presentation can be exported/synchronized to a ResourceBundle - a translator will work from this base bundle with a tool of her/his choice. Currently the synch is available programmatically in the loader only - will be integrated into the builder soon.
The SE FormLoader part is mainly targeted to support the Developer role. It provides a framework to easily access the resources built by the FormBuilder and connect the visuals to the business layer.