EiffelVision2
EiffelVision2 is a platform independent Graphical User Interface (GUI)
library that allows easy, simultaneous development of Windowed applications for
any Windows or Unix based platforms. Heavily relying on Eiffel Software's premier EiffelBase library, EiffelVision2 has been designed primarily with ease of use
in mind.
Using EiffelVision2, developers can access all necessary GUI components,
called widgets (buttons, windows, list views) as well as truly graphical elements
such as points, lines, arcs, polygons and the like -- to develop the most
modern, highly functional graphical interactive applications.
Architecture
EiffelVision2 relies on a two-tiered architecture illustrated by the
following figure:

The two tiers play complementary roles:
- At the top level, EiffelVision2 provides fully portable graphics; and
- At the lower level, platform-specific libraries cover the graphical
mechanisms of graphics platforms such as Windows and GTK.
Design
EiffelVision2 provides programmers with high-level classes, that provide all
mechanism and data structures needed to build advanced user interfaces for
deployment on almost all platforms without having to worry about detailed
requirements of toolkits.
The abstract design has been derived from an analysis of user interfaces.
Therefore we have classes with names like MENU, WINDOW, BUTTON, LINE or POLYGON.
The features of these classes are simple, clearly defined properties or
commands, like the feature `minimize' (a command) on WINDOW or `text' (a
property of type
STRING) on BUTTON.
Implementation
For flexibility, EiffelVision2 is built using the bridge pattern. This means
that every platform-dependant component of the library consist of two classes,
plus an implementation class for each platform (currently two). One is the
interface. All the features of interfaces do nothing except delegate the call to
the implementation object which is coupled to it. This object has the static
type of the implementation-interface with the name of the interface class, with
_I appended to it. From this implementation-interface, implementation classes
inherit to implement platform-specific features.
|