Saros Components

Saros, which can be used as the basis for RCP applications, is constantly being further developed and adapted to the latest Eclipse RCP releases. In the following, the components in Saros are explained in greater detail.


Application Lifecycle Support
The Application Lifecycle Support components make it possible to execute optional or user-defined jobs while the application is being launched or closing. The action (order, parallelism) can be configured. A job can initiate the closing or restarting of the application (configuration error, application update). An example of a lifecycle: (start) – update configuration – update application – login dialog – (user interaction) – logout - (stop)

Automated Update
The Automated Update components expand the Eclipse update mechanism. It has to differentiate between an update of the configuration of the application and an update of the application itself. A concept for updating a configuration (for example, that of the lifecycle) does not yet exist in Eclipse. Updating is executed without user interaction in contrast to Eclipse RCP. It must be done before the first service call and is therefore already configured as a lifecycle job. The communication parameters of the automated update mechanism can be configured without having to resort to programming.

Remoting [Client/Server]

The Remoting components are responsible for communication between the client and the server. These components can be arbitrarily configured and expanded. For instance, the abstraction layer within the client can be used to harmonise and make compatible the data flow between any source and the rest of our components. This is an overview of the most important features:

  • synchronous and asynchronous communication
  • several communication channels each with its own security level
  • configuration of the protocol and handlers in the plug-in
  • configuration of communication parameters in configuration files
  • session handling with callback fur security components

Security
The Security components provide GUI components for various authentication processes. Both single-level processes such as user and password, and multi-level processes such as user-password-secure ID are implemented. The implementation is fully JAAS compatible.

DataBinding

The DataBinding components are a central element of every modern Java client. Eclipse RCP provided no assistance for an efficient and practical linking of data and model in release 3.1 and in 3.2, this was only rudimentary. The better DataBinding links the model with the widgets, the faster, more error free and maintainable an application can be developed. The following requirements are fulfilled through the DataBinding components:

  • synchronisation between model attributes and widgets
  • conversion between model attributes and the values to be displayed (for example, date to string or string to date)
  • formatting of the values to be displayed (for example, the number of decimals for amounts)
  • initiated in the validation of the model and marking the erroneous widgets, where validation is handled by the business logic
  • showing warnings dependent on the content of the model
  • dependencies among widgets (refresh, enable/disable, visibility)
  • context dependencies (automatic activation/deactivation of widgets depending on the role of the user)
  • consistent separation of the visualisation from the business logic


Custom Widgets

The Custom Widgets components include various complex widgets which are needed repeatedly. Examples of this are a calendar widget for selecting a date or a combined text-listen widget, which guarantees on the one hand fast and on the other secure entry of predefined values.


Data Access Cache

The Data Access Cache (DataStore/Repository) component is an intelligent cache for model objects. "Intelligent" because it automatically analyzes the results from service calls and can update itself. If a model object is changed through a service call, interested observers will be informed. The cache recognizes model-object trees with references as links (1:1 or 1:n references) and sends delete, update or add events when the references of a model are changed. Interested observers can register for such events.


The cache guarantees access at all times to the model object, which can be uniquely identified with the GUID. Every model object appears in the cache only once. One can configure the cache in a way that the reading of a model object or a reference can be triggered from the server (synchronously/asynchronously) as needed.

Configurable Tree/Table/Treetables
Trees, tables and combined TreeTables are very complex GUI components and thus difficult to programme. To relieve programmers and guarantee the greatest possible efficiency in assembling and disassembling these components, Saros offers configurable trees and tables as well as a combination of the two (TreeTable). This does not replace the concepts of Eclipse but rather is built on them. For example, a table can be configured completely in XML with various contents using the Eclipse extension mechanism. This also applies for trees and TreeTables. Besides configurability, sorting is also possible across several columns. It is also possible to hide or show columns via the GUI without additional programming.


These user-specific modifications are made persistent through an Eclipse mechanism. Resetting the configuration modification by the user is possible at all times. If the data must be loaded asynchronously, which is necessary for a user-friendly GUI particularly when there is a large quantity of data, these GUI components work together with the data access cache. The data is loaded from the server asynchronously as needed and visualized. Trees, tables and TreeTables are areas in Eclipse which will be expanded considerably in the future. Taking this into consideration, a generic, central implementation of these GUI components is important in order to keep pace with the progress of the Eclipse platform with minimum effort.

Role-Based GUI

The concept of a role-dependent GUI is not present in Eclipse. However, one can use the activity mechanism in Eclipse to implement this concept. Together with DataBinding, we can activate or deactivate all possible widgets based on their role with the role-based GUI components.

Configurable Editors/Wizards/Views/Dialogs

The configurable editors, wizards, views and dialogs all have in common their ability to show random content (composite content), which is generated independent of the surrounding container and defined as an Eclipse extension in XML. For example, the contents of wizards, in other words the individual pages, can be shown in editors along with tabs. The reusability and the simple, very compact presentation of this content is the focus and thus make it possible to quickly develop many GUI layouts. Containers such as wizards, editors and views are still defined as standard Eclipse extensions in XML. This makes it possible to bring together the potential inherent in Eclipse and the needs for an efficient and yet still high-quality development.

Plugable Formatters/Converters/Label Providers

These components make it possible to reuse formatters and label providers not only in Java code but also in other configurable GUI components (such as trees, tables and TreeTables). This means that you can ensure that the graphic depiction of a model object or one of its attributes is programmed centrally at one location even if you are dealing with the title of an editor, a tree node or an entry in a table.

Error Handling

Error Handling runs through all components and is usually difficult to implement when it is not planned for from the beginning. With the projectware components described above, error handling was weighted accordingly and is found again at various locations. Beginning with remoting, where any number of error handlers can be inserted, to DataBinding, where the correct text must be shown for a validation error on an attribute as well as for the corresponding GUI element. It also must be possible to assign errors, which occur during a service call, to the corresponding GUI element.

Enterprise Business Object (EBO) Framework Libraries

The EBO Framework Libraries are not dependent on Eclipse and primarily contain interfaces and base implementations, which guarantee the generic aspects of model objects. Such generic aspects are, for example:

  • generic access to attributes
  • generic access to references
  • generic access to an attribute, which is only reachable via a reference for example
  • generic validation and validation exceptions