What's New in 3.3

This document contains descriptions of some of the more interesting or significant changes made to PDE for the 3.3 release of Eclipse.

PDE

Self-hosting with multiple versions of the same plug-in

PDE now supports self-hosting scenarios that will allow you to develop and run with multiple versions of the same plug-in in the workspace or target platform.

Development scenarios where this new support is particularly useful include:

  • Workflows that require different plug-ins to compile against different versions of the same plug-in
  • Building an update site where you are constantly managing multiple versions of the same plug-in in the workspace

Content assist in plugin.xml

Content assist (Ctrl+Space) is now available on the plugin.xml source page to give you context-sensitive information as you create extensions and extension points. Features include:
  • completion proposals for extensions, extension points, attributes, and elements
  • auto-generation of required elements and attributes

Note that the content assist can be activated without the need for a partial string. PDE uses extension point schemas to determine which elements and attributes are suitable for the current context.

XML Content Assist

Content assist in MANIFEST.MF

Content assist (Ctrl+Space) is now available on the MANIFEST.MF source page, including completion proposals for:
  • header names, attributes, and directives
  • header values such as plug-in IDs, package names, and Java class names
  • boolean and enumerated values for attributes and directives

MANIFEST.MF content assist

Hyperlinking and open declarations

Hyperlinking (i.e. the use of Ctrl+Left to navigate from one editor to another) is now supported on the plug-in manifest editor source page. The usage of the F3 key to open declarations is also supported and provides the same functionality as hyperlinking.

Hovering over attribute values on the plugin.xml page and pressing Ctrl+Left can be used to

  • open resources and Java type declarations
  • open extension point schema descriptions
  • navigate from a translated key reference to that key in the properties file

plugin.xml hyperlink

Hyperlinking provides additional functionality on the MANIFEST.MF source page including:

  • opening manifest editors for referenced plug-ins
  • opening referenced packages

MANIFEST.MF hyperlink

Quick outline in plug-in editor source pages

When editing a source in the plug-in manifest editor, pressing Ctrl+O or selecting Navigate > Quick Outline from the top level menu shows you a quick outline.

The quick outline has many of the sizing and filtering options that are available in the Java editor's quick outline.

Ctrl+O

Code folding

Folding is now supported on the plugin.xml and MANIFEST.MF source pages of the plug-in manifest editor to make large files more manageable.

The option to turn folding on and off can be found on the Plug-in Development > Editors preference page.

Code Folding

Code formatting

Line wrapping introduced by some packaging tools make the plug-in MANIFEST.MF file hard to read. PDE now provides a Format action in the context menu of the MANIFEST.MF source page to format the contents of the file into something more human-readable.

MANIFEST.MF formatting

Field assist in Forms

All fields denoting classes in the plug-in manifest editor now support a field assist feature to help you complete the name of a partially entered class name.

This feature works in a similar way to the content assist in the Java editor, and supports package names and CamelCase.

Field Assist

Field validation in plug-in and product editors

PDE now validates plug-in and product editor form fields while input is being entered.

During validation, form fields are decorated according to problem severity and provide status messages via tool tips.

All status messages are qualified with a field label and rolled up into the form title header where they are available on mouse over.

Field Validation

As with source page validation, the problem severity used by field validation is configurable on the Plug-in Development > Compilers preference page.

Hover support in plug-in manifest editors

The source pages in the plug-in manifest editors now provide a number of useful hovers. Hovering over an attribute in the plugin.xml shows the schema description for that attribute, while hovering over a manifest header shows the Javadoc for that header.

Source Hover

The hover support has also improved on the Extensions page of the plug-in manifest editor. Hovering over a translated attribute now shows the actual substituted value for that attribute.

Forms Hover

Filtered extensions

The Extensions tab of the plug-in manifest editor allows the filtering of the Extensions tree based on a text filter. This function is particularly useful when searching for that one contribution among a long list of extensions.

Filtered Extensions

Target platform provisioning via file system

