Mitch Pronschinske is a Senior Content Analyst at DZone. That means he writes and searches for the finest developer content in the land so that you don't have to. He often eats peanut butter and bananas, likes to make his own ringtones, enjoys card and board games, and is married to an underwear model. Mitch is a DZone Zone Leader and has posted 2573 posts at DZone. You can read more from them at their website. View Full User Profile

Eclipse 4 Goes the Extra Mile

11.25.2009
| 14126 views |
  • submit to reddit
The Eclipse 4 development environment, codenamed "e4", just reached its second milestone.  The new milestone includes significant changes to the platform and the XML Windowing Toolkit (XWT) for the GUI.  XWT, a new feature in the fourth version of Eclipse, received a lot of attention in this milestone.

XWT
In the second milestone, it's easier to generate the TableViewer, ComboViewer, and ListViewer components responsible for data display.  For the JFace viewer declaration, the ILabelProvider and IContentProvider are no longer needed.  The JFace viewer now has a new class ViewerFilter for defining filters.

Here is code for the Table Viewer:
<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>

For each UI resource unit in XWT, a new IObservable management is implemented, allowing developers to take the IObservableValue and then modify observed values with automatic notifications in the UI and behind data.  

In milestone 2, XWT starts to implement transparent "Declarative Data Binding" to hide the complexity of JFace data binding.  The Eclipse programmers say the data binding mechanism is more user friendly than the classes and methods in the JFace Java GUI library.  Declarative Data Binding allows master/detail relationships to be displayed and it allows data models and business models to mix.

More operators have been added to XWT in milestone 2.  The table below shows the Condition and Trigger operators that have been added.

Operator Data type Description
EG Any Equal
NE Any Not equal
LT Number Less then
GT Number Great then
LE Number Less and equal
GE Number Great and equal
LIKE String String matching. * and ? are supported.
IS_A Any Tests if an instance is a type
IS_KIND_OF Type Tests if a type is same or a subclass of another.


Platform
In the second milestone of Eclipse 4, the new SaveablePart feature allows parts such as text fields to become saveable.  The enhanced e4 renderer will now display and update a part's 'dirty state' affordance while the underlying model changes.  Changing a vCard's details, for example, will cause the dirty affordance to appear in the part's tab.

The e4 workbench in milestone 2 supports multi-stroke keybindings, meaning a keybinding can be added to the workbench at the Window, Application, or Part.  The keybinding attaches a key sequence to a command.  Context injection in e4 supports annotations from the upcoming javax.inject package.  The internal injection processing now passes the open source annotation-based injection test suite at the JSR-330 homepage.  Eclipse 4 plans to support JSR-330 as a core feature.

The core UI code in e4 is now written against the 'data' layer, meaning the existing renders can still be used while allowing greater flexibility for the client's model containment management.  The UI model predefines a part-based containment model and a capture of the legacy IDE containment structure.  This new model facilitates cleaner use of generics.  Java tooling will now correctly flag elements added to invalid containers.

Finally, OpenSocial gadgets can now be opened as views in Eclipse.  Many social websites including iGoogle, LinkedIn, and MySpace, use the OpenSocial Gadgets API.  If your gadget is customizable, you can edit its preferences on a dedicated property page using the "View" menu.

The third milestone for Eclipse 4 is set for January, 2010.  The final milestone is expected in May.

Comments

Gregory Smith replied on Wed, 2009/11/25 - 10:57am

Are you kidding? Support for XWT and OpenSocial Gagets?!

How about simply supporting relative addressing of resources (e.g., jar files) as any decent IDE does or NOT jumping to another class file when I attempt to use Ctrl-V to paste something into the editor?

Wai Ho replied on Wed, 2009/11/25 - 3:22pm

Waaa. XML. How can a new solution use XML? XML is so '90's...

Jacek Furmankiewicz replied on Thu, 2009/11/26 - 12:41pm

Really, who drives the direction of Eclipse now?

I'd rather much see work being put into the JDT to make it more open for other JVM languages (Scala in particular) to interporate in mixed Java/Scala projects.

It seems one of the reasons the Scala Eclipse plugin is coming so slowly is that Java-only assumptions are being made in JDT all over the place, making it very hard to use.

And UI in XML? Haven't we been over this XML fad already? How about JSON or YAML instead (if you really need to).

Kim Moir replied on Thu, 2009/11/26 - 4:35pm in response to: Jacek Furmankiewicz

If you don't like the direction Eclipse is taking it's up to you to step up to the plate and contribute to its evolution.  Back seat drivers don't get to steer :-)

shanon mcquay replied on Thu, 2009/11/26 - 6:02pm in response to: Kim Moir

By the same token, back seat drivers don't fall asleep at the wheel and plow into a kindergarten, leaving several small children hospitalized.

Good point though :)

Tom Schindl replied on Thu, 2009/11/26 - 7:00pm

The blog post makes it look like as e4 is only about XWT which is developed by an "individual" company named Soyatec. XWT is developed under the e4 umbrella but it's an addon component. The team working on the e4-core is the one that develops THE ECLIPSE PLATFORM and this team will never ever bring you new JDT-Features, ... .

We try to moderize the platform with a redesigned platform code leveraging OSGi, DI, General Event-System and last but not least a UI-Application-Runtime-Model including a customizable UI-Rendering story. People tend to mix things up and the task of the platform and e4 team is to provide integrators (and I count JDT-Providers as platform integrator and from THE ECLIPSE PLATFORM PoV a customer, just like PDT, CDT, ... are) a platform for the future.

Back to XWT. One can argue whether XML is the right choice (I've always advertised a modeled and/or DSL approach much like TM - also part of e4-incubator) but I have great respect for Soyatec and their investment into an opensource project and looking at the tools they'll provide you for free (BTW you can even use them in 3.x! because they are not having any dependency on e4-core-code - the other way round is naturally true also) is amazing.

And to sum up - I think e4-platform will provide better performance than 3.x because we learned our lessons from 3.x code base and tried to address them (e.g. things like eventstorms who enable/disable/enable/... items in a tight loop)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.