Eclipse:将文本编辑器连接到属性视图

时间:2011-11-06 22:23:22

标签: eclipse eclipse-plugin eclipse-rcp jface

我目前正在实现一个Eclipse-Plugin,它使用连接到Navigator的标准属性视图。它还具有文本编辑器,可以将其文档中的区域连接到可以为PropertiesView提供属性的某些对象(即导航器中显示的相同对象)。 但是,我发现的Tuturials只处理了使用预先实现的Viewer的Views,它已经支持将所选元素传递给Properties View。 TextEditor没有这样做(我使用的是jface和AbstractTextEditor类的子类),因为它的SelectionProvider只返回有关偏移量和选择长度的信息。 我如何修改TextEditor的SelectionProvider,以便它提供可用于属性视图的信息?

提前谢谢

1 个答案:

答案 0 :(得分:0)

好的,我自己找到了解决方案。

首先,我必须在getAdapter()的子类中实现TextEditor方法,以便它返回IPropertySourceProvider的适配器,它可以处理元素的类型。在我的AbstractTextEditor中选择。

然后,我实现了扩展ISelection的{​​{1}},以便不干扰AbstractTextEditor提供的任何特定于选择的机制,并实现接口TextSelection,因为属性View仅适用于IStructuredSelection的此界面。

ISelection具有数组的基本方法,但是,在我的情况下,只能选择一个元素,因此这些方法的实现是微不足道的。

最后一步是将IStructuredSelection放到正确的位置。覆盖AbstractTextEditor的ISelection的{​​{1}} - 方法是不够的,因为很明显,触发getSelection()的方法不使用此方法。

因此,我使用了自己的实现,而不是使用标准ISelectionProvider,我基本上覆盖了方法SelectionChangedEventsSourceViewer,这样他们就可以使用包含{{1}的事件}}

其余的是在适配器中为fireSelectionChanged(int offset, int length)实现对象的处理,其方式是为给定的Object返回firePostSelectionChanged(int offset, int lenght),如各种教程中所示。