在Eclipse编辑器中覆盖关闭操作

4

我有一个基于 Eclipse RCP 的应用程序,在其中创建了一个扩展了 EditorPart 的编辑器。

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

我尝试过使用 dispose(),但它太晚了无法起作用。

还是有任何特定的监听器可以监听关闭事件吗?

我希望能够实现这样的效果:

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

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


为什么“dispose”太晚了? - greg-449
@Greg-449 在释放资源的时候,我们不能有那个似乎已经关闭的编辑器的引用。 - RTA
2个回答

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
只需重写disposeListener()方法。
parent.addDisposeListener(new DisposeListener() {

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

    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接