Платформа просмотра

#swt #jface

#swt #jface

Вопрос:

Я не знаю, точно ли я понимаю фреймворк Viewer. Я думаю, что это изображение, описывающее фреймворк :

введите описание изображения здесь.

В моем понимании, когда мы устанавливаем ввод для объекта для дерева, этот объект передается в ContentProvider. Элементы, выходящие из ContentProvider, будут отфильтрованы различными фильтрами. После этого остальные элементы будут отсортированы. Наконец, виджет дерева возьмет эти элементы и отобразит их. Правильно ли это?

Ответ №1:

В моем понимании, когда мы устанавливаем значение ввода для объекта для дерева, этот объект передается в ContentProvider. Элементы, выходящие из ContentProvider, будут отфильтрованы различными фильтрами. После этого остальные элементы будут отсортированы. Наконец, виджет дерева возьмет эти элементы и отобразит их. Правильно ли это?

Да, это правильно.


Explanation

Зритель никогда напрямую не обращается к объектам данных / домена. Например, средство просмотра дерева не взаимодействует с объектами домена напрямую. Вместо этого он использует другой объект, называемый ContentProvider, и этот объект использует объекты вашего домена.

введите описание изображения здесь

Точно так же, как существует объект поставщика контента, который получает дочерние элементы узлов дерева, когда дело доходит до фактического отображения узлов, у средства просмотра дерева есть еще один вспомогательный объект: поставщик меток.

введите описание изображения здесь

Аналогично для обработки таблиц в JFace есть средство просмотра таблиц. Так же, как и TreeViewer, у него есть входные данные (корневой объект), поставщик контента и поставщик меток. Это проще, чем просмотрщик деревьев, поскольку ему не нужно иметь дело с деревьями.

введите описание изображения здесь

Теперь, если вы посмотрите на реализацию TreeViwer по умолчанию, вы обнаружите, что в createChildren() методе (который вызывается при расширении узла) есть вызов getSortedChildren() , который в основном применяет все фильтры к предоставленным входным данным (и по требованию, т. Е. При расширении узла) и, наконец, применяет предоставленный вами сортировщик. Как только все это будет сделано, поставщик этикеток войдет в картину.

Ссылки:

  1. Использование JFace и SWT в автономном режиме
  2. Использование реестра изображений JFace