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:
| OpenSocial | |||||||||||||||||||||||||||||||
| OpenSocial gadgets | OpenSocial gadgets can now be opened as views in Eclipse. Gadgets are reusable
		web UI components as defined in the OpenSocial Gadgets API Specification. At
		this point, only parts of the specification are implemented, but many existing gadgets
		already work. 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. The procedure to add a gadget is straight-forward: 
   If your gadget is customizable, you can use the View menu to edit its preferences on a dedicated property page.   You can find more details, and a list of gadgets to try, on the e4 OpenSocial wiki page. 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. | ||||||||||||||||||||||||||||||
| XWT | |||||||||||||||||||||||||||||||
| Simplified JFace viewers | This release has simplified the declaration of JFace 
    viewer. The ILabelProviderandIContentProviderare not needed any more.Here is the code for TableViewer,   
<TableViewer input="{Binding Path=employees}">
	<TableViewer.columns>
		<TableViewerColumn width="150" text="Name" displayMemberPath="name"/>
		<TableViewerColumn width="150" text="Age" displayMemberPath="age"/>
	</TableViewer.columns>
     	<TableViewer.control.layoutData>
		<GridData horizontalAlignment="FILL" grabExcessHorizontalSpace="true"/>
	</TableViewer.control.layoutData>
</TableViewer>
	 Here is the code for ComboViewer, 
  <ComboViewer input="{Binding Path=employees}" displayMemberPath="name">And the code of ListViewer 
  <ListViewer input="{Binding Path=employees}" displayMemberPath="name"> | ||||||||||||||||||||||||||||||
| ComboViewer | The ComboViewerof JFace 
    can now be defined in the same way asListViewerandTableViewerusing the standard JFace class.
 | ||||||||||||||||||||||||||||||
| Viewer Filter | A new class ViewerFilteris provided 
    to define a filter in a JFace viewer. This class contains a collection ofConditionwhich is used as predicate to select the elements to display.  <TableViewer Name="TableViewer" input="{Binding Path=employees}" >This  | ||||||||||||||||||||||||||||||
| IObservable Management | 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 XWT:IObservableValue XWT.getObservableValue(Object control, Object data, String path); | ||||||||||||||||||||||||||||||
| Master/Detail support | 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. 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    <ListViewer name="master" input="{Binding Path=employees}" displayMemberPath="name">The property "name" in the binding expression is prefixed by its type Employee and enclosed by parentheses. Here is the example Snippet017 of Jface Data binding ported in XWT: 
 | ||||||||||||||||||||||||||||||
