
[[platform]]
== Eclipse Platform

[[platform-editors]]
=== Editors

==== An easily-extensible Generic Text Editor added

A new extensible *Generic Editor* has been added which makes it easier to implement an editor for new languages or new content types. It reuses the existing Eclipse IDE editor infrastructure. The generic editor can be extended using extension points instead of implementing an editor to supply required functionality.

Examples of some Eclipse projects that have adopted the generic editor:

* https://projects.eclipse.org/projects/technology.lsp4e[Eclipse LSP4E]: contributes content-assist and hover to generic editor when a language server is available.
* https://projects.eclipse.org/projects/technology.tm4e[Eclipse TM4E]: contributes syntax highlighting to the generic editor when a TextMate grammar is present.

==== Generic editor can now read patch and diff files

An extension was provided to the generic editor so that it now can provide syntax highlighting for files with the *.patch* or *.diff* extension. Right-click the file and choose *Open with > Generic Text Editor* to see the editor in action.

image::images/patch-diff-editor.png[image]

==== Images are opened in the Eclipse IDE

Image files are now opened directly in the Eclipse IDE by default. The Internal Web Browser has been registered as default editor for files with the png, jpg, jpeg, gif, bmp, and ico extensions.

image::images/image-opened-in-eclipse.png[image]

Use *Open With > System Editor* to open files in the default external program.

==== Editor selection dialog: Use for all

The *Editor Selection* dialog now offers a one-click option for choosing the editor that should open all files with the same extension in the future.

Example when selecting "file.xyz" and choosing *Open with > Other...*:

image::images/editor-selection-dialog-one-click-for-all-files-by-type.png[Highlighted checkbox: Use it for all '*.xyz' files]

==== Show Annotation renamed to Show Revision Information

For files checked out from CVS, the *Show Annotation* command in the text editor's vertical ruler and in the *Team* menu has been renamed to *Show Revision Information*.

This change has been synchronized with the Eclipse Git team provider.

==== Configure left and right sides in Compare editors

*Compare* editors now offer a button **Swap Left and Right View**.

image::images/compare-editor.png[image]

The direction of comparison is preserved between invocations of the *Compare* editor and can also be changed in the *Compare/Patch* preference page.

image::images/compare-preferences.png[image]

==== Ctrl+E command improvements

You can use the *Quick Switch Editor* (**Ctrl+E**) command to list and filter all the open editors. This works now also if you have selected a view in the editor area. You can filter the list using wildcards, and select editors using mouse or keyboard.

Now you can also cycle through the list by pressing *Ctrl+E* again. Or use *Arrow Up/Down* as before.

image::images/ctrl-e-improvements.png[image]

[[platform-debug]]
=== Debug

==== "Launch Group" launch configuration type

The new *Launch Group* launch configuration type allows you to launch multiple other launch configurations sequentially, with configurable actions after launching each group member:

* None: Continue launching the next member right away
* Wait until terminated: Continue launching the next member only after this member has terminated
* Delay: Delay launching the next member for a given amount of seconds.
* Wait for console output (regexp): Allows to delay further processing of launch group elements until a certain output (matching a regular expression) appears on the console of the given group element.
* Adopt launch if already running: Allows to control the behaviour of the group when the launch configuration referenced by the launch group element is already running (no matter who launched it). If checked, the launch configuration will not be launched again if it is running already. The existing launch will be adopted by the group (i.e. terminating the group will also terminate this launch). Any configured post launch action will still be executed!

[NOTE]
====
Note that this is similar to the launch group in CDT, but with additional features.
====

New launch groups can be created via the *Run > Run Configurations...* or *Run > Debug Configurations...* dialogs. 

image::images/launch-groups.png[image]

==== "Terminate and Relaunch" from Run menu, context menu and tool bar

A *Terminate and Relaunch* option is now available while launching from Run menu, context menu and tool bar. The default setting is to launch without terminating previous launches. To enable automatic termination, select the option *Terminate and Relaunch while launching* on *Preferences > Run/Debug > Launching*.

The behavior not selected on the preference page can also be activated on-demand by holding the *Shift* key while launching the configuration from history.

image::images/launch-preference-terminate-relaunch.png[image]

