Столбцы дерева упаковки при изменении записи в листе свойств - PullRequest
0 голосов
/ 14 мая 2018

У нас есть приложение RCP, которое использует Tree и соответствующее ему TreeViewer. Это дерево использует 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, но, похоже, он не работает.

Какие-либо предложения / указатели о том, куда следует добавлять прослушиватель изменений в столбцы дерева упаковок после изменения текста метки на листе свойств?

1 Ответ

0 голосов
/ 17 мая 2018

Часть представления Properties реализована классом PropertySheet , и ее Javadoc стоит прочитать.PropertySheet - это тип PageBookView, представление, отображающее одну из множества управляемых страниц.На текущей странице представления Свойства отображаются свойства текущего выделения.

Таким образом, вы можете попытаться получить средство просмотра дерева с текущей страницы из Свойства просмотреть деталь (на основе ее идентификатора вида, org.eclipse.ui.views.PropertySheet) через getCurrentPage().getControl(), а затем выполнить любой необходимый столбец voodoo.

В качестве альтернативы вы можете предоставить свой собственный IPropertySheetPage, который ведет себя так, как вы хотите.

...