为 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);
}
我正在开发一个 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);
}