Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse插件-访问编辑器_Java_Eclipse Plugin_Editor - Fatal编程技术网

Java Eclipse插件-访问编辑器

Java Eclipse插件-访问编辑器,java,eclipse-plugin,editor,Java,Eclipse Plugin,Editor,因此,我目前正在为EclipseIDE开发一个插件。简而言之,该插件是一个协作式实时代码编辑器,其中的编辑器是eclipse(类似于Google文档,但带有eclipse上的代码和代码)。这意味着,当我安装插件时,我将能够使用我的Gmail帐户将eclipse连接到合作伙伴的eclipse。当我开始在我的机器上编码时,我的搭档会看到我写的东西,反之亦然 我目前面临的问题是访问eclipse的编辑器。例如,我必须监视活动文档中的所有更改,以便每次发生更改时,都会将此更改通知其他合作伙伴的IDE 我

因此,我目前正在为EclipseIDE开发一个插件。简而言之,该插件是一个协作式实时代码编辑器,其中的编辑器是eclipse(类似于Google文档,但带有eclipse上的代码和代码)。这意味着,当我安装插件时,我将能够使用我的Gmail帐户将eclipse连接到合作伙伴的eclipse。当我开始在我的机器上编码时,我的搭档会看到我写的东西,反之亦然

我目前面临的问题是访问eclipse的编辑器。例如,我必须监视活动文档中的所有更改,以便每次发生更改时,都会将此更改通知其他合作伙伴的IDE


我发现并阅读了有关IDcoumentProviderIDocumentIEditorInput类的信息,它们之间存在某种联系,但我不理解这种联系或如何使用它。因此,如果有人能解释这种联系,我将非常感激。还有,是否有其他方法来实现我的目标

您可以通过
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");
        }
    }
});