This page exists to explain why sometimes in Eclipse-based applications, but not always, you see a preference page General>Capabilities. This preference page allows users to filter or unfilter aspects of the user interface.
Capabilities Are Optional
The short answer is that the presence of this preference page is considered part of the application-level configuration and branding. In the case of the Eclipse IDE, we provide two downloads:
- Eclipse SDK: This download includes all of the Eclipse Platform, plus JDT and PDE. Its branding plug-in is called org.eclipse.sdk. This plug-in, among other things, defines the activities/capabilities for the Eclipse SDK, and contributes the Capabilities preference page.
- Eclipse Platform: This download includes just the Eclipse Platform, without JDT or PDE. Its branding plug-in is called org.eclipse.platform. This plug-in does not define any activities/capabilities and does not contribute the Capabilities preference page. However, when building a product based on the Eclipse Platform feature download, activities/capabilities can be defined in additional plug-ins, and similarly, the Capabilities preference page can be contributed by an additional plug-in.
Being able to define custom activities/capabilities, and being able to contribute the Capabilities preference page or not was done intentionally, so that downstream products can replace the generic preference page with a custom one, or use a completely different mechanism for changing which capabilities are enabled. Neither org.eclipse.sdk nor org.eclipse.platform, the two plug-ins containing branding etc. were ever meant to be taken as is when someone builds a product on top of the Eclipse IDE.
How to Create Your Own Branding Plug-in with Capabilities
If you are creating your own branding plug-in and would like to define activities/capabilities, and potentially add the Capabilities preference page, take a close look at the org.eclipse.sdk plug-in and its plugin.xml and then create a similar plug-in replacing it, containing:
- your product's branding (splash screen, about dialog branding, etc)
- your product's welcome page definition
- a copy of the activity definitions, or a subset thereof, as required
- a definition of what your "primary wizards" are - these are the wizards that can trigger enablement of capabilities that were not enabled at the start
- a definition of the capabilities preference page, if required - note that the code for this is in another plugin, we are talking about 15 lines of XML for the extension definition in the plugin.xml
- a definition of the "trigger point advisor" - again, you can just use the implementation of that provided by the workbench if that's good enough
- other stuff that is product-specific, e.g. a list of search engines that will appear in the help system.
It is expected that all IDE-like products built on top of the Eclipse IDE replace this plug-in with their own, at least so that they get appropriate branding. It is common for such products to not include the preference page and to replace it with other mechanisms for customizing the UI (e.g. fixed enablement for capabilities, or a mechanism that appears at a more prominent place such as the the welcome page). They would also typically list different primary wizards, and potentially different capabilities and their enablement.