我正在开发一个插件。该插件执行外部工具,如果用户尝试退出 Eclipse,当进程正在运行时,我必须提供一个确认对话框。有正在运行的进程。你真的要退出吗?如果用户单击No,Eclipse 可能不会终止。
我刚刚发现,如何将退出命令挂钩以进行清理。(插件的激活器有stop()
方法。)但是Eclipse总是不可避免地终止。
我正在开发一个插件。该插件执行外部工具,如果用户尝试退出 Eclipse,当进程正在运行时,我必须提供一个确认对话框。有正在运行的进程。你真的要退出吗?如果用户单击No,Eclipse 可能不会终止。
我刚刚发现,如何将退出命令挂钩以进行清理。(插件的激活器有stop()
方法。)但是Eclipse总是不可避免地终止。
一位同事帮我解决了这个问题。解决方案其实很简单。我只需要一个在激活器中注册的 worgbench 侦听器。侦听器有两种方法用于关闭前和关闭后的事件。第一个返回布尔值。如果返回 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;
}
}
就这样。