Мы делали это довольно много раз. Но только потому, что мы переходим от приложения Swing к приложению Eclipse RCP не потому, что нам нравится возиться с вещами. Этот проект действительно сообщит вам, отделили ли вы свой код контроллера / модели от кода вашего представления.
Одно из предложений - не пытаться преобразовать все сразу. Вы получите кучу смешанного кода, который вообще не работает. Вы можете начать с конвертации порталов. Я бы рассматривал портал как что-либо внутри Tab, Dialog или Window, по сути, автономную единицу. Если у вас есть открывающееся окно, создайте окно в SWT, но сделайте его содержимое существующим AWT / Swing. Это должно быть довольно просто и позволит вам привыкнуть к (я действительно надеюсь, что они не были пьяны и у них были на то веские причины) способу создания и ассоциирования родительского / дочернего контроля.
Одна ошибка, которая может возникнуть, - это прозрачные компоненты. Swing, за исключением «оконного» класса, все визуализируется в Java. Это позволяет очень легко отображать вещи так, как вы хотите. В SWT есть некоторые ограничения:
- Граница. Если вы используете SWT.BORDER, вы застряли с тем цветом, который использует нативный компонент. Лучше всего использовать PaintListener и визуализировать собственные границы, если вы хотите, чтобы они были в другом стиле или цвете.
- Прозрачные метки, индикаторы выполнения. Мне не удалось получить ярлыки или индикаторы выполнения с прозрачным фоном. Если вы хотите, чтобы они приобрели родительский цвет или рисунок, вам нужно будет самостоятельно визуализировать текст и другие элементы управления.
- Управление. В SWT есть композиты и элементы управления. Представьте элементы управления как базовые собственные элементы управления, которые выполняют все вызовы собственного API. Они не могут быть разделены на подклассы, что усложняет задачу.
- Таблицы доставят вам больше всего хлопот. Убедитесь, что все стабильно, прежде чем пытаться преобразовать JTable в Table или TableViewer. Вы потратите на них некоторое время, особенно если у вас есть собственные редакторы и программы просмотра.
Я не исследовал, почему SWT был спроектирован таким, каким он был. Я предполагаю, что там должна быть веская причина. Было бы здорово, если бы у кого-то был блог или защита его дизайна, поэтому мне не нужно его искать. После публикации я удалю эти строки, поскольку они не имеют отношения к вопросу.
Добавление
Я хочу добавить, что, поскольку у вас уже есть продукт, я полагаю, что он работает. Лучший совет, который я могу вам дать, - никогда не позволять вашему коду переходить в состояние, которое он не может скомпилировать и запустить. Если вы работаете над конверсией и все, что вы регистрируете, всегда запускается и выполняется (несмотря на визуальные различия между SWT / AWT / Swing), вы избавите себя от многих головных болей в долгосрочной перспективе. Худшее, что вы можете сделать, это попытаться решить все это сразу и привести ваш код в нестабильное состояние на несколько недель.