<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="copyright" content="Copyright (c) Eclipse contributors and others 2017. This page is made available under license. For full details, see the LEGAL section in the documentation that contains this page."/>
<meta http-equiv="Content-Language" content="en-us"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="STYLESHEET" href="../book.css" type="text/css"/>
<style type="text/css">
body {max-width: 900px;}
table.news col.title {width: 30%;}
/*img {max-width: 520px;}*/
table.news {table-layout: fixed; border-collapse: collapse; width: 100%;}
table.news td {border-top: solid thin black; padding: 10px; overflow: visible;}
table.news tr {vertical-align: top;}
table.news tr td.section {font-size: 20px; font-weight: bold;}
table.news tr td.title {vertical-align: top; font-weight: bold;}
table.news tr td.content {vertical-align: top;}
ul {padding-left: 13px;}
</style>
<title>Eclipse Platform What's New in Neon</title>
</head>

<body>
<h2>What's New in Oxygen</h2>
<p>Here are descriptions of some of the more interesting or significant changes 
made to the Eclipse Platform for the Oxygen (4.7) release of Eclipse.</p>
<p>
Plug-in developers will also be interested in the corresponding 
<a href="../../org.eclipse.platform.doc.isv/whatsNew/platform_isv_whatsnew.html">What's new</a>
document in the plug-in developer's guide.</p>
<p>We also recommend to read the <a href="../tips/platform_tips.html">Tips and Tricks</a>.</p>
<br/>

<table class="news">
<colgroup>
  <col class="title" />
  <col />
