gpt4 book ai didi

java - Eclipse 插件 - 访问编辑器

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:29 25 4
gpt4 key购买 nike

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

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

我发现并阅读了有关 IDcoumentProviderIDocumentIEditorInput 类的内容,它们之间存在某种联系,但我无法理解这种联系或如何使用它。因此,如果有人可以解释这种联系,我将不胜感激。另外,是否有另一种方法可以实现我的目标?

最佳答案

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

关于java - Eclipse 插件 - 访问编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com