如何在自己的插件中连接Eclipse编辑器事件?
我不想创建自己的编辑器,但我想通过连接到现有编辑器的编辑事件来扩展它们 例如,每当文本或xml编辑器中的文本发生更改时,我都会得到一个回调,并能够对更改做出反应如何在自己的插件中连接Eclipse编辑器事件?,eclipse,plugins,Eclipse,Plugins,我不想创建自己的编辑器,但我想通过连接到现有编辑器的编辑事件来扩展它们 例如,每当文本或xml编辑器中的文本发生更改时,我都会得到一个回调,并能够对更改做出反应 是否存在这样一个合适的扩展点?您可以通过访问IEditorPart,使用getAdapter(IDocument.class)来实现这一点,然后向该扩展点添加一个侦听器 但这真的是一个黑客…;-) 编辑:根据要求,这里有更多的代码 public void hookToEditor() { IWorkbenchPage page
是否存在这样一个合适的扩展点?您可以通过访问
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
}
});
}
注意
- 获取页面的方法有很多,例如通过当前网站
- 获取编辑器部件的方法同样多,例如通过处理程序
- 许多编辑器没有嵌入式文档,例如PDE编辑器
IResourceChangeListener listener = new IResourceChangeListener() {
@Override
public void resourceChanged(IResourceChangeEvent arg0) {
System.out.println("Text changed");
}
};
ResourcesPlugin.getWorkspace().addResourceChangeListener(listener);
如果没有其他东西,黑客就可以了;)@你能举个更具体的例子吗?