我目前正在实现一个Eclipse-Plugin,它使用连接到Navigator的标准属性视图。它还具有文本编辑器,可以将其文档中的区域连接到可以为PropertiesView提供属性的某些对象(即导航器中显示的相同对象)。 但是,我发现的Tuturials只处理了使用预先实现的Viewer的Views,它已经支持将所选元素传递给Properties View。 TextEditor没有这样做(我使用的是jface和AbstractTextEditor类的子类),因为它的SelectionProvider只返回有关偏移量和选择长度的信息。 我如何修改TextEditor的SelectionProvider,以便它提供可用于属性视图的信息?
提前谢谢
答案 0 :(得分:0)
好的,我自己找到了解决方案。
首先,我必须在getAdapter()
的子类中实现TextEditor
方法,以便它返回IPropertySourceProvider
的适配器,它可以处理元素的类型。在我的AbstractTextEditor
中选择。
然后,我实现了扩展ISelection
的{{1}},以便不干扰AbstractTextEditor提供的任何特定于选择的机制,并实现接口TextSelection
,因为属性View仅适用于IStructuredSelection
的此界面。
ISelection
具有数组的基本方法,但是,在我的情况下,只能选择一个元素,因此这些方法的实现是微不足道的。
最后一步是将IStructuredSelection
放到正确的位置。覆盖AbstractTextEditor的ISelection
的{{1}} - 方法是不够的,因为很明显,触发getSelection()
的方法不使用此方法。
因此,我使用了自己的实现,而不是使用标准ISelectionProvider
,我基本上覆盖了方法SelectionChangedEvents
和SourceViewer
,这样他们就可以使用包含{{1}的事件}}
其余的是在适配器中为fireSelectionChanged(int offset, int length)
实现对象的处理,其方式是为给定的Object返回firePostSelectionChanged(int offset, int lenght)
,如各种教程中所示。