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.
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.