<!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="news.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 Project 4.13 - New and Noteworthy</title>
</head>

<body>
<h2>Platform and Equinox API</h2>
  <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>

<!-- ****************** 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 ****************** -->

<script type="text/javascript" src="scripts.js"></script>
  <p style="text-align:center">
    <a href="jdt.php">Previous</a> <a style="margin:1em" href=".">Up</a> <a href="pde.php">Next</a>
  </p>
</body>
</html>
