2014-02-17 40 views
4

我有一個eclipse rcp應用程序,其中創建了一個擴展EditorPart的編輯器。覆蓋eclipse編輯器中的關閉操作

我想在它的close()編輯器操作中執行一些發佈資源工作,所以我想覆蓋它的關閉操作或任何剛剛進入操作以關閉事件的方法。

我曾嘗試dispose(),但它遲到工作。

或者是否有任何特定的傾聽者關閉事件。

我想有這樣的:

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

更新:基本上我想攔截接近事件的編輯器。

+0

爲什麼'dispose'太遲了? –

+0

@ Greg-449在處置的地方,不能有那個似乎有近距離事件的編輯的參考。 – RTA

回答

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(); 

    } 
});