==== Sort Breakpoints by Creation Time

In the *Breakpoints* view's view menu, a new *Sort By* option has been added. This allows sorting by two ways:

* **Name**: Current default order, sorts by the displayed name
* **Creation Time**: Newly created breakpoints will be shown on top

image::images/breakpoints-sort-by.png[image]

==== Breakpoints in Overview Ruler

*Breakpoints* are now visible in the *Overview Ruler* by default.

image::images/breakpoint-overview-ruler.png[image]

To configure the rendering of annotations, right-click the overview ruler and choose **Preferences...**. This directly opens the preference page **General > Editors > Text Editors > Annotations**.

[[platform-views-dialogs-and-toolbar]]
=== Views, Dialogs and Toolbar

==== Improved string matching in Quick Access

You can now search for partial descriptions in *Quick Access* (**Ctrl+3**). The search result matches space-separated words in the search string. For example, searching for "clone repo", will match the "Clone a Git Repository" command.

image::images/quick-access-better-string-matching.png[image]

The improved string matching works also in case of parenthesis, or when the search string matches the category name.

image::images/quick-access-better-string-matching-extended.png[image]

==== Wildcards in Quick Access

You can now use *pass:[*]* and *?* as wildcards to filter *Quick Access* (**Ctrl+3**) items. The match ranges are displayed in bold.

image::images/quick-access-wildcard-filter.png[image]

==== Quick Access search text in Help

You can now *Search in Help* after you've entered text in the *Quick Access* dialog. The option is shown when the filter text is longer than three characters, and it is always added at the end of the results.

*Search in Help* using the new Quick Access dialog:

image::images/quick-access-search-in-help.png[image]

*Search in Help* using the standalone dialog:

image::images/quick-access-search-in-help-standalone.png[image]

==== Filter previous choices in Quick Access

The *Quick Access* (**Ctrl+3**) result list does not show duplicate elements anymore. Now, if a search result element is already in the "Previous Choices" category, it is no longer shown in another category.

image::images/quick-access-filter-previous-choices.png[image]

==== Command icons shown in Quick Access

*Quick Access* (**Ctrl+3**) now shows the icon for a *Command* if available. Otherwise, it still shows the default blue ball.

image::images/command-image-visible-in-quick-access.png[image]

==== Show/hide Status Bar

You can now hide and show the bottom status bar via menu: *Window > Appearance > Hide (Show) Status Bar*.

image::images/toggle-status-bar-from-menu.png[image]

In Quick Access, the command is called **Toggle Statusbar**.

==== Simplified filters dialog for Problems, Bookmarks, and Tasks views

The *Filters* dialog of the Problems, Bookmarks, and Tasks views has been simplified. If you select several configurations, items matching any of these configurations will be shown.

Old dialog in Problems view:

image::images/old-problems-filter.png[image]

New dialog in Problems view:

image::images/new-problems-filter.png[image]

==== Copy Details submenu for Problems and Tasks views

You can copy the description or the resource qualified name of an error, warning, or task into the clipboard using commands in the *Copy Details* context menu.

image::images/problems-and-tasks-copy-details-submenu.png[image]

==== Filter dialog for Problems, Bookmarks, and Tasks views easier to reach

The *Filters* dialog is now accessible from the toolbar of the Problems, Bookmarks, and Tasks views.

Previously, it was only accessible via view menu > **Configure Contents...**:

image::images/old-filter-location.png[image]

Now also as a toolbar button:

image::images/new-filter-location.png[image]

==== "Copy Build Id Information" in About dialog

In the *About* dialog, you can use the context menu to copy information about your Eclipse IDE installation.

image::images/about-dialog-get-build-information.png[image]

The *Copy Build Id Information to Clipboard* command copies the product name, version, build id, OS, windowing system, and additional OS-specific info like the GTK or WebKit versions.

The command can also be invoked via Quick Access *Quick Access* (**Ctrl+3**).

==== "Filters and Customization..." in Project Explorer

The *Customize View...* command in the **Project Explorer**'s view menu has been renamed to *Filters and Customization...*

image::images/filters-and-customization-menu-item.png[image]

==== "Recently used filters" feature in Project Explorer

