# RSE User Interface API

The RSE provides a number of classes that can help with programming productivity when authoring user interface artifacts, such as actions, dialogs, wizards, property pages and preferences pages. Further, a common requirement in all of these artifacts is the need to display translated messages to the user. The RSE supplies a framework for defining and displaying rich messages that have second level help, severity and ID attributes.

In the following sections we introduce the support offered by the RSE for these UI constructs.

## Plugin Class

The RSE supplies a base plugin class `SystemBasePlugin` that offers some advantages over the base eclipse `AbstractUIPlugin` class:

1. Simplified methods for registering images, and support for retrieving them either as an image or an image descriptor.
2. Support for logging error, warning and information messages, using the RSE logging framework.
3. Support for loading a resource bundle, and easily retrieving translated strings from it.
4. Support for loading an RSE message file, and easily retrieving translated messages from it.
5. Helper methods for getting the active workbench window and shell.

To use the base plugin class effectively, you must subclass it and supply some critical methods of your own.

## Messages

The Java property file for messages is not very rich, as it offers only the ability to define a single message string. Throughout the RSE perspective you will notice that the messages are richer than this. They contain second level help, severity, and ID and more. Further, there is a unique error message dialog for displaying messages, with their second level help, and specialized support in the RSE dialog, wizard and property page classes for displaying messages on a message line. These messages can be selected by the user, to bring up the specialized message dialog displaying the additional properties of the message. Further, there is support for logging severe errors to a log file, enabling better service support.

Your own plugins can enjoy this rich message support too, even independently of using the rest of the RSE for remote resource access. This support involves defining an xml message file, which defines the messages, and using a set of supplied classes to work with the messages.

Before defining your own messages, you may wish to peruse the list of RSE-supplied messages that are already defined. The key benefit to using an existing message is translation, as these are already translated into many languages.

## Preference Pages

When defining your own preferences pages, you may want to place your preference pages within the Remote Systems preference page category. As you author your preference page classes, you may find some of the RSE-supplied classes for preference pages to be useful.

## Property Pages

Property pages can appear in the Properties dialog of any object in eclipse. This dialog is available by selecting "Properties" from the pop-up menu for the object. The RSE supports defining your own property pages for the resources in its model, although there is a distinction between local and remote resources.

## Validators

Validating user-entered text is a common and tedious task in any GUI programming. Using validators to encapsulate the error checking for a particular type of data is a highly recommended practice. The RSE validator support is very helpful for this, offering both a common interface for all manner of validators and a large list of pre-supplied validators.

## Massagers

While validating user-entered text is common, so is affecting user-entered text prior to saving it. For example, folding it to upper or lower case. The RSE massager support encapsulates this concept, and supplies a few re-usable massagers for you.

## Widgets

Populating preference pages, property pages, dialogs and wizards requires use of SWT widget programming. The RSE widget support can help, with helper methods and classes, and re-usable widgets you may find useful.

## Dialogs

The RSE supplies rich support for dialogs, including a powerful base class and, re-usable pre-built dialogs.

## Wizards

Wizards are a common building block of an eclipse GUI. Typically, a wizard is used to prompt for information to create something new, while a dialog is used to prompt for information for other purposes. The RSE wizard support includes base classes that can simplify the task of creating wizards.

## Actions

Populating popup and pulldown menu items requires the creation of actions. These actions typically popup dialogs or wizards, and need to be able to pass selections and inputs from the action to the dialog or wizard, and get outputs back. The RSE action support can significantly help with this programming task, especially when used together with the RSE dialog and wizard support.

Often we want to refresh the contents of the Remote Systems view or Table view from within our actions, to visualize changes to the selected resources. To do this, use the `method`. To get the system registry, use the `method`.

At times, you may want to post events in a dispatch thread rather than using the original client's thread; or you may need access to the System Clipboard. Such operations are only possible when the UI is loaded, and therefore you need to use `ISystemRegistry.fireEvent()` method in that case. To get the system registry UI interface, use the `RSEUIPlugin.getTheSystemRegistryUI()` method.