What is UBIQLIPSE?
UBIQLIPSE is a visual tool, developed as a plug-in for Eclipse, for generating GUI code that runs on a Symbian OS based mobile device. UBIQLIPSE maintains an XML model of the GUI and converts this model into Symbian C++ code on demand, using an existing tool developed by Symbian.
But what does the acronym UBIQLIPSE stand for?? you ask. Well, it's pretty simple really:
UBIQLIPSE = UI BUILDER for UIQ in ECLIPSE.
What is UIQ?
UIQ is a user interface platform for smart phones based on Symbian OS. Being completely customizable and featuring access to services in 2.5 and 3G networks, enterprise applications, email, multimedia clips, web pages and personal information management, it enables Symbian licensees to rapidly build attractive and cost efficient devices.
Applications that make use of the UIQ framework are written in C++ or Java. While plenty of tools for writing UIQ-based applications are already available for Java development, their C++ counterparts are still in early development and very basic where they exist at all. To facilitate the creation of native executable applications, written in C++, for mobile devices, it is highly desirable to have a sophisticated development environment that deals with language- and technology-specific technicalities "behind the scenes" - letting the developer focus on the functionality of the software they are building. Eclipse with its plug-in architecture lends itself particularly well for creating such an environment. For this reason I have decided to develop UBIQLIPSE as a plug-in for Eclipse, making it possible to easily integrate it into a whole suite of Symbian C++ development components in the future.
There is, in fact, already a tool out there, developed by Symbian Ronneby, Sweden, that does what UBIQLIPSE will do: OpenQUB. However, OpenQUB has a number of disadvantages over UBIQLIPSE, i.e. reasons in favour of doing this project:
- OpenQUB is a standalone program => seamless integration into a development environment is impossible.
- It lacks functionality for adding code to widgets' events (such as a button's click event)
- It uses Java's Swing for its GUI, whereas UBIQLIPSE uses the more efficient SWT library for its GUI elements and Eclipse's GEF framework for the editor's architecture.
- The CALENDAR widget seems to be unsupported by OpenQUB.
Should I have been to harsh or even wrong in any of these points, please let me know ;) .
You can find out everything about Eclipse on its website.
In order to start this project we need a complete specification of the UIQ user interface. This includes specifications of all types of widgets, which entails
- their graphical look,
- how and where they can appear on the view port,
- how they can be used in combination, and
- all properties, their usage and how they affect the behaviour and graphics of the widgets.
The other essential piece of information we require is what output UBIQLIPSE needs to produce, and how it should go about doing this. We already know that we will have two types of output:
The first is an XML model of the GUI that the developer is working on. This is the format that UBIQLIPSE will use to maintain its data across sessions, and it is hence updated whenever the developer makes a change. What we need to know is the grammar of this XML model, i.e. its DTD.
The second type of output is the Symbian C++ code emitted by Symbian's existing tool. We require information about its usage, to give us a clue as to how we can integrate it into UBIQLIPSE.
We will gradually gather these pieces of information as we go along and work them into the system specification for UBIQLIPSE.