Стиль оболочки нельзя изменить после создания, а саму оболочку нельзя заменить после того, как она была создана средством визуализации. Но ситуация не безнадежна.
Eclipse 4 использует средства визуализации для создания элементов пользовательского интерфейса из модели приложения. Эти средства визуализации можно заменить с помощью Rendering Framework, и это один из возможных способов создания оболочки со стилем, отличным от стиля по умолчанию.
Решение включает в себя написание собственного средства визуализации для UIElement типа MWindow, предоставление WorkbenchRendererFactory для создания нового средства визуализации SWT для MWindows и регистрацию новой фабрики в продукте.
По умолчанию: создание оболочки с помощью WBWRenderer
WBWRenderer (рендерер окна рабочей среды) — это стандартный визуализатор для SWT-элементов типа MWindow.
В WBWRenderer#createWidget
оболочка создается в стиле SWT.SHELL_TRIM
, удобном для SWT.CLOSE | SWT.TITLE | SWT.MIN | SWT.MAX | SWT.RESIZE
:
wbwShell = new Shell(Display.getCurrent(), SWT.SHELL_TRIM | rtlStyle);
Это приведет к TrimmedWindow, который можно развернуть и изменить размер, без возможности изменить это поведение после создания.
Создание оболочки новым модулем визуализации
Чтобы обойти вышеупомянутое ограничение, вы можете предоставить другой рендерер, используя WBWRenderer в качестве шаблона. Это позволяет вам изменить код для создания оболочки, например.
wbwShell = new Shell(Display.getCurrent(), SWT.CLOSE | SWT.TITLE |
SWT.MIN | rtlStyle);
Этот модуль визуализации должен быть возвращен WorkbenchRendererFactory в качестве модуля визуализации, используемого для отображения MWindows. Кроме того, фабрика рендеринга должна быть добавлена как свойство продукта в plugin.xml.
Эти изменения приведут к тому, что TrimmedWindow нельзя развернуть или изменить размер.
Пример того, как написать и зарегистрировать WorkbenchRendererFactory, можно найти здесь.
Лучшее решение?
На самом деле, может быть лучший способ стилизовать оболочки SWT, поскольку WBWRenderer уже использует теги для определения поведения MWindow: shellMaximized
и shellMinimized
. Эти теги можно задать на дополнительной вкладке обрезанного окна в редакторе модели приложения.
Если бы теги стиля swt можно было установить аналогичным образом, их можно было бы использовать для установки стиля оболочки. Это будет запрос функции для Eclipse.
person
Modus Tollens
schedule
09.01.2013