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

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

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

谢谢阅读。

最佳答案

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

getSelectionProvider().addSelectionChangedListener(listener);


其中listener实现ISelectionChangedListener

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

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

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

  getSelectionProvider().addSelectionChangedListener(listener);
}

10-08 11:22