What is the Eclipse Rich Client Platform?

While the Eclipse platform is designed to serve as an open tools platform, it is architected so that its components could be used to build just about any client application. The minimal set of plug-ins needed to build a rich client application is collectively known as the Rich Client Platform.

Also note that Part 1 of the original Eclipse whitepaper also applies, and is a good high-level overview of what is available in the Rich Client Platform. Although it speaks of the Eclipse IDE (which is itself an RCP application), almost all of the functionality described in Part 1 is available in the RCP. Exceptions are the Workspace model and Team support, which are components in the IDE, not the RCP. Part 2's discussion of JDT is specific to the Eclipse IDE, however it is a good illustration of how an application would be structured on top of the RCP.

<div id="contents"/>

What is included in the Rich Client Platform?

The Eclipse Rich Client Platform consists of the following components:

Component

Description

Plug-ins

Documentation

Eclipse Runtime

Provides the foundational support for plug-ins, extension points and

extensions (among other facilities). The Eclipse runtime is built on
top of the OSGi framework.

Support for XML expressions language, commands, and help core content model.

org.eclipse.core.expressions

org.eclipse.core.commands
org.eclipse.help

<div id="footprint"/>

What is the disk footprint for the Rich Client Platform?

As of Eclipse 3.1.1, the combined disk footprint for the Rich Client Platform, including the above plug-ins, startup.jar and the eclipse.exe executable, is about 6.6 Meg.

<div id="resourcesPlugin"/>

Is the resources plug-in (org.eclipse.core.resources) considered part of the Rich Client Platform?

No. The workspace resource model provided by the org.eclipse.core.resources plug-in is not considered part of the Rich Client Platform. While this is the underlying data model for the Eclipse IDE, the RCP makes no assumptions about the underlying data model of the application being built. The data model could just as well be files in the local filesystem, a remote database, an RDF data store, or anything else. If it makes sense for the application, org.eclipse.core.resources can be included and used as the application's data model, but this is not required. Much effort was put into Eclipse 3.0 to remove the dependencies on org.eclipse.core.resources from the generic workbench. Any resource dependencies (for example, the New Project, Folder and File wizards, and the Resource Navigator, Tasks and Problems views), were considered IDE-specific and factored out into the IDE plugin (org.eclipse.ui.ide).

<div id="idePlugin"/>

Is the IDE plug-in (org.eclipse.ui.ide) considered part of the Rich Client Platform?

No. The org.eclipse.ui.ide plug-in is layered on top of the generic workbench (org.eclipse.ui) and defines the application for the Eclipse IDE, on top of which sit the other IDE components such as the Java Development Tools (JDT), Plug-in Development Environment (PDE), Debugger, and Team support. The DE instantiates the generic workbench, configuring it with IDE-specific menu and toolbar items, and adding IDE-specific views, preference pages and other extensions. The IDE uses the workspace resource model as its underlying data model.

The org.eclipse.ui.ide plug-in, and the extensions defined within it, are not designed to be reused in other RCP applications.

<div id="otherComponents"/>

What other Eclipse components can be used in constructing RCP applications?

Here is a list of some of the reusable components in the broader Eclipse codebase that can be incorporated into RCP applications.

How do I get started with RCP?

Will an RCP application inherit the Eclipse IDE look?

By default, RCP apps use the same presentation as the IDE, but with different defaults (e.g. tabs are "traditional"). However, other presentation implementations are available. For example, the R2.1 presentation available in the IDE can also be used by RCP apps; it is provided in the org.eclipse.ui.presentations.r21 plug-in.

How can I change the window icon in my application?

It is best to specify both, since a 16x16 icon is typically used in the window trim, and a 32x32 icon is typically used in the OS's application switcher (e.g. Alt+Tab on Windows). If only one is specified, it is scaled up or down as needed, which can result in poor quality.

How can I change the default UI settings for the perspective bar location, fast view bar location, etc?

Several UI settings such as the perspective bar location, fast view bar location, traditional vs. curvy tabs, etc., are controlled by preferences on the UI plug-in. These have default values defined by the generic workbench. However, the product can override these default values using the product preference customization mechanism.

Can multiple instances of the same view be made to appear at the same time?

The <view> element in the plugin.xml must also specify allowMultiple="true".

Be sure to use a different secondaryId for each instance, otherwise showView will find any existing view with the same primaryId and secondaryId rather than showing a new one.

To pass instance-specific data to the view, you will need to cast the resulting IViewPart down to the concrete view class and call your own setData method.

Note that views with a secondaryId will not match placeholders specifying just the primaryId. In a perspective factory, placeholders can be added for multi-instance views using the format primaryId + ':' + secondaryId, where '*' wildcards are supported.

<div id="deployment"/>

How can I deploy my RCP app?

Part 1 of Ed Burnette's RCP tutorial discusses this in the section entitled Running it outside of Eclipse. In Eclipse 3.1, there is also a product export wizard to simplify this process.

When I try running, nothing happens, or it complains that the application could not be found in the registry, or that other plug-ins are missing. How can I track the problem down?

Try running first from within Eclipse using the Runtime Workbench (3.0 and 3.0.1) or Eclipse Application (3.1) launch configuration (Run > Debug...). Ensure that the application's plug-in(s) and all its prerequisites are selected in the Plug-ins tab. The easiest way is to select "Choose plug-ins and fragments to launch from the list", press Deselect All, check off the application's plug-in(s), and press Add Required Plug-ins. In 3.1, there is also a Validate Plug-in Set button to check that all prerequisites have been satisfied, without having to launch first. On the Main tab, be sure that the correct product or application is selected (using a product is preferred -- see the Branding Your Application article).

When running a deployed RCP application (not running from within Eclipse), ensure that the config.ini file in the configuration directory points to the correct product or application extension via the eclipse.product or eclipse.application entry (using a product is preferred -- see the Branding Your Application article). Either all plug-ins need to be specified in the osgi.bundles entry of the config.ini, or the org.eclipse.update.configurator plug-in should be included to discover all available plug-ins the first time the application is run.

If eclipse fails silently, look in the configuration and/or workspace directories for a .log file. If you use the eclipse.exe launcher (or equivalent on other platforms) it will tell you where to find any relevant log file.

Try adding -consolelog, -debug and -clean to the command line (as program arguments, not VM arguments). For example, to run the browser example with an explicitly specified product:

My own RCP plug-ins are contributed by a feature. Why is the update manager complaining that my configuration is invalid?

If you're using a feature only for the plug-ins you write, the update manager does not check dependencies on "orphan" plug-ins (i.e. plug-ins not contributed by a feature) so the configuration appears invalid. You will need to either:

include all the plug-ins (yours and the RCP plug-ins) into your feature, or

create another feature for the RCP plug-ins.

<div id="nonResourceEditors"/>

Are editors tied to the workspace resource model or to the broader notion of files?

No. The concept of an editor in the workbench and the corresponding types (IEditorPart, EditorPart, IEditorInput) are not tied to the workspace resource model, or even to the notion of files (whether in the workspace or the file system). Editors can be used for any kind of model, and can be textual or graphical.

Also take a look at SwingWT, an SWT-based implementation of the Swing API.

How do I get my app to use Windows XP themes?

See this SWT FAQ entry. Note that the manifest file must have the name javaw.exe.manifest or java.exe.manifest, not eclipse.exe.manifest (since eclipse.exe only launches the splash screen and then invokes the Java VM). The manifest file must be in the jre\bin folder for the VM you use to launch Eclipse.