Writing Graphical User Interfaces (GUI) is time and effort consuming, and when they have to evolve, doing changes could become quickly a nightmare. Hand-writing code for GUI is complex as the code is spread over several source files and their relationship is not always obvious. By using a visual designer, the programmer avoids writing boilerplate code, but semantic information remains stored at the source code level. A model-based approach help to raise the level of abstraction. To avoid generation and deployment additionally steps models could be interpreted enabling one to modify rapidly and easily user interfaces.
Objectives of Wazaabi are the following:
- Provide an easy to use framework to build UIs by defining a set of UI models
- Provide an easy way to bind UI models to real life domain models by supporting data binding
- Provide rendering engines interpreting UI models and syncing with real UI on several platforms, including SWT, Swing, Ajax, GWT…
- Provide a set of tools for designing, comparing, merging, testing and documenting UI models
In this section we describe the main components of the Wazaabi project in details.
In the domain of user interfaces, the designer has to perform recurrent actions, like structural changes, comparison or merge of screens, documentation etc. Dealing with lines of source code instead of UI artifact implies significant overhead and leads to increase development and maintenance costs. In other words, model-based approach avoids dilution of semantic concepts in source code. Wazaabi provides not only a set of models for describing UI parts, but also methods to model the most common pattern the designer faces.
Once the description of the UI is completed, graphical components must be linked or bound to underlying business objects. Wazaabi proposes an additional model for supporting bindings between business-tier models and UI models. The binding model can be represented as a process in order to transform business-tier data.
The engines and the live models
Wazaabi does not follow the traditional MDA approach consisting in model to code generation cycles. There is no code generation, instead it is based on model interpretation aka live models. Changes in the model do not require explicit regeneration, rebuild, retest, and redeploy steps. This will lead to a significant shortening of the turnaround time. The model is available at runtime it is even possible to change the model without stopping the running application.
Live models reduce the distance between design and running times. The Engines are the Wazaabi components able to render a UI model for particular target UI technology. It is important to note that the engines track and reflect not even changes from the model to the UI but also from UI to model due for instance to user input.
SWT is the widget toolkit on which is built Eclipse IDE, but it is not the only one available for building UIs. Wazaabi will provide rendering engines for SWT, Swing, Ajax, GWT, etc...
Wazaabi will provide a range of tools to assist designers during all the process of building and maintaining UIs. Visual design, facilitator for a good code-model interaction, version management, documentation, test building, etc...
Relationship with other Eclipse Projects
Wazaabi will be a sub-project of PMF Wazaabi uses [EMF http://www.eclipse.org/emf] on the domain side.
Wazaabi is built on top of Equinox for the osgi version
The SWT Engine is built on top of [SWT http://www.eclipse.org/swt] & Jface
Architect, the graphical Wazaabi modeler is built on top of [GEF http://www.eclipse.org/gef]
The [E4 Toolkit Model http://wiki.eclipse.org/E4/UI/Toolkit_Model] was developed in parallel with Wazaabi, to get essentially the same ideas into e4. Now that Wazaabi is fully open source, it could make sense to try to merge them.