The Fellowship of Riena just released 1.2.0.M1. (download). We committers have fixed 40+ issues and added a couple of new features. Below are my personal favorites.
Improved support for message markers. Multiple validation rules and validation messages are now shown correctly (snippet):

The new IListRidget simplifies binding to lists of elements with one column. This is a bit simpler than using a ITableRidget (snippet).
Easier listening for selection changes using an ISelectionListener on ITableRidget, IListRidget, ITreeRidget, ITreeTableRidget, ISingleChoiceRidget, IMultipleChoiceRidget.
Better keyboard navigation. We have added several new shortcuts. Some examples:
- Next / Previous navigation element – Up / Down in the navigation tree
- Next / Previous Module – Ctrl-Down / Ctrl-Up
- Next / Previous SubApplication – Ctrl-PgDn / Ctrl-PgUp
- Close Module / ModuleGroup – Ctrl-W / Ctrl-Shift-W
- Focus on Navigation / Workarea – F6 / F7
- Focus on Window Menu – F10 (windows only)
- Quit Application – Alt+F4 (windows only)
and SubApplication titles now support mnemonics for easier access via the keyboard:

Here’s the complete New & Noteworthy.
Kind regards,
Elias.
PS: SubApplication, Module, ModuleGroup are explained here.
Tags: eclipse ui, helios, milestone, riena
Starting out with Eclipse Riena? I hope you find my one-picture-summary of the Riena UI and navigation useful:

Conceptually the window is divided into the navigation tree on the left - showing a navigation model – and the work area on the right - showing the view that is currently active. Other window areas are the menu bar, the coolbar and the status bar.
The navigation tree shows the navigation model of the current SubApplication and can change during run-time (for example elements can be added / removed). Conceptually it is a tree constructed like this:
1 Riena Application - root of the navigation tree; non-interactive
> 1-n SubApplications – each sub application has a clickable tab in the top part of the window
>> 1-n ModuleGroups – groups several modules together; non-interactive
>>> 1-n Modules – has a title (blue background) and 1-n SubModules
>>>> 1-n SubModules – is associated with a View and Controller. When a SubModule becomes selected the corresponding View is shown in the work area. SubModules can be nested. If module has just one SubModule it is not shown.
As you can see, Riena steps away a bit from perspectives, views, editors in favor of a task oriented interaction (side note: underneath this we use views and perspectives, and we support integration of regular views). For example you could have a SubApplication called “Customers”, with a Search Module and additional Modules for each of the customers you are currently editing:

For the full details read the excellent ‘Riena Navigation‘ page on the Riena wiki. The wiki explains this in more detail and shows how to create the navigation structure through Java code or the plugin.xml file.
Tags: eclipse ui, riena

If you are into unit testing, you may find EasyMock quite useful. It is very valuable for making hard-to-test-code testable.
For example I recently was adding tab-switching via keyboard to Riena. The state of each tab is kept in an interface named INavigationNode which has about 40 methods (!). Creating a mock by hand for such a big interface would not be fun at all. With EasyMock it just takes is a call to:
ISubApplicationNode nodeA = EasyMock.createMock(ISubApplicationNode.class);
The code for determining the next tab, depends strictly on the isSelected property. Manipulating the return value of this method takes just another EasyMock call:
EasyMock.expect(nodeA.isSelected()).andReturn(true);
This tells EasyMock that nodeA.isSelected() will be called once and should return true.
After everything is set-up I switch from ‘record’ to ‘play-back’ mode:
Here’s a full example of a test case:
protected void setUp() throws Exception {
super.setUp();
handler = new SwitchSubApplication();
nodeA = EasyMock.createMock(ISubApplicationNode.class);
nodeB = EasyMock.createMock(ISubApplicationNode.class);
nodeC = EasyMock.createMock(ISubApplicationNode.class);
}
public void testFindNextSubApplicationAtoB() {
EasyMock.expect(nodeA.isSelected()).andReturn(true);
EasyMock.replay(nodeA);
ISubApplicationNode[] nodes = { nodeA, nodeB, nodeC };
assertSame(nodeB, handler.findNextNode(nodes));
}
This post barely scratches the surface. Curious? Read this nice EasyMock introduction.
Image: (c) *Micky/flickr. Licensed under creative commons.
Tags: riena, testing, tips
As they already did in January – the compeople AG (the folks behind the Riena project) are organizing another Stammtisch on May, 27th. It will take place in their offices in Frankfurt am Main, Germany. As Ian already pointed out, “Germany seems to love their DemoCamp” – but that’s only partly true: We also love our Stammtisch
Ralph will start the official part of the evening with some insights of the Eclipse Foundation and news about the open source community. In addition Ekkehard Gentz will give an introduction to UIs for business applications based on Riena, UML and oAW. And last but not least Jochen Krause will give some cool demos of new features for upcoming RAP 1.2 release.
After so many interesting topics, I hope to have some hot discussions over several cold beverages in the evening. At 7pm they are organizing a get together at the Chicago Meatpackers restaurant. Please let them know, if you participate by sending a mail to Andrea (dot) Drews (at) compeople (dot) de.
Really looking forward to see you there – I think it is going to be a great Stammtisch!
Tags: eclipse, emf, rap, riena, stammtisch
Yesterday, I had fun investigating how to open “detached” views progammatically.
Click to watch:

