Можно ли использовать ViewerSupport.bind() вместе с изображениями?
В моем 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
"s getImage(Object element)
метод, но метод поставщика контента + метки и использование ViewerSupport
не работайте вместе Я не нашел решения своей проблемы в ViewerSupport
API. Есть ли решение, возможно, с использованием org.eclipse.core.databinding.property.value.IValueProperty
s?
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);
}