Screen Flows support released

It took a while longer than promised, but now I am happy to release the screen flow implementation I talked about at Eclipse Summit Europe '08 to the public.

Just go to http://code.google.com/p/screen-flows-in-eclipse/ and you should find both the presentation as well as all the needed sources. If you find any problems with the implementation or just find a way to enhance them, then please free to submit your changes.


Ask the experts

We have just finished our Advanced Eclipse RCP training in Copenhagen. All-in-all a success with one "minor" problem: we had far too much materials for a three day course. It could easily have been a four day course.

One very good thing we did in this course was to get Thomas Hallgren to present Buckminster. Thomas, being one of he main developers of Buckminster, could answer all the many questions there was on building plug-ins and products in Eclipse. This is definitely something, we would consider doing again another time. I think almost everybody present wanted to go home a play a little more with Buchminster.


Don't forget your running shoes... if you feel blue

For those of you that feel a little run in the morning is a good cure for any blues - or simply fear that all the hard late work will warrant it - there will be a short 5-6 km tun in the morning starting from the entrance of Hotel Nestor.

Just be there by 7:20 and we will take a slow scroll around the parks of the center of Ludwigsburg. Any ideas for good routes will be much appreciated.

See you Tuesday morning!


ESE '08: Please provide a proper calendar

In the Spring at EclipseCon '08, there was a iCal based calendar with all the events and sessions of the conference. That was very useful when you wanted to figure out just what to attend to. The fact that it was in iCal format made it possible to synchronize to many types of devices - such as mobile phones - as well as Google Calendar...

But for ESE '08, I cannot find a calendar with the sessions. Just the one made by Bjørn - it seems - with three entries: "Symposia", "Day 1" and "Day 2". It is linked to from the front page of ESE '08, so one can only assume that it was the intension to add more stuff... or not?

If a calendar with all the events and sessions exists, can anybody point me to it?


ESE '08: Will there be any organized runs this year?

I have been looking for some time now, but as I cannot find anything, I have to ask: Will there be any organized runs this year at Eclipse Summit Europe?

With all the good food and the many sessions where we all sit and listen, a little run or two would do us all good.


Meet Wayne Beaton in Denmark

Wayne - our most esteemed evangelist - will talk at a after-work meeting for eclipse.dk in Copenhagen on Thursday. The subject - apart from whatever you ask him - will be test driven development:
Test first development is a top-down process by which code is written starting with tests. Once tests have been created, the process changes to that of making the tests work by implementing the application code. In this short talk, we demonstrate how Eclipse support for JUnit facilitates test first development in the context of creating Java and Java EE applications, and plug-ins.
If you would like to participate, the meeting is taking place at ITU (Rued Langgaards Vej 7, 5.sal, 2300 København S) Thursday 16:00-18:30. Please sign up at eclipse.dk.


Shaping up for the Autumn :-)

Autumn is comming and with that many of us will be busy with training, mentoring and whatever we do for a living.

In order to get in shape for the Autumn, we participated in the largest fun run the DHL Relay in Copenhagen. 21000 teams with 5 runners each running 5 km in the middle of Copenhagen! The relay takes place over 5 days and just about every company in the Copenhagen area participates. Some with just one team and some with several hundred teams.

Most of the teams, ours included, combine the running with a good dinner afterwards.

The next runs are in 2 weeks (10 km) and in four weeks (13 km)...

And then we hope to be in shape for whatever the Autumns brings...


Annotating Eclipse Resources

In continuation of my last post, a small suggestion.

The Eclipse web site contains a rather large number of articles and resources, but it is rather difficult to see which version of Eclipse they pertain to. E.g. consider the article "Creating JFace Wizards". This is article is from 2002 and many readers will - at least initially - disregard it as being too old and likely not up-to-date. That is not the case, but how can you know that?

My sugestion is to add extra information to the article outline that lists the Eclipse versions for which this article is still relevant and if possible describe the level of "outdatedness" if case an article is not completely up-to-date.

In order to keep the extra information up-to-date, first the original author and then a volunteer will be asked to re-read the article and state the relevance for the new Eclipse release and possibly state the work needed to update the article. This way, we might also get a larger number of up-to-date sources on many of the more relevant Eclipse technologies which in turn will help out with the problems I outlines in my previous post.


Missing Books considered harmful

