<!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.27 - 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="Migrate_Perspectives">
        <!-- https://bugs.eclipse.org/bugs/show_bug.cgi?id=570471 -->
        <!-- https://github.com/eclipse-platform/eclipse.platform.ui.tools/commit/fb53ad7d761f82c0488624792f98a61d1a26a60a -->
        <td class="title">Persistence and migration of perspectives</td>
        <td class="content">
          <h2 id="migration">Migrate and apply existing 3.x perspectives on e4 applications</h2>
          <p>To support migrating existing user-specific perspectives from the 3.x applications a 
            new API was added to the platform.ui.tools:
            <code>org.eclipse.e4.tools.compatibiliy.migration.PerspectiveMigrator</code>.
          </p>
          <p>To directly apply an existing perspective to the running e4 application:</p>
          <pre><code> /* loadMemento is something that you have to implement yourself.
 You can find examples on how to do so online or 
 in the org.eclipse.e4.tools.compatibility.migration.tests.E4MigrationToolTest . */
 IMemento storedPerspective = loadMemento();
 PerspectiveMigration.apply3xWorkbenchState(storedPerspective);
          </code></pre>
          <p>Alternatively you can convert the stored perspective to an <code>MApplication</code>:</p>
          <pre><code> /* loadMemento is something that you have to implement yourself.
 You can find examples on how to do so online or 
 in the org.eclipse.e4.tools.compatibility.migration.tests.E4MigrationToolTest . */
 IMemento storedPerspective = loadMemento();
 MApplication mApplication = PerspectiveMigration.convertToMApplication(storedPerspective);
          </code></pre>
          <h2 id="persistence">Store and load perspectives of e4 applications</h2>
          <p>e4 does not allow to load and store perspectives in the same way it was possible in 3.x .
            In order to do so a new API was added to the platform.ui.tools:
            <code>org.eclipse.e4.tools.persistence.PerspectivePersister</code>.
          </p>
          <p>To store a perspective of the running e4 application using its id:</p>
          <pre><code> String serializedPerspective = PerspectivePersister.serializePerspectiveAndPartStates("myPerspectiveId"); 
 // store the way you like
 storePerspective(serializedPerspective);
          </code></pre>
          <p>To load a stored perspective:</p>
          <pre><code> // load corresponding to the way you store
 String serializedPerspective = loadStoredPerspective();
 PerspectivePersister.restoreWorkbenchState(serializedPerspective);
          </code></pre>
        </td>
      </tr>
  <!-- ******************** End of Platform ********************** -->

  <tr><td colspan="2"/></tr>
</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>
