I took myself some time the last days exploring new technologies available with Ganymede 3.4:
- Eclipse-Databinding and its new features
- EMF-Databinding (Provisional but working very smoothly)
- Teneo: Persist your model via hibernate in a SQL-Database
- CDO: Share your model between different clients and persist it into an SQL-Database (with Revision support)
- New Extension Points to enhance the Expression Framework
- Spring & OSGi
- P2 to install the Products using the P2-Agent
I did this to understand those technologies better because we at my company have to decide which technologies our next generation of products is built on (The current ones are based on selfwritten libs because at that time there was no Eclipse-Databinding, Teneo and CDO or we didn’t knew about it).
As always when learning new technologies I created an example application but before I started I defined some goals I think are curcial to all Enterprise Datacentric Desktop Applications:
- Nice L&F (as good as I can make an UI Look without a designer)
- Plugable storage technology
- Undo/Redo Support
Then I started hacking, creating an Ecore-Model, some plugins, extension points, browsing documentation and noticed that there are no examples around for most of the things I wanted use:
- How to create an EditingDomain myself when not using the generated editor-classes from EMF?
- How to use the new org.eclipse.ui.services-Extension point to enhance the expression framework?
- Best strategy to use Extension Points when bundles are installed/uninstalled/updated while the application is running
All those things are not hard if you know how to do it but if you don’t it’s quite tricky to solve these problems. It even gets harder if the technologies you plan to use are quite new and/or are not used together and because of this bugs arise.
The longterm output for me is:
- I now have a good picture how our next technology stack looks like
- I have an example application (I will add other things in the next weeks) to teach my co-workers the technologies
- I had a lot of fun (besides struggeling with P2)
The longterm output for you is:
- You have a small application showing you a lot of different concepts around RCP+EMF+Databinding applications
- Usage/Creation of your own Extension Points
- Using EditingDomain outside the scope of EMF-Generated artefacts
- Using Teneo
- Using CDO
- I started summerizing all the ideas, technologies and concepts combined in this example in a document, I’m working on from time to time. So maybe some time you’ll get a “book” explaining you everything
- Some nice reusable classes e.g. one to use EMF/Databinding-LabelProviders with cool features, a new drop down widget showing a Tree in the popup, …
To use the CDO-Version you also need a server component which can be installed when pointing the agent to this location. After having installed the CDO-Server you also have to create a CDO-Configuration (cdo-server.xml) in the installations “configuration” directory which you can fetch from here.
The repository name in the above config “CDO-1” has to be the id of the CDO-Configuration you create in your application.
Finally if you are interested only in the sources then install a subversion plugin in your eclipse and use one of te Team-ProjectSet files from here to check out the necessary projects.