The *Project Explorer* view now has a *Recent Filters* menu that shows the most recently used filters.

image::images/recent-filters-project-explorer.png[image]

==== "Other Projects" working set in Project Explorer

If you're using the *Project Explorer* and working sets as top-level elements, the *Top Level Elements* view menu now provides a way to show an *Other Projects* group for projects that are not in one of the currently active working sets.

image::images/other-projects-ws.png[image]

==== Perspective descriptions in Open Perspective dialog

You can now see the description for a perspective (if provided by the contributing plug-in) by pressing *F2* in the *Open Perspective* dialog.

image::images/open-perspective-dialog-description.png[image]

==== Maximize and Minimize via *Window > Appearance menu*

The *Maximize* and *Minimize Active View or Editor* menu items have been moved to the *Window > Appearance* menu. They used to be in the *Window > Navigate* menu.

==== 'Switch Workspace' and 'Restart' menu items

The *Switch Workspace* and *Restart* menu items are now at the bottom of the *File* menu: just above the *Exit* item on Windows and Linux, and as last menu items on the Mac.

image::images/switch-workspace-restart-menu-items.png[image]

==== Improved exit and restart dialogs

The exit and restart dialogs now use verbs instead of OK/No/Yes, which makes the dialogs more direct and specific.

image::images/confirm-exit-dialog-small.png[image]

image::images/p2-restart-dialog-small.png[image]

==== Installation Details menu entry removed

The *Help > Installation Details* menu entry has been removed. You can access this dialog via *Help > About > Installation Details* or via *Quick Access* (**Ctrl+3**) and then typing "Installation Details".

[[platform-preferences]]
=== Preferences

==== Window title configuration

The title window is now simpler and you can configure it from Preferences. By default the title displays **workspace name**, *editor path* and **product name**.

image::images/simplified-window-title.png[image]

You can now use *Preferences > Workspace* to choose what to display in the window title: **workspace name**, **perspective name**, **workspace path**, and **product name**.

image::images/improved-window-title.png[image]

==== Option to copy your preferences during workspace switch

You can now copy your preferences during a switch to a new or existing workspace.

image::images/copy-preferences-ws-switch.png[image]

==== Option to disable Problems view decoration on startup

By default, the *Problems* view icon no longer shows an errors/warnings overlay after startup, unless the Problems view is on top of the view stack. To enable the errors/warnings overlay also if the Problems view is minimized or not on top, a new *Show Problems view decorations on startup* option has been added to *Preferences > General > Startup and Shutdown*. By default, this preference is disabled.

image::images/problems-view-startup-preference.png[image]

==== "Always run in background" enabled by default

The *Always run in background* preference is now enabled by default. If you prefer to see a progress dialog for long-running operations, you can disable this option on the *General* preference page.

==== External browsers on Linux

On Linux, the list of recognized external browsers has been updated to include:

* *Firefox* (/usr/bin/firefox)
* *Chrome* (/usr/bin/google-chrome)
* *Chromium* (/usr/bin/chromium-browser)
* *Epiphany/Gnome Web* (/usr/bin/epiphany)
* *Konqueror* (/usr/bin/konqueror)

image::images/browsers-linux-update.png[image]

[[platform-themes-and-styling]]
=== Themes and Styling

==== New default styling for form-based user interfaces

The default styling for form-based user interfaces was changed to use a flat, gray style. This change was inspired by the popular "Clean Sheet" plug-in. Below you see screenshots of the MANIFEST.MF editor and the Git Staging view in this new design.

image::images/forms-grey-styling1.png[image]

image::images/forms-grey-styling2.png[image]

==== Support for extending existing CSS preference nodes

CSS definitions for preferences can now use pseudo selectors. This allows that other plug-ins extend preference CSS nodes, instead of overriding them. This makes the default dark theme much more consistent and usable.

Example styling with Git integration installed before this development:

image::images/code-completion-dark-theme-old.png[image]

image::images/old-search-result-hightlight-color.png[image]

Example styling with EGit installed after this development:

image::images/code-completion-dark-theme-new.png[image]

image::images/new-search-result-hightlight-color.png[image]

==== Default styling for table and tree headers

The default dark theme includes styling for the table and tree headers on all supported platforms.

