Java 为XML创建多页面编辑器

Java 为XML创建多页面编辑器,java,xml,eclipse,editor,Java,Xml,Eclipse,Editor,我正在开发一个eclipse插件,我想使用一个编辑器,在当前页面上设置一些监听器(好的术语?),并在用户切换到另一个页面时删除这些监听器(基本上,用户正在编辑多个文件,您可以使用默认的JAVA编辑器) 目前,我已经编写了一个扩展StructuredTextEditor的类。插件的行为是预期的,但当我尝试处理多个文件时,会出现许多问题。据我说,主要的问题是,当用户打开另一个页面时,我无法得到通知 我阅读(并测试)了一些关于multigeeditor的内容,但它似乎没有将XML编辑器集成为默认编辑器

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

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

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


感谢阅读。

代码并不完美,但至少您会有一个集成XMLEditor的多页面编辑器示例:

其思想是在createPages()方法中调用addPage(新的StructuredTextEditor()


关于,

代码并不完美,但至少您会有一个集成XMLEditor的多页面编辑器示例:

其思想是在createPages()方法中调用addPage(新的StructuredTextEditor()


关于,

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

getSelectionProvider().addSelectionChangedListener(listener);
其中
listener
实现
ISelectionChangedListener

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

您需要在编辑器创建的较晚阶段执行此操作。在
createPartControl
方法中:

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

  getSelectionProvider().addSelectionChangedListener(listener);
}

在编辑器中,您可以使用以下命令侦听编辑器文本中的选择更改:

getSelectionProvider().addSelectionChangedListener(listener);
其中
listener
实现
ISelectionChangedListener

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

您需要在编辑器创建的较晚阶段执行此操作。在
createPartControl
方法中:

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

  getSelectionProvider().addSelectionChangedListener(listener);
}


默认的Java编辑器不会编辑多个文件。每个文件都会启动一个单独的编辑器副本。现有的Eclipse WST XML编辑器使用多页编辑器来显示单个XML文件的不同视图。因此,对于Java编辑器,我可能是这样的:每次都会启动一个编辑器。但是如果打开3个文件,就会打开3个编辑器,一个d当我对其中一个执行操作时,所有编辑器的侦听器都会同时触发。这是我不太了解的一点文本选择侦听器:ISelectionListener,打开编辑器时的侦听器:IPartListener2
IPartListener2
告诉您每个部分的信息,因此您需要检查它是什么移植。
ISelectionListener
使用选择服务告诉您各地的选择-这可能不是您想要的。您是对的,这绝对不是我想要使用的。在这种情况下,您有什么建议?我需要了解文本选择(或简单单击文本)默认的Java编辑器不会编辑多个文件。为每个文件启动一个单独的编辑器副本。现有的Eclipse WST XML编辑器使用多页编辑器显示单个XML文件的不同视图。因此,我可能是Java编辑器的情况:每次启动一个编辑器。但是如果我打开3个文件,我会打开3个编辑器,当我对其中一个编辑器执行操作时,所有编辑器的侦听器都会同时触发。这是我不太了解的一点文本选择侦听器:iSelectListener,打开编辑器时有一个侦听器:IPartListener2
IPartListener2
告诉您所需的每个部分查看它报告的内容。
ISelectionListener
通过选择服务告诉您各地的选择-这可能不是您想要的。您是对的,这绝对不是我想要使用的。在这种情况下,您有什么建议?我需要知道文本选择(或简单单击文本)一旦发生。我可能错过了什么,因为这个听众从来没有叫过我。我试过几种“选择”:简单单击、双击、手动选择,但方法
selectionChanged
似乎从未被称为添加侦听器的建议位置。我可能很恼人,但我无法从类扩展StructuredTextEditor中找到复合对象。这是对现有方法的重写。我是专业人士bably错过了一些东西,因为这个听众从来没有给我打过电话。我尝试了几个“选择”:简单单击、双击、手动选择,但方法
selectionChanged
似乎从未被称为添加侦听器的建议位置。我可能很恼人,但我无法从类扩展StructuredTextEditor中找到复合对象。这是对现有方法的重写