【问题标题】:override close action in eclipse editor覆盖 Eclipse 编辑器中的关闭操作
【发布时间】:2014-02-17 08:57:36
【问题描述】:

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

我想在它的close() 编辑器操作中做一些释放资源的工作,所以我想覆盖它的关闭操作或任何在关闭事件之前刚刚生效的方法。

我曾尝试过dispose(),但为时已晚。

或者是否有任何特定的监听器监听关闭事件。

我想拥有这样的:

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

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

【问题讨论】:

  • 为什么dispose 太晚了?
  • @Greg-449 在处理时,我们无法引用似乎有关闭事件的编辑器。

标签: java editor swt eclipse-rcp jface


【解决方案1】:

您可以为此使用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

            }
        });
    }
}

【讨论】:

    【解决方案2】:

    只需覆盖 disposeListener()。

    parent.addDisposeListener(new DisposeListener() {
    
        @Override
        public void widgetDisposed(DisposeEvent e) {
            releaseAllResource();
    
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多