Eclipse 3.4 - New and Noteworthy

There Ganymede is wrought with living art,
Chasing thro' Ida's groves the trembling heart:
Breathless he seems, yet eager to pursue;
- Virgil, Aeneid

Welcome to Ganymede, this year's simultaneous Eclipse release, including content from twenty three Eclipse projects. Here are some of the more noteworthy things available in the eighth annual release of the Eclipse project SDK available for download from the Eclipse Project downloads page.


New update UI

The UI for performing installation and updates is completely new in 3.4. The new UI is accessed using Help > Software Updates.

Software Updates and Add-ons Dialog

Unlike previous versions, you no longer have to find and select all prerequisites of the software you are trying to install. You can just select the single piece of software you want to install, and all prerequisites will be computed and installed automatically. The Installed Software tab only shows you the exact software items that you chose to install, rather than listing everything that is installed on your system. When you update software, all prerequisites of the software being updated will also be updated as needed.

The new update dialog allows you to add update sites using drag and drop gestures in addition to using the dialogs. To make an update site available in Eclipse, you can drag and drop a site URL link from supported browsers (such as Firefox) into the Help > Software Updates > Available Software page.

Dragging a browser link to the Available Software Tab

Viewing available software

You can now view the software that's available for install or update in multiple ways. The Available Software tab in the Help > Software Updates dialog provides a view menu button that lets you view the software by site, category, or name.

Available Software view menu in the Software Updates and Add-ons Dialog

You can also use the filter box in the dialog to filter the available software by name.

Filtering the Available Software page

Checkboxes at the bottom allow you to further control what is shown in the view.

Checkbox controls in the Available Software page

Markers view

A new Markers view has been added for users who prefer to have their problems, bookmarks and tasks in the same view (i.e., as it was back in the days before Eclipse 3.0).

It can be found by selecting Window > Show View > Other > Markers.

Markers view

New look for Problems, Bookmarks and Tasks views

The Problems, Bookmarks and Tasks views now have a new look, implementing many long-standing feature requests.

New Problems view

Highlights include:

  • Predefined filters for all errors and warnings on selection.
  • Union or intersection of problems showing.
  • A forms based configuration dialog.
  • Use of the commands defined in the workbench rather than custom actions. This means consistency with key bindings and the main window menu.
  • Working sets as first class selection sources. For instance, if the Package Explorer view is showing working sets and the Problems view is filtering on selection, you will only see the problems in that working set.
  • Show multiple content sets. The Problems view allows you to see all markers, or just the problems.

Form-based configuration dialog

System proxy settings

The General > Network Connections preference page allows you to specify the proxy settings to be used when connecting to the network. The new System proxy configuration option lets you reuse OS proxy settings in Eclipse. Eclipse supports:
  • Proxy manual settings and automatic configuration on Windows
  • Proxy environment variables and Gnome settings on Linux

System Proxy

Eclipse for 64-bit Windows

Windows x86_64/AMD64 and IA64 have joined the lineup of Eclipse platforms and SWT downloads. To use them you must be running on a 64-bit edition of Windows with a 64-bit JRE. (Note that the 32-bit versions of SWT and Eclipse can still be used on these configurations with a 32-bit JRE).

Eclipse on Windows 64

Eclipse on HP-UX IA64

Eclipse will now run (in 32-bit mode) on HP-UX Itanium machines.


Resource refactorings

The move, delete and rename resource actions now support refactoring in the same manner as the Java refactoring actions do.

These new actions are available in the Project Explorer. Here is an example of the resulting dialog when moving a resource in the Project Explorer:

move dialog

Accessibility for Mac OS X

Eclipse is now accessible on Mac OS X Carbon. The Mac screen reader, VoiceOver, can be turned on and off with Command+F5. The snapshot below shows the VoiceOver cursor highlighting a tool item in Eclipse.

VoiceOver showing focus on Eclipse tool item

New dropins folder

There is a new "dropins" folder at the root of the Eclipse platform install that can be used to "drop in" additional plug-ins separate from the base application. This folder supports various layouts of plug-ins, features, and link files. On each startup, this directory is scanned, and any newly added content is automatically installed, and removed contents are uninstalled from the running application.

