Getting Even Further with Spring RCP (2)
In previous parts of this series on Spring RCP (Getting Started with Spring RCP, Getting Further with Spring RCP, and Getting Even Further with Spring RCP (1)), we covered a variety of subjects, from the initial steps of getting started, to the preliminary topics, such as views, actions, docking, and dialogs. Here we look at a more advanced topic: how to integrate existing docking frameworks into a Spring RCP application.
By default, as indicated here, two docking frameworks are supported: VLDocking and FlexDock, by means of the spring-richclient-docking package:
In the first two parts of this article, we examine how to integrate these, using the hooks that Spring RCP makes available via the classes listed above. After that, we get acquainted with Jonny Wray's https://jide-springrcp.dev.java.net/ project and then extrapolate some key lessons from that integration, as well as from Peter Karich's recent excellent Javalobby article that includes code illustrating MyDoggy integration. The extrapolation then takes Tim Boudreau's TabbedContainer component (which is part of the NetBeans Platform but can, as you will see, be used outside of it) and integrates it as a docking framework for a Spring RCP application, as a very simplistic illustration of how that might be done for any other framework.
Table of Contents
I do not claim to be any kind of Spring RCP expert, so everything
described in the sections above should be taken with a bag of salt.
However, in each case, the provided solution works. In each case,
though, there are probably better ways of arriving at the same (or
better) outcomes. I hope that those who know those solutions will chime
in and correct the errors of my ways.
Note: A completed code example for each of the above scenarios is available as a NetBeans project, as part of the Spring RCP Tooling plugin in the NetBeans Plugin Portal, from version 1.5 of the plugin onwards. Open the New Project wizard (Ctrl-Shift-N) and you should find "Spring RCP Tutorial Part 4", "Spring RCP Tutorial Part 5", "Spring RCP Tutorial Part 6", "Spring RCP Tutorial Part 7", and "Spring RCP Tutorial Part 8", which are samples for VLDocking, FlexDock, JIDE, MyDoggy, and TabbedContainer, respectively.
| Attachment | Size |
|---|---|
| figure-1.png | 13.51 KB |
| figure-2.png | 45.75 KB |
| figure-3.png | 14.14 KB |
| figure-4.png | 18.86 KB |
| figure-5.png | 13.44 KB |
| figure-6.png | 21.21 KB |
| figure-7.png | 22 KB |
| figure-8.png | 20.1 KB |
| figure-9.png | 46.98 KB |
| figure-10.png | 26.82 KB |
| figure-11.png | 105.56 KB |
| figure-12.png | 20.17 KB |
| figure-13.png | 97.26 KB |
| figure-14.png | 39.5 KB |
| figure-15.png | 27.79 KB |
| figure-16.png | 47.22 KB |
- Login or register to post comments
- 5103 reads
- Flag as offensive
- Email this Story
- Printer-friendly version
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)







Comments
Peter Karich replied on Tue, 2008/07/15 - 5:29pm
Hi Geertjan,
this was a great effort! To compare all the stuff.
I have some additional information:
Why is this an 'important' one? Because it will be integrated into SpringRC 1.0.1 and it is Apache 2.0 licensed (see this jira issue). And of course it looks good :-)
For MyDoggy we should thank the author Angelo De Caro for his work! What I didn't mentioned in my post: MyDoggy even supports perspectives (via groups) like in Eclipse. And the latest version of the integration does not require to create an empty xml file. And now the initial view (no layout.xml) should contain the views specified in the xml ...
Hopefully my jira issue for the integration will be accepted.
Jonny Wray replied on Wed, 2008/07/16 - 1:32am
Hi Geertjan,
thanks for a great article. The example of swaping out docking implementations via simple changes in the configuration code is a good one for highlighting the power of the Spring RCP approach.
Just to address a couple of points raised with the JIDE integration. Your point about making the jars available is well taken and I should do this. I initially held off until a stable release of SRCP was produced but now that's done I've no excuse.
Also, I realise the google web service example isn't the best one since they've stopped giving out keys and may well stop the service. Also, the use of JNDI embedded browser makes it a little hard to run. That was one of my motivations behind a revamp of my biobrowser application which also serves as an example of Spring RCP with JIDE. It is fully open source and is available from subversion or as a web start launch at the project page http://www.assembla.com/wiki/show/biobrowser. If anyone tries it note that the wiki has an 'Instructions' subpage which has an illustrated guide to its use, as it assumes a bit of domain knowledge otherwise.
thanks
Jonny Wray
Geertjan Wielenga replied on Thu, 2008/07/17 - 3:29am