Java Eclipse插件-访问编辑器
因此,我目前正在为EclipseIDE开发一个插件。简而言之,该插件是一个协作式实时代码编辑器,其中的编辑器是eclipse(类似于Google文档,但带有eclipse上的代码和代码)。这意味着,当我安装插件时,我将能够使用我的Gmail帐户将eclipse连接到合作伙伴的eclipse。当我开始在我的机器上编码时,我的搭档会看到我写的东西,反之亦然 我目前面临的问题是访问eclipse的编辑器。例如,我必须监视活动文档中的所有更改,以便每次发生更改时,都会将此更改通知其他合作伙伴的IDEJava Eclipse插件-访问编辑器,java,eclipse-plugin,editor,Java,Eclipse Plugin,Editor,因此,我目前正在为EclipseIDE开发一个插件。简而言之,该插件是一个协作式实时代码编辑器,其中的编辑器是eclipse(类似于Google文档,但带有eclipse上的代码和代码)。这意味着,当我安装插件时,我将能够使用我的Gmail帐户将eclipse连接到合作伙伴的eclipse。当我开始在我的机器上编码时,我的搭档会看到我写的东西,反之亦然 我目前面临的问题是访问eclipse的编辑器。例如,我必须监视活动文档中的所有更改,以便每次发生更改时,都会将此更改通知其他合作伙伴的IDE 我
我发现并阅读了有关IDcoumentProvider、IDocument和IEditorInput类的信息,它们之间存在某种联系,但我不理解这种联系或如何使用它。因此,如果有人能解释这种联系,我将非常感激。还有,是否有其他方法来实现我的目标 您可以通过
IWorkbenchPage
访问IEditorPart
IEditorPart editor = ((IWorkbenchPage) PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage()).getActiveEditor();
从那里,您可以访问各种其他类,包括编辑器的IEditorInput
、由该编辑器加载的文件
,或者底层的GUI控件
元素。(请注意,根据编辑器的类型(文本文件、图表等),您可能必须强制转换到不同的类。)
现在,您可以将侦听器添加到控件
,例如键盘适配器
,用于监控各个编辑器中发生的所有按键笔划
editorControl.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
System.out.println("Editing in file " + path);
}
});
或者,如果对所有笔划的监视太多,可以向编辑器注册IPropertyListener
。例如,每当编辑器“脏”或保存时,将通知此侦听器。propId
的含义可在IWorkbenchPartConstants
中找到
editor.addPropertyListener(new IPropertyListener() {
@Override
public void propertyChanged(Object source, int propId) {
if (propId == IWorkbenchPartConstants.PROP_DIRTY) {
System.out.println("'Dirty' Property Changed");
}
}
});
editor.addPropertyListener(new IPropertyListener() {
@Override
public void propertyChanged(Object source, int propId) {
if (propId == IWorkbenchPartConstants.PROP_DIRTY) {
System.out.println("'Dirty' Property Changed");
}
}
});