在eclipse编辑器中覆盖关闭动作

时间:2014-02-17 08:57:37

标签: java editor swt eclipse-rcp jface

我有一个eclipse rcp应用程序,我在其中创建了一个扩展EditorPart的编辑器。

我想在其close()编辑器操作中执行一些发布资源工作,因此我想覆盖其关闭操作或在关闭事件之前刚刚采取行动的任何方法。

我曾尝试过dispose(),但为时尚早。

或者是否有任何特定的听众倾听近似事件。

我想要那样:

@override
public void close()
{
  //do something resource release related task.
}

更新:基本上我想拦截编辑器的关闭事件。

2 个答案:

答案 0 :(得分:6)

您可以将IPartListener用于此目的:

public class YourEditor extends EditorPart {

@Override
    public void init(IEditorSite site, IEditorInput input) throws PartInitException {
getSite().getPage().addPartListener(new IPartListener() {

            @Override
            public void partOpened(IWorkbenchPart part) {
                // TODO Auto-generated method stub

            }

            @Override
            public void partDeactivated(IWorkbenchPart part) {
                // TODO Auto-generated method stub

            }

            @Override
            public void partClosed(IWorkbenchPart part) {
                // TODO Auto-generated method stub

            }

            @Override
            public void partBroughtToTop(IWorkbenchPart part) {
                // TODO Auto-generated method stub

            }

            @Override
            public void partActivated(IWorkbenchPart part) {
                // TODO Auto-generated method stub

            }
        });
    }
}

答案 1 :(得分:1)

只需覆盖disposeListener()。

parent.addDisposeListener(new DisposeListener() {

    @Override
    public void widgetDisposed(DisposeEvent e) {
        releaseAllResource();

    }
});