1

我正在开发一个插件。该插件执行外部工具,如果用户尝试退出 Eclipse,当进程正在运行时,我必须提供一个确认对话框。有正在运行的进程。你真的要退出吗?如果用户单击No,Eclipse 可能不会终止。

我刚刚发现,如何将退出命令挂钩以进行清理。(插件的激活器有stop()方法。)但是Eclipse总是不可避免地终止。

4

1 回答 1

1

一位同事帮我解决了这个问题。解决方案其实很简单。我只需要一个在激活器中注册的 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;
    }
}

就这样。

于 2012-05-21T11:09:29.037 回答