Eclipse RCP: Как показать диалоговое окно сообщения после загрузки редактора? - PullRequest
2 голосов
/ 10 марта 2009

Я открываю редактор из вида по щелчку триода. Теперь, когда редактор загружает и элементы управления отображаются для пользователя, я хочу отобразить диалоговое окно с предупреждающим сообщением для пользователя на основе определенных значений в редакторе.

Я попытался поставить диалоговое окно с предупреждением в конце метода createPartControl редактора. Диалог появляется при двойном щелчке триода в соответствии с требуемыми функциями. Но проблема в том, что когда появляется диалоговое окно, элементы управления в редакторе еще не видны. Только когда я закрываю диалоговое окно, отображаются элементы управления редактора.

Я хочу, чтобы это произошло наоборот. т.е. редактор должен сначала показываться, а затем должно появиться диалоговое окно с предупреждением. Какие изменения я должен сделать, чтобы достичь этого эффекта?

1 Ответ

8 голосов
/ 10 марта 2009

Возможно, вы захотите вызвать этот MessageDialog в асинхронном режиме, чтобы дать Редактору возможность завершить себя, как предложено в этом сообщении .

показать диалоговое окно с предупреждением в asyncExec (), которое будет работать, и убедиться, что инициализация редактора происходит в правильной последовательности.

Итак, что-то вроде (не проверено) этого кода может помочь:

getSite().getShell().getDisplay().asyncExec
    (new Runnable() {
        public void run() {
            MessageDialog.openWarning(getSite().getShell(),"wrong","no)
        }
    });
}

Некоторые другие примеры в этом MapEditor классе, где MessageDialog отображается через asyncExec, который ожидает результата:

PlatformGIS.syncInDisplayThread

...