Eclipse installer

The Eclipse SDK now has a simple installer that can be used to install the SDK from or its mirrors. This leverages the transport capabilities of p2 to provide a faster, authenticated download. The installer also supports shared install so that multiple Eclipse applications on your system share the same data. The installer is available from the Equinox Download Page.

The Eclipse SDK Installer

Checking software trust

When you install or upgrade using Help > Software Updates, the install process will now examine the signatures of the code being installed, and verify that you trust the provider of the software. This verification only occurs once in the install process, after all the new software has been downloaded. The dialog allows you to view the certificate trust chain, and examine the details of each certificate.

Viewing certificates of installed software

Content type-specific file icons

In the past, icons for files were chosen based on the file's name and extension only. Workbench views now show more specific file icons based on the file's content type. The IDE will initially show a generic icon like it always has:

package explorer with generic icons

After determining content types in the background, icons will be replaced with more specific ones if available:

package explorer with more specific icons

This behavior can be turned off from the General > Appearance > Label Decorations preference page.

Remote Help content enhancements

Eclipse 3.4 now allows multiple remote infocenters to contribute content to the Help system. This can be specified using the Preferences > Help > Content preference page.

Help Preferences

Resize Table and Tree columns using the keyboard

The column widths of certain Tables and Trees can now be changed in a keyboard-accessible way. This shows up in the list of plug-ins or features available from the About dialog, and as a new view menu item in all views displaying markers (Problems, Tasks, Bookmarks, and Markers).

Dialog for configuring column widths

Print button in Help view

The Help view now has a print button.

print button in Help view

New projects can now be added to working set

New projects can now be added to working sets during their creation. Currently all major wizards make use of this feature and there is API available for plug-in developers to do so as well.

new project wizard

Close tabs with middle click

You can now close view and editor tabs by clicking anywhere on the tab using the middle mouse button.

Middle click close

If your mouse doesn't have a middle button, try clicking on the mouse wheel if it has one of those.

Line matches in result view

The file search result now shows line matches. When in the tree layout, line matches are shown below files:

Line matches in the text search result view

Improved text search replace dialog

Replacing text matches (Replace All or Replace Selected in the context menu of the text search result view) now uses the same dialog as refactorings do - including preview and undo:

Replace text match dialog

Direct interaction with text hovers

Are you tired of pressing F2 to see the full contents of a hover and to scroll down?

Now, you can just move your mouse into hovers that support this functionality and start scrolling.

The Javadoc hovers in the Java editor now support links to other elements and have a toolbar at the bottom for navigating, moving to the Javadoc view and opening the corresponding declaration:

Picture showing the Javadoc hover with mouse cursor on link

The behavior of hovers when the mouse is moved can be configured on the General > Editors > Text Editors preference page:

Picture showing the text editor preferences

Improved regular expressions in Find/Replace dialog

The regular expressions support in the Find/Replace dialog (Ctrl+F) has been extended.

In the Find field, the new pattern \R matches any line delimiter (Windows \r\n, Unix \n, and Mac \r). Note that \R cannot be used in character groups ([]), since the Windows delimiter \r\n consists of two characters.

In the Replace With field, several new constructs have been added, for example:

  • \R inserts the document line delimiter (same as Enter key)
  • \r and \n insert carriage return and newline characters, respectively. Note that mixing line delimiters inside a document is not recommended and may lead to problems with external editors. \R is usually a better choice.
  • \t inserts a tab
  • \xhh and \uhhhh insert the specified characters

Content assist and Help tell all the gory details.

Find/Replace dialog with content assist showing \R

Retain case of match when replacing

There's a new regular expression that allows the case of each match to be retained when using Find/Replace:

Picture showing the Find/Replace dialog with the retain case regular expression

For example, replacing "test" with "\CFoo" in "Test test= TEST" results in "Foo foo= FOO". The same patterns can be used when replacing from the Search view:

Replace dialog using \C to retain the case

Various printing improvements

