Как получить окно рабочей среды, чтобы открыть модальное диалоговое окно в проекте на основе Eclipse? - PullRequest
19 голосов
/ 14 января 2009

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

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

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

Ответы [ 3 ]

27 голосов
/ 14 января 2009

Кусок кода из предыдущего ответа будет работать. Однако имейте в виду, что вы можете открыть свой диалог только из потока пользовательского интерфейса. Если вы открываете диалог из другого потока, например, фоновый процесс, вам нужно сделать что-то вроде этого:

PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
    public void run() {
        Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
    }
});

В противном случае вы получите исключение при создании диалога.

22 голосов
/ 14 января 2009

Из представления или редактора (эта часть проста):

this.getSite().getWorkbenchWindow().getShell()

Из других мест, получить доступ к представлению или редактору и так же, как указано выше.

Если вы оказались в классе, где у вас нет доступа к представлению или редактору, вы, вероятно, не хотите вызывать какой-либо код пользовательского интерфейса, но если вы действительно хотите выстрелить себе в ногу:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()
0 голосов
/ 14 января 2009

Не совсем то, что вы хотите сделать, но вам может понадобиться использовать SWT.APPLICATION_MODAL , SWT.DIALOG_TRIM и т. Д. При создании диалогового окна, чтобы сделать его модальным. (но, возможно, дело не в вашем вопросе).

См. ссылку для получения дополнительной информации.

...