| <!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" xml:lang="en"> |
| <head> |
| <meta name="copyright" content="Copyright (c) Eclipse contributors and others 2010. 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="../book.css" type="text/css"/> |
| <style type="text/css"> |
| td {border-top: solid thin black;} |
| img[alt] {background-color:#ffdddd;} |
| tr {vertical-align: top;} |
| </style> |
| <title>e4 What's New in 2010 Release</title> |
| </head> |
| |
| <body> |
| |
| <h2>e4 What's New in 2010 Release</h2> |
| |
| <p>Here are descriptions of some of the more interesting or significant changes |
| made in the e4 incubator for the July 2010 release. They are grouped into:</p> |
| |
| <ul> |
| <li><a href="#OpenSocial">OpenSocial</a></li> |
| <li><a href="#XWT">XWT Changes</a></li> |
| <li><a href="#XWTTooling">XWT Tooling Changes</a></li> |
| <li><a href="#wbTooling">Workbench Tooling Changes</a></li> |
| <li><a href="#Resources">Resources Changes</a></li> |
| <li><a href="#Examples">Examples</a></li> |
| </ul> |
| |
| <!-- ****************** START OF N&N TABLE ****************** --> |
| <table cellpadding="10" cellspacing="0" width="600"> |
| <colgroup> |
| <col width="30%"/> |
| <col width="70%"/> |
| </colgroup> |
| <tbody> |
| <!-- ******************** JavaScript/OpenSocial ********************** --> |
| <tr> |
| <td colspan="2"><a name="OpenSocial"></a> <div style="font-size: 20px; font-weight: bold;">OpenSocial</div></td> |
| </tr> |
| |
| <tr id="opensocial-gadgets"> |
| <td width="30%" valign="top" align="left"><b>OpenSocial gadgets </b></td> |
| <td width="70%" valign="top"> |
| OpenSocial gadgets can now be opened as views in Eclipse. Gadgets are reusable |
| web UI components as defined in the <a |
| href="http://www.opensocial.org/Technical-Resources/opensocial-spec-v09/Gadgets-API-Specification.html#rfc.section.2" |
| title="OpenSocial v0.9 specification">OpenSocial Gadgets API Specification</a>. At |
| this point, only parts of the specification are implemented, but many existing gadgets |
| already work. |
| <p>Many social websites implement this specification and can host OpenSocial Gadgets, |
| for example iGoogle, hi5, LinkedIn, MySpace, orkut, Friendster, Ning, XING and others. |
| The "social" aspect of OpenSocial Gadgets, including access to user data and their network |
| of "friends", is also not yet implemented in e4 - we have focused on the Gadgets part of |
| the specification.</p> |
| <p>The procedure to add a gadget is straight-forward: |
| <ul> |
| <li>Press <b>CTRL+3</b> to bring up Quick Access, type "Open gadget" and press Enter.</li> |
| <li>A dialog will open in which you can enter the gadget URL (for example, use |
| <code>http://www.google.com/ig/modules/dictionary.xml</code> for a Google Dictionary gadget).</li> |
| <li>A new view displaying your gadget is now available in your workbench! |
| You can repeat the process to also display your Twitter timeline, a gadget showing the |
| temperature at your home, etc.</li> |
| </ul> |
| <img src="images/opensocial-overview.png" alt="Screenshot of Eclipse with OpenSocial gadgets" /></p> |
| <p>If your gadget is customizable, you can use the <b>View</b> menu to edit its preferences on a dedicated |
| property page.</p> |
| <img src="images/opensocial-propertypage.png" alt="OpenSocial gadget preferences" /> |
| <p>You can find more details, and a list of gadgets to try, on the <a href="http://wiki.eclipse.org/E4/OpenSocialGadgets" |
| title="Eclipse Wiki page - OpenSocialGadgets">e4 OpenSocial wiki page</a>. Keep in mind that |
| the implementation is in a very early stage. Many features of the OpenSocial Gadgets |
| specification are still missing or are not fully implemented.</p> |
| </td> |
| </tr> |
| <tr> |
| <td colspan="2"><a name="XWT"></a> <div style="font-size: 20px; font-weight: bold;">XWT</div></td> |
| </tr> |
| |
| <tr id="xwt-simplified-jface-viewers"> |
| <td width="30%" valign="top" align="left"><b>Simplified JFace viewers</b></td> |
| <td width="70%" valign="top">This release has simplified the declaration of JFace |
| viewer. The <code>ILabelProvider</code> and <code>IContentProvider</code> |
| are not needed any more. |
| <p>Here is the code for TableViewer,</p> |
| <pre> |
| <TableViewer input="{Binding Path=employees}"> |
| <TableViewer.columns> |
| <TableViewerColumn width="150" text="Name" d<span class="style1">isplayMemberPath="name"/</span>> |
| <TableViewerColumn width="150" text="Age" d<span class="style1">isplayMemberPath="age"/</span>> |
| </TableViewer.columns> |
| <TableViewer.control.layoutData> |
| <GridData horizontalAlignment="FILL" grabExcessHorizontalSpace="true"/> |
| </TableViewer.control.layoutData> |
| </TableViewer> |
| <img src="images/TableViewer.png" width="245" height="127" /></pre> |
| <p>Here is the code for ComboViewer,<br/> |
| </p> |
| <pre> |
| <ComboViewer input="{Binding Path=employees}" <strong class="style1">displayMemberPath="name"</strong>><br /> <ComboViewer.control.layoutData><br /> <GridData horizontalAlignment="FILL"<br /> grabExcessHorizontalSpace="true"/><br /> </ComboViewer.control.layoutData><br /> </ComboViewer> |
| </pre> |
| <p>And the code of ListViewer<br/> |
| </p> |
| <pre> |
| <ListViewer input="{Binding Path=employees}" <span class="style1">displayMemberPath="name"</span>><br /> <ListViewer.control.layoutData><br /> <GridData horizontalAlignment="FILL"<br /> grabExcessHorizontalSpace="true"/><br /> </ListViewer.control.layoutData><br /> </ListViewer> |
| |
| <img src="images/ListViewer.png" width="144" height="76" /></pre></td> |
| </tr> |
| |
| <tr id="xwt-comboviewer"> |
| <td width="30%" valign="top" align="left"><b>ComboViewer</b></td> |
| <td width="70%" valign="top">The <code>ComboViewer</code> of JFace |
| can now be defined in the same way as <code>ListViewer</code> and |
| <code>TableViewer</code> using the standard JFace class. |
| <p><img src="images/ComboViewer.png" width="199" height="111" /></p></td> |
| </tr> |
| |
| <tr id="xwt-viewer-filter"> |
| <td width="30%" valign="top" align="left"><b>Viewer Filter</b></td> |
| <td width="70%" valign="top">A new class <code>ViewerFilter</code> is provided |
| to define a filter in a JFace viewer. This class contains a collection of <code>Condition</code> |
| which is used as predicate to select the elements to display. |
| |
| <pre> <TableViewer Name="TableViewer" input="{Binding Path=employees}" ><br /> <strong><</strong><span class="style1">TableViewer.filters><br /> <ViewerFilter><br /> <ViewerFilter.conditions><br /> <Condition property="age" value="30" operator="GT"/><br /> <Condition property="name" value="Th*" operator="LIKE"/><br /> </ViewerFilter.conditions><br /> </ViewerFilter><br /> </TableViewer.filters><strong></strong></span><strong><br /></strong> <br /> <TableViewer.columns><br /> <TableViewerColumn width="150" text="Name" displayMemberPath="name"/><br /> <TableViewerColumn width="150" text="Age" displayMemberPath="age"/><br /> </TableViewer.columns><br /> </TableViewer><br /></pre> |
| <p>This <code>TableViewer</code> displays all employees whose name starts |
| with "Th" and age is great than 30.</p></td> |
| </tr> |
| |
| <tr id="xwt-iobservable-management"> |
| <td width="30%" valign="top" align="left"><b>IObservable Management </b></td> |
| <td width="70%" valign="top">A new IObservable management is implemented in XWT |
| for each UI resource unit. XWT keeps now all instances of IObservable. It allows developers |
| to get the IObservableValue and then modify observed values with automatically |
| notifications in UI and in behind data. The service is provided in the main class <code>XWT</code>: |
| <pre>IObservableValue XWT.getObservableValue(Object control, Object data, String path);</pre> </td> |
| </tr> |
| |
| <tr id="xwt-master-detail"> |
| <td width="30%" valign="top" align="left"><b>Master/Detail support</b></td> |
| <td width="70%" valign="top">XWT now provides a transparent "Declarative Data Binding" |
| solution to hide all the complexity of JFace data binding. The master/detail presentation |
| is supported straightforward in the path expression of Data Binding. The expression language |
| is extended to complete the missing type in programming language. |
| |
| <p>For example, the element type of a collection is always missing in binary Java classes. |
| This information is necessary to build the data binding chain in the master/detail pattern. |
| In the following example, we have a class <code>Company</code> with a property |
| "employees" in a collection or an array. The employees are displayed in a |
| <code>ListViewer</code>, when user select an element, its name will be displayed |
| in the <code>Label</code> below.. </p> |
| |
| <pre> <ListViewer name="master" input="{Binding Path=employees}" displayMemberPath="name"><br /> <ListViewer.control.layoutData><br /> <GridData horizontalAlignment="FILL"<br /> grabExcessHorizontalSpace="true"/><br /> </ListViewer.control.layoutData><br /> </ListViewer> |
| <Label text="{Binding elementName=master,path=<span class="style1">singleSelection.(j:Employee.name)}</span>"/> |
| </pre> |
| <p>The property "name" in the binding expression is prefixed by its type Employee and enclosed by parentheses. </p> |
| <p>Here is the example Snippet017 of Jface Data binding ported in XWT:</p> |
| <p><img src="images/Snippet015.png" width="437" height="298" /><br/> |
| </p></td> |
| </tr> |
| |
| <tr id="xwt-heterogeneous-data-model"> |
| <td width="30%" valign="top" align="left"><b>Heterogeneous data model support </b></td> |
| <td width="70%" valign="top">In a real application, the data model can be mixed together |
| with the business model: Java Bean, POJO, dynamic EMF, Web service, XML, database etc. |
| The previous release has supported most of them separately in one expression, data model |
| could not be mixed. This release removes this limitation, it provides a total transparent |
| Declarative Data Binding expression solution. |
| |
| <p>For example, if we have two classes: one in Java and another in EMF</p> |
| <pre> public class Author {<br /> protected EObject content;<br /> ...<br /> } <br /></pre> |
| <p>where "content" can be an instance of Book class defined in EMF, which is a dynamic model with one attribute "title". In UI, if we just need to specify the binding in the same way, </p> |
| <pre> <Text text="{Binding path=content.(Book.title)}" /> |
| </pre></td> |
| </tr> |
| |
| <tr id="xwt-update-source-trigger"> |
| <td width="30%" valign="top" align="left"><b>Update Source trigger</b></td> |
| <td width="70%" valign="top">This release integrates a new type <code>UpdateSourceTrigger</code>. |
| In addition, a new property "updateSourceTrigger" has been added in the class <code>Binding</code> |
| and therefore in data binding expressions. This class indicates when modifications |
| to the data binding source model will occur. Many UI elements have only one possible trigger, |
| such as check buttons. However text widgets have two possibilities: when the content gets changed, |
| or when the focus is lost. |
| |
| <pre> <Text text="{Binding path=name,<strong class="style1">updateSourceTrigger=FocusOut</strong>}"></pre></td> |
| </tr> |
| |
| <tr id="xwt-more-ops-conditions"> |
| <td width="30%" valign="top" align="left"><b>More operators in conditions</b></td> |
| <td width="70%" valign="top">The following operators have been added in <code>Condition</code> |
| and all classes of <code>Trigger</code> to extend the expression support: |
| <p> |
| <table width="496" border="1"> |
| <tr> |
| <td width="91"><strong><em>Operator</em></strong></td> |
| <td width="128"><strong><em>Data type</em></strong></td> |
| <td width="255"><strong><em>Description</em></strong></td> |
| </tr> |
| <tr> |
| <td>EG</td> |
| <td>Any</td> |
| <td>Equal</td> |
| </tr> |
| <tr> |
| <td>NE</td> |
| <td>Any</td> |
| <td>Not equal</td> |
| </tr> |
| <tr> |
| <td>LT</td> |
| <td>Number</td> |
| <td>Less then</td> |
| </tr> |
| <tr> |
| <td>GT</td> |
| <td>Number</td> |
| <td>Great then</td> |
| </tr> |
| <tr> |
| <td>LE</td> |
| <td>Number</td> |
| <td>Less and equal</td> |
| </tr> |
| <tr> |
| <td>GE</td> |
| <td>Number</td> |
| <td>Great and equal</td> |
| </tr> |
| <tr> |
| <td>LIKE</td> |
| <td>String</td> |
| <td>String matching. * and ? are supported.</td> |
| </tr> |
| <tr> |
| <td>IS_A</td> |
| <td>Any</td> |
| <td>Tests if an instance is a type</td> |
| </tr> |
| <tr> |
| <td>IS_KIND_OF</td> |
| <td>Type</td> |
| <td>Tests if a type is same or a subclass of another.</td> |
| </tr> |
| </table> |
| </p> |
| </td> |
| </tr> |
| |
| <tr id="xwt-tree-viewer"> |
| <td width="30%" valign="top" align="left"><b>TreeViewer</b></td> |
| <td width="70%" valign="top">JFace data binding has two classes, <tt>ObservableListTreeContentProvider</tt> |
| and <tt>ObservableSetTreeContentProvider</tt>, for <tt>TreeViewer</tt> to handle the tree content |
| corresponding to <tt>List</tt> and <tt>Set</tt> collections. These classes require a property to |
| determine the content of subtree nodes. |
| <p>XWT relies on the same concept to support <tt>TreeViewer</tt>. Two classes |
| are provided and a property "contentPath" will be used to indicate the sub-nodes: |
| </p> |
| <pre> <ObservableListTreeContentProvider contentPath="list"/> </pre> |
| <p>or:</p> |
| <pre> <ObservableSetTreeContentProvider contentPath="set"/></pre> |
| <p>The screenshot below is snippet019 from the data binding framework ported to XWT. |
| </p> |
| <p><img src="images/TreeViewer.png" width="479" height="233" /></p> |
| </td> |
| </tr> |
| |
| <tr id="xwt-forms"> |
| <td width="30%" valign="top" align="left"><b>Eclipse forms</b></td> |
| <td width="70%" valign="top">Eclipse Forms contains a set of customs widgets |
| and other supporting classes to provide Web-like UIs by modestly extending SWT |
| and/or manipulating style bits, colors, fonts and other properties in order to get the |
| desired behavior. This technology was used throughout PDE multi-page editors and |
| has been available as public API since Eclipse 3.0. |
| <p>The new plug-in <tt>org.eclipse.e4.xwt.forms</tt> has been added to support |
| creation of Eclipse forms in XWT. The support includes the latest forms API from Eclipse 3.5 and earlier.</p> |
| <p><a href="images/weaving-forms.png"><img src="images/weaving-forms500x300.png" width="500" height="330" /></a></p></td> |
| </tr> |
| |
| <tr id="xwt-ui-profile"> |
| <td width="30%" valign="top" align="left"><b>UI profile support</b></td> |
| <td width="70%" valign="top">UI profiles are a new mechanism for meta-class |
| management. They provide a flexible solution for managing a set of UI meta-classes, for registering |
| new meta-classes, and for overwriting and restoring the predefined meta-classes as a whole. |
| <p>Three new methods are introduced in the <tt>XWT</tt> class: <tt>createProfile()</tt>, |
| <tt>applyProfile()</tt>, and <tt>restoreProfile()</tt>. |
| </p> |
| <p>This solution is used by XWT Eclipse forms to support overwriting the standard SWT Widgets. </p></td> |
| </tr> |
| |
| <tr id="xwt-data-binding-change-notification"> |
| <td width="30%" valign="top" align="left"><b>Data binding change notification</b></td> |
| <td width="70%" valign="top">Data binding change notification is a tracking mechanism |
| for all events from UI elements in a resource scope. It is particularly useful for tracking the binding data state. |
| It is used by the e4 workbench integration to track the editor part state. |
| <p>Three new API methods are added in the <tt>XWT</tt> class, and a new interface <tt>IChangeListener</tt>: </p> |
| <ul> |
| <li><tt>addObservableChangeListener(Object context, IChangeListener listener)</tt></li> |
| <li><tt>removeObservableChangeListener(Object context, IChangeListener listener)</tt></li> |
| </ul></td> |
| </tr> |
| |
| <tr id="xwt-workbench-state-management"> |
| <td width="30%" valign="top" align="left"><b>Workbench state management</b></td> |
| <td width="70%" valign="top">In this release of XWT, e4 workbench integration is |
| extended to provide automatic state management for saveable/editor parts. This |
| state management uses data binding change notification to detect and notify the |
| data binding state in an editor part created using XWT declarative data binding. |
| <p>This solution is implemented in the class <tt>XWTSaveablePart</tt> located in the |
| bundle <tt>org.eclipse.e4.xwt.ui.workbench</tt>. All editors should inherit from this class to leverage this support.</p> |
| <p>This state management support is used in the last version of the e4 Contacts demo |
| to manage the change state of the <b>Details</b> part.</p> |
| <p><img src="images/Editor.png" width="700" height="480" /><br/> |
| </p></td> |
| </tr> |
| |
| <tr id="xwt-multi-binding"> |
| <td width="30%" valign="top" align="left"><b>Data binding aggregation</b></td> |
| <td width="70%" valign="top">In general, data binding establishes a binding from |
| one property of a binding source to one property of a binding target. |
| Multi-binding provides the ability to bind one binding target property to a list of |
| source properties, and then apply logic to produce a value with the given input. |
| <p>In the e4 Contacts demo, a full name is composed of two properties: first name and last name. |
| A Text field is bound to a composite virtual property:</p> |
| <pre><Text> |
| <Text.text> |
| <MultiBinding> |
| <Binding path="firstName"/> |
| <Binding path="lastName"/> |
| </MultiBinding> |
| </Text.text> |
| </Text> |
| </pre> |
| <pre><img src="images/MultiBinding.png" width="700" height="230" /></pre></td> |
| </tr> |
| |
| <tr id="xwt-animation"> |
| <td width="30%" valign="top" align="left"><b>Animation</b></td> |
| <td width="70%" valign="top">This release includes initial integration |
| with <a href="http://kenai.com/projects/trident/pages/Home">Trident</a>, an |
| animation engine for Java. This integration consists of the following elementary classes: |
| <ul> |
| <li><tt>ColorAnimation</tt></li> |
| <li><tt>IntAnimation</tt></li> |
| <li><tt>PointAnimation</tt></li> |
| <li><tt>RectangleAnimation</tt></li> |
| </ul> |
| <p>These classes are driven by the class <tt>Storyboard</tt> via Event Trigger. |
| Here is an example for the fade transition:</p> |
| <pre><Shell xmlns="http://www.eclipse.org/xwt/presentation"<br /> xmlns:x="http://www.eclipse.org/xwt"<br /> name="window"><br/> <Shell.layout><br /> <GridLayout numColumns="1"/><br /> </Shell.layout> <br /> <Label name="labelTarget" text="Int the animation"/><br /> |
| <Button name="startButton" text="Start Animation"><br /> <Button.triggers><br /> <EventTrigger routedEvent="<strong>SelectionEvent</strong>"><br /> <BeginStoryboard name="MyBeginStoryboard"><br /> <strong><Storyboard><br /> <IntAnimation<br /> targetName="window"<br /> targetProperty="alpha" <br /> duration="0:0:3" from="0" to="255" /><br /> </Storyboard><br /></strong> </BeginStoryboard><br /> </EventTrigger><br /> </Button.triggers><br /> </Button> |
| </Shell> |
| <img src="images/animation.png" width="124" height="85" /> |
| </pre> |
| <p>The fade animation starts when we click on the button "Start animation", |
| it lasts for three seconds and the alpha value will change from 0 to 255.</p></td> |
| </tr> |
| |
| <tr id="itemname8"> |
| <td width="30%" valign="top" align="left"><b>Data binding validation and error handling</b></td> |
| <td width="70%" valign="top">Validation is the last step in data binding |
| operations during an update. In general, the result needs to be displayed in the UI to |
| notify end users. There are several way to perform this notification: decoration, status bars, |
| tool tips, message dialogs, etc. A generic solution is implemented in this release to |
| support all the most useful error handling mechanisms of data binding. This solution itself relies on data binding. |
| <p>Here is an example of a status bar that manages two <tt>Text</tt> fields.</p> |
| <p><img src="images/BindingStatus.png" width="229" height="125" /></p></td> |
| </tr> |
| |
| <tr id="xwt-null-layout"> |
| <td width="30%" valign="top" align="left"><b>Support for null layout</b></td> |
| <td width="70%" valign="top">The standard SWT Composite has no layout by default. |
| Its children can be manually positioned and arranged by the coordination x and y. It is |
| known as Null Layout. In case of a Composite with a pre-defined layout, when this UI |
| element is marked up in XWT, it is possible to need removing the layout and use it |
| without layout. With this release, it can be done using an extension of markup "Null". |
| <p>For example, MyFillComposite is a Composite with a FillLayout, we can create one without layout in the following way:</p> |
| <pre> <MyFillComposite layout-"{x:Null}"/></pre></td> |
| </tr> |
| |
| <tr id="xwt-resource-processing"> |
| <td width="30%" valign="top" align="left"><b>Resource pre-processing</b></td> |
| <td width="70%" valign="top">By default, XWT UI resources are loaded directly to |
| create runtime SWT UI controls. In some cases, we need to change dynamically |
| some UIs during runtime. For example, it could be useful to change the UIs through |
| some conditions such as security rules, user privileges, application context etc. |
| <p>To meet this requirement, a pre-processing mechanism is introduced. A callback |
| will be called just after the loading of XWT Resource if the following option is provided in XWT.loadWithOptions().</p> |
| <pre> options.get(IXWTLoader.BEFORE_PARSING_CALLBACK, preprocessor); |
| XWT.loadWithOptions(url, options);</pre> |
| <p>where the variable "preprocessor" is an instance of the type IBeforeParsingCallback.</p> |
| <p></p></td> |
| </tr> |
| |
| <!-- ******************** XWT TOOLING ********************** --> |
| |
| <tr> |
| <td colspan="2"><a name="XWTTooling"></a> <div style="font-size: 20px; font-weight: bold;">XWT Tooling</div></td> |
| </tr> |
| |
| <tr id="xwt-designer"> |
| <td width="30%" valign="top" align="left"><b>XWT visual designer</b></td> |
| <td width="70%" valign="top">XWT Visual Designer is a visual editor-like <a href="http://en.wikipedia.org/wiki/WYSIWYG">WYSIWYG</a> tool. |
| It is designed to allow applications to be designed by non-software engineers. |
| <p><a href="images/xw-designer.png"><img src="images/xw-designer500x333.png" width="500" height="390" /></a></p> |
| <p>Here is the summary of the main features supported by XWT Visual Designer:</p> |
| <ol> |
| <li>A tool palette view</li> |
| <li>WYSIWYG authoring</li> |
| <li>Support for SWT and JFace</li> |
| <li>Support for XML editing with code completion</li> |
| <li>Integration with the tabbed <b>Properties</b> view</li> |
| <li>Hierarchical outline view with DnD operation, copy/paste and undo/redo</li> |
| <li>Support for all layouts: including <tt>SashForm</tt></li> |
| <li>String externalization</li> |
| <li>Surround With</li> |
| <li>Widget style change via context menus</li> |
| <li>Advanced control binding editing</li> |
| </ol> |
| <p><a href="images/control-binding.png"><img src="images/control-binding500x395.png" width="500" height="394" /></a></p> |
| <p>This tool is tested on Windows, Linux and Mac OS Carbon/Cocoa.</p></td> |
| </tr> |
| |
| <tr id="xwt-part-creation"> |
| <td width="30%" valign="top" align="left"><b> Part creation</b></td> |
| <td width="70%" valign="top">XWT Visual Designer provides a palette tool for |
| creating an empty <tt>Part</tt> implementation. A dialog is |
| presented during part creation: It is possible to create a Java based part or an XWT based part. |
| <p><img src="images/e4VD-01_600.png"/></p> |
| <p><img src="images/e4XWTVD-01.png"/></p> |
| <p>If the data context type is provided, the UI form is generated through the bean structure. </p></td> |
| </tr> |
| |
| <tr id="xwt-input-part"> |
| <td width="30%" valign="top" align="left"><b>XWT input part</b></td> |
| <td width="70%" valign="top">An <i>input part</i> is a part that reads its root data |
| from a data source such as a file. A <b>Contributed Input Part</b> palette tool |
| has been added to create a part that reads data from an EMF file. |
| <p><img src="images/e4Contributed-01_600.png" width="600" height="443" /></p> |
| <p>After having provided the EMF data file in the creation option dialog, we can |
| select the root object such as Customer. For a collection property, it is possible to |
| check the option "Master/Detail" to generate the necessary code to |
| update "Selection" property of the Eclipse selection service when an item gets selected.</p> |
| <p><img src="images/e4Contributed-02.png"/></p> |
| <p>The UI form for the Part is generated in XWT through the data structure and user selection.</p> |
| <p><img src="images/e4Contributed-04_600.png"/></p></td> |
| </tr> |
| |
| <tr id="xwt-selection-part"> |
| <td width="30%" valign="top" align="left"><b>XWT Selection Part</b></td> |
| <td width="70%" valign="top">A "Selection Part" is a part that displays |
| the selected element in the Eclipse selection service. During the "Selection Part" |
| creation using the "Contributed Selection Part" tool in the palette, an option |
| dialog is presented that requires a data type. The data type can be a type defined in an EMF data file, or directly in a Java class. |
| The tool also allows you to select the properties to display. |
| <p><img src="images/e4Contributed-05.png" /></p> |
| <p>With "Input Part" palette tool, we can create an e4 application in Master/Detail presentation pattern without one line hand code.</p> |
| <p><img src="images/e4Contributed-07_600.png"/></p></td> |
| </tr> |
| |
| <!-- ******************** WORKBENCH TOOLING ********************** --> |
| |
| <tr> |
| <td colspan="2"><a name="wbTooling"></a> <div style="font-size: 20px; font-weight: bold;">Workbench Tooling</div></td> |
| </tr> |
| |
| <tr id="workbench-visual-designer"> |
| <td width="30%" valign="top" align="left"><b>New visual design tool</b></td> |
| <td width="70%" valign="top">e4 Workbench Visual Designer is a visual editor-like WYSIWYG tool |
| for e4 workbench authoring. The designer allows you to assemble and layout an |
| e4 application visually without needing programming or EMF knowledge. |
| It reuses many components from XWT Visual Designer. |
| <p><a href="images/e4Designer.png"><img src="images/e4Designer500.png" width="500" height="420" /></a></p> |
| <p>The following components/features are implemented:</p> |
| <ol> |
| <li>A tool palette view</li> |
| <li>WYSIWYG authoring</li> |
| <li>Part layout reorganization using DnD</li> |
| <li>Integration with the standard <b>Properties</b> view</li> |
| <li>Hierarchical outline view</li> |
| </ol> |
| <p>This tool is tested on Windows, Linux and Mac OS Carbon/Cocoa.</p></td> |
| </tr> |
| |
| <tr id="e4-project-wizard"> |
| <td width="30%" valign="top" align="left"><b>e4 project wizard</b></td> |
| <td width="70%" valign="top">A project wizard has been added to help creating a simple e4 application project. |
| <p><a href="http://wiki.eclipse.org/E4/E4Designer"><img src="images/e4Wizard.png" width="525" height="500" /></a></p> |
| <p>A <a href="http://wiki.eclipse.org/E4/E4Designer">screencast</a> is provided |
| to help getting started with an e4 application. It shows how to develop, run and |
| deploy an e4 application using the e4 wizard and e4 Visual Designer.</p></td> |
| </tr> |
| |
| <tr id="designer-outline-view"> |
| <td width="30%" valign="top" align="left"><b>Hierarchical outline view</b></td> |
| <td width="70%" valign="top">The following new features have been added |
| to the hierarchical <b>Outline</b> view: |
| <ul> |
| <li>DnD for moving and copy</li> |
| <li>DnD creation from Palette</li> |
| <li>Copy/Paste/Cut</li> |
| <li>Undo/Redo</li> |
| </ul></td> |
| </tr> |
| |
| <tr id="designer-integrity"> |
| <td width="30%" valign="top" align="left"><strong>Model integrity control</strong></td> |
| <td width="70%" valign="top">Model integrity control in the current e4 |
| workbench is very weak. The only model integrity control currently provided is the |
| integrity of the java programming language itself. The UI meta model provides almost |
| no integrity checking. Since e4 Visual Designer relies on the UI meta model, we need additional model integrity control. |
| <p>A command-based mechanism has been added in both the <b>Outline</b> view and |
| WYSIWYG editor to guarantee the correctness of the UI model and provides the undo/redo capability.</p></td> |
| </tr> |
| |
| <tr id="designer-perspective-switch"> |
| <td width="30%" valign="top" align="left"><b>Perspective switching</b></td> |
| <td width="70%" valign="top">A context menu has been added in the <b>Outline</b> |
| view to switch one perspective to another. |
| <p><img src="images/Perspective.png" width="477" height="546" /></p></td> |
| </tr> |
| |
| <tr id="designer-change-active-part"> |
| <td width="30%" valign="top" align="left"><b>Change the active part</b></td> |
| <td width="70%" valign="top">A context menu has been added in the <b>Outline</b> |
| view and WYSIWYG editor to change the active part contained in a <tt>PartStack</tt>. |
| <p><img src="images/ActivePart2.png" width="467" height="524" /></p> |
| <p><img src="images/ActivePart.png" width="592" height="494" /></p></td> |
| </tr> |
| |
| <tr id="visual-design-search"> |
| <td width="30%" valign="top" align="left"><b>Search capability</b></td> |
| <td width="70%" valign="top">This release provides an useful search operation |
| in the visual design view and <b>Outline</b> view via the context menu. |
| <p><img src="images/Search01.png" width="600" height="527" /></p> |
| <p>Three submenu entries are created, corresponding to three kinds of search on Element Name, Element Id and Contribution URI. </p> |
| <p><img src="images/Find.png" width="350" height="302" /></p> |
| <p>The found element will be selected in the current part view. </p> |
| This feature is a basic operation that can be used to setup the references between any elements in the <b>Properties</b> view.</td> |
| </tr> |
| |
| <tr id="visual-design-category-outline"> |
| <td width="30%" valign="top" align="left"><b>Category display in hierarchical outline view</b></td> |
| <td width="70%" valign="top">Previously, the visual designer's <b>Outline</b> view used an |
| EMF-generated tree view to display the contents of Workbench elements. All contained |
| elements were displayed as children in a flat list. For example, The elements of Handler and Command |
| were displayed at the same level as the Trimmed Window. |
| <p><img src="images/Outline01.png" width="608" height="355" /></p> |
| <p>This release changes the view by adding the categories as defined by the containment |
| property, except the children property. </p></td> |
| </tr> |
| |
| <tr id="visual-design-context-menu"> |
| <td width="30%" valign="top" align="left"><b>Child creation via context menu</b></td> |
| <td width="70%" valign="top">In the visual designer's <b>Outline</b> view and <b>Visual Design</b> view, a |
| context menu "New" is added for each node to create an immediate child. |
| <p><img src="images/NewMenu01.png" /></p> |
| <p>After the calling of this menu, a dialog in Rich UI is displayed for data initialization, in |
| which all required information (denoted by "*") must be provided.</p> |
| <p><img src="images/NewInitialization.png" width="600" height="473" /></p></td> |
| </tr> |
| |
| <tr id="editor-properties-view"> |
| <td width="30%" valign="top" align="left"><b>Editing in Properties view</b></td> |
| <td width="70%" valign="top">A user-friendly editor in the visual designer has been |
| added to he <b>Properties</b> view under a delegate tab. |
| <p><img src="images/PropertiesView.png" width="600" height="473" /></p></td> |
| </tr> |
| |
| <tr id="model-editor"> |
| <td width="30%" valign="top" align="left"><b>Advanced workbench model editor</b></td> |
| <td width="70%" valign="top">A new form-based editor has been introduced that |
| provides support for editing the workbench model in a more natural way than the |
| default reflective editor that comes with EMF. This first version supports: |
| <ul> |
| <li>Editing the model at design time</li> |
| <li>Editing a live model in a running e4 application instance</li> |
| <li>Integration with JDT to define contributions using auto-completion</li> |
| </ul> |
| <p><img src="images/model-editor.png" alt="e4 model editor"/></p> |
| </td> |
| </tr> |
| |
| <tr id="modeltooling_singlesource"> |
| <td width="30%" valign="top" align="left"><b>Single sourcing</b></td> |
| <td width="70%" valign="top">The model editor now comes with integration in the different flavors of the Eclipse Platform: |
| <ul> |
| <li>Eclipse 3.6 SDK:<br /> |
| <img src="images/screen_36SDK.png" width='550' /> |
| </li> |
| <li>Eclipse 4.0 SDK:<br /> |
| <img src="images/screen_40SDK.png" width='550' /> |
| </li> |
| <li>"Native" e4-Application:<br /> |
| <img src="images/screen_e4.png" width='550' /> |
| </li> |
| </ul> |
| Using the same code base. The only difference is how the component integrates into the different platforms. |
| </td> |
| </tr> |
| |
| <tr id="modeltooling_iconuris"> |
| <td width="30%" valign="top" align="left"><b>Support for icon-URIs</b></td> |
| <td width="70%" valign="top">Support for selection constructing icons URIs has been added to |
| the form-based workbench model editor. |
| <p><img src="images/icon_selection.png" width="550" /></p></td> |
| </tr> |
| |
| <tr id="modeltooling_editorextension"> |
| <td width="30%" valign="top" align="left"><b>Support for extended applications</b></td> |
| <td width="70%" valign="top">The workbench model editor bundle now comes with an extension point |
| which allows it to deal with extended application models. |
| <p><img src="images/screen_extended.png" width="550" /></p></td> |
| </tr> |
| |
| <!-- ******************** Resources ********************** --> |
| |
| <tr> |
| <td colspan="2"><a name="Resources"></a> <div style="font-size: 20px; font-weight: bold;">Resources</div></td> |
| </tr> |
| |
| <tr id="SFS"> |
| <td valign="top" align="left" width="30%"><b>Semantic File System</b></td> |
| <td valign="top" width="70%"> |
| The Semantic File System (SFS) continues the e4 work on flexible resources and |
| brings in a capability to work with a <b>non-file-system-based content</b>. |
| <p>The SFS allows the resource model to tap a variety of sources of information that reside on the |
| Internet or a corporate network. The minimal requirement is that the source of |
| information exposes its content in the form of Internet resources. That is, pieces of information |
| that can be addressed via URI/URL and transferred via a byte stream. The |
| resource-based content will usually be accessed via the HTTP protocol |
| but the SFS also allows plugging in other communication protocols. </p> |
| |
| <p>Remote content exposed via SFS can be mounted as a resource hierarchy |
| underneath an Eclipse project so that standard Eclipse editors/tools can work |
| with this content as if it were coming from the local file system.</p> |
| |
| <p>You can start playing with local-only aspects of the SFS by creating a new |
| project and choosing SFS as a file system implementation: </p> |
| |
| <p><img src="images/NewSFSProject.png" alt="Create new project on SFS" /></p> |
| |
| <p>You can discover the full capabilities of SFS by running through |
| <a href="http://wiki.eclipse.org/E4/Resources/Semantic_File_System/Demos/Running_SFS_Examples">SFS Examples</a> |
| that demonstrate additional features and aspects of the user interface.</p> |
| </td></tr> |
| |
| <tr id="SFS-team"> |
| <td valign="top" align="left" width="30%"><b>SFS team integration</b></td> |
| <td valign="top" width="70%"> |
| The Semantic File System integrates with different aspects of the Eclipse Platform |
| <b>Team</b> support: |
| <ul> |
| <li>Repository Provider to control content lifecycle (e.g. open for edit, revert, etc)</li> |
| <li>Synchronization support to control flow of changes between Eclipse and remote sources of information</li> |
| <li>History View</li> |
| <li>Merge/Compare</li> |
| </ul> |
| |
| <p>For example, you can share the project via the SFS Repository provider in order |
| to enable <tt>FileModificationValidator</tt> and <tt>MoveDeleteHook</tt> functionality:</p> |
| |
| <p><img src="images/ShareProject.png" alt="Share SFS project" /></p> |
| |
| <p>Or you can open the <b>Synchronize</b> perspective and examine your changes using <b>Compare Editor</b>:</p> |
| |
| <p><img src="images/SynchronizeCompare.png" alt="Share SFS project" /></p> |
| |
| <p>For more information about Semantic File System, see the <a href="http://wiki.eclipse.org/E4/Resources/Semantic_File_System">SFS wiki</a>.</p> |
| |
| <p>The SFS is currently in an early incubation phase so that the APIs and the |
| functionality are likely to be changed/extended in the upcoming releases.</p> |
| </td></tr> |
| |
| <!-- ******************** Examples ********************** --> |
| |
| <tr> |
| <td colspan="2"><a name="Examples"></a> <div style="font-size: 20px; font-weight: bold;">Examples</div></td> |
| </tr> |
| |
| <tr id="simpleide_demo"> |
| <td width="30%" valign="top" align="left"><b>SimpleIDE Demo</b></td> |
| <td width="70%" valign="top">Work on another demo application has been started |
| which shows how to write a very simple IDE like Application using pure e4-UI-Technologies |
| <p><img src="simpleide.png" width="550" /></p> |
| <p>For more information take a look at: <a href="http://wiki.eclipse.org/E4/UI/SimpleIDE">e4 wiki page</a></p> |
| </td> |
| </tr> |
| |
| <!-- ****************** END OF N&N TABLE ****************** --> |
| </tbody> |
| </table> |
| </body> |
| </html> |