The printing support for editors has been improved:
  • line numbers are now printed if enabled in the editor
  • background color is no longer printed
  • annotations (e.g. error squiggles) are now printed
  • each page shows the file name in the header
  • each page shows the current page number in the footer
  • the print job gets a meaningful name

Line support in overview ruler

Until now, the overview ruler was only helpful when it showed annotations. Henceforth, you can click on the ruler to go to the corresponding line and you can hover anywhere on the ruler to see the line number at that ruler location:

Picture showing line number support in the overview ruler

Configure annotation preferences via overview ruler

The overview ruler now has its own context menu that allows you to open the preferences. If the context menu is opened on an annotation, then it takes you directly to its annotation type on the 'Annotations' preference page:

Picture showing the configuration of the overview ruler

Select text via Shift+Click into line number ruler

Text in the editor can now also be selected by shift-clicking in the line number ruler.

New annotation text styles

You can now choose from all available styles for drawing an annotation inside the editor:

Picture showing the configuration of annotation text styles

Share multiple projects simultaneously

The Team > Share Project action now supports multi-select so multiple projects can be shared in a single operation.

Correct spelling in CVS Commit wizard

The comment area of the CVS Commit Wizard now presents you with suggested corrections for misspelled words. The options are available using quick assist (Ctrl+1) and are also shown in the context menu.

File changes can be viewed in CVS Commit wizard

File changes can now be viewed in the CVS Commit Wizard. You can view the changes for a file by double-clicking on the file in the Changes pane.

Ignore resources by path

The Team > Ignored Resources preference page now allows you to specify ignore path patterns as well as file name patterns.

Apply Patch improvements

Improvements have been made to the Apply Patch Wizard. The handling of unmatched patch segments has been modified to be more consistent with how the standard patch application works. Segments (or hunks) that do not match at the location indicated in the patch will be automatically tested at previous and later locations in the file to see if an exact match for the patch appears elsewhere. Also, the fuzz factor (i.e. the number of context lines to ignore when searching for a match) can be automatically calculated and applied, if an exact match cannot be found. The user will still have the ability to adjust the fuzz factor.

Fuzz factor and Guess button

Import Team Project Set improvements

Improvements have been made to how the import of CVS projects using a Team Project Set is handled. In the past, a repository location was automatically created with the given connection method and without a user name when CVS projects were imported from a project set. Now, the import process allows the user to fully configure the repository location, enabling them to specify a user name and change the connection method if require. So, for instance, a project set file containing extssh connections could now be used by a non-comitter since they could reconfigure the repository location connection method on import to be pserver.

Repositories configuration dialog

Improved Apply Patch wizard

The CVS Apply Patch wizard now lets you see and inspect the hunks that matched. Previously, only conflicting hunks were visible.

The Apply Patch wizard showing matched hunks

Improved Share Project dialog

There's a new option in the CVS Share Project dialog that lets you choose to use the project name as the module name and place it under the selected module.

Sharing wizard

Line counter in Apply Patch wizard

The Apply Patch wizard counts lines added and removed in the patch.

Line Counter Wizard

The default mechanism simply sums all lines starting with '+' and '-'. To define custom patterns which can be used to exclude empty lines or comments, go to the General > Compare/Patch preference page.

Line Counter Preference

Import/Export launch configurations

You can now import and export launch configurations in the local file system. Select Launch Configurations from the Run/Debug category of the Export wizard. The following page allows you to select configurations to export to a location in the local file system.

Wizard page used to select launch configurations to export

Similarly, you can import launch configurations from a directory in the local file system.

Default console and file encoding

The console encoding used when running or debugging a program automatically matches the encoding of the program being run or debugged. For example, your Java program's (or Java project's) encoding will be used by the console and a corresponding VM argument will be added to the command line (for example, "-Dfile.encoding=UTF-8"). This makes it simpler to run and debug code displaying console output.

Drag and drop watch expressions

You can now drag text into the Expressions view to create expressions and you can reorder entries in the Expressions view with drag and drop.

Remove launch history entries

You can now remove items from the launch history menus. Use Control+Shift+Click to remove an item from a launch history (that is, select the menu item while pressing Control+Shift). The launch will be removed from your history but the configuration is not deleted.

