警告: 私はまだ Eclipse プラグイン開発における適切な MVC に苦労しているので、私が耐えなければならないより多くの苦痛を引き起こしている可能性が最も高いものがここにある場合は、私に知らせてください。
質問:
JFace Tree Viewer と Table を含む View があります (Table Viewer ではありません... 今後変更される予定です)。
ビューへの参照で初期化されるアクションがあります (これはひどいようですが、正しい方法はまだわかりません)。ビューのボタンを介してアクションが実行されると、アクションは次のようになります。 1) ビューからツリー ビューアーを取得します。 2) 基礎となるモデルを取得します。 3) ジョブを作成します。モデルに子を追加するなど、さまざまなものがあります b) ビューで公開されている関数を使用して、ビュー内のテーブルを「クリア」します 4) 「done()」を実装する JobChangeListener を追加します。a) done() メソッド内で、次のコードを介してツリービューアーを展開します。
loadMethodsJob.addJobChangeListener(new JobChangeAdapter(){
public void done(IJobChangeEvent event){
view.enableActions();
view.getTestsViewer().expandAll();
}
});
ジョブ内でビューアーの要素にアクセスしようとすると、無効なスレッド アクセス エラーが発生します。ジョブ内で実行しているときにそれらを取得する理由は理解していると思いますが、ジョブ変更リスナーでウィジェットを操作できない場合、それらを正しく回避する方法がわかりません。ウィジェットとのすべての対話を getDisplay().synchExec(....) でラップすれば機能させることができますが、これは好ましくないことを読んだことを覚えているようです。
私は Eclipse SWT の理解において大きな飛躍の瀬戸際にいるように感じているので、そこに到達するためのガイダンスに感謝します。