Skip to main content
Jump to: navigation, search

Difference between revisions of "Rich Client Platform/FAQ"

 
Line 4: Line 4:
 
For relevant tutorials, help topics, newsgroups, examples, and other resources, see the main [[Rich Client Platform|RCP page]].
 
For relevant tutorials, help topics, newsgroups, examples, and other resources, see the main [[Rich Client Platform|RCP page]].
  
 +
<div id="whatis"/>
 
==What is the Eclipse Rich Client Platform?==
 
==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'''.   
 
: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'''.   
 
:For more details, see the main [[Rich Client Platform|RCP page]].
 
:For more details, see the main [[Rich Client Platform|RCP page]].
:Also note that Part 1 of the original [http://eclipse.org/whitepapers/eclipse-overview.pdf 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.</p>
+
:Also note that Part 1 of the original [http://eclipse.org/whitepapers/eclipse-overview.pdf 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?==
 
==What is included in the Rich Client Platform?==
 
:The Eclipse Rich Client Platform consists of the following components:
 
:The Eclipse Rich Client Platform consists of the following components:
<table style="width: 100%; text-align: left;" border="1" cellpadding="2" cellspacing="2"><tbody>
+
<table style="width: 100%; text-align: left;" border="1" cellpadding="2" cellspacing="2">
 
<tr><th>Component<br>
 
<tr><th>Component<br>
 
       </th>
 
       </th>
Line 26: Line 28:
 
       <td>Provides the foundational support for plug-ins, extension points and
 
       <td>Provides the foundational support for plug-ins, extension points and
 
extensions (among other facilities).&nbsp; The Eclipse runtime is built on
 
extensions (among other facilities).&nbsp; The Eclipse runtime is built on
top of the <a href="http://osgi.org/osgi_technology/">OSGi framework</a>.
+
top of the [http://osgi.org/osgi_technology OSGi framework].
 
       </td>
 
       </td>
 
       <td>org.eclipse.core.runtime<br>
 
       <td>org.eclipse.core.runtime<br>
 
org.eclipse.osgi<br>
 
org.eclipse.osgi<br>
 
org.eclipse.osgi.services</td>
 
org.eclipse.osgi.services</td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/main.html">Platform Core home page</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/main.html Platform Core home page]<br>
Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/runtime.htm">Runtime overview</a><br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/runtime.htm Runtime overview]<br>
Article: <a href="http://eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html">Notes  
+
Article: [http://eclipse.org/articles/Article-Plug-in-architecture/plugin_architecture.html Notes on the Eclipse Plug-in Architecture]<br>
      on the Eclipse Plug-in Architecture</a><br>
+
 
+
 
       </td>
 
       </td>
 
     </tr>
 
     </tr>
Line 41: Line 41:
 
       <td>SWT<br>
 
       <td>SWT<br>
 
       </td>
 
       </td>
       <td>The Standard Widget Toolkit. SWT is designed to provide  
+
       <td>The Standard Widget Toolkit. SWT is designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented
efficient,  
+
      </td>
portable
+
       <td>org.eclipse.swt<br>
access to the user-interface facilities of the operating systems
+
on which it is implemented
+
</td>
+
       <td>
+
                org.eclipse.swt<br>
+
 
+ platform-specific fragments<br>
 
+ platform-specific fragments<br>
 
 
       </td>
 
       </td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/main.html">Platform SWT home page</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/main.html Platform SWT home page]<br>
Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/swt.htm">SWT</a><br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/swt.htm SWT]<br>
          <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/SWT_Resources.html">Getting Started</a><br>
+
[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/SWT_Resources.html Getting Started]<br>
          <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/faq.html">SWT FAQ</a><br>
+
[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/faq.html SWT FAQ]<br>
          <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets">SWT code snippets</a><br>
+
[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets SWT code snippets]<br>
          <a href="http://eclipse.org/articles/main.html#SWT">SWT Articles</a><br>
+
[http://eclipse.org/articles/main.html#SWT SWT Articles]
 
+
 
       </td>
 
       </td>
 
     </tr>
 
     </tr>
Line 64: Line 57:
 
       <td>JFace<br>
 
       <td>JFace<br>
 
       </td>
 
       </td>
       <td>A UI framework, layered on top of SWT, for handling many common UI
+
       <td>A UI framework, layered on top of SWT, for handling many common UI programming tasks.
      programming tasks.
+
 
       </td>
 
       </td>
 
       <td>org.eclipse.jface
 
       <td>org.eclipse.jface
 
       </td>
 
       </td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/main.html">Platform UI home page</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/main.html Platform UI home page]<br>
Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/jface.htm">JFace</a><br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/jface.htm JFace]<br>
          <a href="http://eclipse.org/articles/main.html#ui">Workbench and JFace Articles</a><br>
+
[http://eclipse.org/articles/main.html#ui Workbench and JFace Articles]<br>
 
       </td>
 
       </td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
 
       <td>Workbench</td>
 
       <td>Workbench</td>
       <td>The Workbench builds on top of the Runtime, SWT and JFace to provide a highly
+
       <td>The Workbench builds on top of the Runtime, SWT and JFace to provide a highly scalable, open-ended, multi-window environment for managing views, editors, perspectives (task-oriented layouts), actions, wizards, preference pages, and more. <br>
scalable, open-ended, multi-window environment for managing views,
+
The Workbench is sometimes called the Generc Workbench, to distinguish it from the IDE Workbench facilities defined in the org.eclipse.ui.ide plug-in.
editors, perspectives (task-oriented layouts), actions, wizards,
+
preference pages, and more. <br>
+
The Workbench is sometimes called the
+
Generc Workbench, to distinguish it from the IDE Workbench facilities
+
defined in the org.eclipse.ui.ide plug-in.
+
 
       </td>
 
       </td>
 
       <td>org.eclipse.ui<br>
 
       <td>org.eclipse.ui<br>
 
org.eclipse.ui.workbench
 
org.eclipse.ui.workbench
 
       </td>
 
       </td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/main.html">Platform UI home page</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-ui-home/main.html Platform UI home page]<br>
Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/workbench.htm">Plugging into the workbench</a>,<a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/dialogs.htm"> Dialogs and wizards</a>, <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/wrkAdv.htm">Advanced workbench concepts</a><br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/workbench.htm Plugging into the workbench],[http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/dialogs.htm Dialogs and wizards], [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/wrkAdv.htm Advanced workbench concepts]<br>
          <a href="http://eclipse.org/articles/main.html#ui">Workbench and JFace Articles</a><br>
+
[http://eclipse.org/articles/main.html#ui Workbench and JFace Articles]<br>
  
 
       </td>
 
       </td>
Line 105: Line 92:
 
       </td>
 
       </td>
 
     </tr>
 
     </tr>
  </tbody>
 
 
     </table>
 
     </table>
 +
  
 
<div id="footprint"/>
 
<div id="footprint"/>
 
==What is the disk footprint for the Rich Client Platform?==
 
==What is the disk footprint for the Rich Client Platform?==
:As of Eclipse 3.1.1, the combined disk footprint for the Rich Client
+
: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.
Platform, including the above plug-ins, startup.jar and the eclipse.exe
+
executable, is about 6.6 Meg.
+
  
==
 
  
 
+
<div id="resourcesPlugin"/>
  <dt><strong><a name="resourcesPlugin">Q: Is the resources plug-in (org.eclipse.core.resources) considered part of the Rich Client Platform?</a></strong>
+
==Is the resources plug-in (org.eclipse.core.resources) considered part of the Rich Client Platform?==
  </dt>
+
: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''').
  <dd>
+
<p>
+
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, <span style="font-weight: bold;">org.eclipse.core.resources</span>
+
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 <span style="font-weight: bold;">org.eclipse.core.resources</span>
+
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 (<span style="font-weight: bold;">org.eclipse.ui.ide</span>).
+
</p>
+
  </dd>
+
 
    
 
    
  
  <dt><strong><a name="idePlugin">Q: Is the IDE plug-in (org.eclipse.ui.ide) considered part of the Rich Client Platform?</a></strong>
+
<div id="idePlugin"/>
  </dt>
+
==Is the IDE plug-in (org.eclipse.ui.ide) considered part of the Rich Client Platform?==
  <dd>
+
: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.
<p>
+
:The org.eclipse.ui.ide plug-in, and the extensions defined within it, are not designed to be reused in other RCP applications.
No.  The org.eclipse.ui.ide plug-in is layered on top of the generic workbench (<span style="font-weight: bold;">org.eclipse.ui</span>)
+
 
and defines the application for the Eclipse IDE, on top of which sit
+
<div id="otherComponents"/>
the other IDE components such as the Java Development Tools (JDT),
+
==What other Eclipse components can be used in constructing RCP applications?==
Plug-in Development Environment (PDE), Debugger, and Team support. The
+
:Here is a list of some of the reusable components in the broader Eclipse codebase that can be incorporated into RCP applications.
IDE 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. </p>
+
<p>
+
The org.eclipse.ui.ide plug-in, and the extensions defined within it, are not designed to be reused in other RCP applications.
+
    </p>
+
  </dd>
+
 
+
  
  <dt><strong><a name="otherComponents">Q: What other Eclipse components can be used in constructing RCP applications?</a></strong>
 
  </dt>
 
  <dd>
 
  <p>
 
Here is a list of some of the reusable components in the broader
 
Eclipse codebase that can be incorporated into RCP applications.
 
  </p>
 
 
<table style="width: 100%; text-align: left;" border="1" cellpadding="2" cellspacing="2">
 
<table style="width: 100%; text-align: left;" border="1" cellpadding="2" cellspacing="2">
 
  <tbody>
 
 
     <tr>
 
     <tr>
 
       <th>Component<br>
 
       <th>Component<br>
Line 188: Line 136:
 
org.eclipse.tomcat<br>
 
org.eclipse.tomcat<br>
 
org.apache.lucene</td>
 
org.apache.lucene</td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-help-home/main.html">Platform Help home page</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-help-home/main.html Platform Help home page]<br>
Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/help.htm">Plugging in help</a><br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/help.htm Plugging in help]<br>
 
       </td>
 
       </td>
 
     </tr>
 
     </tr>
Line 197: Line 145:
 
       <td>Allows users to discover and
 
       <td>Allows users to discover and
 
install updated versions of products and extensions.</td>
 
install updated versions of products and extensions.</td>
       <td>
+
       <td>org.eclipse.update.configurator<br>
                org.eclipse.update.configurator<br>
+
org.eclipse.update.core<br>
org.eclipse.update.core<br>
+
 
org.eclipse.update.scheduler<br>
 
org.eclipse.update.scheduler<br>
org.eclipse.update.ui<br>
+
org.eclipse.update.ui<br>
 
+ platform-specific fragments<br>
 
+ platform-specific fragments<br>
 
       </td>
 
       </td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-update-home/main.html">Platform Update home page</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-update-home/main.html Platform Update home page]<br>
Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/product_update.htm">Updating a product or extension</a><br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_update.htm Updating a product or extension]<br>
 
       </td>
 
       </td>
 
     </tr>
 
     </tr>
Line 214: Line 161:
 
       </td>
 
       </td>
 
       <td>org.eclipse.text<br>
 
       <td>org.eclipse.text<br>
org.eclipse.jface.text<br>
+
org.eclipse.jface.text<br>
org.eclipse.workbench.texteditor</td>
+
org.eclipse.workbench.texteditor</td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-text-home/main.html">Platform Text home page</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-text-home/main.html Platform Text home page]<br>
Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/editors_jface.htm">Text editors and platform text</a><br>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/editors_jface.htm Text editors and platform text]<br>
 
       </td>
 
       </td>
 
     </tr>
 
     </tr>
Line 226: Line 173:
 
       </td>
 
       </td>
 
       <td>org.eclipse.ui.forms</td>
 
       <td>org.eclipse.ui.forms</td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/~checkout~/pde-ui-home/working/EclipseForms/EclipseForms.html">Eclipse Forms Programming Guide (draft)</a></td>
+
       <td>[https://bugs.eclipse.org/bugs/show_bug.cgi?id=106893 Eclipse Forms Programming Guide (draft)]</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
Line 234: Line 181:
 
       <td>org.eclipse.ui.intro<br>
 
       <td>org.eclipse.ui.intro<br>
 
       </td>
 
       </td>
       <td>Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/workbench_advext_intro.htm">Intro support</a></td>
+
       <td>Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/workbench_advext_intro.htm Intro support]</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
Line 243: Line 190:
 
       <td>org.eclipse.ui.cheatsheets<br>
 
       <td>org.eclipse.ui.cheatsheets<br>
 
       </td>
 
       </td>
       <td>Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/workbench_advext_cheatsheets.htm">Cheat Sheets</a></td>
+
       <td>Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/workbench_advext_cheatsheets.htm Cheat Sheets]</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
Line 252: Line 199:
 
       <td>org.eclipse.core.resources<br>
 
       <td>org.eclipse.core.resources<br>
 
       </td>
 
       </td>
       <td><a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/main.html">Platform Core home page</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-core-home/main.html Platform Core home page]<br>
Dev guide: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/resInt.htm">Resources overview</a></td>
+
Dev guide: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/resInt.htm Resources overview]</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
Line 261: Line 208:
 
       <td>org.eclipse.ui.console<br>
 
       <td>org.eclipse.ui.console<br>
 
       </td>
 
       </td>
       <td>Javadoc: <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/console/package-summary.html">org.eclipse.ui.console</a>, <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/console/actions/package-summary.html">org.eclipse.ui.console.actions</a></td>
+
       <td>Javadoc: [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/console/package-summary.html org.eclipse.ui.console], [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/console/actions/package-summary.html org.eclipse.ui.console.actions]</td>
 
     </tr>
 
     </tr>
 
     <tr>
 
     <tr>
Line 278: Line 225:
 
org.eclipse.gef<br>
 
org.eclipse.gef<br>
 
       </td>
 
       </td>
       <td><a href="http://www.eclipse.org/gef">GEF home page</a><br>
+
       <td>[http://www.eclipse.org/gef GEF home page]<br>
      <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/gef-home/overview.html?cvsroot=Tools_Project">Overview</a>, <a href="http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/gef-home/developer/faq.html?cvsroot=Tools_Project">FAQ</a><br>
+
[http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/gef-home/overview.html?cvsroot=Tools_Project Overview], [http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/gef-home/developer/faq.html?cvsroot=Tools_Project FAQ]<br>
 
       </td>
 
       </td>
 
     </tr>
 
     </tr>
Line 289: Line 236:
 
SDO is a framework that simplifies and unifies data application
 
SDO is a framework that simplifies and unifies data application
 
development in a service oriented arcecture (SOA).</td>
 
development in a service oriented arcecture (SOA).</td>
       <td><a href="http://dev.eclipse.org/viewcvs/indextools.cgi/org.eclipse.emf/plugins/">EMF plug-in list from CVS</a><br>
+
       <td>[http://dev.eclipse.org/viewcvs/indextools.cgi/org.eclipse.emf/plugins/ EMF plug-in list from CVS]<br>
 
       </td>
 
       </td>
       <td><span class="category"><a href="http://www.eclipse.org/emf/">EMF home page</a><br>
+
       <td>[http://www.eclipse.org/emf/ EMF home page]<br>
Overviews:</span> <a class="subcategory" href="http://download.eclipse.org/tools/emf/scripts/docs.php?doc=references/overview/EMF.html">EMF</a>,  
+
Overviews:[http://download.eclipse.org/tools/emf/scripts/docs.php?doc=references/overview/EMF.html EMF], [http://download.eclipse.org/tools/emf/scripts/docs.php?doc=references/overview/EMF.Edit.html EMF.Edit], [http://www-106.ibm.com/developerworks/java/library/j-sdo/ SDO]</td>
      <a class="subcategory" href="http://download.eclipse.org/tools/emf/scripts/docs.php?doc=references/overview/EMF.Edit.html">EMF.Edit</a>, <a class="subcategory" href="http://www-106.ibm.com/developerworks/java/library/j-sdo/">SDO</a></td>
+
 
     </tr>
 
     </tr>
  </tbody>
 
 
</table>
 
</table>
  </dd>
 
  
<p></p>
+
<div id="gettingStarted"/>
 +
==How do I get started with RCP?==
 +
:The [[Rich Client Platform#tutorials|tutorials]] by Ed Burnette and Jeff Gunther] are good starting points.  See also the [[Rich Client Platform#examples|examples]] and the [[Rich Client Platform#help|suggested help topics]].
  
  <dt><strong><a name="gettingStarted">Q: How do I get started with RCP?</a></strong>
+
<div id="newLook"/>
  </dt>
+
<div id="r21pres"/>
  <dd>
+
==Will an RCP application inherit the Eclipse IDE look?==
  <p>
+
: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 availableFor example, the R2.1 presentation available in the IDE can also be used by RCP apps; it is provided in the <code>org.eclipse.ui.presentations.r21</code> plug-in.
  The <a href="index.html#tutorials">tutorials by Ed Burnette and Jeff Gunther</a> are good starting pointsSee also the <a href="index.html#rcp_browser">browser example</a> and the <a href="index.html#help">suggested help topics</a>.
+
:For instructions on how to deploy the R2.1 presentation, see [[RCP_Custom_Look_and_Feel]].
  </p>
+
  </dd>
+
 
+
  
  <dt><strong><a name="newLook"></a><a name="r21pres">Q: Will an RCP application inherit the Eclipse IDE look?</a></strong>
+
The default presentation of views and editors, and the overall window layout, is also configurable in several ways. See the following entries for more details.
  </dt>
+
  <dd>
+
  <p>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 <code>org.eclipse.ui.presentations.r21</code> plug-in.
+
  For instructions on how to deploy the R2.1 presentation, see <a href="index.html#rcp_and_r21">this example</a>.
+
  </p>
+
  <p>The
+
default presentation of views and editors, and the overall window
+
layout, is also configurable in several ways. See the following entries
+
for more details. </p>
+
  </dd>
+
 
+
  
  <dt><strong><a name="windowImage">Q: How can I change the window icon in my application?</a></strong>
+
<div id="windowImage"/>
  </dt>
+
==How can I change the window icon in my application?==
  <dd>
+
:[http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_def.htm Define a product] via the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_def_extpt.htm products extension point] and specify the <code>windowImages</code> property to refer to two image files, a 16x16 one and a 32x32 one.   
  <p><a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/product_def.htm">Define a product</a> via the <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/product_def_extpt.htm">products extension point</a> and specify the <code>windowImages</code> property to refer to two image files, a 16x16 one and a 32x32 one.   
+
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.
  </p>
+
For example, the [[Rich Client Platform#examples|Browser example]] has the following in its plugin.xml:
  <p>It
+
<pre>
is best to specify both, since a 16x16 icon is typically used in the
+
<extension point="org.eclipse.core.runtime.products" id="product">
window trim, and a 32x32 icon is typically used in the OS's application
+
  <product
switcher (e.g. Alt+Tab on Windows). If only one is specified, it is
+
    name="%productName"
scaled up or down as needed, which can result in poor quality. </p>
+
    application="org.eclipse.ui.examples.rcp.browser.app">
  <p>For example, the <a href="index.html#rcp_browser">browser example</a> has the following in its plugin.xml:
+
    <property
  </p><pre>  &lt;extension<br>        point="org.eclipse.core.runtime.products"<br>        id="product"&gt;<br>      &lt;product<br>            name="%productName"<br>            application="org.eclipse.ui.examples.rcp.browser.app"&gt;<br>        &lt;property<br>              name="windowImages"<br>              value="icons/eclipse.gif,icons/eclipse32.gif"/&gt;<br>         ...<br>  &lt;/extension&gt;<br>  </pre>
+
      name="windowImages"
 
+
      value="icons/eclipse.gif,icons/eclipse32.gif"/>
   <p>For more details, see the <a href="http://eclipse.org/articles/Article-Branding/branding-your-application.html">Branding Your Application</a> article.
+
    ...
  </p>
+
   </product>
  </dd>
+
</extension>
 +
</pre>
 
    
 
    
 +
For more details, see the [http://eclipse.org/articles/Article-Branding/branding-your-application.html Branding Your Application] article.
  
  <dt><strong><a name="customPrefs">Q: How can I change the default UI settings for the perspective bar location, fast view bar location, etc?</a></strong>
+
<div id="customPrefs"/>
  </dt>
+
==How can I change the default UI settings for the perspective bar location, fast view bar location, etc?==
  <dd>
+
: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.
    <p>Several
+
:[http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_def.htm Define a product] via the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_def_extpt.htm products extension point] and add the following property:
UI settings such as the perspective bar location, fast view bar
+
<pre>
location, traditional vs. curvy tabs, etc., are controlled by
+
<property
preferences on the UI plug-in. These have default values defined by the
+
  name="preferenceCustomization"
generic workbench. However, the product can override these default
+
  value="plugin_customization.ini">
values using the product preference customization mechanism. </p>
+
</pre>
<p>
+
Then create a file called <code>plugin_customization.ini</code>, in the same directory as the <code>plugin.xml</code> file, with contents of the form:
    <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/product_def.htm">Define a product</a> via the <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/product_def_extpt.htm">products extension point</a> and add the following property:
+
<pre>
</p>
+
<pluginId>/<preferenceName>=<preferenceValue>
<p><pre>        &lt;property<br>              name="preferenceCustomization"<br>              value="plugin_customization.ini"/&gt;<br> </pre>
+
</pre>
Then create a file called <code>plugin_customization.ini</code>, in the same directory as the <code>plugin.xml</code> file, with contents of the form:
+
For example, to show the perspective bar and fast view bar on the left, and to use curvy tabs, add the following to the <code>plugin_customization.ini</code> file:
<pre> &lt;pluginId&gt;/&lt;preferenceName&gt;=&lt;preferenceValue&gt;<br> </pre>
+
<pre>
For example, to show the perspective bar and fast view bar on the left, and to use curvy tabs, add the following to the <code>plugin_customization.ini</code> file:
+
org.eclipse.ui/DOCK_PERSPECTIVE_BAR=left
<pre> org.eclipse.ui/DOCK_PERSPECTIVE_BAR=left<br> org.eclipse.ui/SHOW_TEXT_ON_PERSPECTIVE_BAR=false<br> org.eclipse.ui/initialFastViewBarLocation=left<br> org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false<br>    </pre>
+
org.eclipse.ui/SHOW_TEXT_ON_PERSPECTIVE_BAR=false
For a list of public preferences available on the UI plug-in and their valid values, see the interface <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IWorkbenchPreferenceConstants.html">org.eclipse.ui.IWorkbenchPreferenceConstants</a>.
+
org.eclipse.ui/initialFastViewBarLocation=left
</p>
+
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false
<p>
+
</pre>
For more details, see the <a href="http://eclipse.org/articles/Article-Branding/branding-your-application.html">Branding Your Application</a> article and the <a href="http://help.eclipse.org/help30/topic/org.eclipse.platform.doc.isv/guide/product_configproduct.htm">Customizing a product</a> section in Help.
+
For a list of public preferences available on the UI plug-in and their valid values, see the interface [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/IWorkbenchPreferenceConstants.html org.eclipse.ui.IWorkbenchPreferenceConstants].
</p>
+
For more details, see the [http://eclipse.org/articles/Article-Branding/branding-your-application.html Branding Your Application] article and the [http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/guide/product_configproduct.htm Customizing a product] section in Help.
  </dd>
+
 
 +
<div id="actionSetOrder"/>
 +
==How can I get action set menus to appear in the right order, between my app's main menus?==
 +
:When adding main menus to the menu manager in your WorkbenchAdvisor's fillActionBars method, add an "additions" group marker where you'd like action sets to appear.
 +
<pre>
 +
menuBar.add(fileMenu);
 +
menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
 +
menuBar.add(helpMenu);
 +
</pre>
 
    
 
    
 +
<div id="multiViews"/>
 +
==Can multiple instances of the same view be made to appear at the same time?==
 +
:Yes.  See IWorkbenchPage.showView(String primaryId, String secondaryId, int mode).
 +
The <view> element in the plugin.xml must also specify allowMultiple="true".
 +
Be sure to use a different <code>secondaryId</code> for each instance, otherwise <code>showView</code> 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 <code>primaryId + ':' + secondaryId</code>, where '*' wildcards are supported.
  
  <dt><strong><a name="actionSetOrder">Q: How can I get action set menus to appear in the right order, between my app's main menus?</a></strong>
+
<div id="deployment"/>
  </dt>
+
==How can I deploy my RCP app?==
  <dd><p>When adding main menus to the menu manager in your WorkbenchAdvisor's fillActionBars method, add an "additions" group marker
+
:[[Rich Client Platform#tutorials|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.
    where you'd like action sets to appear.
+
 
  </p><p>
+
<div id="troubleshooting/">
  </p><pre>menuBar.add(fileMenu);<br>menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));<br>menuBar.add(helpMenu);</pre>
+
: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 [http://eclipse.org/articles/Article-Branding/branding-your-application.html 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 [http://eclipse.org/articles/Article-Branding/branding-your-application.html 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:
 +
<pre>
 +
d:\j2sdk1.4.2_01\bin\java org.eclipse.core.launcher.Main -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug
 +
</pre>
 +
or
 +
<pre>
 +
eclipse -vm d:\j2sdk1.4.2_01\bin\java -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug
 +
</pre>
 +
-consolelog causes any log entries to be sent to the console as well (to get a console window, be sure to use java as the VM instead of javaw).
 +
-debug causes Eclipse to log extra information about plug-in dependency problems (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=75648 here] for more background).
 +
-clean forces Eclipse to re-read all the plugin.xml files rather than using its cached representation of the plug-in registry.
 
    
 
    
  </dd>
+
While these options are helpful for debugging, note that there is a performance penalty for -debug and -clean, so it is not recommended that they be used in the final product.
 
+
 
+
  <dt><strong><a name="multiViews">Q: Can multiple instances of the same view be made to appear at the same time?</a></strong>
+
  </dt>
+
  <dd>
+
    <p>
+
    Yes.  See IWorkbenchPage.showView(String primaryId, String secondaryId, int mode).
+
    The <view> element in the plugin.xml must also specify allowMultiple="true".
+
Be sure to use a different <code>secondaryId</code> for each instance, otherwise <code>showView</code> 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.
+
</view></p>
+
<p>
+
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 <cocde>primaryId + ':' + secondaryId,
+
where '*' wildcards are supported.
+
</cocde></p>
+
 
+
  </dd>
+
  
  <dt><strong><a name="deployment">Q: How can I deploy my RCP app?</a></strong>
+
For other troubleshooting hints, see the <b>Troubleshooting</b> section of the [http://eclipse.org/articles/Article-RCP-1/tutorial1.html RCP Tutorial, part 1].
  </dt>
+
  <dd>
+
  <p>
+
  <a href="index.html#tutorials">Part 1 of Ed Burnette's RCP tutorial</a> discusses this in the section entitled <b>Running it outside of Eclipse</b>.
+
  </p>
+
  <p>
+
  There is ongoing work in Eclipse 3.1 to develop a <A HREF="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49592">deployment wizard</A> to simplify this process.
+
  </p>
+
  </dd>
+
  
  <dt><strong><a name="troubleshooting">Q:
+
<div id="orphanPlugins"/>
When I try running, nothing happens, or it complains that the
+
==My own RCP plug-ins are contributed by a feature. Why is the update manager complaining that my configuration is invalid?==
application could not be found in the registry, or that other plug-ins
+
: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:
are missing. How can I track the problem down?</a></strong>
+
* include all the plug-ins (yours and the RCP plug-ins) into your feature, or
  </dt>
+
* create another feature for the RCP plug-ins.
  <dd>
+
 
  <p>
+
<div id="nonResourceEditors"/>
Try running first from within Eclipse using the Runtime Workbench (3.0
+
==Are editors tied to the workspace resource model or to the broader notion of files?==
and 3.0.1) or Eclipse Application (3.1) launch configuration (Run &gt;
+
:NoThe 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.  
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 <a href="http://eclipse.org/articles/Article-Branding/branding-your-application.html">Branding Your Application</a> article).
+
  </p>
+
  <p>
+
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 <a href="http://eclipse.org/articles/Article-Branding/branding-your-application.html">Branding Your Application</a> article)Either all plug-ins need to be specified in the osgi.bundles entry of the config.ini, or the <b>org.eclipse.update.configurator</b> plug-in should be included to discover all available plug-ins the first time the application is run.
+
  </p>
+
  <p>
+
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. </p>
+
  <p> 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: </p><pre>  d:\j2sdk1.4.2_01\bin\java org.eclipse.core.launcher.Main -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug</pre>
+
  or
+
<pre>  eclipse -vm d:\j2sdk1.4.2_01\bin\java -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug</pre>
+
-consolelog causes any log entries to be sent to the console as well
+
(to get a console window, be sure to use java as the VM instead of
+
javaw). <br>
+
  -debug causes Eclipse to log extra information about plug-in dependency problems (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=75648">here</a> for more background). <br>
+
-clean forces Eclipse to re-read all the plugin.xml files rather than
+
using its cached representation of the plug-in registry. <br>
+
 
+
  <p>
+
While these options are helpful for debugging, note that there is a
+
performance penalty for -debug and -clean, so it is not recommended
+
that they be used in the final product. </p>
+
  <p>
+
  For other troubleshooting hints, see the <b>Troubleshooting</b> section of the <a href="http://eclipse.org/articles/Article-RCP-1/tutorial1.html">RCP Tutorial, part 1</a>.
+
  </p>
+
  </dd>
+
  
  <dt><strong><a name="orphanPlugins">Q: My own RCP plug-ins are contributed by a feature. Why is the update manager complaining that my configuration is invalid?</a></strong>
+
The Text component provides support for text editors. See the entry for the Text component in the [#otherComponents">list of optional components] above. See also the [main.html#text_editor_example">RCP text editor example].
  </dt>
+
  <dd>
+
  <p>
+
  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:
+
  <ol>
+
  <li>include all the plug-ins (yours and the RCP plug-ins) into your feature, or
+
  <li>create another feature for the RCP plug-ins.
+
  </ol>
+
  </p>
+
  </dd>
+
  
  <dt><strong><a name="nonResourceEditors">Q: Are editors tied to the workspace resource model or to the broader notion of files?</a></strong>
+
Eugene Ostroukhov has published [http://www.jroller.com/page/Zhou/20040215#eclipse_editors_not_tied_to">a useful blog entry] describing how to create a non-file-based editor that connects to a database.  See also [http://www.jroller.com/page/Zhou/20040414#update_on_custom_editor_inputs this update].
  </dt>
+
  <dd>
+
  <p>
+
  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.
+
  </p>
+
  <p>
+
  The Text component provides support for text editors.  See the entry for the Text component in the <a href="#otherComponents">list of optional components</a> above.  See also the <a href="main.html#text_editor_example">RCP text editor example</a>.
+
  </p>
+
  <p>Eugene Ostroukhov has published <a href="http://www.jroller.com/page/Zhou/20040215#eclipse_editors_not_tied_to">a useful blog entry</a> describing how to create a non-file-based editor that connects to a database.  See also <a href="http://www.jroller.com/page/Zhou/20040414#update_on_custom_editor_inputs">this update</a>.
+
  </p>
+
  </dd>
+

Revision as of 16:47, 9 December 2005

Eclipse Rich Client Platform FAQ

The following are Frequently Asked Questions (FAQs) about the Eclipse Rich Client Platform. For relevant tutorials, help topics, newsgroups, examples, and other resources, see the main RCP page.

<div id="whatis"/>

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.
For more details, see the main RCP page.
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.

org.eclipse.core.runtime

org.eclipse.osgi

org.eclipse.osgi.services
Platform Core home page

Dev guide: Runtime overview
Article: Notes on the Eclipse Plug-in Architecture

SWT
The Standard Widget Toolkit. SWT is designed to provide efficient, portable access to the user-interface facilities of the operating systems on which it is implemented org.eclipse.swt

+ platform-specific fragments

Platform SWT home page

Dev guide: SWT
Getting Started
SWT FAQ
SWT code snippets
SWT Articles

JFace
A UI framework, layered on top of SWT, for handling many common UI programming tasks. org.eclipse.jface Platform UI home page

Dev guide: JFace
Workbench and JFace Articles

Workbench The Workbench builds on top of the Runtime, SWT and JFace to provide a highly scalable, open-ended, multi-window environment for managing views, editors, perspectives (task-oriented layouts), actions, wizards, preference pages, and more.

The Workbench is sometimes called the Generc Workbench, to distinguish it from the IDE Workbench facilities defined in the org.eclipse.ui.ide plug-in.

org.eclipse.ui

org.eclipse.ui.workbench

Platform UI home page

Dev guide: Plugging into the workbench,Dialogs and wizards, Advanced workbench concepts
Workbench and JFace Articles

Other prerequisites for the Workbench

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

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.
Component
Description
Plug-ins
Documentation
Help
Web-app-based Help UI, with support for dynamic content.
org.eclipse.help.appserver

org.eclipse.help.base
org.eclipse.help.ui
org.eclipse.help.webapp
org.eclipse.tomcat

org.apache.lucene
Platform Help home page

Dev guide: Plugging in help

Update Manager
Allows users to discover and install updated versions of products and extensions. org.eclipse.update.configurator

org.eclipse.update.core
org.eclipse.update.scheduler
org.eclipse.update.ui
+ platform-specific fragments

Platform Update home page

Dev guide: Updating a product or extension

Text
Framework for building high-function text editors.
org.eclipse.text

org.eclipse.jface.text

org.eclipse.workbench.texteditor
Platform Text home page

Dev guide: Text editors and platform text

Forms
Forms-based control library and editor framework.
org.eclipse.ui.forms Eclipse Forms Programming Guide (draft)
Welcome Page (aka Intro) Initial welcome experience and guided assistance.
org.eclipse.ui.intro
Dev guide: Intro support
Cheat Sheets
A Cheat Sheet guides the user through a long-running, multi-step task.
org.eclipse.ui.cheatsheets
Dev guide: Cheat Sheets
Resources
Workspace resource model, with managed projects, folders and files.
org.eclipse.core.resources
Platform Core home page
Dev guide: Resources overview
Console Extensible console view.
org.eclipse.ui.console
Javadoc: org.eclipse.ui.console, org.eclipse.ui.console.actions
Outline and Properties views Outline and Properties views
org.eclipse.ui.views
TBD
Graphical Editing Framework (GEF) Framework for building graphical editors. Includes Draw2D, a vector graphics framework.
org.eclipse.draw2d

org.eclipse.gef

GEF home page

Overview, FAQ

Eclipse Modeling Framework (EMF) and Service Data Objects (SDO) EMF

is a modeling framework and code generation facility for building tools and other applications based on a structured data model.  SDO is a framework that simplifies and unifies data application

development in a service oriented arcecture (SOA).
EMF plug-in list from CVS
EMF home page
Overviews:EMF, EMF.Edit, SDO

<div id="gettingStarted"/>

How do I get started with RCP?

The tutorials by Ed Burnette and Jeff Gunther] are good starting points. See also the examples and the suggested help topics.

<div id="newLook"/> <div id="r21pres"/>

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.
For instructions on how to deploy the R2.1 presentation, see RCP_Custom_Look_and_Feel.

The default presentation of views and editors, and the overall window layout, is also configurable in several ways. See the following entries for more details.

<div id="windowImage"/>

How can I change the window icon in my application?

Define a product via the products extension point and specify the windowImages property to refer to two image files, a 16x16 one and a 32x32 one.

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. For example, the Browser example has the following in its plugin.xml:

<extension point="org.eclipse.core.runtime.products" id="product">
  <product
    name="%productName"
    application="org.eclipse.ui.examples.rcp.browser.app">
    <property
      name="windowImages"
      value="icons/eclipse.gif,icons/eclipse32.gif"/>
    ...
  </product>
</extension>

For more details, see the Branding Your Application article.

<div id="customPrefs"/>

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.
Define a product via the products extension point and add the following property:
<property
  name="preferenceCustomization"
  value="plugin_customization.ini">

Then create a file called plugin_customization.ini, in the same directory as the plugin.xml file, with contents of the form:

<pluginId>/<preferenceName>=<preferenceValue>

For example, to show the perspective bar and fast view bar on the left, and to use curvy tabs, add the following to the plugin_customization.ini file:

org.eclipse.ui/DOCK_PERSPECTIVE_BAR=left
org.eclipse.ui/SHOW_TEXT_ON_PERSPECTIVE_BAR=false
org.eclipse.ui/initialFastViewBarLocation=left
org.eclipse.ui/SHOW_TRADITIONAL_STYLE_TABS=false

For a list of public preferences available on the UI plug-in and their valid values, see the interface org.eclipse.ui.IWorkbenchPreferenceConstants. For more details, see the Branding Your Application article and the Customizing a product section in Help.

<div id="actionSetOrder"/>

How can I get action set menus to appear in the right order, between my app's main menus?

When adding main menus to the menu manager in your WorkbenchAdvisor's fillActionBars method, add an "additions" group marker where you'd like action sets to appear.
menuBar.add(fileMenu);
menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
menuBar.add(helpMenu);

<div id="multiViews"/>

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

Yes. See IWorkbenchPage.showView(String primaryId, String secondaryId, int mode).

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:

d:\j2sdk1.4.2_01\bin\java org.eclipse.core.launcher.Main -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug

or

eclipse -vm d:\j2sdk1.4.2_01\bin\java -product org.eclipse.ui.examples.rcp.browser.product -consolelog -clean -debug

-consolelog causes any log entries to be sent to the console as well (to get a console window, be sure to use java as the VM instead of javaw). -debug causes Eclipse to log extra information about plug-in dependency problems (see here for more background). -clean forces Eclipse to re-read all the plugin.xml files rather than using its cached representation of the plug-in registry.

While these options are helpful for debugging, note that there is a performance penalty for -debug and -clean, so it is not recommended that they be used in the final product.

For other troubleshooting hints, see the Troubleshooting section of the RCP Tutorial, part 1.

<div id="orphanPlugins"/>

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.

The Text component provides support for text editors. See the entry for the Text component in the [#otherComponents">list of optional components] above. See also the [main.html#text_editor_example">RCP text editor example].

Eugene Ostroukhov has published ">a useful blog entry describing how to create a non-file-based editor that connects to a database. See also this update.

Back to the top