Confirmation dialog to remove an entry from the launch hsitory

Java development tools

Java Editor Breadcrumb

The Java editor now offers a breadcrumb which shows the path to the element at the cursor position. The breadcrumb can be enabled via the Toggle Breadcrumb tool bar button or by pressing Alt+Shift+B:

Picture showing the breadcrumb in the Java editor

Each element in the breadcrumb can be selected and actions can be invoked through a context menu or keyboard short cuts.

Context menu on breadcrumb item

Furthermore the breadcrumb lets you navigate to other elements via drop-downs.

Breadcrumb drop down

Rich Javadoc Hover

The Javadoc hover can now be used to navigate Javadoc.

  • Follow links in Javadoc
  • Go forward and backward in the navigation history
  • Show the current content in the Javadoc view
  • Open the declaration of the current element
  • Open the current content in an external browser
  • Resize the hover
  • Move the hover (start dragging in the toolbar area)

The enriched Javadoc hover

The hover also shows the icon corresponding to the current Java element

To enrich a hover either press F2 or move the mouse into the hover. You can configure how to enrich the hover on the General > Editors > Text Editors preference page.

Rich Java problem hover

The problem hover now offers all available quick fixes for a problem and shows a tool bar on F2 or when you move the mouse into it.

Enriched Problem Hover

Quick fixes can be executed by clicking on the links. The actions in the tool bar let you configure the annotation preferences and the problem severity.

Content assist improvements

Content Assist (Ctrl+Space) has been improved in several areas.

  • Content assist can now use the type of the enclosing instanceof condition to offer more field and method access proposals:

    Instanceof Completion Proposals

    The required cast will be inserted when such a proposal is selected.

  • Content assist for static members also work if the type has not been imported yet:

    Static Members Completion

    The required import will be added when such a proposal is selected.

  • Content assist can now propose methods with unknown types:

    Second example of missing types

  • Content assist on method invocations shows the guessed arguments:

    Content assist with proposed guessed arguments

    This can be configured on the Java > Editor > Content Assist preference page.

Quick assists

New quick assists (Ctrl+1) have been added in this release:

  • Create getter and setters: Available on fields.
    Screenshot of the 'create getter and setter' quick assist

  • Extract to method: Available on expressions and statements.
    Screenshot of the 'extract method' quick assist

  • Extract to local variable without replacing all occurrences: Available on expressions.
  • Use StringBuilder for string concatenation: Available on string concatenations.
    Picture showing the 'Convert to StringBuffer' quick assist
    StringBuilder is used in Java projects with a 1.5 or higher compliance, StringBuffer is used in projects with a lower compliance.
  • Use MessageFormat for string concatenation: Similar to convert to StringBuilder, MessageFormat is used to replace string concatenations.
    Picture showing the 'Convert to MessageFormat' quick assist

SWT Templates

A set of templates have been added to provide code building blocks for SWT widgets.

To add, for example, an SWT button, type Button and press Ctrl+Space, select the Button SWT template, and press Enter.

Create a button with the Button template

To see all available templates go to the Java > Editor > Templates preference page or open the Templates view through Window > Show View > Other....

New Template Variables

New template variables have been added and existing variables have been improved. Consult the Template Variables help page for a detailed overview.

Specify location for templates

It is now possible to specify the location where Java editor templates are applicable.

  • Statement location: The template shows up only when completing a statement.
  • Type member location: The template shows up only when completing a type member.

As a result, Content Assist (Ctrl+Space) will only show templates applicable at the current location.

Format edited lines on save

A new save action allows to format the edited lines on save. With this option enabled, format on save generates a minimal amount of changes, even on unformatted code.

Save action preference page

To enable this feature go to the Java > Editor > Save Actions preference page and select Format edited lines.

'Fix Project Setup' quick fix

If a type can not be resolved a new quick fix offers to fix the class path:

Missing type with quick fix and fix project setup dialog

For normal Java projects, the quick fix will search in other projects for the type and offer to add the JAR that contains that type to the build path. For PDE projects, information from the plug-in manifest is used to offer a new plugin dependency. Other project types can add their fix proposal through a new extension point.

Highlighting numbers in Java code

The Java editor can now show numbers with their own custom color.

Picture showing custom color for numbers

The color can be configured on the Java > Editor > Syntax Coloring preference page.

Javadoc shows constant value

The Javadoc hover and the Javadoc view now show the constant value of static fields.

Picture showing Javadoc hover with constant value

Mark read and write occurrences

Mark Occurrences (Alt+Shift+O) now marks read and write accesses with different colors.

Picture showing read and write accesses in the Java editor

Mark Occurrences can be enabled in the tool bar. Annotation colors are configured on the General > Editors > Text Editors > Annotations preference page

Occurrences in File improvements

Several improvements have been added to Search > Occurrences in File:

  • The quick menu (Ctrl+Shift+U) now only shows the searches applicable for the current selection. If only one search kind is possible, the shortcut will directly invoke the search.

    Picture showing the 'Occurrences in File' quick menu

  • The menu now offers all searches available by Mark Occurrences.
  • Matches are now highlighted with different colors for read and write accesses in the search view.
  • The search view offers a Link with Editor mode where the view input is connected to the current editor selection.

    Picture showing 'Link With Editor' toolbar button in the 'Occurrences result view'

Extract Class refactoring

Extract Class replaces a set of fields with a new container object. All references to the fields are updated to access the new container object. This refactoring helps to group fields which logically belong together.

The following example demonstrates how to extract the fields x,y,z to a new class Position:

Extract Class Position

The refactoring results in the creation of a new Position class which is used in the original class:

Extract Class Position result

To execute the Extract Class refactoring, select a type and invoke Refactor > Extract Class.

New Clean Ups

The following Clean Ups have been added:

  • Correct indentation: Corrects the indentation of your source code.
  • Add unimplemented methods: Adds code stubs for all unimplemented methods.

Add unimplemented methods is most useful after adding a new method to an interface. Correct indentation is also available as save action.

To clean up your code select a set of Java elements and invoke Source > Clean Up.

Refactoring flags references in binaries

Refactorings now flag references to the refactored element inside compiled class files. Such references cannot be updated and would lead to problems at run time.

Refactoring error dialog showing references in binaries

Undo format

Formatting a set of Java elements, e.g. via Package Explorer, can now be undone using Edit > Undo Format (Ctrl+Z).

Annotation formatting improvements

The Java source code formatter now provides fine-grained options for line breaks after annotations. It is possible to specify for each type of annotation if it should be followed by a line break:

  • Annotations on members:

    A member annotation

  • Annotations on parameters:

    A parameter annotation

  • Annotations on local variables:

    A local variable annotation

This can be configured on the Java > Code Style > Formatter preference page.

Formatter preference dialog showing the new line tab page

Java compiler on multi-CPU machines

The Eclipse Compiler for Java is now taking advantage of the multi-threading capability of multi-CPU machines. Our measurements show improvements up to 30%. Results depend on the JRE and platform used.

Support for external class folders

Class folders located outside the workspace (external) can now be added to the build path.

To add an external class folder use the Java Build Path page of the project properties, select the Libraries tab and push the Add External Class Folder button.

How set up an External Class Folder

New and improved compiler diagnostics

Several improvements have been made to the problem detection in the compiler:

  • Unnecessary declaration of thrown exception can now be ignored if it is documented with an @throws or an @exception tag.

    Screenshot of the Error/Warning preference page

    A Quick Fix (Ctrl+1) helps adding the Javadoc tag.

  • Unnecessary declaration of thrown exception can now report warnings for unused declarations of 'Exception' and 'Throwable'.

    A warning is issued if no such exception has been explicitly thrown in the code.

  • Null pointer accesses are now reported as a warning by default.
  • Unnecessary @SuppressWarnings annotations are now detected by the compiler.

    Unused Suppress Warning Example

    Note that @SuppressWarnings("all") is still silencing the warning for unnecessary @SuppressWarnings, as it is the master switch to silence all warnings.

  • Redundant superinterfaces can now be detected by the compiler.

    Example of diagnosed redundant super interface

    The unnecessary code can be removed by using Quick Fix (Ctrl+1).

