blob: 59b33aa739db30d60ce4684f54dd5f3ac5404f86 [file] [log] [blame]
<!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 2020. 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.23</title>
</head>
<body>
<h2>What's New in Eclipse 4.23</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.23 release of Eclipse.
</p>
<ul><!-- NOTE: Sync ../topics_WhatsNew.xml with this! -->
<li><a href="#Platform">Platform Changes</a></li>
<li><a href="#SWT">SWT Changes</a></li>
<li><a href="#Equinox">Equinox 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="line-end-code-mining"> <!--https://bugs.eclipse.org/bugs/show_bug.cgi?id=540448 -->
<td class="title"><a href="#line-end-code-mining">Code mining on line end</a></td>
<td class="content">
The abstract <code>org.eclipse.jface.text.codemining.LineEndCodeMining</code> class was added to create code-minings
that are expected to be displayed as annotations after the line content. Any <code>ICodeMiningProvider</code> can return
on of those <code>LineEndCodeMining</code> additionally to existing ones.
</td>
</tr>
<tr id="fluent-databinding-api"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=552667 -->
<td class="title"><a href="#fluent-databinding-api">New fluent databinding API</a></td>
<td class="content">
A new fluent API for the databinding framework has been added.
<p>
This API is a facade for the traditional databinding API that is based
on <code>DataBindingContext</code> and <code>UpdateValueStrategy</code>. It provides
short-hands, extra type safety and better readability.
</p>
The following is an usage example:
<pre><code>
Bind.twoWay()
.from(value)
.validateAfterConvert(modelValidator)
.convertTo(IConverter.create(i -> Objects.toString(i, "")))
.convertFrom(IConverter.create(s -> s.isEmpty() ? 0 : Integer.decode(s)))
.to(WidgetProperties.text(SWT.Modify).observe(text))
.validateBeforeSet(widgetValidator)
.bind(bindingContext);
</code></pre>
</td>
</tr>
<tr id="notification-api"> <!--https://bugs.eclipse.org/bugs/show_bug.cgi?id=575091 -->
<td class="title"><a href="#notification-api">Notification builder</a></td>
<td class="content">
In addition to the Notification API released with Eclipse 4.17, the 4.22 release added a <code>Notification builder</code>.
As the release notes of these releases did not mention this new API, this entry was added to allow users to
discover these new features.
Please see <a href="https://wiki.eclipse.org/JFaceSnippets#Snippet081_-_Notication_API" target="_blank">Snippet</a> for the usage of the Notification API.
</td>
</tr>
<tr id="debug-value-code-mining"> <!--https://bugs.eclipse.org/bugs/show_bug.cgi?id=507546 -->
<td class="title"><a href="#debug-value-code-mining">Contribute adapter to display debug value code minings</a></td>
<td class="content">
In order to make debug values visible inline for users who enabled this feature, your debugger support can contribute
an adapter from <code>ITextSelection</code> to <code>IVariable</code>. The Debug framework will then lookup available
variables for the files being edited and display their value inline.
</td>
</tr>
<!-- ******************** End of Platform ********************** -->
<!-- *********************** SWT *********************** -->
<tr>
<td id="SWT" class="section" colspan="2"><h2>SWT Changes</h2></td>
</tr>
<tr id="swt-broder-layout"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=577922 -->
<td class="title"><a href="#swt-broder-layout">SWT BorderLayout support</a></td>
<td class="content">
SWT now supports a new <code>BorderLayout</code> with below layout design:
<p><img src="images/swt-border-layout.png" alt="SWT Border layout."/></p>
</td>
</tr>
<tr id="win32-dark-buttons"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=577042 -->
<td class="title"><a href="#win32-dark-buttons">SWT supports native styled dark theme buttons on Windows</a></td>
<td class="content">
The buttons on Windows OS are now styled:
<p>
New look and feel:
</p>
<img src="images/new-dark-buttons.png" alt=""/>
<p>
Old look and feel:
</p>
<p>
<img src="images/old-dark-buttons.png" alt=""/>
</p>
<p>
On <b>Windows 10</b>, all the dark theme tweaks including the <a href="#win32-dark-buttons">dark buttons</a> can be disabled using the
<code>org.eclipse.swt.internal.win32.disableCustomThemeTweaks</code> Java property.
</p>
<p>
For Example: add this VM argument in eclipse.ini or on the command line after <b><code>-vmargs</code></b>:<br/>
<b>-Dorg.eclipse.swt.internal.win32.disableCustomThemeTweaks=true</b>
</p>
</td>
</tr>
<tr id="sleak-view-improvements"> <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=578696 -->
<td class="title"><a href="#sleak-view-improvements">Sleak view improvements</a></td>
<td class="content">
The <b>Sleak</b> view now also lists non-disposed Widget objects, where previously it listed non-disposed Resource objects only.
This can be used to check for widget leaks, e.g. if a view leaks Menu objects or if a view operation results
in adding more and more widgets to the view.
<p>The improvements made to Sleak view UI are:</p>
<ul>
<li>Snap and Diff buttons are now merged to one button</li>
<li>The non-disposed objects summary is shown on mouse-over in the object table</li>
<li>The stack traces area and the object table are now separated by a draggable Sash</li>
</ul>
<p><img src="images/sleak_view_improvements.png" alt="Sleak view improvements"/></p>
</td>
</tr>
<!-- *********************** End of SWT *********************** -->
<!-- ******************** Equinox ********************** -->
<tr>
<td id="Equinox" class="section" colspan="2"><h2>Equinox Changes</h2></td>
</tr>
<tr id="trusted-pgp-key-extension"> <!--https://bugs.eclipse.org/bugs/show_bug.cgi?id=577248 -->
<td class="title"><a href="#trusted-pgp-key-extension">Define trusted PGP keys in extensions</a></td>
<td class="content">
The <code>org.eclipse.p2.engine.pgp</code> extension-point was added to p2. It allows plug-ins
to define some PGP public keys that are to be considered as trusted by default.
<p>Changes to such a contribution when upgrading or removing their contributing plug-ins will directly impact the
set of trusted keys without further action.</p>
</td>
</tr>
<tr id="improved-bundle-file-location"> <!--https://bugs.eclipse.org/bugs/show_bug.cgi?id=577574 -->
<td class="title"><a href="#improved-bundle-file-location">Determining a bundle's file location has been improved</a></td>
<td class="content">
The location of a bundle in the local file system can now be obtained by adapting the bundle to the <code>File</code> class:
<code>org.osgi.framework.Bundle.adapt(java.io.File.class)</code>
<br></br>
A more conventient way is to call the new method <code>getBundleFileLocation(Bundle)</code> in <code>org.eclipse.core.runtime.FileLocator</code>,
which returns an <code>Optional</code> to reflect the fact that not in all cases the file-system location of a bundle can be determined.
This method is intended as a replacement for <code>FileLocator.getBundleFile(Bundle)</code> and does not throw an <code>IOException</code>.
Both methods now run significantly faster than <code>FileLocator.getBundleFile(Bundle)</code> did before.
</td>
</tr>
</tbody>
</table>
<!-- ****************** END OF N&N TABLE ****************** -->
</body>
</html>