簡體   English   中英

Eclipse 插件開發 - 檢測/偵聽在編輯器中打開的文件

[英]Eclipse Plugin Development - Detect/Listen File open in editor

我需要檢測何時在 Eclipse 中打開文件(任何類型)並在發生這種情況時運行一些代碼。

我已嘗試使用以下代碼,但似乎多次調用該函數:

Display.getDefault().asyncExec(new Runnable() {
    @Override
    public void run() {
        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().addPartListener(new IPartListener2() {
            @Override
            public void partOpened(IWorkbenchPartReference partRef) {
                System.out.println("File opened");
            }
            
        });
    }
});

有沒有辦法在 Eclipse RCP 中做到這一點?

IPartListener2.partOpened是正確的使用方法。 確保只設置一次偵聽器。

partOpened將對所有部分調用,因此您需要檢查您感興趣的部分。

@Override
public void partOpened(final IWorkbenchPartReference partRef)
{
  // Check for editor reference and get the editor part

  if (partRef instanceof IEditorReference && 
      partRef.getPart(false) instanceof IEditorPart editorPart) {
     // Example getting current IFile being edited:
     IFile file = editorPart.getEditorInput().getAdapter(IFile.class);
  }
}

注意:示例代碼使用 Java 16 類型模式,對於舊版本需要修改。

另請注意,通常不需要Display.asyncExec來設置它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM