minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

とりあえず色々。新しいものが上になるように並べてあります。

アクション内でSWTを操作する

SWTの各種操作は、スレッド上で実行すると以下のようなエラーが発生してしまいます。

org.eclipse.swt.SWTException: Invalid thread access

アクションは全てスレッド上で動作しているので、これは困ります。
解決するには UIJob クラスを使います。

class SampleUIJob extends UIJob {
    public SampleUIJob(String name) {
        super(name);
    }
    @Override
    public IStatus runInUIThread(IProgressMonitor monitor) {
        // ここに各種処理を記述
        return Status.OK_STATUS;
    }
}

こんな感じでJobクラスを定義します。
実行するには…

SampleUIJob job = new SampleUIJob("Job Name"));
job.schedule();

このように、schedule() メソッドをCALLするだけです。