Eclipse Project Neon (4.6) M4 - New and Noteworthy

Here are some of the more noteworthy things available in the Neon milestone build M4 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.

Word wrap in text editors A Toggle Word Wrap button has been added to the workbench toolbar. Shortcut: Alt+Shift+Y.

By default, text editors are opened with word wrap disabled.

Commands and shortcuts to zoom in text editors In text editors, you can now use Zoom In (Ctrl++ or Ctrl+=) and Zoom Out (Ctrl+-) commands to increase and decrease the font size.

Like a change in the General > Appearance > Colors and Fonts preference page, the commands persistently change the font size in all editors of the same type. If the editor type's font is configured to use a default font, then that default font will be zoomed.

Pinch to zoom in text editors To temporarily zoom the editor font in text editors, use a "pinch" gesture on a touchpad. Put two fingers on the touchpad and move them apart or together.

To reset the original font size, rotate two fingers by at least 45°, or close and reopen the editor (Navigate > Back).

Those gestures only affect the current editor. Changes are neither propagated to other editors nor persisted.

Note: SWT currently only supports these gestures on OS X and on Windows systems that use the native multi-touch support. Touchpads that emulate mouse move/scroll events don't support gestures. Gesture support on GTK is not implemented yet.

Eclipse workspace launcher now fully functional on Wayland Eclipse has been updated to include improved support for the Wayland display manager.

Previously, launching Eclipse on Wayland was possible only if not using the native launcher due to a bug that would cause the workspace launcher to hang and eventually crash. This has now been fixed, allowing Eclipse to launch on Wayland just as it would on X11.

"New..." button for creating Working Sets A New... button has been added to the WorkingSetConfigurationBlock:

This saves quite a few clicks when creating new Working Sets.

Platform Developers
ISideEffect databinding API org.eclipse.core.databinding.observable.ISideEffect allows you to react to changes in observables without attaching listeners. For example, the following code will bind the text "Your username is: xxxx" to a label and will update the label whenever the username changes.
        IObservableValue<String> username = ...
        Label yourUsername = ...

        ISideEffect sideEffect = ISideEffect.create(
        	() -> {return "Your username is: " + username.getValue();},
ISideEffects will automatically determine which observables to listen to, can react to changes in multiple observables, and will avoid performing excessive updates if the observables fire many change events in a short period of time.
New API added to Control for more efficient processing of layout requests SWT has added a new requestLayout() method to the Control and Composite classes. This method does essentially the same thing as
 widget.getShell().layout(new Control[] {widget}, SWT.DEFER); 

The snippet, above, is currently the most efficient method of triggering layouts in SWT, but most developers are unaware of this. Most Eclipse developers invoke Composite.layout(), which is worse in the sense of performance. This new API is intended to make it easier for developers to adopt the more efficient mechanism as opposed to using Composite#layout().

However, be aware that changing existing invocations of layout() to requestLayout() may break code that assumes that controls are completely sized and positioned at a certain point in time.

Dark theme styling for StatusDialog The org.eclipse.jface.dialogs.StatusDialog and its subclasses are now styled in the dark theme. Before this change, the message area was hard-coded to white.
APIs changed to varags A few platform APIs have been changed to allow varargs invocation:
  • org.eclipse.jface.viewers.StructuredViewer#setFilters(ViewerFilter...)
  • org.eclipse.jface.databinding.viewers.ViewerSupport#bind(*, IValueProperty...)
  • org.eclipse.swt.widgets.Combo#setItems(String...)
New API: MApplication#getCommand(String) MApplication#getCommand(String) is a faster way to access a command directly via id. This new API is used by the Eclipse IDE to speed up its application launching.
API for switching perspectives The EPartService#switchPerspective(String/MPerspective) API has been added.
New API for accessing the application context The IEclipseContext of the MApplication object can now be directly accessed via a child context, via the IWorkbench.APPLICATION_CONTEXT_KEY key.
      // this is a child context
      IEclipseContext ctx =...;
      // get the application context
      IEclipseContext applicationContext = ctx.get(IWorkbench.APPLICATION_CONTEXT_KEY);
JFace databinding enhancements The new static IConverter.create(Object, Object, Function) allows to create a converter using a lambda expression. On a similar note, the static UpdateValueStrategy.create(IConverter)has been added.
A new style constant to indicate Bidi "auto" text direction A new text direction constant SWT.AUTO_TEXT_DIRECTION has been introduced to indicate Bidi "auto" text direction. This is now also supported by the StyledText control.

Auto text direction was introduced in the Mars (4.5) release as a bitwise OR of SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT and it was already implemented in all native controls. Now, SWT.AUTO_TEXT_DIRECTION is a dedicated SWT constant for this.

Behavior: When SWT.AUTO_TEXT_DIRECTION is set, the text direction is derived from the direction of the first strong Bidi character.

Note: This is a HINT and it works on Windows only.

Usage: control.setTextDirection(SWT.AUTO_TEXT_DIRECTION);

Rename options The Refactor > Rename popup now shows an Options... link which opens the full Rename dialog that provides more options like renaming a field's getter and setter methods.

The dialog can still be opened via the menu button in the popup or by pressing Alt+Shift+R again. The in-place mode can be disabled entirely via Preferences > Java > Rename in editor without dialog.
Plug-in template with an Eclipse 4 SWT view In the plug-in templates, it is now possible to choose: plug-in with an Eclipse 4 SWT view.

To get this template, create a new plug-in project and answer 'no' to the question: Would you like to create a Rich Client Application?

Then, the 'Plug-in with an Eclipse 4 SWT View' template will be proposed in the list:

The generated plug-in will contain a model fragment with a sample E4 view that:

  • manages the single and the multiple selection using the injection mechanism
  • is added to any E3 compat or pure E4 application thanks to the 'xpath:/' notation
  • is present in the Window > Show view dialog
Plug-in template with an Eclipse 4 Handler In the plug-in templates, it is now possible to choose: plug-in with an Eclipse 4 handler.

To get this template, create a new plug-in project and answer 'no' to the question: Would you like to create a Rich Client Application?

Then, the 'Plug-in with an Eclipse 4 Handler' template will be proposed in the list:

The generated plug-in will contain a model fragment with a sample E4 hello world command that appears:

  • in the 'E4 Handler' main menu
  • in the 'E4 Handler' submenu in any popup menu
PDE perspective uses Project Explorer The PDE perspective now uses the Project Explorer instead of the Package Explorer view by default.
Import and export packages in Plug-in Manifest editor supports prefix wildcard matching by default The import and export package dialog in the Plug-in Manifest editor uses wildcards by default. For example, to add as package dependency, you can type in services instead of *services.
Plug-in Image Browser Filtering In Plug-in Image Browser view, it is now possible to filter icons by their full path or name.

Use the new ImageFilter field to provide the search criteria (? = any character, * = any string) to find the icons with matching path or name.

Startup time improvements Equinox applied various improvements that reduce the startup time for the Eclipse IDE and other OSGi-based applications.
Export Preferences uses alphabetic order When you export your preference settings via File > Export... > Preferences, the preferences are now sorted alphabetically in the resulting file.
Equinox defines Declaratives Services via Require-Capability Following the OSGi specification, the Equinox Declarative Services implementation defines its capabilities via Require-Capability. This will allow the Eclipse IDE to change its dependencies and make the Declarative Services implementation exchangeable.

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