You can configure this settings on the Java > Compiler > Errors/Warnings preference page.

CLDC 1.1 class file compatibility

The Java compiler can now create CLDC 1.1 compatible class files.

You can set this on the Java > Compiler preference page:

Screenshot of the Compiler preference page

Flexible ZIP archive extensions

It is now possible to add ZIP archives to the build path with file extensions other than .zip or .jar.

It is now, for example, possible to add a .rar file on the build path.

JUnit view shows execution time

The JUnit view now shows the elapsed time for test cases and test suites.

JUnit view with elapsed time

Improved Javadoc view

The Javadoc view has been improved with:

  • Icon corresponding to the current input.
  • Actions to go back and forth in the history.
  • Action to enable and disable link with selection.
  • Action to open the current input in an external browser.

Javadoc View

Rearrange content of files per drag and drop

Unsorted views like the Outline view and the Members view in the Java browsing perspective can now be used to rearrange members by drag and drop.

Outline view showing a drag and drop interaction.

Call Hierarchy view works with fields and types

The Call Hierarchy view in caller mode now works with more kinds of elements:

  • The children of a field are all members that access the field (read and write accesses)
  • The children of a type or an instance initializer are all constructors of the type

Caller Hierarchy on a field

Runnable JAR export wizard

The Runnable JAR File Export wizard can create a JAR file based on a launch configuration. The generated JAR file contains all class files from the project including class files from required JARs and projects.

The generated JAR can be executed with the command:

java -jar generated_file.jar

or, on most operating systems, by double-clicking the file.

Picture showing the runnable JAR export wizard

The export wizard can also create an ANT script which can be used to build the JAR.

Invoke File > Export... and then select the Java > Runnable JAR file wizard to create such a JAR file.

More Java search options

Type reference search can now be limited to specific match locations in the code. For example, you can find references in cast expressions, or in field and local variable types.

The following example shows how to search for all catch clauses in your code (search for references to '*' and limit to catch clauses):

Picture showing the match location selection UI

Paste creates snippet for members and statements

Paste (Ctrl+V) in the Package Explorer view now supports members and statements. Eclipse creates the required enclosing elements for you.

For example, pasting:

		List<Number> numbers;
		numbers= Arrays.asList(1, 2, 42);

into _pasted_code_ generates a Java class and main method to hold the statements:

Pasted snippet into _pasted_code_

Enhanced debug hover

When debugging, hovers for variables have been enhanced to display an object inspector. The inspector will display logical structures according to the toggle setting in the visible Variables or Expressions view.

Debug hover

Execution environment description files

An execution environment description file describes a JVM and the environment it represents (see Execution Environment Descriptions for detailed information on the file format). The file defines JVM properties such as boot path, endorsed directories, language level, executables, source attachments, and so on.

You can now add JREs to your workspace using execution environment description files from the Installed JREs preference page. Press Add and select the Execution Environment Description JRE type.

Choose the kind of JRE to add

On the following page specify an .ee file. This will create a JRE with attributes from the description file. This example shows J9 configured for Foundation 1.1.

Add JRE based on execution environmet description file

Search for installed JREs on Mac

You can now search for all installed JREs on Mac. Pressing the Search button on the Java > Installed JREs preference page will add definitions for all VMs installed in the operating system's default location (/System/Library/Frameworks/JavaVM.framework/Versions).

Search for installed JREs

Search results include launch configurations

Launch configurations now appear when searching for references to a main type. Double-clicking on the search result opens the launch dialog on that configuration.

References to a main type include launch configurations

Wait for remote debug connection

A socket listening connector has been added to the Remote Java Application launch type. This allows you to start the Java debugger listening for connection on a specific socket. The program being debugged can then be started with command line options to connect back to the debugger. Select "Standard (Socket Listen)" in the connection type drop down.

Connect tab using a socket listening connector

Default watchpoint suspend settings

You can now control the suspend settings for newly created watchpoints. A watchpoint can suspend execution when a field is accessed, modified, or both. The new preference is available on the Java > Debug preference page.

Suspend policy for watchpoints

Platform API

