【发布时间】:2011-06-28 14:18:12
【问题描述】:
我不想创建自己的编辑器,但我想通过挂钩编辑事件来扩展现有编辑器。
例如,每当文本或 xml 编辑器中的文本发生更改时,我都会收到回调并能够对更改做出反应。
这样合适的扩展点存在吗?
【问题讨论】:
我不想创建自己的编辑器,但我想通过挂钩编辑事件来扩展现有编辑器。
例如,每当文本或 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);
【讨论】: