为 XML 创建多页编辑器

Create a MultipageEditor for XML

我正在开发一个 eclipse 插件,我想使用一个编辑器,在当前页面上设置一些监听器(好术语?),并在用户切换到另一个页面时删除这些监听器(基本上,用户正在编辑多个文件,您可以使用默认 JAVA 编辑器进行操作。

目前我已经写了一个 class 扩展 StructuredTextEditor。插件的行为符合预期,但当我尝试处理多个文件时,出现了很多问题。根据我的说法,主要问题是当用户打开另一个页面时我无法收到通知。

我阅读(并测试)了一些关于 MultiPageEditor 的内容,但它似乎没有集成 XML 编辑器作为默认编辑器。我应该如何进行才能获得具有 XML 语法着色的 MultiPageEditor,并在用户更改当前页面以调整我的侦听器时得到通知?

感谢阅读。

代码并不完美,但至少你会有一个 MultiPageEditor 集成 XMLEditor 的例子:https://github.com/fusesource/fuseide/blob/8.0.0.Beta2/editor/plugins/org.fusesource.ide.camel.editor/src/org/fusesource/ide/camel/editor/CamelEditor.java

想法是在 createPages() 方法中调用 addPage(new StructuredTextEditor())。

问候,

在您的编辑器中,您可以使用以下方式收听编辑器文本中的选择更改:

getSelectionProvider().addSelectionChangedListener(listener);

其中 listener 实现 ISelectionChangedListener.

这适用于派生自 AbstractTextEditor 的任何编辑器(包括 StructuredTextEditor

您需要在创建编辑器的后期执行此操作。在 createPartControl 方法中有效:

@Override
public void createPartControl(final Composite parent)
{
  super.createPartControl(parent);

  getSelectionProvider().addSelectionChangedListener(listener);
}