</colgroup>
<tbody>

  <!-- ******************* Editors ************************************* -->
  <tr>
    <td id="Editor" class="section" colspan="2">
    <h2>Editors </h2>
    </td>
  </tr>

  <tr id="generic-editor">
    <td class="title">An easily-extensible Generic Text Editor added</td>
    <td class="content">
        A new extensible <b>Generic Editor</b> has been added which makes it easier 
        to implement an editor for new languages or new content types. It reuses 
        the existing Eclipse editor infrastructure. The generic editor can be extended using 
        extension points instead of implementing an editor to supply required functionality.
        <p>
         Examples of some eclipse projects that have adopted the generic editor:
        </p>
        <ul>
         <li>
          <a href="https://projects.eclipse.org/projects/technology.lsp4e" target="_blank">Eclipse LSP4E</a>: contributes content-assist
          and hover to generic editor when a language server is available.</li>
         <li><a href="https://projects.eclipse.org/projects/technology.tm4e" target="_blank">Eclipse TM4E</a>: contributes syntax highlighting
          to the generic editor when a TextMate grammar is present.</li>
        </ul>
      </td>
    </tr>

  <tr id="patch-diff-generic-editor-extension">
    <td class="title">Generic editor can now read patch and diff files</td>
    <td class="content">
      An extension was provided to the generic editor so that it now can provide syntax highlighting for files with the <b>.patch</b>
      or <b>.diff</b> extension. Right-click the file and choose <b>Open with > Generic Text Editor</b> to see the editor in action.
      <p>
      	<img src="images/patch-diff-editor.png" alt="" />
      </p>
    </td>
  </tr>

  <tr id="open-images-in-eclipse">
    <td class="title">Images are opened in the Eclipse IDE</td>
    <td class="content">
      Image files are now opened directly in Eclipse by default.
      The Internal Web Browser has been registered as default editor for files with the png, jpg, jpeg, gif, bmp, and ico extensions.
     <p>
        <img src="images/image-opened-in-eclipse.png" alt=""/>
     </p>
     Use <b>Open With > System Editor</b> to open files in the default external program.
    </td>
  </tr>

  <tr id="editor-selection-dialog-one-click">
    <td class="title">Editor selection dialog: Use for all</td>
    <td class="content">
      The <b>Editor Selection</b> dialog now offers a one-click option for choosing the editor that
      should open all files with the same extension in the future.
      <p>
      Example when selecting "file.xyz" and choosing <b>Open with &gt; Other...</b>:
      </p>
      <p>
        <img src="images/editor-selection-dialog-one-click-for-all-files-by-type.png" alt="Highlighted checkbox: Use it for all '*.xyz' files"/>
      </p>
    </td>
  </tr>

  <tr id="show-revision-history-in-ruler">
    <td class="title">Show Annotation renamed to Show Revision Information</td>
    <td class="content">
       For files checked out from CVS, the <b>Show Annotation</b> command in the text editor's vertical ruler and in the <b>Team</b> menu
       has been renamed to <b>Show Revision Information</b>.
       <p>
         This change has been synchronized with the Eclipse Git team provider, so future versions of EGit will use the same name.
       </p>
    </td>
  </tr>

  <tr id="configurable-left-right-in-compare-editor">
    <td class="title">Configure left and right sides in Compare editors</td>
    <td class="content">
      <b>Compare</b> editors now offer a button <b>Swap Left and Right View</b>.
      <p>
        <img src="images/compare-editor.png" alt=""/>
      </p>
      <p>
      The direction of comparison is preserved between invocations of the <b>Compare</b> editor
      and can also be changed in the <b>Compare/Patch</b> preference page.
      </p>
      <p>
        <img src="images/compare-preferences.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="ctrl-e-command-improvements">
    <td class="title">Ctrl+E command improvements</td>
    <td class="content">
        You can use the <b>Quick Switch Editor</b> (<b>Ctrl+E</b>) 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.
        <p>
        	Now you can also cycle through the list by pressing <b>Ctrl+E</b> again. Or use <b>Arrow Up/Down</b> as before.
        </p>
        <p>
        	<img src="images/ctrl-e-improvements.png" alt=""/>
        </p>
    </td>
  </tr>

  <tr id="content-assist-model-editor">
    <td class="title">Content Assist for Feature Name in Model Editor</td>
    <td class="content">
      You can now use <b>Ctrl+Space</b> to trigger content assist when selecting the <b>Feature Name</b> in the <b>Model Editor</b>.
      <p>
      	<img src="images/content-assist-model-editor.png" alt="" />
      </p>
    </td>
  </tr>

  <tr id="model-editor-improvements">
    <td class="title">Model Editor improvements</td>
    <td class="content">
      The elements proposed in the <b>Add child</b> menu are now filtered to a minimal list containing allowed elements only.
      <p>
      	<img src="images/filter-suggested-elements.png" alt="" />
      </p>
    </td>
  </tr>

  <!-- ******************* Debug ************************************* -->
  <tr>
    <td id="Debug" class="section" colspan="2">
    <h2>Debug </h2>
    </td>
  </tr>

  <tr id="launch-groups">
    <td class="title">"Launch Group" launch configuration type</td>
    <td class="content">
      The new <b>Launch Group</b> launch configuration type allows you to launch multiple other launch configurations
      sequentially, with configurable actions after launching each group member:
      <ul>
      	<li>None: Continue launching the next member right away</li>
      	<li>Wait until terminated: Continue launching the next member only after this member has terminated</li>
      	<li>Delay: Delay launching the next member for a given amount of seconds.</li>
      	<li>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.</li>
      	<li>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!</li>      
      </ul>
      Note that this is similar to the launch group in CDT, but with additional features.
      <p>
        New launch groups can be created via the <b>Run > Run Configurations...</b> or <b>Run > Debug Configurations...</b> dialogs.<br/>
        <img src="images/launch-groups.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="terminate-relaunch-history">
    <td class="title">"Terminate and Relaunch" from Run menu, context menu and tool bar</td>
    <td class="content">
      A <b>Terminate and Relaunch</b> 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 <b>Terminate and Relaunch while launching</b> on
      <b>Preferences &gt; Run/Debug &gt; Launching</b>.
      
      <p>
        The behavior not selected on the preference page can also be activated on-demand by holding
        the <b>Shift</b> key while launching the configuration from history.
      </p>
	  <p><img src="images/launch-preference-terminate-relaunch.png" alt="" /></p>
    </td>
  </tr>

  <tr id="breakpoints-sort-by">
    <td class="title">Breakpoints view: Sort By > Creation Time</td>
    <td class="content">
      In the <b>Breakpoints</b> view's view menu, a new <b>Sort By</b> option has been added.
      This allows sorting by two ways:
      <ul>
      	<li><b>Name</b>: Current default order, sorts by the displayed name</li>
      	<li><b>Creation Time</b>: Newly created breakpoints will be shown on top</li>
      </ul>
      <p>
        <img src="images/breakpoints-sort-by.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="breakpoint-overview-ruler">
    <td class="title">Breakpoints in Overview Ruler</td>
    <td class="content">
      <b>Breakpoints</b> are now visible in the <b>Overview Ruler</b> by default.
	  <p><img src="images/breakpoint-overview-ruler.png" alt="" /></p>
	  To configure the rendering of annotations, right-click the overview ruler and choose <b>Preferences...</b>.
	  This directly opens the preference page <b>General &gt; Editors &gt; Text Editors &gt; Annotations</b>.
    </td>
  </tr>

  <!-- ******************* Views, Dialogs and Toolbar ************************************* -->
  <tr>
    <td id="ViewsAndDialogs" class="section" colspan="2">
    <h2>Views, Dialogs and Toolbar </h2>
    </td>
  </tr>

  <tr id="quick-access-string-matching">
    <td class="title">Improved string matching in Quick Access</td>
    <td class="content">
      You can now search for partial descriptions in <b>Quick Access</b> (<b>Ctrl+3</b>).
      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.
      <p>
        <img src="images/quick-access-better-string-matching.png" alt=""/>
      </p>
      The improved string matching works also in case of parenthesis,
      or when the search string matches the category name.
      <p>
        <img src="images/quick-access-better-string-matching-extended.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="wildcards-in-quickaccess">
    <td class="title">Wildcards in Quick Access</td>
    <td class="content">
      You can now use <b>*</b> and <b>?</b> as wildcards to filter <b>Quick Access</b> (<b>Ctrl+3</b>) items.
      The match ranges are displayed in bold.
      <p>
        <img src="images/quick-access-wildcard-filter.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="quick-access-search-in-help">
    <td class="title">Quick Access search text in Help</td>
    <td class="content">
      You can now <b>Search in Help</b> after you've entered text in the <b>Quick Access</b> 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.
      <p>
      <b>Search in Help</b> using the new Quick Access dialog:
      </p>
      <p>
        <img src="images/quick-access-search-in-help.png" alt=""/>
      </p>
      <p>
      <b>Search in Help</b> using the standalone dialog:
      </p>
      <p>
        <img src="images/quick-access-search-in-help-standalone.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="quick-access-filter-previous-choices">
    <td class="title">Filter previous choices in Quick Access</td>
    <td class="content">
      The <b>Quick Access</b> (<b>Ctrl+3</b>) 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.
      <p>
        <img src="images/quick-access-filter-previous-choices.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="quick-access-icons">
    <td class="title">Command icons shown in Quick Access</td>
    <td class="content">
      <b>Quick Access</b> (<b>Ctrl+3</b>) now shows the icon for a <b>Command</b> if available.
      Otherwise, it still shows the default blue ball.

      <p>
        <img src="images/command-image-visible-in-quick-access.png" alt=""/>
      </p>
    </td>
  </tr>
  
  <tr id="hide-show-status-bar">
    <td class="title">Show/hide Status Bar</td>
    <td class="content">
      You can now hide and show the bottom status bar via menu:
      <b>Window</b> &gt; <b>Appearance</b> &gt; <b>Hide (Show) Status Bar</b>.
      <p>
      	<img src="images/toggle-status-bar-from-menu.png" alt="" />
      </p>
      In Quick Access, the command is called <b>Toggle Statusbar</b>.
    </td>
  </tr>

  <tr id="GTK-tree-key-bindings">
    <td class="title">GTK tree collapse/expand key bindings</td>
    <td class="content">
      On GTK+ 3.6 and later, the <b>Left</b> and <b>Right arrow</b> keys now collapse and expand
      the current tree item (in addition to the GTK+ default <b>-</b>/<b>+</b> key bindings).
    </td>
  </tr>
  
  <tr id="simplified-bookmark-task-problems-filter-dialog">
    <td class="title">Simplified filters dialog for Problems, Bookmarks, and Tasks views</td>
    <td class="content">
      The <b>Filters</b> 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.
      <p>
      Old dialog in Problems view:
      </p>
      <p>
        <img src="images/old-problems-filter.png" alt=""/>
      </p>
      <p>
      New dialog in Problems view:
      </p>
      <p>
        <img src="images/new-problems-filter.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="problems-and-tasks-copy-details-submenu">
    <td class="title">Copy Details submenu for Problems and Tasks views</td>
    <td class="content">
       You can copy the description or the resource qualified name of an error, warning, or task into the clipboard using commands in the <b>Copy Details</b> context menu.
      <p>
        <img src="images/problems-and-tasks-copy-details-submenu.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="improved-visiblity-of-filter-dialog">
    <td class="title">Filter dialog for Problems, Bookmarks, and Tasks views easier to reach</td>
    <td class="content">
	    The <b>Filters</b> dialog is now accessible from the toolbar of the Problems, Bookmarks, and Tasks views.
      <p>
      Previously, it was only accessible via view menu &gt; <b>Configure Contents...</b>:
      </p>
      <p>
        <img src="images/old-filter-location.png" alt=""/>
      </p>
      <p>
      Now also as a toolbar button:
      </p>
      <p>
        <img src="images/new-filter-location.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="copy-build-id-information-in-about-dialog">
    <td class="title">"Copy Build Id Information" in About dialog</td>
    <td class="content">
      In the <b>About</b> dialog, you can use the context menu to copy
      information about your Eclipse installation.
      <p>
        <img src="images/about-dialog-get-build-information.png" alt=""/>
      </p>
      The <b>Copy Build Id Information to Clipboard</b> command copies
      the product name, version, build id, OS, windowing system, and additional
      OS-specific info like the GTK or WebKit versions.
      <p>
        The command can also be invoked via Quick Access <b>Quick Access</b> (<b>Ctrl+3</b>).
      </p>
    </td>
  </tr>

  <tr id="filters-from-project-explorer-view-menu">
    <td class="title">'Filters and Customization...' in Project Explorer</td>
    <td class="content">
      The <b>Customize View...</b> command in the <b>Project Explorer</b>'s view menu has been
      renamed to <b>Filters and Customization...</b>
      <p>
        <img src="images/filters-and-customization-menu-item.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="project-explorer-recent-filters">
    <td class="title">"Recently used filters" feature in Project Explorer</td>
    <td class="content">
    	The <b>Project Explorer</b> view now has a <b>Recent Filters</b> menu that shows the most recently used filters.
      	<p>
        	<img src="images/recent-filters-project-explorer.png" alt=""/>
      	</p>
    </td>
  </tr>

  <tr id="project-explorer-others-working-set">
    <td class="title">"Other Projects" working set in Project Explorer</td>
    <td class="content">
      If you're using the <b>Project Explorer</b> and working sets as top-level elements, the <b>Top Level Elements</b> view
      menu now provides a way to show an <b>Other Projects</b> group for projects that are not in one of the currently active working sets.
      	<p>
        	<img src="images/other-projects-ws.png" alt=""/>
      	</p>
    </td>
  </tr>

  <tr id="open-perspective-dialog-description">
    <td class="title">Perspective descriptions in Open Perspective dialog</td>
    <td class="content">
      You can now see the description for a perspective (if provided by the contributing plug-in) by pressing <b>F2</b> in the <b>Open Perspective</b> dialog.
      <p>
        <img src="images/open-perspective-dialog-description.png" alt=""/>
      </p>
    </td>
  </tr>
  
  <tr id="maximize-and-minimize-window-appearance">
    <td class="title">Maximize and Minimize via Window &gt; Appearance menu</td>
    <td class="content">
      The <b>Maximize</b> and <b>Minimize Active View or Editor</b> menu items have been moved to
      the <b>Window &gt; Appearance</b> menu. They used to be in the <b>Window &gt; Navigate</b> menu.
    </td>
  </tr>

  <tr id="switch-workspace-and-restart-menu-items">
    <td class="title">'Switch Workspace' and 'Restart' menu items</td>
    <td class="content">
      The <b>Switch Workspace</b> and <b>Restart</b> menu items are now at the bottom of the <b>File</b> menu:
      just above the <b>Exit</b> item on Windows and Linux, and as last menu items on the Mac.

      <p>
        <img src="images/switch-workspace-restart-menu-items.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="improved-exit-and-restart-dialog">
    <td class="title">Improved exit and restart dialogs</td>
    <td class="content">
      The exit and restart dialogs now use verbs instead of OK/No/Yes, which makes the dialogs more direct and specific.
      <p>
      	<img src="images/confirm-exit-dialog-small.png" alt="" />
      </p>
      <p>
      	<img src="images/p2-restart-dialog-small.png" alt="" />
      </p>
    </td>
  </tr>

  <tr id="removed-installation-details-menu-entry">
    <td class="title">Installation Details menu entry removed</td>
    <td class="content">
      The <b>Help &gt; Installation Details</b> menu entry has been removed.
      You can access this dialog via <b>Help &gt; About &gt; Installation Details</b> or
      via <b>Quick Access</b> (<b>Ctrl+3</b>) and then typing "Installation Details".
    </td>
  </tr>

  <tr id="list-dnd-effect">
    <td class="title">DnD source image for List widget (GTK only)</td>
    <td class="content">
    When items are being dragged from a <code>List</code> widget, their content now moves with the mouse cursor.
    <p>
        <img src="images/listdnd.png" alt="" />
    </p>
    </td>
  </tr>

  <!-- ****************** Preferences ************************************* -->
  <tr>
    <td id="Preferences" class="section" colspan="2">
    <h2>Preferences </h2>
    </td>
  </tr>
  
  <tr id="window-title">
    <td class="title">Window title configuration</td>
    <td class="content">
      The title window is now simpler and you can configure it from Preferences.
	  By default the title displays <b>workspace name</b>, <b>editor path</b> and <b>product name</b>.
	  <p>
        <img src="images/simplified-window-title.png" alt=""/>
      </p>
      <p>
	  You can now use <b>Preferences &gt; Workspace</b> to choose what to display in the window title:
	  <b>workspace name</b>, <b>perspective name</b>, <b>workspace path</b>, and <b>product name</b>.
      </p>
      <p>
        <img src="images/improved-window-title.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="copy-preferences-during-ws-switch">
    <td class="title">Option to copy your preferences during workspace switch</td>
    <td class="content">
    You can now copy your preferences during a switch to a new or existing workspace.
    <p>
        <img src="images/copy-preferences-ws-switch.png" alt="" />
    </p>
    </td>
  </tr>

  <tr id="preference-for-problems-decorations-on-startup">
    <td class="title">Option to disable Problems view decoration on startup</td>
    <td class="content">
    By default, the <b>Problems</b> 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 <b>Show Problems view decorations on startup</b> option has been added to
    <b>Preferences &gt; General &gt; Startup and Shutdown</b>.
    By default, this preference is disabled.
    <p>
        <img src="images/problems-view-startup-preference.png" alt="" />
    </p>
    </td>
  </tr>

  <tr id="always-run-in-background">
    <td class="title">"Always run in background" enabled by default</td>
    <td class="content">
 		The <b>Always run in background</b> 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 <b>General</b> preference page.
    </td>
  </tr>

  <tr id="browsers-linux-update">
    <td class="title">External browsers on Linux</td>
    <td class="content">
      On Linux, the list of recognized external browsers has been updated to include:
      
      <ul>
      <li><b>Firefox</b> (/usr/bin/firefox)</li>
      <li><b>Chrome</b> (/usr/bin/google-chrome)</li>
      <li><b>Chromium</b> (/usr/bin/chromium-browser)</li>
      <li><b>Epiphany/Gnome Web</b> (/usr/bin/epiphany)</li>
      <li><b>Konqueror</b> (/usr/bin/konqueror)</li>
      </ul>
      <p>
        <img src="images/browsers-linux-update.png" alt=""/>
      </p>
    </td>
  </tr>

  <!-- ******************* Themes and Styling ************************************* -->
  <tr>
    <td id="StylingThemes" class="section" colspan="2">
    <h2>Themes and Styling </h2>
    </td>
  </tr>
  
  <tr id="flat-gray-forms-based-styling">
    <td class="title">New default styling for form-based user interfaces</td>
    <td class="content">
      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.
      <p>
        <img src="images/forms-grey-styling1.png" alt=""/>
      </p>
      <p>
        <img src="images/forms-grey-styling2.png" alt=""/>
      </p>

    </td>
  </tr>

  <tr id="dark-styling-pseudo-attributes">
    <td class="title">Support for extending existing CSS preference nodes</td>
    <td class="content">
      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 Eclipse dark theme much more consistent and usable.

      <p>
      Example styling with EGit installed before this development:
      </p>
      <p>
        <img src="images/code-completion-dark-theme-old.png" alt=""/>
      </p>
       <p>
        <img src="images/old-search-result-hightlight-color.png" alt=""/>
      </p>
      <p>
        Example styling with EGit installed after this development:
      </p>
      <p>
        <img src="images/code-completion-dark-theme-new.png" alt=""/>
      </p>
      <p>
        <img src="images/new-search-result-hightlight-color.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="default-dark-styling-table-headers">
    <td class="title">Default styling for table and tree headers</td>
    <td class="content">
    The Eclipse default dark theme includes styling for the table and tree headers on all supported platforms.
    <p>
        <img src="images/styled_table_header_dark_theme.png" alt="" />
    </p>
    <p>
        <img src="images/styled_tree_header_dark_theme.png" alt="" />
    </p>
    </td>
  </tr>

  <tr id="colors-interactive-popups">
    <td class="title">Colors in interactive popups</td>
    <td class="content">
      Interactive popups like JDT's <b>Quick Outline</b> don't use the platform's
      tooltip colors any more, since those were sometimes hard to read.
      <p>
      Old style:
      </p>
      <p>
        <img src="images/old-popup-color-constants.png" alt=""/>
      </p>
      <p>
      New style:
      </p>
      <p>
        <img src="images/new-popup-color-constants.png" alt=""/>
      </p>
    </td>
  </tr>
  
  <tr id="heap-status-colors">
    <td class="title">Consistent heap status colors under Linux</td>
    <td class="content">
      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.
      <p>
        <img src="images/heapstatusfix.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="dark-mode-progress-bar">
    <td class="title">Fixed Progress view colors for the dark theme</td>
    <td class="content">
      The <b>Progress</b> view has been adjusted for the Eclipse dark theme.
      <p>
      Before:
      </p>
      <p>
        <img src="images/old-progress-view.png" alt=""/>
      </p>
      <p>
      After:
      </p>
      <p>
        <img src="images/new-progress-view.png" alt=""/>
      </p>
    </td>
  </tr>
  
  <tr id="toolbar-improved-default-styling">
    <td class="title">Improved default styling for the toolbar</td>
    <td class="content">
      The styling of the window toolbar has been improved. 
      On Windows, the toolbar color is now consistent with the color of the perspective switcher.
      
      <p>
        <img src="images/css-styles-windows-toolbar.png" alt=""/>
      </p>
      <p>
        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.
      </p>
      <p>
        <img src="images/css-styles-mac-toolbar.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="reduced-gtk-tabs-padding">
    <td class="title">Reduced TabItems padding under GTK+</td>
    <td class="content">
      On GTK+ 3.20 and later, the padding around TabItems has been reduced.
      <p>
      <img src="images/reduced-gtk-tabs-padding.png" alt="" />
      </p>
    </td>
  </tr>
  
  <tr id="less-window-margins">
    <td class="title">Reduced window margins</td>
    <td class="content">
    	The window margins have been reduced to provide more space in the IDE.
        <p>
      	Old style:
      	</p>
      	<p>
        	<img src="images/window-margins-old.png" alt=""/>
      	</p>
      	<p>
      	New style (see the reduced space below the Quick Access box).
      	</p>
      	<p>
        	<img src="images/window-margins-new.png" alt=""/>
      	</p>
    </td>
  </tr>

  <tr id="swt-gtk-theme-property">
    <td class="title">GTK theme system property</td>
    <td class="content">
        SWT now stores the GTK theme used at launch time in a system property, <code>org.eclipse.swt.internal.gtk.theme</code>.
        This property can help with troubleshooting issues that are specific to certain themes.
        It can be viewed in <b>About &gt; Installation Details &gt; Configuration</b>.
        <!-- TODO: Fix the path ^^^^ after bug 490752 has been reverted. -->
    </td>
  </tr>

  <tr id="more-high-resolution-images">
    <td class="title">More high resolution images</td>
    <td class="content">
      More images in the old GIF format were replaced by images in the PNG format. In addition, high resolution images where added. 
      <p>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.
      </p>
      <p>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 <b>Import</b> dialog in high resolution.
      </p>
      <p>
        <img src="images/import-before-and-after.png" alt=""/>
      </p>
      <p>
        The right part of the screenshot shows all the icons in high resolution.
      </p>
      <p>
        <img src="images/customize-navigator-before-and-after.png" alt=""/>
      </p>
    </td>
  </tr>

  <!-- ******************* General Updates ************************************* -->
  <tr>
    <td id="GeneralUpdates" class="section" colspan="2">
    <h2>General Updates </h2>
    </td>
  </tr>

  <tr id="eclipse-as-signed-dmg">
    <td class="title">Eclipse as Apple disk image</td>
    <td class="content">
      Eclipse SDK and Eclipse Platform Runtime products are now delivered as signed Apple disk images(dmg) on Mac OSX.
      
    </td>
  </tr>

  <tr id="ant-version-upgrade">
    <td class="title">Ant 1.10.1</td>
    <td class="content">
      Eclipse has adopted Ant version 1.10.1.
    </td>
  </tr>

  <tr id="unix-platforms-dropped">
    <td class="title">Dropped support for Unix platforms</td>
    <td class="content">
	  Eclipse has dropped support for the following Unix based platforms: AIX, Solaris, HP-UX, s390, s390x and ppc32.
	  No builds are available on the eclipse.org downloads page for these platforms.
	  <p>
	  For more information, please read the <a href="https://dev.eclipse.org/mhonarc/lists/eclipse-dev/msg10207.html" target="_blank">announcement</a> made by the Eclipse PMC.
	  </p>
	  <p>
	  For the Photon (4.8) release, we plan to drop support for the ppc64 as well, but continue to support ppc64le.
	  </p>
    </td>
  </tr>
  
  <tr id="java-9">
    <td class="title">Java 9 previews</td>
    <td class="content">
      You have to configure Eclipse Oxygen to work with Java 9. Please read this <a href="https://wiki.eclipse.org/Configure_Eclipse_for_Java_9" target="_blank">wiki</a> for the details.
    </td>
  </tr>

</tbody>
</table>
</body>
</html>
