About this tutorial
Since its first release and its donation to the open source community in 2001, the Eclipse platform has been continually gaining importance in the tool-provider community. The Eclipse consortium already regroups more than 40 industry-leading companies that deliver or plan to deliver tools that can be plugged in the Eclipse platform, or products based on the Eclipse platform.
The advantages of the Eclipse platform for tool developers are obvious:
- For the first time, there is a high-performing, vendor-independent platform that has been widely accepted by the industry.
- The platform's highly modular nature and great extensibility allow a seamless integration of a variety of tools coming from different vendors. Users can get the best tools from different providers, and use them together without having to worry about interoperability.
- By providing tools as Eclipse plugins, tools providers can cover with one release all the Eclipse-based products on the market. They don't have to build a workbench around their tool and can concentrate their effort on the development of their core features.
- The consistent UI among the different Eclipse tools reduces the learning curve for users.
One of the reasons for the success of the Eclipse platform is the performance of its user interface compared to other Java applications. This level of performance was reached thanks to the Standard Widget Toolkit (SWT), a widget library that was developed as an alternative to Swing. SWT allows you to build cross-platform user interfaces that are as rich as Swing UIs and that perform as well as native UIs.
Although programmers who try SWT tend to be very enthusiastic about it, this toolkit does have a drawback: SWT is not compatible with AWT (the Abstract Window Toolkit) and Swing. Mixing SWT and AWT panels in the same application can, in the worst case, cause the JVM to crash on some platforms. Thus, if you want to deliver an existing Swing tool as an Eclipse plugin, you need to rewrite its UI with SWT. This task can be very tedious for complex UIs.
Considering the number of tools on the market that currently use a Swing UI, a bridge technology or method that would allow developers to port an existing application from Swing to SWT with a minimum of change would be in great demand. This is always a very hot topic in the discussion forums about Eclipse and SWT.
The purpose of this tutorial is to introduce a methodology for such a migration. The techniques presented here won't allow you to automatically port an existing application without any code modification, but they will show you how to do a manual migration of the Swing code with very few changes to the original code.
We will begin with a study of the main differences between AWT/Swing and SWT. We'll then examine migration techniques that can be used to successfully port Swing code to SWT with a minimum of change, and we'll compare each Swing component with its SWT equivalent in detail, and discuss the problems you might encounter in porting. Finally, we'll work through a concrete example where a Swing dialog is ported to SWT using the techniques we've presented.
This tutorial includes sample code applying the described methods on the standard components of the Swing library. You are free to use and modify this code in your own projects.
Before you take this tutorial, you should have a good knowledge of the Swing API, as well as a basic knowledge of SWT. This tutorial was written for people who want to migrate a Swing application to SWT, or for Swing programmers who want to know which features available in Swing are also available in SWT, and what limitations they should expect. For this reason, this tutorial uses a lot of terms and comparisons that are relevant specifically to Swing development. It mainly focuses on how features available in Swing can be programmed in SWT, not on features that are available in SWT but not in Swing.
This tutorial is neither an introduction to UI programming, nor an introduction to SWT. If you need an introduction to SWT, you will find relevant links in Resources that you should read before taking this tutorial.
Note that this tutorial is very comprehensive and will require significant time to complete. However, it serves as excellent reference material. I recommend you download the PDF after you complete the tutorial for offline viewing.