2011-01-10 2 views
3

Я реализовал плагин Eclipse, который отображает данные в TreeViewer.Обновить только видимые элементы в JFace TreeViewer

Древовидная структура считывается при инициализации и не изменяется во время выполнения. A LabelProvider используется для установки отображаемых данных для каждого элемента. Этот объект делает это, читая с нашего оборудования. Чтение значения может занять некоторое время (~ 0,5 сек). Обновление значений производится каждый раз, когда отладчик приостанавливается, и каждый раз, когда пользователь нажимает кнопку «Обновить».

У меня есть много элементов и подпозиций, поэтому чтение всех значений сразу требует слишком много времени. Поэтому я хочу только прочитать данные элементов, которые видны пользователю.

Я попытался с помощью ILazyTreeContentProvider, но это только экономит время, когда дерево нагрузка: После прокрутки или расширяя TreeItem, видимые элементы добавлены в список элементов для обновления вместо заменяющего невидимых узлов.

Как это сделать?

ответ

1

Найденный!

Я все еще использую ILazyTreeContentProvider. Каждый раз, когда отладчик останавливается или нажимается кнопка обновления, вместо проверки того, какой элемент нужно обновить, я просто удаляю все элементы, используя tree.clearAll(true). Удаление приведет к вызову ILazyTreeContentProvider для повторной работы только с видимыми элементами.

Смежные вопросы