Как открыть новое окно рабочей среды (со своим собственным WorkbenchWindowAdvisor) из существующего окна рабочей среды? - PullRequest
1 голос
/ 29 июля 2011

У меня есть приложение RCP, из которого мне нужно показать редактор GEF в модальном «диалоге». Но поскольку среда редактора, похоже, тесно связана с использованием окна рабочего места и т. Д., Мне нужно найти причину, по которой следует открывать новое окно рабочего места (с его собственным WorkbenchWindowAdvisor и т. Д.), Чтобы я мог открыть свой редактор GEF в этом окне рабочего места. Как только я открою это окно workbenchWindow, я установлю стиль оболочки WorkbenchWindow как модальный для приложения.

Ответы [ 2 ]

2 голосов
/ 06 августа 2011

Я сделал это в проекте клиента, используя следующие компоненты:

  • Статический класс с методом openNewWindow(String type, ...). Это метод, который вы вызываете, чтобы открыть новое окно. Аргумент type указывает требуемый тип окна.
  • Класс ищет указанный тип через новую точку расширения, чтобы получить ILocalWorkbenchWindowAdvisor и начальный идентификатор перспективы.
  • Затем сохраняет информацию в глобальных переменных и вызывает IWorkbench.openWorkbenchWindow(perspectiveID, ...)
  • В ApplicationWorkbenchAdvisor.createWorkbenchWindowAdvisor(...) создается новый советник на основе сохраненного ILocalWorkbenchWindowAdvisor - возвращенный советник в основном делегирует все postWindowCreate(...) и т. Д. Тем же методам в ILocalWorkbenchWindowAdvisor ...
  • Если ILocalWorkbenchWindowAdvisor не сохранено - как в случае с самым первым окном, которое открывается - тип "mainWindow" ищется и используется ...

Он работает довольно хорошо и позволяет всем частям проекта добавлять новые окна по мере необходимости.

0 голосов
/ 29 июля 2011

Используйте команду "org.eclipse.ui.window.newWindow", чтобы открыть новое окно.В вашем WorkbenchWindowAdvisor.preWindowOpen () установите стиль оболочки в IWorkbenchWindowConfigurer как модальный для приложения.Вы также можете скрыть панель инструментов, меню и строки состояния, так что это больше похоже на диалог, чем на окно.

...