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 org.eclipse.equinox.security.auth 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 (org.eclipse.equinox.security.storage 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, org.eclipse.help-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.

Fullscreen

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.

alpha

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

Previous     Next