2012-05-19 104 views
1

我正在爲Eclipse編寫插件,我想知道如何在編輯器文本上監聽任何活動編輯器的更改事件。聽Eclipse編輯器事件

基本上我希望在任何打開的編輯器中修改任何文本時觸發偵聽器事件。

+0

另請參閱http://stackoverflow.com/a/6508559/796559 –

+0

可能的重複[我怎樣才能掛鉤到我自己的插件Eclipse編輯器事件?](http://stackoverflow.com/questions/6507937/ how-can-i-hook-into-eclipse-editor-events-in-my-own-plugin) –

回答

2

您想要到達與編輯器關聯的JFace Document對象,並添加IDocumentListener,這應該讓您開始。

+0

有沒有聽衆知道何時打開一個新的編輯器(即打開一個新文件)? – Hakkar

+0

是的,'IPartListener'。這也會讓你知道部件何時被激活。您可以看到該部件是否爲編輯器,因爲它是'EditorPart'的一個子類(或者可能實現了一些接口)。 –

0

聽起來真的很不典型。也非常干擾和危險。你爲什麼要聽任何編輯的打字?強烈建議不要這樣做。這不應該侷限於同一模型的一堆編輯器(IEditorInput)嗎?

IWorkbenchPage page = PlatformUI.getWorkbench() 
      .getActiveWorkbenchWindow().getActivePage(); 
    IEditorReference[] editorReferences = page.getEditorReferences(); 

從editorReferences試着找出一種方法來添加一個監聽器。 IEditorReference是一個句柄,它並不意味着編輯器被激活。當你打開eclipse時,編輯器會被懶惰地激活(當它們被點擊打開時)。因此,激活所有打開的編輯器也會導致性能問題。