http://www.screencast.com/t/5ku89HjBNs
You can find this on Bug #270212, where we are discussing how use this in Eclipse Riena.
Tags: detached views, eclipse ui, riena
As a Riena committer, it’s always nice to see people taking interest in Riena. Feedback at EclipseCon has been very positive. I was also impressed by RedView – a UI-generator based on EMF and Riena, which is becoming available soon.
Now James Sugrue wrote “Riena – A New Adventure in Eclipse” over on DZone.

The article introduces Riena, walks you through installation, shows how to create and theme an application and explains Riena’s remote services. Go check it out.
Kind regards,
Elias.
Tags: eclipse ui, rcp, riena
Riena 3.5.M6 is available, just in time for EclipseCon (new and noteworthy).

The Riena highlights at the conference next week:
- Come to the Riena BOF on Tuesday to discuss the project with the team. As one of the committers behind the UI (Ridgets), I’m looking forward to feedback from developers who consume it or are thinking about using it.
- If you’re new to Riena I highly recommend Christian’s talk ’Write a Client/Server application based on Riena in 25 minutes‘ on Wednesday. Christian shows how to write a Riena app quickly including creating the UI, using Ridgets, easy data-binding and access to the server with Remote Services. It’s a quick, hands-on overview of what Riena is about.
- The Riena talk I’m most curious about is Ekke’s and Florian’s presentation ‘Dynamic View for Business Applications (Riena + EMF + oAW)‘ on Thursday. Ekke and Florian are two of the most active members of the Riena community. As far as I can tell they have written a model-driven UI-generator based on Riena+EMF+oAW. Update 3/19: you can read more details here. I’m looking forward to their talk.
See you at EclipseCon,
Elias.
Tags: eclipse ui, eclipsecon, new and noteworthy, riena
Riena 1.1.0 Milestone 5 shipped today (download).
Since the 1.0 release a month ago we Riena committers have been busy with several new features:
- Riena is now based on Eclipse 3.5 and joined the Galileo Release Train.
- The Look-and-Feel subsystem can now apply settings to ViewParts as well. To enable this behavior you need to set the system property ‘riena.lnf.update.view’ to ‘true’. By they way, the LnF subsystem provides means to automatically invoke setters on each widget and/or attach renderers (=painting) to them. More info about LnF on the wiki.
- The CompositeTableRidget allows creating tables with several ridgets in each row. It’s based on the CompositeTable widget from the Nebula project. Thanks Nebula – this rocks!

CompositeTableRidget
ICompositeTableRidget ridget;
WritableList input = new WritableList(PersonFactory.createPersonList(), Person.class);
ridget.bindToModel(input, Person.class, RowRidget.class);
(full snippet)
- The MasterDetailsRidget automatically binds the selected row of a table to an details area. A prototype is available in M5. Work will continue in M6.

Master Details Ridget
- The ColumnFormatter for TableRidgets allows adjusting the text, icon, color and font of each column.

tableRidget.setColumnFormatter(1, new DateColumnFormatter("MM/dd/yyyy") { //$NON-NLS-1$
protected Date getDate(Object element) {
return ((Holiday) element).getDate();
}
});
tableRidget.bindToModel(new WritableList(createInput(), Holiday.class), Holiday.class, columnPropertyNames, columnHeaders);
(full snippet)
You’ll find more details in the New & Noteworthy.
Kind regards,
Elias.
Tags: eclipse, eclipse ui, riena