Equinox Provisioning Platform (p2)

The Eclipse Platform now includes the Equinox Provisioning Platform, dubbed p2, that provides a complete replacement for the install/update functionality in previous releases of Eclipse. Some of the notable underlying features of p2 include:
  • Ability to install complete Eclipse-based applications from scratch, above just augmenting and updating already installed applications.
  • Ability to install and manage an application from either inside the application or from another process.
  • Ability to install and manage artifacts other than plug-ins and features, such as launchers, root files such as licenses, configuration files, Java VMs, etc.
  • Pooling of bundles from multiple Eclipse-based applications in one directory, saving disk space and making installing and upgrading much faster.
  • Staged provisioning so that downloading of software can be separated from installation.
  • Dynamic discovery and resolution of software dependencies - no more broken "Select Required".
  • Dependency resolution, installation, and upgrades that span multiple update sites.
  • A more robust transport layer for downloading built on the Eclipse Communication Framework (ECF).
  • Dynamic mirror selection and rebalancing based on mirror performance, and multi-threaded downloads.

Individual Source Bundles in Eclipse SDK

PDE now supports individual source bundles.  The Eclipse SDK is now shipping new source bundles instead of the old source plugins. This makes shipping source simpler and more flexible.  See the wiki page for details on converting your build to use the new source format.

Connecting with Java authentication

If you wanted to use the Java authentication service (JAAS) but were put off by the complexity of fitting it into the Eclipse world, now is the time to revisit that decision.

The Equinox security API offers a way to describe your login configuration, login modules, and callback handlers via extension points. The class loading magic is done behind the scenes to ensure that your classes fit properly into JAAS.

The package along with the loginConfigurationProvider extension point are good starting points to explore this functionality.

Secure storage

Equinox now provides a Preferences-like storage for sensitive data such as passwords and login credentials. The information is encrypted using Java encryption mechanisms.

The storage uses an extensible list of password providers to obtain the key ring password. In this version two password providers are supplied: the UI prompt and Windows login integration modules.

While secure storage is mostly intended to be consumed by other bundles and hidden from the end user, a view of default secure storage and a preference page are provided for convenience.

The Secure Storage view

The secure preferences can be obtained using the SecurePreferencesFactory class ( package).

New look for Problems, Bookmarks and Tasks views

The Problems, Bookmarks and Tasks views are now based on a new API viewer (the MarkerSupportView) that has a new look, implements many long-standing feature requests, and is reusable by RCP applications wishing to use their own custom marker view.

Form-based configuration dialog

Some of the features for RCP application writers are:

  • API markers view.
  • Ability to set visible columns based on content.
  • Menus built entirely by commands for easier extensibility.
  • Reuse of system commands.

Help feature

The new feature,, contains all of the plug-ins required by an RCP application in order to launch the help system.

Infocenter as web archive

The help infocenter can now be packaged as a web archive (WAR file) which can be deployed on a wide variety of servers.

API for styled labels in trees and tables

The API for styled text labels in table and trees is now available in JFace. Each label in a tree and table viewer can have text styles like foreground and background colors, underlines, boxes, etc.
  • Extend StyledCellLabelProvider and provide style ranges for your element labels in update
  • Reuse existing label providers by having them implement IStyledLabelProvider and use them with a DelegatingStyledCellLabelProvider or a DecoratingStyledCellLabelProvider
Have a look at the JFace Snippet 49 and JFace Snippet 50.

Colored labels in the search result view

To enable or disable colored labels go to General > Appearance > Enable colored labels. The colors are defined on the colors and fonts preference page.

New API in data binding plug-ins

The data binding framework has been enhanced in the following ways:
  • You can now observe a multi-selection, as well as the checked elements in a check box tree or table.
  • Two generic tree content providers have been added, see ObservableListTreeContentProvider and ObservableSetTreeContentProvider.
  • Cell editors are supported now by way of ObservableValueEditingSupport.
  • API for cross-observable constraint validation has been added, see MultiValidator.
  • Binding to Java objects that do not fire change events is now supported through PojoObservables.

New extension registry listener

