<!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.19 - 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>
  </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="improved-contentassist"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=508821 -->
    <td class="title">Content-assist contributor allows more flexible control of completion triggers</td>
    <td class="content">
      IContentAssistProcessor has a new extension interface IContentAssistProcessorExtension that allows to get context information for activation computation: 
      <ul>
      <li><i>IContentAssistProcessorExtension.isCompletionProposalAutoActivation(char, ITextViewer, int)</i></li>
      <li><i>IContentAssistProcessorExtension.isContextInformationAutoActivation(char, ITextViewer, int)</i></li>
      </ul>
      <p>
       This allows for example to compute the activation chars based on the location or properties/content of the document.
      </p>
    </td>
  </tr>
   <tr id="marker-create-api"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=570914 -->
    <td class="title">Atomic IMarker creation API with attributes in IResource</td>
    <td class="content">
      The <code>IResource.createMarker(type, attribute)</code> API has been created to allow atomic creation of markers.
      Using this new API should be preferred, as this reduces the resource change notifications and is in general 2x faster as two separate calls to create marker and set attributes on it.
    </td>
  </tr>
   <tr id="clean-with-args"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=552606 -->
    <td class="title">IncrementalProjectBuilder can optionally implement new clean with arguments method</td>
    <td class="content">
      The <code>IncrementalProjectBuilder</code> API can optionally be extended by clients implementing the new <code>IIncrementalProjectBuilder2</code> interface that provides
      a new <code>clean(Map&lt;String, String&gt;, IProgressMonitor)</code> method that will be called instead of the existing <code>clean(IProgressMonitor)</code>.
      The new <code>clean</code> method passes the map of arguments from <code>IWorkspace.build()</code> or <code>IProject.build()</code> to the client for <code>clean</code> in the same way that it is done for the
      <code>build</code> method.
    </td>
  </tr>
  <tr id="improved-ui-syncronize"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=563459 -->
    <td class="title">Enhanced UISynchronize</td>
    <td class="content">
      UISynchronize now contains these new handy methods: 
      <ul>
      <li><i>UISynchronize.exec(Runnable)</i> can be called from any thread, the given code is executed either directly (if called form the UI-Thread) or dispatched if called from a non-UI thread.</li>
      <li><i>UISynchronize.call(Callable&lt;T>)</i> same as the runnable variant but can return a value to the caller.</li>
      <li><i>UISynchronize.busyExec(Runnable)</i> allow to execute code outside the UI and showing a busy indicator while the code is running.</li>
      <li><i>UISynchronize.busyCall(Callable&lt;T>)</i> same as the runnable variant but can return a value to the caller.</li>
      </ul>
      <p>
       You can find some more details and usage-examples in <a href="https://xn--lubisoft-0za.gmbh/en/articles/improved-uisynchronize/">this article</a>.
      </p>
    </td>
  </tr>
  <!-- ******************** End of Platform ********************** -->

  <!-- *********************** SWT *********************** -->
  <tr>
    <td id="SWT" class="section" colspan="2"><h2>SWT Changes</h2></td>
  </tr>
  <tr id="resource-disposal-tracking"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569752 -->
   <td class="title"><a href="#resource-disposal-tracking">Resource disposal tracking</a></td>
    <td class="content">
      New <code>org.eclipse.swt.graphics.Resource.setNonDisposeHandler</code> API
      is added which allows to track not properly disposed SWT resources.
      This API accepts a custom <code>Consumer&lt;Error></code> callback to
      receive detected errors.
      <p>
        Alternatively, <code>"org.eclipse.swt.graphics.Resource.reportNonDisposed"</code>
        system property can be set to <code>true</code>. In this case, SWT will report
        these errors to <code>stderr</code> without the need to modify application's
        code.
      </p>
    </td>
  </tr>

  <tr id="icu-e4-feature"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=569421 -->
   <td class="title"><a href="#icu-e4-feature">Moved com.ibm.icu from org.eclipse.e4.rcp to org.eclipse.rcp feature</a></td>
    <td class="content">
      As the usage of the com.ibm.icu plug-in is planned to be removed from the platform it has been removed from the org.eclipse.e4.rcp feature as e4 RCP applications do not require it since the 4.18 release.
      It has been added to the org.eclipse.rcp features for now to ensure e3 applications  which may use it and the Eclipse IDE to work correctly.
      If you e4 RCP application uses it, you can include it in your custom feature.
    </td>
  </tr>

  <tr id="shell-set-maximum-size"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=74001 -->
    <td class="title"><a href="#shell-set-maximum-size">Shell Maximum Size</a></td>
    <td class="content">
      Developers can now specify the maximum size of the SWT shell. The shell will not be resizable to a larger width or height than specified.
      <ul>
      <li>Use <i>setMaximumSize(width, height)</i> or <i>setMaximumSize(point)</i> to specify a maximum size for your shell. The shell will be resized if it's currently larger than the specified size.</li>
      <li>Use <i>getMaximumSize()</i> to query the currently set maximum size.</li>
      </ul>
      <p>
       Note that the result of combining maximum size with full screen mode is platform specific and in general not recommended.
      </p>
    </td>
  </tr>
  <!-- *********************** End of SWT *********************** -->

</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>