PDE now allows the dynamic addition of plug-in locations to the target platform by simply pressing Add on the Plug-in Development > Target Platform preference page.

PDE provides a file system provisioner to augment the content of the target platform with plug-ins located in the file system.

File System Provisioner

Additional types of provisioners (e.g. an Update Manager provisioner) can be declared via the org.eclipse.pde.ui.targetProvisioners extension point.

Update site target provisioner

You can now point to an update site, download plug-ins, and install them into your target platform, all in a single step by using the new Update Site Target Provisioning wizard.

The target provisioning wizards can be accessed via the Add button on the Plug-in Development > Target Platform preference page.

Update Site Provisioner

Cheat sheet editor

Cheat sheets guide users through a series of steps to achieve an overall task. PDE now provides a cheat sheet editor to let you compose cheat sheets, complete with embedded workbench commands and links to the Help documentation.

The editor also provides a Preview function that allows you to preview your work on the fly directly in the Cheat Sheets view.

You can create a cheat sheet via File > New > Other> User Assistance > Cheat Sheets.

Cheatsheet Editor

Composite cheat sheet editor

Composite cheat sheets provide guidance through a complex problem by breaking the problem into a set of smaller tasks.

PDE now provides a composite cheat sheet editor to let you visually compose cheat sheets, complete with a Preview feature.

You can create a composite cheat sheet via File > New > Other > User Assistance > Cheat Sheets.

Composite Cheat Sheet Editor

Command composer

Cheat sheets support the embedding of workbench commands allowing you to execute commands such as opening a particular perspective or a wizard in a script-like fashion. The Command Composer dialog shows you a categorized list of available commands and their parameters, making it easy to compose, test, serialize, and embed commands into your cheat sheet. Command Composer can be invoked from the Command section of the cheat sheet editor.

Command Composer

Plug-in refactoring

PDE now supports plug-in refactoring by providing the ability to rename a plug-in ID and update all references to it in downstream plug-ins.

The Rename function is available in the context menu of the Plug-ins view, the Plug-in Dependencies view and the MANIFEST.MF source page.

Rename in Plug-ins view

Plug-in refactoring may also take place as part of the regular project renaming action in the Package Explorer view (Refactor > Rename from the context menu) if the project name matches the plug-in ID.

Plug-in manifest files participate in refactorings

When you rename or move files and folders in your plug-in project, PDE will now update references to these resources in the plugin.xml and build.properties files.

Resource Refactoring

Launching OSGi frameworks

PDE now provides the org.eclipse.pde.ui.osgiFrameworks extension point to enable the integration of additional OSGi frameworks into the PDE bundle tooling.

If more than one OSGi framework is installed, the default can be set on the Plug-in Development > OSGi Frameworks preference page.

OSGi Frameworks Preference Page

Testing against different OSGi frameworks is as easy as selecting that framework in the OSGi Framework launch configuration.

OSGi Framework Launcher

Note that PDE only provides the Equinox OSGi framework extension.

PDE problem categories

Problems in plug-in manifest files can now be categorized, allowing you to easily spot fatal issues such as unsatisfied constraints which may prevent your plug-in from compiling and running properly.

You can turn this feature on via Group by > PDE Problem Type from the drop down menu of the Problems view.

PDE Problem Category

Custom splash screen templates

PDE now provides three templates for creating custom splash screens, complete with code, images and XML markup:
  1. Interactive: A simulated log-in session
  2. Browser: An embedded HTML browser
  3. Extensible: A dynamic set of image contributions

This feature is available in the Templates section on the Splash page of the product configuration editor.

Splash screen templates are also available in the New Extension wizard when generating a new org.eclipse.ui.splashHandlers extension on the Extensions page in the plug-in manifest editor.

Splash templates

Bundle a JRE in your RCP product

When exporting an Eclipse product, you now have the option to bundle a JRE in a jre/ subdirectory inside the product. By default, this JRE will be used when the product runs.

This feature is useful if you want your product with a specific JRE or if the end user of your product may not have a JRE installed on their system.

JRE in Product Export

