<!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 http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" title="main" media="screen" />
<title>Eclipse Project Oxygen (4.7) M4 News</title>
</head>
<body>
<h1>Eclipse Project Oxygen (4.7) M4 - New and Noteworthy</h1>
<p>Here are some of the more noteworthy things available in the Oxygen milestone build M4
  which is now available for <a href="http://download.eclipse.org/eclipse/downloads/#4.7_Stable_Builds" target="_top">download</a>.
  <br/>
  We also recommend to read the Tips and Tricks, either via <b>Help &gt; Tips and Tricks...</b> or online for
  <a href="http://help.eclipse.org/topic/org.eclipse.platform.doc.user/tips/platform_tips.html">Platform</a>,
  <a href="http://help.eclipse.org/topic/org.eclipse.jdt.doc.user/tips/jdt_tips.html">JDT</a>, and
  <a href="http://help.eclipse.org/topic/org.eclipse.pde.doc.user/tips/pde_tips.htm">PDE</a>.
</p>

<ul>
  <li><a href="#Platform">Platform</a></li>
  <li><a href="#JDT">JDT</a></li>
  <li><a href="#PDE">PDE</a></li>
  <li><a href="#Platform-Dev">Platform Developers</a></li>
  <li><a href="#Equinox">Equinox</a></li>
</ul>

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


  <tr>
    <td colspan="2" class="section" id="Platform">Platform</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="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="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="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>
      </ul>
      <p>
        <img src="images/launch-groups.png" alt=""/>
      </p>
      New launch groups can be created via the <b>Run > Run Configurations...</b> or <b>Run > Debug Configurations...</b> dialogs.
    </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="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>
    <td colspan="2" class="section" id="JDT">JDT</td>
  </tr>

  <tr id="jdt-javadoc-color-fix">
    <td class="title">Consistent Javadoc colors usage under Linux</td>
    <td class="content">
      The Javadoc color usage on Linux was inconsistent since GTK 3.04.
      This has been resolved and support for Javadoc on the Eclipse Dark Theme has been added.
      <p>
        Before:
      </p>
      <p>
        <img src="images/javadocbefore.png" alt=""/>
      </p>
      <p>
        After:
      </p>
      <p>
        <img src="images/javadocafter.png" alt=""/>
      </p>
      <p>
        Dark theme support:
      </p>
      <p>
        <img src="images/javadocdarktheme.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="open-implementation-of-type">
    <td class="title">Open Implementation of selected Type</td>
    <td class="content">
      The <b>Open Implementation</b> hyperlink and the <b>Navigate &gt; Open Implementation</b> action now open the implementation of the selected interface or class also.
      In the past, <b>Open Implementation</b> was only available for methods.
      <p>
        <img src="images/open-implementation-of-type.png" alt=""/>
      </p>
      The hyperlink popup shows up when you hold <b>Ctrl</b> (on the Mac: <b>Command</b>), unless you've changed the modifier on the <b>Hyperlinking</b> preference page.
    </td>
  </tr>

  <tr id="auto-insert-braces">
    <td class="title">Automatically insert Braces at correct position</td>
    <td class="content">
      The <b>Java &gt; Editor &gt; Typing &gt; Automatically insert at correct position &gt; Braces</b> preference option is now enabled by default.
      This will automatically insert the braces where they are required.
      <p>
        <img src="images/auto-insert-braces.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr>
    <td colspan="2" class="section" id="PDE">PDE</td>
  </tr>

  <tr id="nested-categories-support">
    <td class="title">Nested categories support</td>
    <td class="content">
      You can now organize features into hierarchies by using the nested categories support in the <b>Category Definition</b> editor.
      <p>
      The created definition can be used as input for the <b>Categorize repository</b> parameter in the <b>File > Export... > Deployable features</b> wizard.
      They are also visible in the <b>Install</b> dialog.
      </p>
      <p>
        <img src="images/pde-support-for-nested-categories.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="new-feature-project-filtered-tree">
    <td class="title">Feature project wizard filtered plugin selection</td>
    <td class="content">
	  You can now use a text filter when selecting plug-ins in the <b>New > Feature Project</b> wizard.
      <p>
        <img src="images/new-feature-project-filtered-tree.png" alt=""/>
      </p>
    </td>
  </tr>

  <tr id="option-for-workspace-overriding-target">
    <td class="title"> Option for workspace plug-ins overriding target plug-ins </td>
    <td class="content">
       On the <b>Plug-in Development </b> preference page, in the <b>General settings for plug-in development</b> section,
       there is an option to specify if workspace plug-ins should override target platform plug-ins with the same id.
       By default, this option is enabled.When disabled, all plug-in versions from workspace and target platform will 
       be used and for a plug-in id, the best available plug-in will be chosen. 
        <p>
        	<img src="images/workspace-plugins-override-target.png" alt=""/>
      </p>
    </td>
  </tr>


  <tr>
    <td colspan="2" class="section" id="Platform-Dev">Platform Developers</td>
  </tr>

  <tr id="swt-lambda-style-keylistener">
    <td class="title">Lambda as KeyListener</td>
    <td class="content">
      The <code>KeyListener</code> interface in SWT was enhanced to provide the
      <code>KeyListener#keyPressedAdapter(Consumer&lt;KeyEvent&gt; c)</code> and
      <code>KeyListener#keyReleasedAdapter(Consumer&lt;KeyEvent&gt; c)</code>
      static helper methods that accept lambdas and method references as listeners.
    </td>
  </tr>

  <tr id="api-for-decorated-images">
    <td class="title">Update in API for decorating images</td>
    <td class="content">
      The <code>org.eclipse.jface.viewers.DecorationOverlayIcon</code> class has received a new constructor that allows
      to more easily define decorated images based on an <code>ImageDescriptor</code> rather than <code>Image</code>. This allows
      to prevent API adopters to deal with creation and disposal of the underlying resource when using <em>ImageDescriptor</em>.
      <p>Example of API usage:</p>
      <pre>
ImageDescriptor descriptor = /*base image descriptor*/;
return new DecorationOverlayIcon(
	descriptor,
	PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_DEC_FIELD_ERROR),
	IDecoration.BOTTOM_LEFT);
      </pre>
    </td>
  </tr>

   <tr id="ehelpservice-released-as-api">
    <td class="title">EHelpService released as API</td>
    <td class="content">
      The <code>EHelpService</code> interface was released as API.
      You can access this service via dependency injection similar to other e4 services.
     </td>
  </tr>


  <tr>
    <td colspan="2" class="section" id="Equinox">Equinox</td>
  </tr>

  <tr id="non-modal-p2-installation-dialog">
    <td class="title">Non-modal Install dialog</td>
    <td class="content">
      The Install dialog available via <b>Help &gt; Install New Software...</b> is now non-modal,
      so that you can do something else while waiting for the catalog to be fetched.
    </td>
  </tr>


  <tr>
    <td colspan="2"/>
  </tr>
</table>

<p>The above features are just the ones that are new since the previous milestone
build. Summaries for earlier Oxygen milestone builds:</p>
<ul>
  <li><a href="https://www.eclipse.org/eclipse/news/4.7/M3/">News for Eclipse Oxygen milestone build M3</a></li>
  <li><a href="https://www.eclipse.org/eclipse/news/4.7/M2/">News for Eclipse Oxygen milestone build M2</a></li>
  <li><a href="https://www.eclipse.org/eclipse/news/4.7/M1/">News for Eclipse Oxygen milestone build M1</a></li>
</ul>

</body>
</html>