A very large percentage of of my customers are just starting to use Eclipse and Eclipse based technologies for their applications. So apart from having the basic 4-6 days training in RCP, EMF, GMF, etc they all have have one common and very important question: "Which books should we buy?"

And that question has become increasingly difficult to answer lately.

There are a number of absolutely good and noteworthy Eclipse books, but almost all of these are not up-to-date and that can be a major problem for people that need a good reference guide and best practices guide to Eclipse.

Almost all of the books on Eclipse are one or two versions behind the current baseline and that means the readers will not be able to take advantage of the new and improved stuff. And consequently they are rather frustrated when the only source to the new functionality is... the source.

Yes, I do know that many of the books in question are under revision and expected to be here any time soon, but even these revisions are delayed - in some cases as long as a year. And yes, I do know that the authors of technical books do not get rich from their work, so they have little incentive to update their books.

But there must be something that can be done about this. Just consider the number of books that are marketed by Microsoft on their many technologies and consider which role these books play in many developers life.
Before you start: yes, most of Microsofts software is closed source and consequently you need the books... but why should you have to read though 8-12 millions lines of code to understand just what the new and much improved APIs do?

I would suggest that we add a new criteria before an incubator project can graduate: there must be a book or at least a number of authoritative articles on the project. And for each new major release, there must be an official update of these...

Whether the foundation should be part of this work or not, I don't know. I can easily see arguments for both...


Implementing screen flows

On EclipseCon '08 I had a presentation named Lessons Learned from an Enterprise RCP Application. As said then, one of the major differences between most Eclipse IDEs and many enterprise applications is the way the performed tasks are controlled by the end-users:
  • In IDEs - and many more technical RCP applications - most task is controlled by creativity. E.g. you get a task - create this or change that - and then it is more or less up to you how you want to solve it. You might have a number of large-scope processes - like you have to check in your work and change the state of issue reports - but nothing on the smaller scale.
  • In many enterprise RCP application most tasks are controlled by processes. E.g. you have an exact description of how to perform most tasks - like create new account or change the payment plan. Processes are here centered on the smaller scale as well on the larger scale - like in which sequence data must be entered when making a new credit agreement.
Out of the box Eclipse RCP supports wizards as the primary type of processes engine. In the default implementation, wizards have one major limitations compared with what you would like to see in many enterprise applications: they are modal and thus you can only have one active process at any one time.

That does not match well with many enterprise applications where the user must be able to 1) service phone calls in the middle of an on-going task and 2) alternate between a number of tasks...

