= Platform

== Windows

=== Improved Tree and Table widget scaling at high DPI on Windows

Trees and Tables scale Checkboxes and expand/collapse buttons properly.

image::images/tree-table-scaling.png[Tree widget image before and after]

=== Dropped support for Windows XP

Eclipse/SWT has dropped support for the Windows XP Operating System and other Windows versions older than Windows Vista. Microsoft support for Windows XP, including security updates, ended in April 2014 and Windows XP has not been listed as a target environment for the Eclipse Platform for several years. 

== MacOS

=== Improved readability of default text font on macOS

Reading the source code is the task developers perform the most during coding. So text editors must assist the user as good as possible with that.

On macOS Eclipse Photon now uses the "Menlo" font as the default text font, which does also contain bold font faces. This increases readability in source code editors using bold font faces: 

image::images/Menlo.png[image]

=== Dark buttons on Mac

The background color of a button can now be styled on the Mac. This is used to style the buttons in the dark theme.

image::images/dark-mac-buttons.png[image]

=== Animated waiting cursor on macOS

During long taking UI actions the cursor switches to a waiting cursor. On macOS this used to be a static black/white circle. From Eclipse Photon the macOS system's busy cursor is changed to a spinning blue ball (also called beach ball).

image::images/macos-wait-cursor.png[image]

== GTK3

=== Improved caret performance on GTK3

Caret performance on the SWT GTK3 port has been enhanced to allow for smoother drawing. Previously the caret stuttered when moved or when other controls in the same shell were manipulated. Now the caret moves smoothly and blinks at a consistent rate.

=== Accessibility support on GTK3

Significant improvements have been made in the *Accessibility* support on the SWT Linux/GTK3 port. Users are able to use assistive technologies seamlessly with SWT GTK3, just as they were able to with GTK2, and without any hangs or crashes.

== GTK_THEME override support for SWT-GTK3

Eclipse SWT on GTK3.14+ now supports the use of GTK_THEME as an environment variable. SWT applications are correctly styled when using the GTK_THEME environment variable to override the system theme, and/or specify a dark variant. Below are the before and after screenshots of ControlExample running with GTK_THEME=Adwaita:dark set.

Before:

image::images/gtk3-theme-override-support-before.png[before]

After: 

image::images/gtk3-theme-override-support-after.png[after]

=== Improved memory usage on SWT-GTK3

Eclipse SWT on GTK3 has reduced memory usage after resolving a memory leak in setBackground/setForeground Color machinery. The leak was approximately 50MB/hour and affected clients running SWT on GTK3.14+.

== Editors

=== Manage associations of content types with editors

The _Content Types_ preference page was extended to allow to view, create and remove associations with editors.

image::images/content-type-editor-association.png[image]

Using the content type to define editor association is to be preferred over using the _File Associations_ preferences.

=== Associate content type with a file name pattern

From the *Preferences > General > Content Types* preference page, you can now associate a content type with a file name pattern and use `?` or `*` wildcards at any place in that pattern (respectively to match any character or any string). 

image::images/wildcard-content-type-association.png[image]

=== Browser Editor can toggle auto-refresh

The Browser Editor now contains a drop down option for enabling auto-refresh for local pages. When enabled, the Browser Editor will automatically refresh if the opened file is edited and saved.

image::images/browser-autorefresh.png[image]

=== CodeMining support with SourceViewer

A *code mining* represents a *content* (ex: label, icons) that should be **shown along with source text**, like the number of references, a way to run tests (with run/debug icons), etc. The main goal of code mining is to help developer to understand more the written/writing code

A code mining is represented by `org.eclipse.jface.text.codemining.ICodeMining` which are provided by `org.eclipse.jface.text.codemining.ICodeMiningProvider` The `org.eclipse.jface.text.source.ISourceViewerExtension5` provides the capability to register `org.eclipse.jface.text.codemining.ICodeMiningProvider` and update code minings.

The example http://git.eclipse.org/c/platform/eclipse.platform.text.git/tree/org.eclipse.jface.text.examples/src/org/eclipse/jface/text/examples/codemining/CodeMiningDemo.java[CodeMiningDemo] draws *classes references / implementations* code minings:

image::images/codemining-sourceviewer-support.png[image]

=== Detach view or editor via its context menu

You can now detach a view or an editor via its context menu.

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

== Dark Theme

=== Improved text operation icons for the dark theme

The block selection, word warp and show whitespace icons have been adjusted to look good in the dark theme.

Before: 

image::images/old-text-toolbar-entries.png[before]

After: 

image::images/new-text-toolbar-entries.png[after]

=== Improved popup dialogs for the dark theme

Popup dialogs as for example the platform's update notification popup now uses a dark background and a light foreground color in the dark theme.

image::images/update_dialog_dark.png[Update dialog in dark theme]

=== Improved text color in text editor for the dark theme

The text editor now uses an improved font color in the dark theme so that you can read better.

image::images/text-editor-dark-font-new.png[after]

=== Improved coloring of links in code element information in the dark theme

The colors of links in code element information controls now take the color settings of the "Hyperlink text color" and the "Active hyperlink text color" from the "Colors & Fonts" preference page into account. The readability in the dark theme has been improved a lot by this.

Before: 

image::images/element_info_before.png[before]

After:

image::images/element_info_after.png[after]

=== Improved the text editor's expand and collapse nodes for the dark theme

The collapse and expand nodes in the text editor's left hand side ruler were improved for the dark theme.

image::images/expand_old_new.png[old and new version of the icons]

=== Improved the generic editor's mark occurrences annotation color for the dark theme

