= 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]