| Heterogeneous data model support | 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. For example, if we have two classes: one in Java and another in EMF   public class Author {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,  <Text text="{Binding path=content.(Book.title)}" />
	 | ||||||||||||||||||||||||||||||
| Update Source trigger | This release integrates a new type UpdateSourceTrigger.  
    In addition, a new property "updateSourceTrigger" has been added in the classBindingand 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.  <Text text="{Binding path=name,updateSourceTrigger=FocusOut}"> | ||||||||||||||||||||||||||||||
| More operators in conditions | The following operators have been added in Conditionand all classes ofTriggerto extend the expression support:
 
 | ||||||||||||||||||||||||||||||
| TreeViewer | JFace data binding has two classes, ObservableListTreeContentProvider
    and ObservableSetTreeContentProvider, for TreeViewer to handle the tree content 
    corresponding to List and Set collections. These classes require a property to 
    determine the content of subtree nodes. XWT relies on the same concept to support TreeViewer. Two classes are provided and a property "contentPath" will be used to indicate the sub-nodes: <ObservableListTreeContentProvider contentPath="list"/> or: <ObservableSetTreeContentProvider contentPath="set"/> The screenshot below is snippet019 from the data binding framework ported to XWT. 
 | ||||||||||||||||||||||||||||||
| Eclipse forms | 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. The new plug-in org.eclipse.e4.xwt.forms has been added to support creation of Eclipse forms in XWT. The support includes the latest forms API from Eclipse 3.5 and earlier. | ||||||||||||||||||||||||||||||
| UI profile support | 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. Three new methods are introduced in the XWT class: createProfile(), applyProfile(), and restoreProfile(). This solution is used by XWT Eclipse forms to support overwriting the standard SWT Widgets. | ||||||||||||||||||||||||||||||
| Data binding change notification | 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. Three new API methods are added in the XWT class, and a new interface IChangeListener: 
 | ||||||||||||||||||||||||||||||
| Workbench state management | 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. This solution is implemented in the class XWTSaveablePart located in the bundle org.eclipse.e4.xwt.ui.workbench. All editors should inherit from this class to leverage this support. This state management support is used in the last version of the e4 Contacts demo to manage the change state of the Details part. 
 | ||||||||||||||||||||||||||||||
| Data binding aggregation | 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. 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: <Text>
  <Text.text>
    <MultiBinding>
      <Binding path="firstName"/>
      <Binding path="lastName"/> 
    </MultiBinding>
  </Text.text>
</Text>
 | ||||||||||||||||||||||||||||||
| Animation | This release includes initial integration 
    with Trident, an 
    animation engine for Java. This integration consists of the following elementary classes: 
 These classes are driven by the class Storyboard via Event Trigger. Here is an example for the fade transition: <Shell xmlns="http://www.eclipse.org/xwt/presentation" 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. | ||||||||||||||||||||||||||||||
| Data binding validation and error handling | 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. Here is an example of a status bar that manages two Text fields. 
 | ||||||||||||||||||||||||||||||
| Support for null layout | 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". For example, MyFillComposite is a Composite with a FillLayout, we can create one without layout in the following way:      <MyFillComposite layout-"{x:Null}"/> | ||||||||||||||||||||||||||||||
| Resource pre-processing | 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. 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(). options.get(IXWTLoader.BEFORE_PARSING_CALLBACK, preprocessor); XWT.loadWithOptions(url, options); where the variable "preprocessor" is an instance of the type IBeforeParsingCallback. | ||||||||||||||||||||||||||||||
| XWT Tooling | |||||||||||||||||||||||||||||||
| XWT visual designer | XWT Visual Designer is a visual editor-like WYSIWYG tool. 
    It is designed to allow applications to be designed by non-software engineers. Here is the summary of the main features supported by XWT Visual Designer: 
 This tool is tested on Windows, Linux and Mac OS Carbon/Cocoa. | ||||||||||||||||||||||||||||||
| Part creation | XWT Visual Designer provides a palette tool for
    creating an empty Part implementation. A dialog is 
    presented during part creation: It is possible to create a Java based part or an XWT based part. 
 
 If the data context type is provided, the UI form is generated through the bean structure. | ||||||||||||||||||||||||||||||
| XWT input part | An input part is a part that reads its root data 
    from a data source such as a file. A Contributed Input Part palette tool 
	has been added to create a part that reads data from an EMF file. 
 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. 
 The UI form for the Part is generated in XWT through the data structure and user selection. 
 | ||||||||||||||||||||||||||||||
| XWT Selection Part | 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. 
 With "Input Part" palette tool, we can create an e4 application in Master/Detail presentation pattern without one line hand code. 
 | ||||||||||||||||||||||||||||||
| Workbench Tooling | |||||||||||||||||||||||||||||||
| Advanced workbench model editor | 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: 
 
 | ||||||||||||||||||||||||||||||
| Single sourcing | The model editor now comes with integration in the different flavors of the Eclipse Platform: 
 | ||||||||||||||||||||||||||||||
| Support for icon-URIs | Support for selection constructing icons URIs has been added to
    the form-based workbench model editor. 
 | ||||||||||||||||||||||||||||||
| Support for extended applications | The workbench model editor bundle now comes with an extension point 
    which allows it to deal with extended application models. 
 | ||||||||||||||||||||||||||||||
| New visual design tool | 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. The following components/features are implemented: 
 This tool is tested on Windows, Linux and Mac OS Carbon/Cocoa. | ||||||||||||||||||||||||||||||
| e4 project wizard | A project wizard has been added to help creating a simple e4 application project. A screencast 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. | ||||||||||||||||||||||||||||||
| Hierarchical outline view | The following new features have been added 
    to the hierarchical Outline view of e4 Workbench Visual Designer: 
 | ||||||||||||||||||||||||||||||
| Model integrity control | 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. A command-based mechanism has been added in both the Outline view and WYSIWYG editor to guarantee the correctness of the UI model and provides the undo/redo capability. | ||||||||||||||||||||||||||||||
| Perspective switching | The Outline view of the e4 Workbench
    Visual Designer has a command to switch from one perspective to another. This
    allows you to design multiple perspectives for your application from within the
    visual design tool. 
 | ||||||||||||||||||||||||||||||
| Change the active part | The Outline
    view and WYSIWYG editor of e4 Workbench Visual Designer has a command to change
    the active part contained in a PartStack. This allows you to design each
    part within a stack using the visual design tool. 
 | ||||||||||||||||||||||||||||||
| Search capability | This release provides a useful search operation 
    in the visual design view and Outline view via the context menu. 
 Three submenu entries are created, corresponding to three kinds of search on Element Name, Element Id and Contribution URI. 
 The found element will be selected in the current part view.This feature is a basic operation that can be used to setup the references between any elements in the Properties view. | ||||||||||||||||||||||||||||||
| Category display in hierarchical outline view | Previously, the visual designer's Outline 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. 
 This release changes the view by adding the categories as defined by the containment property, except the children property. | ||||||||||||||||||||||||||||||
| Child creation via context menu | In the visual designer's Outline view and Visual Design view, a 
    context menu "New" is added for each node to create an immediate child. 
 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. 
 | ||||||||||||||||||||||||||||||
| Editing in Properties view | A user-friendly editor in the visual designer has been 
    added to he Properties view under a delegate tab. 
 | ||||||||||||||||||||||||||||||
| Resources | |||||||||||||||||||||||||||||||
| Semantic File System | The Semantic File System (SFS) continues the e4 work on flexible resources and 
      brings in a capability to work with a non-file-system-based content. 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. 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. You can start playing with local-only aspects of the SFS by creating a new project and choosing SFS as a file system implementation: 
 You can discover the full capabilities of SFS by running through SFS Examples that demonstrate additional features and aspects of the user interface. | ||||||||||||||||||||||||||||||
| SFS team integration | The Semantic File System integrates with different aspects of the Eclipse Platform
    Team support: 
 For example, you can share the project via the SFS Repository provider in order to enable FileModificationValidator and MoveDeleteHook functionality: 
 Or you can open the Synchronize perspective and examine your changes using Compare Editor: 
 For more information about Semantic File System, see the SFS wiki. 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. | ||||||||||||||||||||||||||||||
| Examples | |||||||||||||||||||||||||||||||
| SimpleIDE Demo | Work on another demo application has been started 
    which shows how to write a very simple IDE like Application using pure e4-UI-Technologies 
 For more information take a look at: e4 wiki page | ||||||||||||||||||||||||||||||