The occurrences annotation marker color in the generic editor's left hand side ruler were improved for the dark theme. Image is zoomed for better visibility.

image::images/annotations.png[old and new version of occurrence annotation]

=== Canvas elements are styled in the default dark theme

The default dark theme now contains CSS for styling Canvas elements by default.

Old:

image::images/color-fonts-canvas-old.png[image]

New:

image::images/color-fonts-canvas-new.png[image]

=== Consistently use blue color for links in the dark theme

Links now consistently use a light blue color in the dark theme. One example where this was very visible is PDE's manifest editor:

image::images/links_in_dark_theme.png[PDE's mantifest editor showing before and after]

== Other

=== Open resource dialog highlights matching characters

The matching characters from the filter are now highlighted in the Open Resource dialog.

image::images/open-resource-highlight-matching.png[image]

=== Import/export preferences from preference dialog

Easily accessible buttons for opening the *Import/Export* preferences wizards have been added to the lower left corner of the *Preferences* dialog. The wizards are still accessible through the *File > Import...* and *File > Export...* wizards.

image::images/preference-import-export.png[image]

=== Expanded Highlighting in Open Resource Dialog

The Open Resource dialog now shows you how the search term matches the found resources by highlighting the names based on camel-case and pattern ( * and ? ) searches.

image::images/open-resource-highlight.png[image]

=== Undo/Redo Toolbar Buttons

The main toolbar can now show Undo and Redo buttons.

image::images/undo-redo-toolbar.png[image]

The buttons are not available by default. They can be added via *Window > Perspective > Customize Perspective...*:

image::images/undo-redo-customize.png[image]

=== QuickAccess matches Preference pages by keyword

QuickAccess (`Ctrl+3`) now also returns Preference pages that have a keyword matching user input.

image::images/quickAccessMatchesPrefKeywords.png[image]

=== Perfect matches appear first in selection dialogs

Within selection dialogs, including *Open Type* and *Open Resource*, perfect matches appear as the first result, ensuring that users no longer have to scroll through historical matches and the alphabetically sorted list to find their desired result.

image::images/perfect-match-first-search.png[image]

=== Delete nested projects

The *Delete Resources* dialog now shows a *Delete nested projects* option to delete all projects whose location on file system is a descendant of one of the selected projects.

image::images/delete-nested-projects.png[image]

=== Debug perspective layout changed

Default Debug perspective layout changed, see screenshot below. The aim is to give the editor area more space and to show more relevant information without scrolling. Display view, Expressions view and Project Explorer are now shown by default, Problems view replaces Tasks.

image::images/debug_perspective_changes.png[image]

=== Workers use job names as thread names

The jobs framework now uses `Job` names for `Worker` thread names. Previously all running `Worker`'s got enumerated thread names, without any hint what the current `Worker` is actually doing:

image::images/worker_obfuscated.png[Worker names before M5]

Now the `Job` name is added next to the `Worker` name:

image::images/worker_deobfuscated.png[Worker names after M5]

=== Right click option to export Launch Configurations

The Export Launch Configurations Wizard is now accessible through the right click menu on Launch Configurations. This wizard is still available with *File > Export > Run/Debug > Launch Configurations*

image::images/right-click-export-launch-config.png[image]

=== Flat layout in tabbed properties view

In the light theme the tabbed properties view now completely uses the same flat styling as the form-based editors do.

image::images/prop_light.png[image]

=== Open/Close Projects by Working Set in Project Explorer

The ability to Open, Close, Close Unrelated, and Build all appropriate projects in a Working Set has been added to the right click menu of Working Sets in the Project Explorer.

image::images/open_close_workingsets.png[image]

=== Modify project natures

The Project Properties dialog now features a page to add or remove natures on a project.

image::images/editNatures.png[image]

As mentioned on the page, some natures may not properly handle manual addition/removal, so using this can lead to some inconsistencies in those cases.

=== Possibility to configure the color of text editor's range indicator

The text editor's range indicators's color can now be configured via the *Colors and Fonts* preference page.

image::images/range_ind_pref.png[Range indicator in the Colors and Fonts preference page]

=== Styling for text editor's range indicator

The Eclipse default dark theme now includes styling for the text editor's range indicator.

image::images/range_ind_dark.png[Range indicator in the dark theme]

=== Allow workspace to build projects in parallel

The *Workspace* preference page now has a new option to allow the workspace to build projects in parallel:

image::images/preferences-simultaneous-builds.png[preference page screenshot]

Under some safe circumstances, the workspace can now choose to build independent projects in parallel. In such case, the maximum amount of jobs/threads that will be running builds in parallel will be controlled by this preference. A value of `1` will indicate that build won't be parallelized keeping the legacy behavior.

The optimal value will depend on the machine and workspace projects specificities. Recommendation is to try relatively low values (such as `4`) first which will allow to save time, when allowed by projects, while not risking the CPU overload.

=== Refresh on access on by default

For years the Eclipse IDE is shipping with a customization that files are automatically refreshed if the user accesses them. Other Eclipse based tools like the Spring Tools Suite were missing this customization, so now they do not have to manually instruct their IDE to see the update.

=== Open resource dialog always shows the paths

You can now use the Open Resource dialog to see the file paths. Previously it only showed the paths if there were duplicate entries.

image::images//open-resource-dialog.png[after]

=== Improved the generic editor's mark occurrences annotation label

The occurrences annotation marker label has been improved to show the word occurring rather than the line. In the image below, see the difference between old label at the top and the new one at the bottom.

image::images/annotationlabel.png[old and new version of occurrence annotation]