Обновлять только видимые элементы в JFace TreeViewer - PullRequest
3 голосов
/ 10 января 2011

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

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

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

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

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

1 Ответ

1 голос
/ 10 января 2011

Нашел!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...