blob: f8039cbf9062139f08217ae6a8b219cf0d03bb93 [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 2018. 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.9 - 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>
<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="e4-lifecycle-annotations">
<td class="title">Graduation of E4 Lifecycle Annotations</td>
<td class="content">
Four annotations that have been preliminary API for some time have been graduated.
The relevant classes are in package
<a href="http://help.eclipse.org/2018-09/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/e4/ui/workbench/lifecycle/package-summary.html">
org.eclipse.e4.ui.workbench.lifecycle
</a>
in the <code>org.eclipse.e4.ui.workbench</code> bundle. This includes
<code>PostContextCreate</code>, <code>PreSave</code>, <code>ProcessAdditions</code>
and <code>ProcessRemovals</code>.
<p>
These changes are part of an ongoing effort to finalize the E4 API.
</p>
</td>
</tr>
<tr id="type-parameters-core-databinding">
<td class="title">Type parameters on Core Databinding classes</td>
<td class="content">
Type parameters have been added to relevant classes and methods in the
<code>org.eclipse.core.databinding</code> bundle. This includes
<code>DataBindingContext</code>, <code>IConverter</code> and <code>IValidator</code>.
This makes code using these classes more explicit and clear and
can help catching bugs in an early stage.
<p>
Code example:
</p>
<pre>
IObservableValue&lt;String&gt; o1 = ...;
IObservableValue&lt;Integer&gt; o2 = ...;
DataBindingContext cont = ...;
IConverter&lt;String, Integer&gt; c = IConverter.create(String.class, Integer.class, Integer::decode);
UpdateValueStrategy&lt;String, Integer&gt; s = new UpdateValueStrategy&lt;&gt;();
s.setConverter(c);
cont.bindValue(o1, o2, s, null);
</pre>
<p>
These changes are part of an ongoing effort to make the databinding API more typesafe.
This effort started with the addition of type parameters to the bundles
<code>org.eclipse.core.databinding.property</code> and
<code>org.eclipse.core.databinding.observable</code>, and will continue with the bundles
<code>org.eclipse.core.databinding.beans</code> and <code>org.eclipse.jface.databinding</code>
in a future release.
</p>
<p>
Note: Users of databinding APIs that are not yet updated to take advantage of the type
parameters will find that the new type parameters cause raw type warnings in their code.
The best way to handle warnings from code that can't be updated is often to suppress these
warnings using <code>@SuppressWarnings("rawtypes")</code>. Since the implementation of
the databinding classes has not changed, suppressing warnings is a safe thing to do in this
case.
</p>
</td>
</tr>
<tr id="generic-editor-folding">
<td class="title">Contribute folding to the Generic Editor</td>
<td class="content">
The Generic Editor provides a new extension point <code>org.eclipse.ui.genericeditor.foldingReconcilers</code> to customize folding.
<p>This example shows how LSP4E could contribute folding reconciler only for editor input supporting a language server:</p>
<pre>
&lt;extension
point="org.eclipse.ui.genericeditor.foldingReconcilers">
&lt;foldingReconciler
class="org.eclipse.lsp4e.operations.folding.FoldingReconciler"
contentType="org.eclipse.core.runtime.text">
&lt;enabledWhen>
&lt;with
variable="editorInput">
&lt;test
property="org.eclipse.lsp4e.hasLanguageServer">
&lt;/test>
&lt;/with>
&lt;/enabledWhen>
&lt;/foldingReconciler>
&lt;/extension>
</pre>
When no other folding reconciler is registered for current document,
the generic editor uses a strategy which folds blocks of lines based on whitespaces and indentation:
<p>
<img src="images/generic-editor-folding.png" alt="" />
</p>
</td>
</tr>
<tr id="generic-editor-character-pair-matcher">
<td class="title">Contribute character pair matcher to the Generic Editor</td>
<td class="content">
The Generic Editor provides a new extension point <code>org.eclipse.ui.genericeditor.characterPairMatchers</code> to customize character pair matchers (matching brackets).
<p>The <a href="http://git.eclipse.org/c/platform/eclipse.platform.text.git/tree/org.eclipse.ui.genericeditor.examples">Generic Editor examples</a> shows how to manage matching
bracket for tag elements of .project file:</p>
<pre>
&lt;extension
point="org.eclipse.ui.genericeditor.characterPairMatchers"&gt;
&lt;characterPairMatcher
class="org.eclipse.ui.genericeditor.examples.dotproject.TagCharacterPairMatcher"
contentType="org.eclipse.ui.genericeditor.examples.dotproject"&gt;
&lt;/characterPairMatcher&gt;
&lt;/extension&gt;
</pre>
<p>
<img src="images/generic-editor-character-pair-matcher.png" alt="" />
</p>
</td>
</tr>
<!-- *********************** SWT *********************** -->
<tr>
<td id="SWT" class="section" colspan="2"><h2>SWT Changes</h2></td>
</tr>
<tr id="calendar-weeknumbers">
<td class="title">Display week numbers in DateTime calendar</td>
<td class="content">
<p>
The <code>SWT.DateTime</code> calendar widget will now display week numbers, when the <code>SWT.CALENDAR_WEEKNUMBERS</code> style flag is set.
</p>
<p>
<img src="images/calendar-weeknumbers.png" alt="" />
</p>
<p>
Note: This is a HINT and currently only works on Windows and Linux/GTK.
</p>
</td>
</tr>
<tr id="alt-gr-display-post">
<td class="title">New SWT.ALT_GR constant and support for non-US keyboard layouts</td>
<td class="content">
SWT on GTK3 has added a <code>SWT.ALT_GR</code> constant which can be used to generate special characters requiring the AltGr modifier using
the <code>Display.post(Event)</code> method.
<p>
The <code>Display.post(Event)</code> method now supports simulating key events for non-US
keyboard layouts and the option to send key modifiers together with key characters in a single event.
</p>
</td>
</tr>
<tr id="zoom-changed-api">
<td class="title">New event SWT.ZoomChanged added</td>
<td class="content">
A new event type <code>SWT.ZoomChanged</code> has been added to SWT to notify clients that the SWT zoom has changed.
Listeners for the ZoomChanged event should be added to a <code>Shell</code>. The event's detail field contains the new SWT zoom level.
<p>
Note: This operation is a hint and is supported on Windows 10 only.
</p>
</td>
</tr>
<tr id="dark-theme-table-tree-header">
<td class="title">Improved Table and Tree header under dark theme</td>
<td class="content">
SWT on Windows has made the following improvements to <code>Table</code> and <code>Tree</code> headers, which improves their visibility in Dark theme:
<ul>
<li> Add a new line separator between header and the first row.</li>
<li> Draw the header column separators always (irrespective of the value of <code>getLinesVisible()</code>).</li>
</ul>
<p>
<img src="images/dark_theme_table_header.png" alt="" />
</p>
</td>
</tr>
</tbody>
</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>