<!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.16 - 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="browserviewer-invokes-urihandler"><!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=561974 -->
    <td class="title"><a href="#browserviewer-invokes-urihandler">BrowserViewer uses URISchemeHandler extensions</a></td>
    <td class="content">
      The <code>BrowserViewer</code> now uses the extensions to <code>org.eclipse.urischeme.uriSchemeHandlers</code>.
      When clicking a hyperlink with a non-default supported web browser URI scheme, the extensions are checked and if one can
      handle the URI scheme, it will be triggered.
      <p>One example is Marketplace Client providing support for <code>eclipse+mpc://...</code> URIs. Using the BrowserViewer and
      clicking an <code>eclipse+mpc://...</code> link target will open the Marketplace Client wizard.</p>
    </td>
  </tr>
  
  <tr id="eclipse-command-url-handler"><!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=562049 -->
    <td class="title"><a href="#eclipse-command-url-handler">Handle eclipse+command:// URLs</a></td>
    <td class="content">
      <b>eclipse+command://</b> Link handler makes the Eclipse application start a command.
      <p>Such URLs have the form <code>eclipse+command://commandId?param1Id=value&amp;param2Id=value</code>.
      <br/>For example, to open a preference page: <code>eclipse+command://org.eclipse.ui.window.preferences?preferencePageId=org.eclipse.ui.browser.preferencePage</code></p>
      <p>This link handler must be activated from the <i>Link handlers</i> preference page to bind the Eclipse application with this URL scheme in the OS.</p>
    </td>
  </tr>
  
  <tr id="e4-core-di-extensions"><!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=539149 -->
    <td class="title"><a href="#e4-core-di-extensions">org.eclipse.e4.core.di.extensions APIs made public</a></td>
    <td class="content">
      The dependency injection annotation APIs in <code>org.eclipse.e4.core.di.extensions</code> such as <code>@EventTopic</code> have been made an official API.
      <p>These APIs have already been commonly used by dependency injection in E4 RCP applications, but have only been marked as provisional APIs thus far. The provisional flag has now been removed.</p>
    </td>
  </tr>
  
  <tr id="saferunner-with-results"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=558642 -->
    <td class="title">Saferunner can return results</td>
     <td class="content">
      SafeRunner now supports runnables that return a result.<br/>
      <code>T run(ISafeRunnableWithResult&lt;T&gt; code);</code>
      <p>Example:</p>
      <pre><code>int result = SafeRunner.run(new ISafeRunnableWithResult &lt;Integer &gt;() {
     @Override
     public Integer runWithResult() throws Exception {
          return 42;
     }
     })</code></pre>
      <p>Using lambda:</p>
      <pre><code>int result = SafeRunner.run(() -> 42);</code></pre>
    </td>
  </tr>
  
  <tr id="active-tab-highlight-css"><!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=497586 -->
   <td class="title"><a href="#active-tab-highlight-css">Active tab highlight CSS option</a></td>
   <td class="content">
    The active tab can now be highlighted by using the <code>swt-selected-tab-highlight</code> CSS property. 
    By default, the highlight is placed at the top of the tab, but it can be changed by using the boolean CSS property <code>swt-selected-highlight-top</code>.
    
    <p>
     Here's how it looks when enabled with the dark theme: <br/>
     <img src="images/active-tab-highlight-css-pref.png" alt="" />
    </p>
    
    Example usage in CSS:
    <pre>
     <code># Set the selected tab highlight color </code>
     <code>swt-selected-tab-highlight: white;</code>
     <code># Set whether the highlight should be on top or bottom of the tab (default is true)</code>
     <code>swt-selected-highlight-top: false;</code>
    </pre>
   </td>
  </tr>
  
  <tr id="square-ctabs"><!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=538740 -->
    <td class="title"><a href="#square-ctabs">Added support for square CTabs</a></td>
    <td class="content">
        Square tabs can be enabled in CSS by specifying an swt-corner-radius of 0.
      <p>
        <img src="images/dark-theme-square-tabs.png" alt="" />
      </p>
      <p>
        <img src="images/light-theme-square-tabs.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="win-ligatures-support"><!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=562165 -->
    <td class="title"><a href="#win-ligatures-support">Support for Ligatures on Windows</a></td>
    <td class="content">
      Ligatures are now supported by the <code>StyledText</code> widget on Windows. It was already supported on Linux and macOS.
      <p> Screenshot of ligatures drawn in <code>StyledText</code> and <code>Text</code> widgets on Windows 10: </p>
      <p>
       <img src="images/win_ligatures_support_with_StyledText.png" alt="Support for ligatures on Windows" />
      </p>
    </td>
  </tr>
  
  <tr id="swt-no-disposal-needed"> <!-- https://bugs.eclipse.org/563018 -->
    <td class="title">Colors don't need to be disposed</td>
    <td class="content">
      Starting from Eclipse 4.16, SWT no longer requires <code>Color</code>s to be disposed as they are not allocated
      any OS resources.
    </td>
  </tr>
  
  <tr id="gtk-min-version"><!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=561047 -->
    <td class="title"><a href="#gtk-min-version">Minimum GTK version update</a></td>
    <td class="content">
      Starting from Eclipse 4.16, SWT/GTK no longer supports versions of GTK older than 3.20.
     </td>
  </tr>
  
  <tr id="win-dark-tweaks">
    <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=444560 -->
    <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=560284 -->
    <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=560316 -->
    <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=560358 -->
    <td class="title"><a href="#win-dark-tweaks">Dark theme tweaks Windows</a></td>
    <td class="content">
      Various tweaks were implemented to improve dark theme experience on Windows, where OS supported dark theme is not quite there yet:
      <ul>
        <li><a href="platform_isv.html#win-dark-scrollbars">Dark scrollbars (only on Win10)</a></li>
        <li>Custom colors for <code>Menu</code> bar:
          <p> For Example: dark menu can be enabled via setting below key/value pairs on the <code>Display</code> instance as shown below:
             <code>display.setData("org.eclipse.swt.internal.win32.menuBarForegroundColor", new Color(display, 0xD0, 0xD0, 0xD0));</code><br/>
             <code>display.setData("org.eclipse.swt.internal.win32.menuBarBackgroundColor", new Color(display, 0x30, 0x30, 0x30));</code><br/>
             <code>display.setData("org.eclipse.swt.internal.win32.menuBarBorderColor", new Color(display, 0x50, 0x50, 0x50));</code><br/>
          </p>
        </li>
        <li>Custom color for <code>Table</code> header lines:
         <p> For Example: table header line color for dark theme can be enabled via setting below key/value pair on the <code>Display</code> instance as shown below:
          <code>display.setData("org.eclipse.swt.internal.win32.Table.headerLineColor", new Color(display, 0x50, 0x50, 0x50));</code>
         </p>
        </li>
        <li>Dark theme compatible Control borders:
         <p> For Example: dark border for below supported controls can be enabled via setting below key/value pair on the <code>Display</code> instance as shown below:
          <code>display.setData("org.eclipse.swt.internal.win32.Canvas.use_WS_BORDER", true);</code><br/>
          <code>display.setData("org.eclipse.swt.internal.win32.List.use_WS_BORDER", true);</code><br/>
          <code>display.setData("org.eclipse.swt.internal.win32.Table.use_WS_BORDER", true);</code><br/>
          <code>display.setData("org.eclipse.swt.internal.win32.Text.use_WS_BORDER", true);</code><br/>
          <code>display.setData("org.eclipse.swt.internal.win32.Tree.use_WS_BORDER", true);</code><br/>
         </p>
         Here's how dark <code>Menu</code>, <code>Table</code> header and <code>Text</code> border looks like in Eclipse:<br/>
         <img src="images/dark_menu_textBroder_table.png" alt="Support for dark menu, table header and text border on Windows"/>
        </li>
        <li>Custom color for disabled <code>Label</code> foreground color:
         <p> For Example: disabled <code>Label</code> foreground color for dark theme can be enabled via setting below key/value pair on the <code>display</code> 
          instance as shown below:
          <code>display.setData("org.eclipse.swt.internal.win32.Label.disabledForegroundColor", new Color(display, 0x80, 0x80, 0x80));</code>
         </p>
         Here's how dark disabled <code>Label</code> looks like in Eclipse:<br/>
         <img src="images/dark_disabled_label.png" alt="Support for dark disabled label on Windows" />
        </li>
      </ul>
      <p>
       On <b>Windows 10</b> all the <a href="platform_isv.html#win-dark-tweaks">dark theme tweaks</a> including the <a href="platform_isv.html#win-dark-scrollbars">dark scrollbars</a> can be disabled using the 
       <code>org.eclipse.swt.internal.win32.disableCustomThemeTweaks</code> Java property.<br/>
       For Example: add this VM argument in eclipse.ini or on the command line after <b><code>-vmargs</code></b>:
      </p>
      <pre><b>-Dorg.eclipse.swt.internal.win32.disableCustomThemeTweaks=true</b></pre>
      Note: Once this Java property is set, all above <code>display.setData()</code> calls won't come into effect.
    </td>
  </tr>
  
  <tr id="win-dark-scrollbars"><!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=444560 -->
    <td class="title"><a href="#win-dark-scrollbars">Support for dark scrollbars on Windows</a></td>
    <td class="content">
      SWT now supports having dark scrollbars on Windows. 
      <p>
        Dark scrollbars can be enabled via <code>Display.setData()</code> with the following key/value pair:
        <code>display.setData("org.eclipse.swt.internal.win32.useDarkModeExplorerTheme", true);</code>
      </p>
      Screenshot of dark-themed scrollbars on Windows 10:
      <p> 
       <img src="images/win_dark_Scrollbars.png" alt="Support for dark scrollbars on Windows" /></p>
      <p>
        On <b>Windows 10</b>, all the <a href="platform_isv.html#win-dark-tweaks">dark theme tweaks</a> including the <a href="platform_isv.html#win-dark-scrollbars">dark scrollbars</a> can be disabled using the 
        <code>org.eclipse.swt.internal.win32.disableCustomThemeTweaks</code> Java property.<br/>
        For Example: add this VM argument in eclipse.ini or on the command line after <b><code>-vmargs</code></b>:
      </p>
      <pre><b>-Dorg.eclipse.swt.internal.win32.disableCustomThemeTweaks=true</b></pre>
      Note: Once this Java property is set, the above <code>display.setData()</code> call won't come into effect.
    </td>
  </tr>
  
  <tr id="sleak-save"> <!-- https://bugs.eclipse.org/563451 -->
   <td class="title">S-Leak SWT Tool has save options</td>
   <td class="content">
     Add a save to file option for <a href="https://www.eclipse.org/swt/tools.php">S-Leak</a>. Two new buttons are added,
     save and save as.
     <p>
      When saving, there are some options to control saving:
     </p>
     <ul>
       <li>save to incrementing file numbers to make it easier to capture multiple files without prompts</li>
       <li>save the preview to png files cross referenced to the main text file</li>
       <li>include stack traces if "Stack" is checked</li>
     </ul>
    </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>
