Как поместить IEditorPart в модальное диалоговое окно?

(Я немного новичок в Eclipse, поэтому прошу прощения за тупость с моей стороны...)

У меня есть несколько редакторов (производных от IEditorPart) в моем приложении RCP, и возникло требование, чтобы один конкретный редактор был также доступен в модальном диалоговом окне (вместе с некоторыми дополнительными элементами управления), открытым одним из других классов редактора. . Встраиваемый редактор состоит из основного элемента управления просмотра, панели инструментов и пары десятков вспомогательных классов (поставщики меток, компараторы и т. д.).

Варианты передо мной кажутся:

  1. Найдите способ поместить область редактора в стиле IWorkbenchWindow в (JFace или SWT) Dialog.

    • Not had much luck searching for how to do this
  2. Создайте новый WorkBenchWindow с перспективой, в которой видна только область редактора, а не виды. Сделайте это модальным.

    • On trying this, the new window seemed to inherit things (menus etc) from its parent window.
  3. Рефакторинг рассматриваемого редактора, чтобы он теперь находился в одном элементе управления, а затем внедрите этот элемент управления как в редактор, так и в диалоговое окно.

    • Potentially time-consuming, given the number of places the helper classes refer back to the main editor object.

Если выяснится, что это действительно извращенная и антиидиоматическая вещь, которую нужно делать, в терминах «Затмения», можете ли вы предложить более разумный план действий?

Спасибо


person JonP    schedule 28.03.2011    source источник


Ответы (1)


EditorParts должны находиться внутри окон верстака. Существует много кода, который зависит от этого поведения. Поэтому я бы предложил не делать (1). Если результат приемлем (окно рабочей среды, которое является модальным), проще всего придерживаться (2).

person Prakash G. R.    schedule 29.03.2011
comment
@prakash-g-r В таком случае, как мне: * убедиться, что окно модальное? Единственный метод, который я видел для этого, - это Window.setBlockOnOpen(), и это, по-видимому, другая структура. (А если он создан через Iworkbench.openWorkbenchWindow(), то по возвращении он уже открывается немодально.) * запретить копирование меню главного окна в новое окно? (Панель действий появляется из ApplicationActionBarAdvisor, сгенерированного из шаблона RCPMail, а не из определения расширений в plugin.xml.) - person JonP; 29.03.2011
comment
В вашем методе WorkbenchWindowAdvisor.preWindowOpen(), если рабочее окно, которое должно быть открыто, предназначено для окна редактора, вызовите configurer.setShellStyle() - person Prakash G. R.; 29.03.2011