A new way to listen to the extension registry events has been added. Keeping up with the dynamic nature of the registry has never been this easy! For details, see org.eclipse.core.runtime.IRegistryEventListener.

Enhanced launch API

Extensions have been made to the debug platform's launch shortcut API to provide clients with more control over launching the active selection (or editor). The new ILaunchShortcut2 API allows clients to dynamically specify a launchable resource or specific launch configurations associated with the active selection (or editor).

API has been added to determine if specific attributes are present on a launch configuration and to remove them.

API has been added to determine the encoding to use when launching a configuration. A launch configuration inherits its encoding from its associated resource(s), or can specify an explicit encoding.

Other debug APIs

An optional extension interface (IDebugModelPresentationExtension) allows debug model presentations to control whether they are called in the UI thread.

A Modules View has been added to the platform, along with associated constants in IDebugUIConstants.

An optional interface (IWatchExpressionFactoryAdapter2) allows the 'Create Watch Expression' action to operate on arbitrary objects, instead of just IVariables.

SWT Changes

SWT RTL support for Linux GTK

SWT now provides support for mirroring on Linux GTK platforms.

RTL on Linux GTK

Accessibility for Mac OS X

Eclipse is now accessible on Mac OS X Carbon. The Mac screen reader, VoiceOver, can be turned on and off with Command+F5. The snapshot below shows the VoiceOver cursor highlighting a tool item in Eclipse.

VoiceOver showing focus on Eclipse tool item

SWT inline input method

StyledText has added support for inline input method in Win32, GTK, and Carbon.

Inline input method

Tristate buttons

API was added to allow for tristate check buttons similar to the check buttons in a table or tree. This example snippet created the snapshot shown below.

Tristate button

Progress bar (Vista)

The SWT ProgressBar control now supports the native Windows Vista styles.

Progress Bar Vista

New transfer types

New API was added to support drag and drop and clipboard operations for images and URLs.

URL transfer before

URL transfer after

For further details, see Snippet 284.

Drag and drop on Mac

Drag and drop was improved on the Mac. For example, when inserting an item into a tree, an indicator is now displayed to show where the item will end up.

Mac tree insert

SWT full screen state

API was added to put a Shell into a full screen state. Full screen should be used rather than creating an ON_TOP shell the size of the screen, which may not obscure the task bar or other desktop adornments under certain operating systems.


Alpha on shells

There is new SWT API that allows the setting of an alpha value on a shell. Note: some operating systems do not support this functionality.


Region improvements

You can now set a Region into a Control, which allows for the creation of non-rectangular controls. New API has been added to flatten a graphics path into line segments. Line segments can be used to create an arbitrary region. This snippet creates a circular shell from a path.

Region from Path

This example snippet created the snapshot shown below, a non-rectangular button.

Region on Control

Shear transform

SWT has new API that allows for shearing of images. For more info, check out SWT Snippet 298.

Shear Transform

Print control to GC

API was added to allow the printing of any Control to a GC. For more info, check out Snippet 292.

Print a Control

SWT features in TextLayout and StyledText

TextLayout and StyledText now allow different strikeout colors, underline colors, and different underline styles.

SWT Underline

Plug-in Development Environment

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

Press Alt+Shift+F1 to invoke the Plug-in Spy

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 and quick fix for a missing @since tag

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.

Internal extension points

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.

Target Provisioner 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.

Product editor with per-platform configuration files

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.

Defining an identifier attribute

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.

Referencing an identifier attribute

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.

Open Plug-in Artifact

Context help editor

There is a new Context Help editor available to assist clients creating context-specific help for their applications.

Context Help Editor

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.

Error Log View

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.

Bundle Activation Policy

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 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 Required Execution Environment

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.

Bundle Operations

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.

Rename extension point

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.

PDE Export 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.

PDE Unresolved Quickfix

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

Drag and drop

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.
Externalized string are highlighted

An Externalized strings preference has been added to the Plug-in Development > Editors preference page to customize the highlight color:

Preference for 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

Simple Cheet Sheet Editor

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.

Add project to working set(s) on creation

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.

Table of Contents Editor

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.

Preview changes

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.

Structural compare