ViewerSupport.bind() 可以和图片一起使用吗?
Can ViewerSupport.bind() be used in conjunction with images?
在我的 Eclipse RCP 视图中,我使用 JFace 数据绑定将模型数据绑定到 org.eclipse.jface.viewers.TreeViewer
。我使用 ViewerSupport.bind()
绑定数据,如代码片段所示,效果很好。
ViewerSupport.bind(viewer, model, BeanProperties.list("children",
ModelObject.class), BeanProperties.value(ModelObject.class, "name"));
现在我真的很想在节点上显示图像和文本。如果没有数据绑定,我只是重写 LabelProvider
的 getImage(Object element)
方法,但是内容 + 标签提供程序方法和 ViewerSupport
的使用不能一起工作。我还没有在 ViewerSupport
API 中找到解决我的问题的方法。是否有解决方案,也许使用 org.eclipse.core.databinding.property.value.IValueProperty
s?
ViewerSupport
使用 ObservableMapLabelProvider
作为标签提供者。不幸的是 getImage
方法只是 returns null
.
您或许可以使用 ObservableMapLabelProvider
的子 class 来提供图像。您不能使用 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);
}
在我的 Eclipse RCP 视图中,我使用 JFace 数据绑定将模型数据绑定到 org.eclipse.jface.viewers.TreeViewer
。我使用 ViewerSupport.bind()
绑定数据,如代码片段所示,效果很好。
ViewerSupport.bind(viewer, model, BeanProperties.list("children",
ModelObject.class), BeanProperties.value(ModelObject.class, "name"));
现在我真的很想在节点上显示图像和文本。如果没有数据绑定,我只是重写 LabelProvider
的 getImage(Object element)
方法,但是内容 + 标签提供程序方法和 ViewerSupport
的使用不能一起工作。我还没有在 ViewerSupport
API 中找到解决我的问题的方法。是否有解决方案,也许使用 org.eclipse.core.databinding.property.value.IValueProperty
s?
ViewerSupport
使用 ObservableMapLabelProvider
作为标签提供者。不幸的是 getImage
方法只是 returns null
.
您或许可以使用 ObservableMapLabelProvider
的子 class 来提供图像。您不能使用 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);
}