3
我不想創建自己的編輯器,但我想通過掛鉤編輯事件來擴展現有的編輯器。如何在我自己的插件中掛鉤Eclipse編輯器事件?
例如,無論何時文本或XML編輯器中的文本發生變化,我都會得到回調並能夠對更改做出反應。
是否存在這樣一個合適的擴展點?
我不想創建自己的編輯器,但我想通過掛鉤編輯事件來擴展現有的編輯器。如何在我自己的插件中掛鉤Eclipse編輯器事件?
例如,無論何時文本或XML編輯器中的文本發生變化,我都會得到回調並能夠對更改做出反應。
是否存在這樣一個合適的擴展點?
您可以通過訪問IEditorPart
爲此,使用getAdapter(IDocument.class)
然後添加一個監聽器,這個...
但是,這確實是一個黑客... ;-)
編輯:在請求,這裏是更多的代碼。
public void hookToEditor() {
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
if (page == null) return;
IEditorPart editor = page.getActiveEditor();
if (editor == null) return;
IDocument doc = (IDocument) editor.getAdapter(IDocument.class);
if (doc == null) return;
doc.addDocumentListener(new IDocumentListener() {
@Override
public void documentChanged(DocumentEvent event) {
// Do something
}
@Override
public void documentAboutToBeChanged(DocumentEvent event) {
// About to do something
}
});
}
注意
您可以添加資源更改偵聽器。
IResourceChangeListener listener = new IResourceChangeListener() {
@Override
public void resourceChanged(IResourceChangeEvent arg0) {
System.out.println("Text changed");
}
};
ResourcesPlugin.getWorkspace().addResourceChangeListener(listener);
如果沒有別的東西,黑客就會做;) – Johnny
@TonnyMadsen你能舉一個更具體的例子嗎? – RoflcoptrException