Eclipse Project 4.5 M5 - New and Noteworthy

Here are some of the more noteworthy things available in the Mars milestone build M5 (2015-01-30) which is now available for download.
We also recommend to read the Tips and Tricks, either via Help > Tips and Tricks... or online for Platform, JDT, and PDE.

Platform
Perspective Customization After 3 years of absence the Customize Perspective Dialog and Reset Perspective are back to Eclipse. The dialog which allows to configure the visible menu, toolbar, action sets and shortcuts was broken starting with Eclipse 4.2, together with the the ability to reset the perspective.

Configuring toolbars

Configuring menus

Configuring action sets

For more information see bug 420956.

Nested/Hierarchical view of projects The Project Explorer now provides the ability to view the projects in a hierarchical (a.k.a. nested) form. For modular projects, this allows to have your Project Explorer mapping more closely the organization of your modules as they are on the file system. This hierarchical view of projects often makes easier to navigate modular projects.

Hierarchical view of projects can be triggered from the Project Explorer view menu, under the Projects Presentation item.

Hierarchical view of projects can be triggered from the Project Explorer view menu, under the Projects Presentation item

Then it makes the folders that are at the same location as a project replaced by the project, and the projects that are nested under other projects will not be shown as root elements.

This implementation relies on the Common Navigator Framework.

Workspace location in preferences The Workspace preference page now shows the current workspace path. In addition the path can be configured to appear in the window title, a feature that previously was only available through the -showLocation command line argument. This argument is still in effect and overrides the preference.

Show the workspace in preferences and in window title

New CSS properties for the Section title bar The Forms Section title bar can now be styled with special CSS properties for a Section:

CSS for Section

By using the same color for the background-color-titlebar and background-color-gradient-titlebar CSS property, like in the sample above, you get a solid background color.

For more information see bug 431635.

Support for multiple style sheet rules for the same selector The CSS engines now scans all style sheets and combines all matching rules into a common style. This allows plug-ins to override previously defined styles:

CSS override

For more information see bug 458342.

Improved look for Forms based editors in the dark theme Using the new CSS capabilities in M5 to style the Section, the dark theme has been improved.

The following image demonstrates the old look of the Section title bar, where the title bar had a hard coded white gradient.

Section in the dark theme before M5

The following image demonstrates the new default look in the platform dark theme.

Section in the dark theme with M5

For more information see bug 430205.

Provisional EHelpService service M5 provides the provisional help service EHelpService in the IEclipseContext. EHelpService is a thin wrapper to the WorkbenchHelpSystem in the Eclipse IDE and allows customers to provide their custom implementation in Eclipse RCP applications.
Improved reporting of UI freezes and potential deadlocks The interactive UI monitoring reporting has been improved to provide better error messages in case of potential deadlocks.

For more information see bug 458311.

Message registry Added support for binding control attributes for localization to a value of a messages class. By using such a binding, the dynamic update of widgets due to locale changes at runtime (Eclipse Translation Pattern) gets easier to implement, since the localized widgets (e.g. Labels, Buttons, etc.) are managed by the message registry.

To use the message binding for a messages class named MyMessages, you need to create a specialized BaseMessageRegistry class like shown below:

@Creatable
public class MyMessageRegistry extends BaseMessageRegistry<MyMessages> {

	@Override
	@Inject
	public void updateMessages(@Translation MyMessages messages) {
		super.updateMessages(messages);
	}
}

It can then be used like this:

@Inject
MyMessageRegistry registry;

@PostConstruct
public void init(Composite parent) {
	Label myFirstLabel = new Label(parent, SWT.WRAP);
	Label mySecondLabel = new Label(parent, SWT.NONE);
	Label myThirdLabel = new Label(parent, SWT.NONE);
	
	// bind myFirstLabel via method reference
	registry.register(myFirstLabel::setText, (m) -> m.firstLabelMessage);
	// bind mySecondLabel via method name
	registry.register(mySecondLabel, "setText", "secondLabelMe
	ssage");
	// bind myThirdLabel via property name
	registry.registerProperty(myThirdLabel, "text", "thirdLabelMessage");
}

The BaseMessageRegistry supports bindings for Java version before Java 8.

Text search speedup Text search has been sped up by a factor 3x-4x for full workspace searches on multi-core machines.

Text search now uses the JobGroup API added with Eclipse 4.5 (org.eclipse.core.runtime.jobs.JobGroup) to parallelize its processing.

For more information see bug 441016.

Transparent background for Control SWT has added support to set a Control's background as transparent. The Color class now supports specifying an alpha value (integer: 0 to 255) for transparency. Calling Control#setBackground(Color color) with a transparent color (color with alpha value '0'), sets the control's background as transparent.

List of new classes and APIs:

  • Class: org.eclipse.swt.graphics.RGBA
  • Constant: SWT.COLOR_TRANSPARENT - This is a default transparent color
  • Methods added in org.eclipse.swt.graphics.Color
    • public Color (Device device, int red, int green, int blue, int alpha)
    • public Color (Device device, RGB rgb, int alpha)
    • public Color (Device device, RGBA rgba)
    • public RGBA getRGBA ()
    • public int getAlpha ()

Note:

  • Currently, SWT honors only extreme values for alpha i.e, '0'(transparent) or '255'(opaque).
  • Setting transparent background color fails for some controls on all platforms, they show the default background color instead. For e.g. Text, Combo.
  • Setting transparent background color for some controls works on GTK3 only, it fails on other platforms. For e.g. Table, Tree.
For an example on using the new APIs, see Snippet365.

Snippet365 in action (Controls with SWT.COLOR_TRANSPARENT background and Shell with gradient background image)

Transparent Background on Control widgets

SWT Tools SWT Tools are now available in the Eclipse Platform p2 repository. SWT Tools provides tools for developing SWT itself (JNIGen) but also general purpose tools like Sleak (monitors the creation and disposal of SWT graphics resources) and SWT Spy (prints out information like style, layout and parent about the widget under the cursor).
PDE
Reload button added in target editor In the Target Editor, on the Locations section, there is a reload button that clears the cached p2 profile and then resolves the target. This button is helpful in scenarios where the target editor is left in inconsistent state due to issues like unstable network connection.

Target Editor Reload Button

Show view in plug-in perspective has changed In the Plug-in Development Perspective, the default Show View menu now has

Show View in PDE Perspective 45M5

In contrast, the default Show View menu earlier had

Show View in PDE Perspective 45M4 or before

The above features are just the ones that are new since the previous milestone build. Summaries for earlier Mars milestone builds: