我们有一个使用Tree
及其相应TreeViewer
的RCP应用。此树使用ObservableMapLabelProvider
提供标签文本和内容ObservableListTreeContentProvider
。我们正在使用org.eclipse.jface.databinding-1.5.0-SDK-3.7.2
。
我们使用IObservableMap
提供EMFObservables.observeMaps(contentProvider.getKnownElements(), new EStructuralFeature[])
数组来构建ObservableMapLabelProvider
。
我们有IPropertySourceProvider
的实现,它似乎用于通过覆盖getPropertySource(Object)
来填充属性视图。
现在我可以看到,当我修改标签的属性表条目时,会调用IPropertySource#setPropertyValue(Object, Object)
。我想在ObservableMapLabelProvider
或IObservableMap
添加更改侦听器,以确保在修改标签文本后树列会被打包。我尝试将更改地图侦听器添加到IObservableMap
的每个元素,但它似乎不起作用。
在属性表上更改标签文本后,我应该在何处将更改侦听器添加到打包树列中的任何建议/指针?
答案 0 :(得分:1)
属性视图部分由PropertySheet类实现,值得阅读其Javadoc。 PropertySheet
是一种PageBookView
,一种显示许多托管页面之一的视图。 Properties 视图的当前页面显示当前选择的属性。
因此,您可以尝试从属性视图部分(基于其视图ID,org.eclipse.ui.views.PropertySheet
)通过{{从当前页面获取树查看器1}},然后执行任何列voodoo是必需的。
或者,您可以提供自己的行为getCurrentPage().getControl()
。