image::images/styled_table_header_dark_theme.png[image]

image::images/styled_tree_header_dark_theme.png[image]

==== Colors in interactive popups

Interactive popups like JDT's *Quick Outline* don't use the platform's tooltip colors any more, since those were sometimes hard to read.

Old style:

image::images/old-popup-color-constants.png[image]

New style:

image::images/new-popup-color-constants.png[image]

==== Fixed Progress view colors for the dark theme

The *Progress* view has been adjusted for the dark theme.

Before:

image::images/old-progress-view.png[image]

After:

image::images/new-progress-view.png[image]

==== Improved default styling for the toolbar

The styling of the window toolbar has been improved. On Windows, the toolbar color is now consistent with the color of the perspective switcher.

image::images/css-styles-windows-toolbar.png[image]

On Linux and Mac, the separator line was removed, which gives you a few more pixels on Linux and removes a yellow line on the Mac.

image::images/css-styles-mac-toolbar.png[image]

==== Reduced window margins

The window margins have been reduced to provide more space in the IDE.

Old style:

image::images/window-margins-old.png[image]

New style (see the reduced space below the Quick Access box).

image::images/window-margins-new.png[image]

==== More high resolution images

More images in the old GIF format were replaced by images in the PNG format. In addition, high resolution images where added. 

As PNG can handle transparency much better than GIF, the ugly white borders around shapes visible in the dark theme are now gone for these icons.

To see their full beauty, a high-DPI monitor (e.g. a Retina Mac) is needed. The lower part of the screenshot shows the wizard banner image of the *Import* dialog in high resolution.

image::images/import-before-and-after.png[image]

The right part of the screenshot shows all the icons in high resolution.

image::images/customize-navigator-before-and-after.png[image]

[[platform-general-updates]]
=== General Updates

==== Eclipse IDE as Apple disk image

Eclipse IDE, Eclipse SDK, and Eclipse Platform Runtime products are now delivered as signed Apple disk images(dmg) on Mac OSX.

==== Ant 1.10.1

The Eclipse IDE has adopted Ant version 1.10.1.

==== Launching on Java 9

If you are launching eclipse with a Java 9 build (either via system or via -vm option in eclipse.ini file) then, in `eclipse.ini` file, after `-vmargs` line add `--add-modules=ALL-SYSTEM`. This should launch eclipse. If you get an `IllegalAccessException` or `InaccessibleObjectException`, you can add `--permit-illegal-access` additionally after the `-vmargs`. 

e.g.

 ...
 --launcher.appendVmargs
 -vmargs
 --add-modules=ALL-SYSTEM
 --permit-illegal-access
 ...
 
The switches can be entered on the command line after `-vmargs`, e.g.

 $ ./eclipse -vm *[path to jdk9]*/bin -vmargs --add-modules=ALL-SYSTEM --permit-illegal-access

[WARNING]
====
These settings are specific the OpenJDK Java 9 implementation and are subject to change. These options will likely prevent other implementations of Java from starting successfully.
====

For more information, see https://wiki.eclipse.org/Configure_Eclipse_for_Java_9[Configure Eclipse for Java 9].

[[platform-linux]]
=== Linux/GTK

==== GTK tree collapse/expand key bindings

On GTK+ 3.6 and later, the *Left* and *Right arrow* keys now collapse and expand the current tree item (in addition to the GTK+ default *pass:[-]*/*pass:[+]* key bindings).

==== DnD source image for List widget (GTK only)

When items are being dragged from a `List` widget, their content now moves with the mouse cursor.

image::images/listdnd.png[image]

==== Consistent heap status colors under Linux

The heap status had poor contrast on Linux since GTK3.04. This has been resolved for the heap status to look consistent across all platforms.

image::images/heapstatusfix.png[image]

==== Reduced TabItems padding under GTK+

On GTK+ 3.20 and later, the padding around TabItems has been reduced.

image::images/reduced-gtk-tabs-padding.png[image]

==== GTK theme system property

SWT now stores the GTK theme used at launch time in a system property, `org.eclipse.swt.internal.gtk.theme`. This property can help with troubleshooting issues that are specific to certain themes. It can be viewed in *About > Installation Details > Configuration*.