Подтвердить что ты не робот

Как получить окно рабочего стола, чтобы открыть модальный диалог в проекте на основе Eclipse?

Чтобы открыть модальное диалоговое окно, вам необходимо передать родительское окно и передать необходимые флаги для того, чтобы диалог был модальным, конечно.

В зависимости от того, где вы находитесь в инфраструктуре eclipse, найти это родительское окно не всегда легко.

Как можно получить доступ к родительскому окну?

4b9b3361

Ответ 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 и т.д., чтобы сделать его (но, возможно, это не то, о чем был ваш вопрос).

Подробнее см. ссылку .