## 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
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.
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 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. 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.
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
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.
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 Hyperlinking provides additional functionality on the MANIFEST.MF source page including: opening manifest editors for referenced plug-ins opening referenced packages
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. 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.
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 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.
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.
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.
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.
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
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. 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.
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.
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.
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.
Custom splash screen templates | PDE now provides three templates for creating custom splash screens, complete with code, images and XML markup: Interactive: A simulated log-in session Browser: An embedded HTML browser 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.
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: a file system provisioner to augment the content of the target platform with plug-ins located in the file system. 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. 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.
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. Testing against different OSGi frameworks is as easy as selecting that framework in the OSGi Framework launch configuration. 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.
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. The templates are available when the option to target an OSGi framework is selected on the first page of the wizard.
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.
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.
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.