2

ツリーノードをクリックしてビューからエディターを開いています。ここで、エディターが読み込まれ、コントロールがユーザーに表示されるときに、エディターに存在する特定の値に基づいて警告メッセージ ダイアログをユーザーに表示したいと考えています。

エディタの createPartControl メソッドの最後に警告ダイアログを入れてみました。必要な機能に従って、ツリーノードをダブルクリックすると、ダイアログが表示されます。ただし、問題は、ダイアログが表示されたときに、エディターのコントロールがまだ表示されていないことです。ダイアログを閉じると、エディター コントロールが表示されます。

私はそれが逆に起こることを望んでいます。つまり、エディタ コントロールが最初に表示され、次に警告ダイアログが表示されます。この効果を得るには、どのような変更を行う必要がありますか?

4

1 に答える 1

8

このメッセージで提案されているように、そのMessageDialogを非同期で呼び出して、エディター自体を完了する機会を残すことができます。

asyncExec() ランナブルで警告ダイアログを表示すると、エディターの初期化がすべて正しい順序で行われることが保証されます。

したがって、(テストされていない)このコードのようなものはうまくいくかもしれません:

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

このMapEditorクラスの他の例では、結果を待機する asyncExec を介して MessageDialog が表示されます。

PlatformGIS.syncInDisplayThread

于 2009-03-10T07:33:30.550 に答える