Yesterday I gave a 2-hour tutorial about “Advanced Eclipse RCP” at the EclipseCon 2008 in Santa Clara. You can download the tutorial slides here (2.8 MB). All the source code for the demos you can get from the MP3 Manager project home page via anonymous svn access. I would like to thank everybody for the feedback, I am very pleased with the bucket results :).
People often ask me how to dynamically change the language in an Eclipe RCP application. I tried it out myselft and have to admit that it is not as easy as I would have expected. The problem is that PlatformUI.getWorkbench().restart() does not allow to set (or change) any new startup parameters, like -nl de. I have already filed a feature request for that (see 222023). The only workaround I found so far is to modify the product’s .ini file of the deployed RCP based product manually. Unfortunately I did not find a solution that works during development using launchers. I have implemented the dynamic language switcher in the plug-in com.siemens.ct.mp3m.language, see the project home page of the MP3 Manager demo (see http://max-server.myftp.org/trac/mp3m). Below is a screenshot showing the language menu:
A nice set of free flag icons you can find at
I have added two new projects for my Eclipse RCP demo application MP3 Manager:
This editor is very similar compared with the com.siemens.ct.mp3m.ui.editors.id3 editor but uses rudimentary Eclipse data binding. I did not add validation so far but I have planned that for future releases.
This bundle implements a little cheat sheet and provides help for adding and deleting music folders.
You find the project home page at max-server.myftp.org/trac/mp3m where you get the information for anonymous svn access.
I am a big fan of Eclipse RCP. But as a software engineer, it is always a good idea to know more than one platform. Since almost one year I am also interested in what’s going on in the NetBeans world and I have to admit, I find it pretty interesting, especially NetBeans Platform 6. Recently I wrote two articles for the German Eclipse Magazin, comparing Eclipse RCP and NetBeans Platform. Unfortunately these articles are only available in German, but if you can read German, part 1 and part 2 are available as PDF.
Here is my conclusion: In the two articles I tried to give a brief comparison of the NetBeans Platform and the Eclipse Rich Client Platform, using my little show case application (MP3 Manager), to compare a few common use cases. I explicitly did not want to make a list of + and -, how a specific issue could be solved better or worse with each platform. My intention was rather to show that many typical uses cases can be implemented using the one or the other platform. Both platforms offer a huge collection of reusable functionality and can help building mature, high quality Java rich client applications. The platforms have some fundamental differences as well as some very similar approaches. When it comes to a platform decision, I think it is very important to get the requirements for the rich client application first. There might be non-functional requirements like scalability, extensibility, reliability, usability and so on as well as functional requirements. After prioritizing the requirements, make the platform choice. Both platforms Eclipse RCP and NetBeans Platform offer a lot and help to build better Java rich client applications.
BTW, I submitted a LongTalk for EclipseCon about this topic. So far I have seen lots of interest in both the Eclipse community as well as the NetBeans community.
Are there any software engineers out there who have experience with both platforms? If so, I would be very interested in sharing experience.
What do you think when comparing both platforms yourself?
Have fun 🙂
MP3 Manager is a little project that I use as a playground for Eclipse RCP features. The whole purpose of it is to share information and best practices, how things are done using Eclipse RCP. Please help me improving the code base by trying it out and filing bugs or requests for improvements. It is all Open Source, with anonymous subversion access. You find more information at the project homepage. Here is a (probably incomplete) list of features:
- Product Branding & Feature Branding
- Custom Splash Screen
- Blue and Orange colored demo brandings
- Images/Icons and About Dialog
- Internationalization English/German (full Eclipse 3.3 localization still work in progress)
- New Look & Feel using the Presentation API
- Loose coupling of views and editors
- Tree view, tree-table viewsand a virtual tree view
- Regular Label & Content Provider
- Using an adapter factory
- Multi-page editor
- Use of Commands & Handlers
- Local help system using the Jetty stack
- Customized update functionality
- A Wizard
- Own Extension Points
- And much more
Here is a little screenshot:
Have Fun 🙂
I am a big fan of both, OSGi and Eclipse RCP. In terms of flexible modular architecture I prefer to use “Import-Package” rather than “Require-Bundle”. However, probably due to historical reasons, PDE supports “Require-Bundle” much better than “Import-Package”. And, in the current Eclipse 3.3 platform, split packages are used (I guess mostly for compatibility reasons). With my current RCP demo application, I have the following problem with switching to “Import-Package”: After putting my target platform in the list of “Automated Management of Dependencies” (Why is that not the default?, probably I file a feature request) and letting PDE compute the dependencies using “Import-Package”, my application does not run anymore.
I get the error:
Who has an advice or a best practice how generally to proceed here?
The last piece to complete my demo application’s port to RCP 3.3 would be the localization using different language packs. After one hour I gave up to make the 3.2.1 language packs work with my application. I filed a feature request (Bug id 205732) for that and hope that the new language packs will be available soon.
I have updated my Eclipse RCP demo application using Eclipse 3.3. I ran into problems with the update mechanism, getting errors with regards to the feature org.eclipse.rcp. I already filed a bug (204075).
Steps To Reproduce:
1. Create an RCP-based application with update functionality
2. Include the feature org.eclipse.rcp in your own feature
3. Deploy your application to the local file system
4. Create a new version of your feature
5. Update your update site
6. Try to update your previously deployed application
You cannot update it, because you get an error with regards to org.eclipse.rcp 3.3.0 v>xxxx>.jar: [Invalid signature file digest for Manifest main attributes]
Workaround (only tested on Windows):
1. Browse your Eclipse 3.3 distribution’s feature directory
2. Jar the org.eclipse.rcp feature again (to zip it and then rename it to .jar works just fine)
3. Copy the new feature to your update site (override the original org.eclipse.rcp feature)
Then your update works fine again.