<!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 2018, 2019. This page is made available under license. For full details see the LEGAL in the documentation book 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 4.13</title>
</head>

<body>
<h2>What's New in Eclipse 4.13</h2>
<p>Here are descriptions of some of the changes of interest to plug-in developers
made to the Eclipse Platform and SWT for the 4.13 release of Eclipse.
</p>
<ul>
	<li><a href="#Platform">Platform Changes</a></li>
	<li><a href="#SWT">SWT Changes</a></li>
	<li><a href="#JFace">JFace Changes</a></li>
</ul>

<p>
New features oriented towards end-users of the platform
can be viewed in the 
<a href="../../org.eclipse.platform.doc.user/whatsNew/platform_whatsnew.html">What's New</a>
section of the Workbench User Guide.
</p>

<!-- ****************** START OF N&N TABLE****************** -->
<table class="news">
<colgroup>
  <col class="title" />
  <col />
</colgroup>
<tbody>
  <!-- ******************** Platform ********************** -->
  <tr>
    <td id="Platform" class="section" colspan="2"><h2>Platform Changes</h2></td>
  </tr>
 
  <tr id="generic-editor-icon"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=513034 -->
    <td class="title">Content-type-specific icons in generic editor</td>
    <td class="content">
      An extension was added to the generic editor so that it now can provide icons for content-type. See extension point <b>org.eclipse.ui.genericeditor.icons</b> for more details.
      <p>
        <img src="images/generic-editor-icon.png" alt="" />
      </p>
    </td>
  </tr>
 
  <tr id="multiline-sfe"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=548650 -->
  <td class="title">Multiline Support for StringFieldEditor</td>
  <td class="content">
    The implementation of <code>StringFieldEditor</code> now provides the option to use a multi-line Text widget, suitable
    for editing larger String values in a preference page.
  </td>
  </tr>

  <tr id="request-specific-quickaccess"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=548058 -->
  <td class="title">API to compute Quick Access proposals according to user input</td>
  <td class="content">
    An extension interface <b><code>org.eclipse.ui.quickaccess.IQuickAccessComputerExtension</code></b> to use as extension to
    <code>org.eclipse.ui.quickaccess.IQuickAccessComputer</code> when using extension point <code>org.eclipse.ui.quickaccess/computer</code>
    was added. This provides the ability to compute a new extra set of proposals whenever filter change.
  </td>
  </tr>

  <tr id="javax-injext">
  <td class="title">Bundle org.eclipse.core.runtime no longer reexports javax.inject</td>
  <td class="content">
    The org.eclipse.core.runtime bundle had <code>javax.inject</code> as an <b>optional</b> dependency, which it
    previously reexported, but not anymore.
    <p>
     Technically, it's not a breaking change as <code>javax.inject</code> was never
     guaranteed to be there thus whether it is reexported or not was not certain. Eclipse Platform can not guarantee the API stability of this package so it makes no 
     sense to make such a promise.
    </p>
    <p>
     Clients have to <code>Import-Package: javax.inject</code> explicitly if they need it.
    </p>
  </td>
  </tr>

  <tr id="non-persisted-ui"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=544871 -->
  <td class="title">E4XMIResource optionally filters Transient UI Elements</td>
  <td class="content">
      When using the E4XMIResource directly, transient UI elements are no longer filtered by default.
      Note that transient UI elements are filtered by default when saved from the application.
      
      <p>To filter transient UI elements, call the save method with the new option
      <code>options.put(E4XMIResource.OPTION_FILTER_PERSIST_STATE, Boolean.TRUE); resource.save(options);</code></p>
  </td>
  </tr>
   <tr id="logging-api"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=550347  -->
  <td class="title">Simplified Platform logging API</td>
  <td class="content">
      Platform provides convenient logging API, <code>Platform.getLog(Class)</code>  which can be used to access the log for the bundle to which the class belongs.
  </td>
  </tr>
  <tr id="monitor-logging"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=482062 -->
  <td class="title">Tracing option for correct progress reporting usage</td>
  <td class="content">
      Earlier releases added support for tracing the correct usage of progress monitors. Unfortunately, this was missed while documenting in previous noteworthy documents.
      
      <p>To enable this tracing, add <code>org.eclipse.equinox.common/progress_monitors=true</code> in your ".options" file and start Eclipse via the -debug flag, or use the tracing option in the launch configuration.
      </p>
        <p>
        <img src="images/progress-monitor.png" alt="" />
      </p>
  </td>
  </tr>
  <!-- ******************** End of Platform ********************** -->

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

  <tr id="gdkpixbuf-imageloader"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=545032 -->
    <td class="title">New native implementation of ImageLoader on GTK</td>
    <td class="content">
      The implementation of <code>ImageLoader</code> on GTK now uses the native <code>GdkPixbuf</code> API for image loading and saving.
      <p>
       Key highlights of the new ImageLoader on GTK:
      </p>
      <ul>
       <li>Loading and saving images has native performance, with a significant speedup especially in loading JPEG files</li>
       <li>Better GIF animation support</li>
       <li>Support for more image formats</li>
      </ul>
    </td>
  </tr>

  <tr id="gtk-toolitem-padding"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=395296 -->
    <td class="title">Reduced ToolItem padding on GTK</td>
    <td class="content">
      A fix in <code>ToolItem</code> has greatly reduced the size of some toolbars on GTK.
      <p>
       Previously, all <code>ToolItem</code>s were the same size as the largest of them in a given toolbar. With this fix, items are
      now independently sized, which reduces the total size of toolbars that contain large items.
      </p>
     <p>
      EGit's Rebase Interactive view is a good example of this fix. In the following screenshot, the toolbar shown on top has
      the fix applied, compared to the larger, unpatched toolbar on the bottom.
     </p>
     <p><img src="images/gtk-toolitem-padding.png" alt="ToolItems with reduced padding compared to before"/></p>
    </td>
  </tr>

  <tr id="win32-text-search-cancel"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=293230 -->
    <td class="title">Search/Cancel icons supported in Text widget on Windows</td>
    <td class="content">
      The Text widget on Windows now supports displaying the search and cancel icons for <code>SWT.ICON_SEARCH</code> and <code>SWT.ICON_CANCEL</code> styles respectively.
      With the Windows support added, these style APIs are now supported on all the three platforms and are no longer marked as a <code>HINT</code>.
      <p><img src="images/win32-text-search-cancel.png" alt="Text widget with search and clear buttons"/></p>
    </td>
  </tr>

  <tr id="swt-is-dark-theme"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=549451 -->
    <td class="title">API to query if current OS theme is dark</td>
    <td class="content">
      A new method <code>public static boolean Display.isSystemDarkTheme()</code> is now available to query if the current OS theme has a dark appearance.
      The method returns <code>true</code> if the current OS theme is dark, else it returns <code>false</code>.
    </td>
  </tr>

  <tr id="swt-styled-text-disabled"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=4745 -->
    <td class="title">StyledText now supports a disabled look</td>
    <td class="content">
      The StyledText widget now supports a disabled look on all platforms when <code>StyledText.setEnabled(false)</code> is called.
			<p><img src="images/styled-text-disabled-gtk.png" alt=""/></p>
			<p><img src="images/styled-text-disabled-win.png" alt=""/></p>
			<p><img src="images/styled-text-disabled-mac.png" alt=""/></p>
    </td>
  </tr>
  
  <tr id="swt-disabled-colors"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=548190 -->
    <td class="title">New color constants for disabled widgets</td>
    <td class="content">
      Two new color constants are available in SWT, to match the colors used in disabled widgets. <code>SWT.COLOR_TEXT_DISABLED_BACKGROUND</code> matches the background color of a disabled text widget, and
			<code>SWT.COLOR_WIDGET_DISABLED_FOREGROUND</code> matches the foreground color of a disabled widget.
    </td>
  </tr>
  
  <tr id="swt-snippet-explorer"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=547934 -->
    <td class="title">SWT Snippet Explorer</td>
    <td class="content">
      The <a href="https://www.eclipse.org/swt/snippets/">SWT Snippets</a> project in the <a href="https://git.eclipse.org/c/platform/eclipse.platform.swt.git/">SWT repository</a> now includes a simple application called SnippetExplorer which can list, search and launch single or 
      multiple snippets at once. It also shows the snippets description, source code and a preview image where applicable.
      <p><img src="images/swt-snippet-explorer.png" alt=""/></p>
    </td>
  </tr>
  
  <tr id="swt-gtk-input-methods"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=548628 -->
    <td class="title">Input method switching on GTK</td>
    <td class="content">
      Early versions of GTK3 allowed the input method to be changed at the application level. This
      functionality has been deprecated for quite some time, and has now been removed from SWT.
      <p>To change the input method, please use the global input method settings available in the desktop environment.</p>
    </td>
  </tr>
  
  <!-- *********************** End of SWT *********************** -->

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

  <tr id="columnViewEditor-cycleTabTraversal">  <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=549194 -->
    <td class="title">New ColumnViewerEditor tab traversal added</td>
    <td class="content">
      Tabbing to the start or end of a viewer (during an inline edit) is
      now possible by passing
      <b><code>ColumnViewerEditor.TABBING_CYCLE_IN_VIEWER</code></b> as a feature when calling
      <code>TableViewerEditor.create(viewer,
        editorActivationStrategy, feature)</code> or <code>TreeViewerEditor.create(viewer, editorActivationStrategy,
        feature)</code>.
      <p>
        With this new feature flag enabled:
      </p>
      <ul>
        <li>
          Pressing <b>Tab</b> while editing the <b>last item</b> in a
          viewer starts an inline edit on the <b>first item</b>.
        </li>
        <li>
          Pressing <b>Shift+Tab</b> while editing the first item starts an
          inline edit on the last item.
        </li>
      </ul>
    </td>
  </tr>
  <!-- *********************** End of JFace *********************** -->

</tbody>
</table>
<!-- ****************** END OF N&N TABLE ****************** -->

</body>
</html>
