<!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 2014. This page is made available under license. For full details, see the LEGAL section in the documentation 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="default_style.css" charset="UTF-8" type="text/css" />
<style type="text/css">
table.news td {
  border-top: solid thin black;
}

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;
  width: 30%;
  font-weight: bold;
}

table.news tr td.content {
  vertical-align: top;
  width: 70%;
}
</style>
<title>Eclipse Project Luna - New and Noteworthy</title>
</head>

<body>
  <h2>Platform and Equinox API</h2>
  <ul>
    <li><a href="#Platform">Platform Changes</a></li>
    <li><a href="#Equinox">Equinox Changes</a></li>
    <li><a href="#SWT">SWT Changes</a></li>
  </ul>

  <!-- ****************** START OF N&N TABLE ****************** -->
  <table class="news" cellpadding="10" cellspacing="0">
    <tbody>
      <!-- ******************** Platform ********************** -->
      <tr>
        <td id="Platform" class="section" colspan="2"><h2>Platform Changes</h2></td>
      </tr>

      <tr id="e4-views-1">
        <td class="title">Contribute e4 Views into the IDE</td>
        <td class="content">Native e4 views can now be contributed to the Eclipse workbench via extension point. The <code>org.eclipse.ui.views</code> extension point now supports an <code>e4view</code>
          element for declaring a new view for the IDE whose implementation is done in the e4 style (i.e. an annotated POJO).
          <p>
            <img src="images/new-e4view-extension.png" alt="new extension" />
          </p>
          <p>The new type of extension is identical to the original 'view' except for relaxing the requirement that the 'class' implement IViewPart.</p>
          <p>For those that are unaware of the e4 way of coding, here's what the implementation of an e4 view looks like:</p> <pre>
import javax.annotation.PostConstruct;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;

public class RealE4View {
	Label label;

	@PostConstruct
	void createView(Composite parent) {
		label = new Label(parent, SWT.BORDER);	
		label.setText("Testing");
	}