The current wizard interface has a number of other problems as well:
  • The interface for a wizard page (IWizardPage) assumes that a page cannot be "stale" compared with the model - which of cause is fine as long as wizards are modal... Note that this is actually solved in another similar interfaces used in the Forms UI API (IFormPart).
  • The interface for a wizard page also makes the different pages aware of the previous and next pages as well as the actual control of the page which is a little peculiar when doing screen flows, where you might want a high degree of reuse of pages between processes.
  • The use of WizardPage.setControl() seems to be one of the major sources of problems when developing pages - people just forget :-(
Of cause the wizard implementation has one major point that speaks for it: the current UI design tools - like SWT Designer - understands wizard pages, but not whatever we invent.

Until now we have implemented the needed processes as needed, but now are going to implement a rather large number of processes - of which many will be quite similar, so we want to implement some framework to ease the work and to make the result more maintainable.

The question is now: what would you do here? Implement a new wizard viewer in a view that can show multiple concurrent wiards or implement a new (simplified) flow interface that matches the requirements exactly? For those of you that have implemented RCP applications already, what have you done in these?


Hosting text editors in views - is it possible

As some of you might have noticed from past postings, I normally prefer to use only views in RCP application and no editors at all...

One of my new customers already have a text editor (based on TextEditor) as an Eclipse IDE extension they want to bring over to a new RCP application. One of the questions, we now have to assert is whether to use editors in the RCP application in question or try to redo the editor as a view.

But, before we start on this work, I just wanted to hear if anybody out these has tried to do this before and have a qualified meaning about the issues involved. Is it at all possible? Or is it just a lot of work?

We understand that the real work is in how to use SourceViewer and friends, and that seems to be doable in a view, but...

If it turns out to be very difficult to implement editors in view, we might just dedicate a speciel perspective for this, but the best solution probably would be to use views only.


View versus Editor in RCP - a different opinion

In a current blog thread David Orme writes, you should use editors in RCP applications when you need life-cycle management...

I very strongly disagree with this. For me the important statement by David is
The only real difference between a view and an editor is that there is exactly 1 editor area and once visible, it is always visible even if no editors are open.
The current implementation for editors does not allow you to mix editors and views in one stack (or folder), which can be a serious problem in many applications. E.g. consider the banking application where you use a perspective to show a lot of information about a specific customer. In a few cases you want to edit parts of this information...

Would you then use an editor for this? What would you put in the editor area when you don't need to edit any customer data?

The basic problem here is - in my opinion - that the editor area is a serous waste of screen estate when editors are not needed.

You can find a presentation on this from EclipseCon '08.


A dream for future NLS support in the RCP framework

One of the bigger jobs we are involved in right now, is for a Nordic bank with branches in all the Nordic countries. As the application we make must be deployed in all of these countries, we will have to translate all the relevant text from labels, buttons, view titles, perspectives, menus, etc, etc.

We haven't experienced serious problems with the translations themselves... But, then again, this is an area, where we could dream of some better support from the RCP framework. Unfortunately, the support we are looking for, does not seem to be possible in the current framework.

Basically, we want the business side of the bank - who set the original requirements for the application - to provide the translations for the different languages, as they should know better than the individual developers... This in itself is not a problem and can be accomplished via some of the tools from the babel project along with fragments...

But we would also like to allow the business side to make changes in the translations in a very easy way in the running application: when they see a text they don't like, we want them to press a key-combination (ALT-CTRL is used in an older Swing based application) and then click on the item they want to change. This will then drop them into a special editor where the translations for all the supported languages are shown and can be changed. When they have made the proper change, the differences are stored back into a database, from which new fragments are generated automatically...

In order to implement anything like this, we first of all need the NLS key for the text of the item in question as well as the resource name with the translations.

But, currently, all the translations in the registry - e.g for commands and views - are resolved when the plugin.xml files are read into the RCP application... After that no trace can be found of the original NLS keys and thus it is impossible to implement anything like the above.

I have spent some time look at the code that handles the translations and I cannot find a very easy solution without making changes to too many things in the framework. Changes are needed
  • in the registry reader
  • in IContributionItem code for commands (for menu and toolbar items)
  • in the current Presentation API implementations (for view names)
plus some new easy to use support for labels, buttons, sections and the like...

So, this is a wish for e4, I guess...


I'm pro-cloning - sort of

Begin at EclipseCon is hard work! To follow all the tracks I would like to, I will have to clone myself a couple of times!

At any one time there are at least 1-2 tracks with good serious talks on subjects I find interesting, there are plenty of people I would like to talk with, lots of coffee I need to drink, quite a few exhibits I would like to visit.... While I'm at it, I could use a couple of me's to relax while the others work, so I'm not to tired in the evening, when the official program is over and we all begin on the more informal networking....


Building a local Eclipse user group

If you consider starting an Eclipse user group or a an Eclipse society, then this Eclipse '08 BoF might just interest you. Building a new local Eclipse community is not exactly rocket science, but it does take some work from a few dedicated souls.

In this BoF, we will talk about how to build interest for a local community, tips for events, how to get sponsors for the events and similar essential user group stuff.

One hope is that we might be able to setup series of similar events in a region - e.g. Europe - where we can get companies to show they stuff multiple times... This makes it easier for us and likely more interesting for them as they get a bigger audience...

At the end of the meeting we should hopefully setup a mailing list or similar to help exchange ideas for events in the future as well.


Eclipse RCP Training in Copenhagen and Stockholm

As already announced on Eclipse.org, we will now start another round on Eclipse RCP Training all over the world.

I'm happy to say that The RCP Company will also participate this time with training in Copenhagen (May 19-22) and in Stockholm (June 2-5).

The training includes all the essential knowledge to properly develop an Eclipse RCP based application based on Eclipse 3.3 (Europa). The subjects include:
  • Introduction to RCP
  • RCP Application lifecycle
  • Internal structure
  • Workbench
  • Publishing
  • Plug-ins
  • Contributing to Workbench
  • Introduction to SWT
  • Introduction to JFace
  • Views
  • Commands and Actions
  • Editors
  • Wizards
  • Help
  • New and Noteworthy Features of Ganymede (also known as Eclipse 3.4)
You can register online - via the links above - or directly with The RCP Company. The training is offered for the special event promotional price of €1200. There is a 10% discount if you register before March 31, and an additional 5% discount if you register 3 or more employees from your company.