Eclipse插件-访问编辑器



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

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

我发现并阅读了IDcoumentProvider iddocument IEditorInput类,它们以某种方式连接,但我无法理解这种连接或如何使用它。所以如果有人能解释一下这种联系,我会很感激的。还有,是否有其他方法可以实现我的目标?

您可以通过IWorkbenchPage访问IEditorPart

IEditorPart editor =  ((IWorkbenchPage) PlatformUI.getWorkbench()
        .getActiveWorkbenchWindow().getActivePage()).getActiveEditor();
从那里,您可以访问各种其他类,包括编辑器的IEditorInput、该编辑器加载的File或底层GUI Control元素。(请注意,根据编辑器的类型(文本文件、图表等),您可能必须强制转换为不同的类。)
FileEditorInput input = (FileEditorInput) editor.getEditorInput();
StyledText editorControl = ((StyledText) editor.getAdapter(Control.class));
String path = input.getFile().getRawLocationURI().getRawPath();

现在,你可以添加一个监听器到Control,例如一个KeyAdapter来监视在相应的编辑器中发生的所有击键。

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");
        }
    }
});

相关内容

  • 没有找到相关文章

最新更新