0

在我的 Eclipse RCP 视图中,我使用 JFace 数据绑定将模型数据绑定到org.eclipse.jface.viewers.TreeViewer. 我ViewerSupport.bind()用来绑定数据,如片段所示,它工作得很好。

ViewerSupport.bind(viewer, model, BeanProperties.list("children",
          ModelObject.class), BeanProperties.value(ModelObject.class, "name"));

现在我真的很想在节点上显示图像以及文本。如果没有数据绑定,我只会覆盖 aLabelProvidergetImage(Object element)方法,但内容 + 标签提供程序方法和使用ViewerSupport不能一起工作。ViewerSupport我还没有在API中找到解决我的问题的方法。有没有解决方案,也许使用org.eclipse.core.databinding.property.value.IValuePropertys?

4

1 回答 1

1

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);
}
于 2016-03-01T12:23:48.493 回答