	@Focus
	void setFocus() {
		label.setFocus();
	}
}
      </pre>
          <p>Note how it's a simple Java object (POJO) and how few dependencies it has; this has already proven itself as a far more convenient way to write the code and has great advantages in
            testing (because of its few dependencies).</p>
        </td>
      </tr>

      <tr id="css-bridge">
        <td class="title">CSS bridge</td>
        <td class="content">The Eclipse 4 CSS-based styling engine has been connected to the classic Eclipse platform theme APIs through a new mechanism called the <i>CSS bridge</i>. This support
          enables a number of new user cases:
          <ul>
            <li>Accessing legacy platform <b>Color and Font</b> definitions from within a CSS style sheet:
              <p>
                <img src="images/css-bridge/using-definitions.png" alt="" />
              </p>
            </li>
            <li>Overriding <b>Color and Font</b> definitions in a CSS style sheet:
              <p>
                <img src="images/css-bridge/overriding-definitions.png" alt="" />
              </p>
            </li>
            <li>Adding new style definitions within your CSS that will be surfaced for user customization on the <b>Color and Font</b> preference page:
              <p>
                <img src="images/css-bridge/new-definitions.png" alt="" />
              </p>
            </li>
          </ul> This bridging has a number of nice properties:
          <ul>
            <li>The legacy color theme definitions overridden or added in the CSS style sheet are merged with the current theme.</li>
            <li>When switching themes, overridden values are re-merged with the new theme.</li>
            <li>The new definitions added with the CSS file (the last use case) are available in the CSS theme that provides it.</li>
          </ul> Note that after switching CSS themes, the definitions can be unavailable in the theme registries when the new theme doesn't re-define it. This means when using theme definitions out of CSS
          files, you must be prepared for such situations and use proper default values in the case when some definitions are missing.
        </td>
      </tr>

      <tr id="theme-association">
        <td class="title">New 'themeAssociation' element of the 'org.eclipse.e4.ui.css.swt.theme' extension&nbsp;point</td>
        <td class="content">An Eclipse platform CSS theme can now register an association with a legacy platform <b>Color and Font</b> theme. After defining the proper association between themes,
          changing themes in the <b>Appearance</b> preference page will automatically set the associated <b>Color and Font</b> theme.
          <p>
            <img src="images/theme-association.png" alt="" />
          </p>
        </td>
      </tr>

      <tr id="recenter-command">
        <td class="title">Improved Recenter command</td>
        <td class="content">Like in Emacs, the <b>Recenter</b> command in textual editors now cycles between center, bottom and top.
        </td>
      </tr>

      <tr id="ant-1.9.2-update">
        <td class="title">Ant 1.9.2</td>
        <td class="content">The platform has been updated to use the latest version of Apache Ant (1.9.2). For more information on what is new in Ant 1.9.2, see the official <a
          href="http://mirror.olnevhost.net/pub/apache//ant/README.html">what's new</a>.
        </td>
      </tr>

      <tr id="ant-bree-update">
        <td class="title">Platform Ant BREE update</td>
        <td class="content">Platform Ant has had a BREE update to require a Java 1.6 compatible execution environment (or newer).</td>
      </tr>

      <tr>
        <td class="title">Platform Debug BREE update</td>
        <td class="content">Platform Debug has had a BREE update to require a Java 1.6 compatible execution environment (or newer).</td>
      </tr>

      <tr id="debug-examples">
        <td class="title">New debugger examples</td>
        <td class="content">New examples have been added to the Platform Debug git repository. The <code>org.eclipse.debug.examples.mixedmode</code> project demonstrates how to use Debug's
          mixed-mode launching support. The <code>org.eclipse.debug.examples.memory</code> project provides sample content to display in the <b>Memory</b> and <b>Registers</b> views.
        </td>
      </tr>

      <tr id="batik-1-7">
        <td class="title">Updated to Batik 1.7</td>
        <td class="content">The Platform now includes a newer version of Apache Batik, version 1.7.0. This new version is being used for CSS parsing in the declarative styling engine, and is
          notably faster than the previous version.</td>
      </tr>

      <tr id="workspaceLock">
        <td class="title">Removed WorkspaceLock API</td>
        <td class="content">The <code>WorkspaceLock</code> API allowed a special client (usually Platform UI) to hook into the locking protocols used by the workspace implementation. This hook
          was used to mitigate deadlocks due to interaction with synchronous SWT events, and was never intended to be used by other clients. In the 3.0 release this API was deprecated in favor of a
          more general API provided by the <code>org.eclipse.core.jobs</code> bundle. Invoking this API has had no effect since the 3.0 release. The specific API being removed includes:
          <ul>
            <li>The <code>org.eclipse.core.resources.WorkspaceLock</code> class.
            </li>
            <li>The method <code>org.eclipse.core.resources.IWorkspace#setWorkspaceLock</code></li>
          </ul> Clients that directly use an API listed above should remove any references to it.
        </td>
      </tr>

      <tr id="incrementalProjectBuilder-getRule">
        <td class="title">Removed IncrementalProjectBuilder#getRule() API</td>
        <td class="content">The <code>IncrementalProjectBuilder#getRule()</code> method returned a scheduling rule that was required for building the project by the builder. This method was
          intended to be used by the builder framework only. In the 3.6 release this method was deprecated in favor of a more general method <code>IncrementalProjectBuilder#getRule(int, Map)</code>.
          The specific API being removed includes:
          <ul>
            <li>The method <code>org.eclipse.core.resources.IncrementalProjectBuilder#getRule()</code></li>
          </ul> Clients that directly call the API listed above should remove any references to it or replace them with calls to <code>IncrementalProjectBuilder#getRule(int, Map)</code>. Clients that
          implement the API listed above should implement <code>IncrementalProjectBuilder#getRule(int, Map)</code> instead.
        </td>
      </tr>

      <tr id="eclipse-api">
        <td class="title">EMenuService released as API</td>
        <td class="content">The <code>EMenuService</code> service has been released as API. RCP clients must adjust their package imports to <code>org.eclipse.e4.ui.services</code>.
        </td>
      </tr>

      <tr id="MLocalizable">
        <td class="title">MLocalizable mixin interface</td>
        <td class="content">The mechanism for localizing strings in the application model has been changed. Previously, EOperations (methods) were used to get a localized value. Now, volatile,
          transient, derived, unchangeable EStructuralFeatures are used. This enables notifications if a localizable value has changed. To mark EClasses who hold localizable informations and to inform
          them externally about a changed Locale, the <code>MLocalizable</code> mixin interface is introduced, which contains the single method <code>updateLocalization()</code>. This enables the
          platform to generically search the model for model elements affected by a Locale change and force them to update.
        </td>
      </tr>

      <tr id="Locale_Change_Propagation">
        <td class="title">Locale change propagation</td>
        <td class="content">A new service called <code>ILocaleChangeService</code> has been introduced, which supports changing Locale at runtime. Using this service will:
          <ol>
            <li>Update the Locale in the application context.</li>
            <li>Inform all model elements of an application that implement <code>MLocalization</code> about the change.
            </li>
            <li>Post an event via event broker.</li>
          </ol>
        </td>
      </tr>

      <tr id="Locale_Change_Consumption">
        <td class="title">Locale change consumption</td>
        <td class="content">There are now three ways to be informed about a Locale change:
          <ol>
            <li>Via event broker by listening to the topic <i>org/eclipse/e4/core/NLS/LOCALE_CHANGE</i></li>
            <li>Via dependency injection by getting the value for <code>TranslationService.LOCALE</code> injected (e.g. via method injection)
            </li>
            <li>Via attaching to the model events listening to the newly introduced LOCALIZED-Features</li>
          </ol> <b>Note:</b> The renderers need to be modified to listen to the LOCALIZED-Features, otherwise the Locale change at runtime isn't supported!
        </td>
      </tr>

      <tr id="ResourceBundleProvider">
        <td class="title">ResourceBundleProvider</td>
        <td class="content">A new <code>ResourceBundleProvider</code> service has been introduced to abstract out the reference to the <code>BundleLocalization</code> OSGi service. This enables
          application authors to change how ResourceBundles should be looked up within their Eclipse application, e.g. using class-based ResourceBundles, loading translations out of a database,
          loading ResourceBundles from a server by using a different ResourceBundle.Control. The default implementation <code>DefaultResourceBundleProvider</code> is internally using <code>BundleLocalization</code>
          to keep the known default behaviour.
        </td>
      </tr>

      <tr id="TranslationService">
        <td class="title">TranslationService update</td>
        <td class="content">The <code>TranslationService</code>, that is used to localize the application model, had several downsides regarding extensibility. A lot of code needed to be copied
          in order to create a custom <code>TranslationService</code> that retrieves translations from a different location than the OSGi-ResourceBundle. To make it easier for users to implement a
          custom <code>TranslationService</code>, the API was modified. The method <code>getResourceString(String, ResourceBundle)</code> is moved from <code>BundleTranslationProvider</code> to <code>TranslationService</code>
          with protected visibility, as it contains the logic to retrieve and transform the translation key that is set in the application model. The default implementation <code>BundleTranslationProvider</code>
          is now using the <code>ResourceBundleHelper</code> in combination with the <code>ResourceBundleProvider</code>. This way the localization of the application model and the localization via
          new message extension are using the same mechanisms. As a small enhancement, this also enables the usage of dot separated keys for translating the application model.
          <p>
            As part of this work, the previously internal package
            <code>org.eclipse.e4.core.services.translation</code>
            has been released as API.
          </p>
        </td>
      </tr>

      <tr id="CSSIncludes">
        <td class="title">CSS includes</td>
        <td class="content">CSS files for Eclipse can now include other CSS files via the <code>@import url("platform:/plugin/Bundle-Symbolic-Name/path/file.extension");</code> statement. This
          allows easy reuse of existing style sheets.
        </td>
      </tr>

      <tr id="osgi-integration">
        <td class="title">Improved OSGi integration</td>
        <td class="content">Eclipse implementations can retrieve the OSGI <code>BundleContext</code> via an extended object supplier and the <code>@Inject @OSGiBundle</code> annotations.
        </td>
      </tr>

      <tr id="code-cleanup">
        <td class="title">Platform code improvements</td>
        <td class="content">During the last milestones, the platform team has invested in cleaning up the existing codes basis to simplify contributions by new and existing contributors. For more
          details, see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=420779">bug 420779</a>. During this update, several plug-ins have been upgraded to require Java 1.6 instead of Java 1.4 or
          Java 1.5.
        </td>
      </tr>

      <tr id="java7-filesystem-fragment">
        <td class="title">New filesystem fragment for Java 7 API</td>
        <td class="content">A new filesystem fragment supporting Java 7 file API has been added. The new fragment named <code>org.eclipse.core.filesystem.java7</code> allows to retrieve
          information about files such as permissions, link targets, etc. using Java 7 API rather than native code. This enables full filesystem capabilities on platforms with no native Eclipse
          filesystem fragment. There are three different types of filesystems supported:
          <ul>
            <li>DOS/Windows filesystems,</li>
            <li>POSIX compliant filesystems, and</li>
            <li>filesystems that are neither DOS/Windows nor POSIX compliant.</li>
          </ul> The new fragment will be loaded and used automatically when you run Eclipse with JRE 7 or newer and no native filesystem fragment applicable for your operating system can be found (such as
          Solaris, ARM, and s390).
        </td>
      </tr>


      <!-- ******************** Equinox ********************** -->
      <tr>
        <td id="Equinox" class="section" colspan="2"><h2>Equinox Changes</h2></td>
      </tr>

      <tr id="framework-update-1">
        <td class="title">Equinox OSGi framework update</td>
        <td class="content">The Equinox Framework implementation has been updated to implement the latest API OSGi R6 Framework specification. The OSGi R6 Core Framework specification (finalized
          in March 2014) contain enhancements in the following areas:
          <ul>
            <li>Introduction of Service Scopes to the OSGi Service Registry (<a href="https://github.com/osgi/design/tree/master/rfcs/rfc0195">RFC 195</a>)
            </li>
            <li>Improvements of Weaving Hooks (<a href="https://github.com/osgi/design/tree/master/rfcs/rfc0191">RFC 191</a>)
            </li>
            <li>Clarification of hooks on the system bundle (<a href="https://github.com/osgi/design/tree/master/rfcs/rfc0198">RFC 198</a>)
            </li>
            <li>Native environment namespace (<a href="https://github.com/osgi/design/tree/master/rfcs/rfc0188">RFC 188</a>)
            </li>
            <li>Data Transfer Objects (<a href="https://github.com/osgi/design/tree/master/rfcs/rfc0185">RFC 185</a>)
            </li>
            <li>Extension Bundle Activators (<a href="https://github.com/osgi/design/tree/master/rfcs/rfc0204">RFC 204</a>)
            </li>
            <li>Addition of FrameworkWiring.findProviders - no RFC</li>
          </ul> From an Equinox perspective these are considered incremental enhancements. A majority of the development effort during this release cycle is focused on refactoring and, in many cases,
          rewriting the core Equinox Framework implementation to be based on the OSGi generic dependency model.
          <p>
            For most consumers and developers this change should not be noticed. But, as documented in the <a href="http://wiki.eclipse.org/Equinox/Luna_Framework">wiki</a>, there are four main areas
            of concern that the community should be aware of:
          </p>
          <ul>
            <li>The Framework no longer uses the old Equinox resolver API org.eclipse.osgi.service.resolver internally to resolve bundles.</li>
            <li>All Equinox Framework specific hook implementations are broken and will need to migrate.</li>
            <li>Removal of old style plug-in support. A compatibility fragment is available to add the support back.</li>
            <li>Removal of PlatformAdmin Service Implementation. A compatibility fragment is available to add support back.</li>
          </ul>
        </td>
      </tr>
      <tr id="cm-update">
        <td class="title">Equinox Configuration Admin update</td>
        <td class="content">The Equinox Configuration Admin implementation has been updated to implement the OSGi Configuration Admin Service Specification version 1.5. The previous release of
          Equinox Configuration Admin implemented version 1.3.</td>
      </tr>

      <tr id="region-update-1">
        <td class="title">Equinox Regions update</td>
        <td class="content">The Equinox Regions implementation has been updated to take advantage of Extension Bundle Activators (<a href="https://github.com/osgi/design/tree/master/rfcs/rfc0204">RFC
            204</a>) coming in the OSGi R6 specification. This allows Equinox Regions to insert its isolation model before the framework is launched so that proper region behavior can be established
          before any bundles are loaded in the framework.
          <p>
            The Equinox Regions has added a new namespace for sharing bundle lifecycle operations between regions. In previous versions of Equinox regions the only way to share bundle lifecycle
            operations across different regions was to share complete bundles which also shared all capabilities provided by the bundle. Now it is possible to use the
            org.eclipse.equinox.allow.bundle.lifecycle namespace to share only the bundle lifecycle operations between different regions. (see <a
              href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=418224">bug 418224</a>)
          </p>
        </td>
      </tr>


      <tr id="metatype-update">
        <td class="title">Equinox Metatype update</td>
        <td class="content">The Equinox Metatype API has been updated to add the methods to get the minimum and maximum values of an attribute definition. (see <a
          href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=416640">bug 416640</a>)
        </td>
      </tr>

      <tr>
        <td class="title">Framework Trace Options</td>
        <td class="content">The new OSGi framework implementation now supports many of the previously supported trace options and adds a few more trace options to help debug issues with the
          framework. The following trace options are now implemented:
          <dl>
            <dt>debug/bundleTime</dt>
            <dd>Prints out timing information for bundle activation</dd>
            <dt>debug/cachedmanifest</dt>
            <dd>Debug the caching of bundle headers</dd>
            <dt>debug/location</dt>
            <dd>Prints out location service debug information</dd>
            <dt>debug/startlevel</dt>
            <dd>Prints out start level service debug information</dd>
            <dt>monitor/activation</dt>
            <dd>Monitor persistent bundle activation</dd>
            <dt>resolver/providers</dt>
            <dd>Prints out information about matching capabilities returned to the resolver and why any were filtered out</dd>
            <dt>resolver/hooks</dt>
            <dd>Prints out information about capabilities or resources that were filtered by resolver hooks</dd>
            <dt>resolver/uses</dt>
            <dd>Prints out information about uses constraint violations</dd>
            <dt>resolver/wiring</dt>
            <dd>Prints out wiring information after the resolve process completes</dd>
            <dt>resolver/report</dt>
            <dd>Prints out the resolution report information</dd>
            <dt>resolver</dt>
            <dd>enables all resolver trace options</dd>
          </dl>
        </td>
      </tr>


      <!-- *********************** SWT *********************** -->
      <tr>
        <td id="SWT" class="section" colspan="2"><h2>SWT Changes</h2></td>
      </tr>

      <tr id="swt-needs-1.5">
        <td class="title">SWT requires JRE 1.5</td>
        <td class="content">The SWT project has moved to Java 1.5 compliance level. SWT applications will now require JRE 1.5 or higher to run.</td>
      </tr>

      <tr id="timing-api">
        <td class="title">Added UI timing API</td>
        <td class="content">SWT has added two new events, <tt>SWT.PreEvent</tt> and <tt>SWT.PostEvent</tt>, which are sent before and after all events and async runnables. These events can be
          used to measure the time spent on processing any events. This can be useful for detecting slow event listeners. Because of its pervasive effect on all events, this listener should be used
          with <b>extreme</b> caution. For an example of how this can be used, take a look at the <a
          href="http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.examples.watchdog"> Watchdog</a> plugin in SWT examples.
        </td>
      </tr>

      <tr id="bidi-segments">
        <td class="title">BIDI segments support for Combo on Windows</td>
        <td class="content">The <code>Combo</code> widget now supports the same <code>SegmentListener</code> API as <code>Text</code>. This allows an application to specify segment boundaries and
          Unicode Control Characters to use in the segment boundaries.
          <p>
            <a href="http://git.eclipse.org/c/platform/eclipse.platform.swt.git/tree/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet332.java"> Snippet332</a> shows how to
            accomplish RTL override in a Combo.
          </p>
          <p>
            <img src="images/combo-bidi-segments.png" alt="" />
          </p>
          <p>
            JFace clients can use
            <code>BidiUtils#applyBidiProcessing(...)</code>
            to set pre-defined text types.
          </p>
        </td>
      </tr>

      <tr id="styled-text-api">
        <td class="title">Added new API in StyledText to get text selection state</td>
        <td class="content"><code>StyledText.isTextSelected()</code> can be used to quickly determine whether any text in the widget is selected or not.</td>
      </tr>

      <tr id="sleep-monitor-api">
        <td class="title">Added API for sleep monitoring</td>
        <td class="content">SWT has added two new events, <code>SWT.Sleep</code> and <code>SWT.Wakeup</code>, which are sent before the <code>Display</code> event loop goes into sleep and after
          it wakes up from sleep respectively. These events can e.g. be used to monitor the duration of sleep time in SWT applications.
        </td>
      </tr>

      <tr id="styledtext-bidi">
        <td class="title">Set text direction for the <code>StyledText</code> widget on Windows
        </td>
        <td class="content">The <code>StyledText</code> widget now supports setting the text direction via the <code>setTextDirection(int)</code> API on the Windows platform. The <code>setTextDirection
            (int)</code> and <code>getTextDirection ()</code> APIs are also added to <code>TextLayout</code> (implemented only on Windows currently).
        </td>
      </tr>

      <tr id="gtk3-as-default">
        <td class="title">GTK+ 3 used by default on Linux distributions (when installed and available)</td>
        <td class="content">Linux builds come with GTK+ 3 support enabled by default on GTK+ 3 versions prior to 3.10, versions newer than that will fall back to GTK+ 2.x by default for maximum
          stability. The GTK+ 3 support can however still be enabled either by setting the environment variable <code>SWT_GTK3</code> to <code>1</code> or by adding the launcher parameters <code>--launcher.GTK_version
            3</code>.
        </td>
      </tr>

      <tr id="swt-webkit">
        <td class="title">Experimental support for WebKit2 added to the SWT Browser</td>
        <td class="content">The SWT Browser now has preliminary support for WebKit2. To try it out, create a browser widget with style <code>SWT.WEBKIT</code>, and set the environment variable
          SWT_WEBKIT2 to 1. This is only supported with GTK+ 3.x; if GTK+ 3 is disabled the browser will fallback to WebKit1.
        </td>
      </tr>

      <tr id="windows-taskbar-grouping">
        <td class="title">SWT applications will not be grouped together in the Windows taskbar by default</td>
        <td class="content">SWT does not initialize the <b>AppUserModelID</b> (which is used by Windows for taskbar grouping) to "SWT" by default anymore. SWT applications which desire to be
          grouped together in the Windows taskbar should set an appropriate application name before creating the <code>Display</code> object as shown below: <pre>
		Display.setAppName("APP_NAME"); // APP_NAME will used as AppUserModelID
		Display display = new Display();
	  </pre>
        </td>
      </tr>



    </tbody>
    <!-- ****************** END OF N&N TABLE ****************** -->
  </table>

  <p align="center">
    <a href="eclipse-news-part2.html">Previous</a>&nbsp;&nbsp;&nbsp;&nbsp; <a href="eclipse-news-part4.html">Next</a>
  </p>

</body>
</html>