1

私はプラグインに取り組んでいます。プラグインは外部ツールを実行します。プロセスがまだ実行されているときにユーザーがEclipseを終了しようとすると、確認ダイアログを提供する必要があります。実行中のプロセスがあります。本当に終了しますか?ユーザーが[いいえ]をクリックすると、Eclipseが終了しない場合があります。

私が見つけたのは、exitコマンドをフックしてクリーンアップする方法です。(プラグインのアクティベーターにはstop()メソッドがあります。)しかし、Eclipseは常に必然的に終了します。

4

1 に答える 1

1

ある同僚が私が問題を解決するのを手伝ってくれました。解決策は実際には簡単です。必要なのは、アクティベーターに登録されているworgbenchリスナーだけです。リスナーには、シャットダウン前とシャットダウン後のイベントに対して2つのメソッドがあります。最初のものはブール値を返します。trueが返された場合、Eclipseは終了します。それ以外の場合、終了手順は中断され、ユーザーは作業を続行できます。

アクティベータークラスの場合:

public void start(BundleContext context) {
    ...
    IWorkbench iwb = PlatformUI.getWorkbench();
    WBListener wbl = new ...;
    iwb.addWorkbenchListener(wbl);
    ...
}

クラスのコードWBListener

import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchListener;

public class WBListener implements IWorkbenchListener {

    @Override
    public void postShutdown(IWorkbench w) {
    }

    @Override
    public boolean preShutdown(IWorkbench w, boolean b) {
        boolean exitEclipse = ...; //get it somehow

        return exitEclipse;
    }
}

それで全部です。

于 2012-05-21T11:09:29.037 に答える