在我的Eclipse RCP View中,我使用JFace数据绑定将模型数据绑定到org.eclipse.jface.viewers.TreeViewer
。我使用ViewerSupport.bind()
来绑定数据,如片段中所示,它可以正常工作。
ViewerSupport.bind(viewer, model, BeanProperties.list("children",
ModelObject.class), BeanProperties.value(ModelObject.class, "name"));
现在我真的想在节点上显示图像和文本。如果没有数据绑定,我只是覆盖LabelProvider
的{{1}}方法,但内容+标签提供商方法和getImage(Object element)
的使用不起作用一起。我在ViewerSupport
API中找不到问题的解决方案。是否有解决方案,可能使用ViewerSupport
s?
答案 0 :(得分:0)
ViewerSupport
使用ObservableMapLabelProvider
作为标签提供者。不幸的是,getImage
方法只返回null
。
您可以使用ObservableMapLabelProvider
的子类来提供图像。您无法使用ViewerSupport
来执行此操作,因此您必须复制部分代码。
这就是ViewerSupport.bind
设置树的方式:
public static void bind(AbstractTreeViewer viewer, Object input,
IListProperty childrenProperty, IValueProperty[] labelProperties) {
Realm realm = DisplayRealm.getRealm(viewer.getControl().getDisplay());
ObservableListTreeContentProvider contentProvider = new ObservableListTreeContentProvider(
childrenProperty.listFactory(realm), null);
if (viewer.getInput() != null)
viewer.setInput(null);
viewer.setContentProvider(contentProvider);
viewer.setLabelProvider(new ObservableMapLabelProvider(Properties
.observeEach(contentProvider.getKnownElements(),
labelProperties)));
if (input != null)
viewer.setInput(input);
}