好的,我已经设法找到解决方案我自己。
首先,我不得不实施getAdapter()
方法在我的TextEditor
,使得它返回一个适配器IPropertySourceProvider
子类,可以处理那些在我AbstractTextEditor
所选元素的类型。
然后,我实现了一个ISelection
是扩展TextSelection
,为了不与由AbstractTextEditor提供任何具体的选择机制干扰,并实现了接口IStructuredSelection
,因为属性查看作品仅为ISelection
这个接口。
一个IStructuredSelection
功能数组的基本方法,但是,在我的情况下,只能选择一个单一的元素,所以这些方法的实现是微不足道的。
最后一步是让我的ISelection
到正确的地方。覆盖getSelection()
- AbstractTextEditor的ISelectionProvider
的方法并不够用,因为很显然,触发SelectionChangedEvents
的方法不使用此方法。
因此,而是采用了标准SourceViewer
,我用我自己的实现中,我基本上overrid方法fireSelectionChanged(int offset, int length)
和firePostSelectionChanged(int offset, int lenght)
,使得它们使用含有我ISelection
事件。
其余的是在IPropertySourceProvider
的适配器中实现对我的对象的处理方式,它为给定的对象返回IPropertySource
,如各种教程中所示。