## What's New in 3.4

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

## PDE
Plug-in spy | Ever wondered where the source is for something you're looking at in Eclipse? Wonder no more. Select what you're interested in and invoke Plug-in Spy by pressing Alt+Shift+F1. Plug-in Spy currently supports inspection of: Selections Editors Views Dialogs Dialog Pages Preference Pages Wizards Active Help Context Identifiers Launch Configuration Tabs To save time, PDE Spy includes hyperlinks directly to a contributing plug-in's MANIFEST.MF. By clicking the link, PDE will open the Plug-in Manifest editor on that plug-in.
API analysis | Integrated tooling assists developers with API maintenance. Developers can add special Javadoc tags to document API restrictions and specify an API baseline for binary compatibility checks. Code is analyzed during incremental and full builds and problems are reported (quick fixes are provided where possible): Binary incompatibilities between releases Illegal use of APIs based on restrictions Leaking non-API types from an API package Incorrect plug-in version numbers Missing or incorrect @since tags Problem severities can be configured for the workspace and overridden per project at a fine grained level, and specific problems can be filtered from the workspace (problem filters can be shared in CVS).
Improved self-hosting | PDE supports the ability to compile runtime workspace plug-ins against the launching workspace.
Internal extension points | Extension points can be marked as internal. Clients using the extension point will be notified when they are using an internal extension point.
Enhanced target provisioner | A new target provisioner lets you add plug-ins to your target platform from a p2 repository or an update site. Press Add on the Plug-in Development > Target Platform preference page to access the wizard.
Product editor enhancements | The product editor was enhanced to allow for per-platform configuration files (config.ini) and the ability to version product definitions.
Schema identifier attribute | Extension point authors can define attributes that reference other attributes. This is accomplished by setting your extension point attributes as type identifier and choosing the attribute it references. An example of this would be the `org.eclipse.ui.handlers` extension point. The commandId attribute references commands defined in the `org.eclipse.ui.commands` extension point. Extension developers contributing a handler can then select from all valid identifiers for the commandId attribute. Warnings are issued for identifiers that don't exist to prevent the common mistake of a misspelled identifier.
Support for other OSGi frameworks | PDE, in conjunction with Equinox, now supports development against different types of system bundles (i.e., other OSGi framework implementations).
Open plug-in artifact | Find extension references, extension point declarations, exported packages, and plug-ins all in one place. Simply type Ctrl+Shift+A, enter the id, and let PDE do the work. The dialog includes filters for extensions and extension points to help you quickly and easily find what you are looking for.
Context help editor | There is a new Context Help editor available to assist clients creating context-specific help for their applications.
Error log enhancements | The Error Log view has been enhanced to support text filtering, grouping by session or plug-in, and to display logs from runtime workspaces.
Flexible plug-in project conversion | In order to encourage clients to not use embedded JARs, it's now easier to convert an existing JAR to a plug-in project. To do this, simply select the JAR within your project that you want to convert and run PDE Tools > Convert Jars to Plug-in Projects.
Bundle-ActivationPolicy support | To further align with OSGi R4.1, PDE now supports the Bundle-ActivationPolicy manifest header, the replacement for the now-deprecated Eclipse-LazyStart header.
Greater simplification and customizability in headless builds | Setting up a headless build has been simplified. A build can be set up with only the single `build.properties` configuration file. The `allElements.xml` file is not needed unless the added customization it provides is desired. PDE Build has been enhanced to allow custom steps during the assembly and packaging phases of a headless build. A template `customAssembly.xml` script is provided with the available targets.
Individual Source Bundles in Eclipse SDK | The Eclipse SDK ships with individual source bundles instead of the old source plug-ins. This makes shipping source simpler and more flexible. See the wiki page for details on converting your build to use the new source format.
Plug-ins and execution environments | PDE now supports the Bundle Required Execution Environment, and surfaces it in the New Plug-in Project wizard.
Bundle operations | The Plug-in Registry view now includes advanced bundle-related operations: Start Stop Enable Disable These advanced operations are disabled by default; toggle the Show Advanced Operations menu item to turn them on.
Extension point renaming | PDE now supports renaming extension point ids and updating all referencing extensions found in the workspace. The Rename function is available in the context menu in the All Extension Points section and the `plugin.xml` source page of the plug-in manifest editor.
PDE Quickfix for Java file issues | To assist plug-in developers, extra validation was added to help with access restriction issues that could be solved by exporting a package. For example, say you have two plug-ins: a and b. If a attempts to use a class from b and b doesn't export the package containing the class, you'll receive a warning and applicable quickfix. Quickfixes are now provided to aid users in adding dependencies to their plug-in that will attempt to resolve unresolved classes. If any plug-ins export a package that matches an unresolved class's package, PDE creates Quickfixes to add the package to an Import-Package statement or require the bundle directly through a Require-Bundle entry.
Drag and drop in plug-in manifest editor | Drag and drop support has been implemented in the following sections of the plug-in manifest editor to support reordering: All Extensions Required Plug-ins Execution Environments Automated Management of Dependencies Classpath Note: The drag and drop support in the All Extensions section is "schema aware".
Highlight externalized strings in XML editors | PDE highlights externalized strings within all XML editor source pages in purple, by default. An Externalized strings preference has been added to the Plug-in Development > Editors preference page to customize the highlight color:
Cheat sheet editor enhancements | The simple cheat sheet editor has been revamped to include the following enhancements: Custom XML formatting and XML comments preserved on save New Source page with a dedicated Outline view XML Syntax highlighting Quick outline (Ctrl+O) Drag and drop support Clipboard operation support (cut, copy and paste) Hyperlinking Selection synchronization between Definition and Source pages Browse button for Help section
New projects can now be added to working sets | The New Plug-in Project wizard now has additional input fields to specify the working sets to which the new project gets added.
Table of contents authoring | Tables of contents allow you to organize your Eclipse product's contribution to online help documentation. PDE now provides an editor to help you easily create, modify and visualize tables of contents for your Eclipse product. Creating a table of contents is now as easy as dragging and dropping documentation files from the Package Explorer into the editor. The editor also comes with a rich source page that features syntax highlighting, hyperlink navigation (Ctrl+Left) and a quick outline (Ctrl+O). You can create a table of contents via File > New > Other > User Assistance > Help Table of Contents.
Preview changes in PDE wizards | You can now preview changes made by the Organize Manifests and the Externalize Strings wizards before they are applied to the plug-in manifest files. Much like the refactoring wizards provided by JDT, the previews allow you to select only the changes you wish to apply. Both wizards can be invoked from the PDE Tools context menu of plug-in projects.
Structural compare for plugin.xml files | When comparing two versions of a plugin.xml file, the new structure compare views will let you easily see what extensions and extension points have been added, removed, and modified.