Bundling JREs for cross-platform Eclipse product export

The Product editor now gives you the option to bundle a JRE with your exported Eclipse product. JREs can be specified on a per-platform basis.

Cross-Platform-JRE

Extensible launch shortcuts

PDE now provides the org.eclipse.pde.ui.launchShortcuts extension point to enable custom launch shortcuts and additional launch modes (e.g. profile) to be integrated into the Testing section of the plug-in manifest editor.

Launch Shortcuts

RCP templates for new application model

The Eclipse 3.3 runtime defines a new application model that affords better control of an Eclipse application's lifecycle.

When an Eclipse 3.3 target is specified in the New Plug-in Project wizard, the RCP application templates generated will use this new application model.

New Application Model

Hello, World - 3.3 edition

In Eclipse 3.3, the Platform introduced a new way to contribute menu and toolbar items to the workbench. See this new support in action by selecting the Hello, World Command template in the New Plug-in Project wizard, available under File > New > Project > Plug-in Project.

Hello World 3.3

Flag for non-exported packages in the MANIFEST.MF file

PDE now provides a flag on the MANIFEST.MF file when the list of exported packages of the plug-in is incomplete. This feature is a useful reminder when you wish to expose all your plug-in code to downstream clients.

By default, the severity of this flag is set to IGNORE, but it can be raised to WARNING or ERROR at a global level via the Plug-in Development > Compilers > Plug-ins > Non-exported Packages preference. It can also be set on a per-project basis on the Plug-in Development > Compilers property page of a plug-in project.

Non-Exported Packages

State of the plug-ins

The Plug-in Dependencies view, available under Window > Show View > Other > PDE > Plug-in Dependencies, has been enhanced to show you the state of every plug-in you have in your development environment.

For each plug-in, you get to see all its dependencies and the plug-ins supplying each of its imported packages.

The view now also serves as a valuable diagnostic tool that shows you the unsatisfied constraints that may prevent your plug-in from running and which may cause a chain reaction affecting other plug-ins.

New filtering capabilities include:

  • focusing on unresolved plug-ins only
  • showing leaf plug-ins only therefore helping you prune unnecessary plug-ins when assembling a product

State of the State

Analyze dependencies for JAR archives

When creating a plug-in from existing JAR archives (File > New > Project > Plug-in Development > Plug-in from existing JAR archives), PDE now computes the dependencies required to run the code in the archive.

Plug-ins targeted to run with an OSGi framework will have their dependencies specified with Import-Package statements, while plug-ins targeted to run with Eclipse will have theirs specified with Require-Bundle statements.

Analyze dependencies

Uses directive calculation

PDE is now able to calculate the OSGi uses directive for exported packages.

The uses directive is important because it models inter-package dependencies to ensure that consistent class spaces are calculated for each bundle. This helps prevent ClassCastExceptions when multiple versions of a package or bundle are installed in the Framework.

The calculation can be initiated from the Organize Manifests wizard (PDE Tools > Organize Manifests... from the context menu of plug-in projects) or the Calculate Uses button in the Exported Packages section on the Runtime page of the plug-in manifest editor.

Uses Directive

Multi-version support for build contributions

Support has been added to allow for multiple versions of the same bundle to appear in a client's map file contribution to the build and therefore retrieved to be part of the same build. Clients wishing to take advantage of this functionality should specify a version in the map file as well as in the referencing feature.
New launcher for your product When you export an Eclipse product that runs on top of Eclipse 3.3 via File > Export > Plug-in Development > Eclipse product, PDE will now customize the new Equinox launcher (described in a separate item) for your product.

GET fetch support

A new GET fetch factory was added to PDE Build which allows clients to specify URLs in their map files contributions to a build. The factory generates a call to the Ant Get task, and clients are able to specify whether or not the fetched file should be unzipped, which is especially useful for clients who are retrieving build input from an HTTP server.

platform.xml handling

In order to handle linked directories and extension locations while building, PDE Build now constructs its state by consulting the platform.xml file contained in the base location, if available.