ある同僚が私が問題を解決するのを手伝ってくれました。解決策は実際には簡単です。必要なのは、アクティベーターに登録されている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;
}
}
それで全部です。