Plug-in Development Environment

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

PDE editors facelift

All PDE form-based editors have acquired a new look and feel. Visual enhancements include the following:
  • Gradient form headers
  • Form title icons
  • New section title bar design and colors
  • Section header tool items using standard size icons
  • Form header help icons

In addition, all PDE form editor pages comply with the latest UI recommendations for margins and spacing.

PDE Editor Facelift

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.

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

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

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

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

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

Stronger plugin.xml validation

PDE now flags warnings when the number of elements in an extension's XML markup is at odds with the arity specified in the extension point schema.

The severity for this type of problem is set to Warning by default, and can be customized via the Plug-in Development > Compilers > Plug-ins > Illegal elements preference.

Element Occurrence Validation

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

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

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

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

Cheat sheet authoring

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

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.

The Command Composer can be invoked from the Command section of the cheat sheet editor.

Command Composer

Bundling JREs in your RCP product

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.

The JRE will be bundled in a jre/ subdirectory inside the product, and it will be the default JRE 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 does not have a JRE installed on their system.

Cross-Platform-JRE

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

Target platform provisioning

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 two provisioners:

  1. a file system provisioner to augment the content of the target platform with plug-ins located in the file system.
  2. an update site provisioner that downloads and installs plug-ins into your target platform with a single click by simply pointing at an update site.

Target Provisioning

Additional types of provisioners can be declared via the org.eclipse.pde.ui.targetProvisioners extension point.

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

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.

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 Development > Plug-in Project.

Hello World 3.3

OSGi Services Templates

The New Plug-in Project wizard, available under File > New > Project... > Plug-in Development > Plug-in Project, provides new templates demonstrating the usage and implementation of programmatic OSGi services.

OSGi Services Templates

The templates are available when the option to target an OSGi framework is selected on the first page of the wizard.

OSGi Option

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.

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.

Previous     Next