Как получить окно рабочего стола, чтобы открыть модальный диалог в проекте на основе Eclipse?
Чтобы открыть модальное диалоговое окно, вам необходимо передать родительское окно и передать необходимые флаги для того, чтобы диалог был модальным, конечно.
В зависимости от того, где вы находитесь в инфраструктуре eclipse, найти это родительское окно не всегда легко.
Как можно получить доступ к родительскому окну?
Ответы
Ответ 1
Из представления или редактора (эта часть проста):
this.getSite().getWorkbenchWindow().getShell()
В другом месте обращайтесь к представлению или редактору и тому же, что и выше.
Если вы находите себя в классе, где у вас нет доступа к представлению или редактору, вы, вероятно, не хотите называть какой-либо код пользовательского интерфейса, но если вы действительно хотите застрелить себя в ноге:
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
Ответ 2
Кусок кода из предыдущего ответа будет работать. Однако имейте в виду, что вы можете только открыть свое диалоговое окно из потока пользовательского интерфейса. Если вы открываете диалог из другого потока, например. фоновый процесс, вам нужно сделать что-то вроде этого:
PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
public void run() {
Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
}
});
В противном случае вы получите исключение при создании диалога.
Ответ 3
Не совсем то, что вы хотите сделать, но при создании диалога вам может понадобиться SWT.APPLICATION_MODAL, SWT.DIALOG_TRIM и т.д., чтобы сделать его (но, возможно, это не то, о чем был ваш вопрос).
Подробнее см. ссылку .