好的,我已經設法找到解決方案我自己。
首先,我不得不實施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
,如各種教程中所示。