我不想创建自己的编辑器,但我想通过挂钩编辑事件来扩展现有的编辑器。
例如,每当文本或xml编辑器中的文本发生变化时,我都会收到回调并能够对更改作出反应。
是否存在这样一个合适的扩展点?
答案 0 :(得分:8)
您可以访问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
}
});
}
请注意
答案 1 :(得分:2)
您可以添加资源更改侦听器。
IResourceChangeListener listener = new IResourceChangeListener() {
@Override
public void resourceChanged(IResourceChangeEvent arg0) {
System.out.println("Text changed");
}
};
ResourcesPlugin.getWorkspace().addResourceChangeListener(listener);