Сделать элементы видимыми в окне просмотра сетки в Vaadin 8 и 10

Виджет Grid в Vaadin 8 и 10 предлагает способ получения Set выбранных элементов: Grid::getSelectedItems.

В том же духе я хотел бы получить набор элементов, которые в настоящее время видны пользователю в сетке. Скажем, мой виджет «Сетка» содержит 10 элементов, но доступны для просмотра только 5, потому что виджет «Сетка» слишком короткий, чтобы отобразить их все. Я хочу знать, какой из пяти может видеть пользователь.


person Basil Bourque    schedule 28.07.2018    source источник


Ответы (1)


Это нетривиальная задача, у меня было что-то похожее, но не совсем этот случай. Прежде всего, я бы создал собственный компонент макета, например. путем расширения CssLayout аналогично тому, как это обсуждалось здесь ( заставить пользовательский интерфейс получать события прокрутки ) в дополнение к сообщениям о событиях прокрутки я бы сообщил о положении макета в области просмотра (см. http://www.gwtproject.org/javadoc/latest/com/google/gwt/dom/client/Element.html ). Да, требуется разработка GWT и клиентской стороны.

Я бы использовал этот макет как обертку для сетки, т.е. сетка была бы в макете. Вы также можете расширить компонент Grid. Но я думаю, что создание оболочки макета дает вам хороший инструмент, который вы можете использовать и с другими компонентами, для которых вам нужно определить, видны они на самом деле или нет.

Таким образом, я могу рассчитать, какая часть макета находится в области просмотра. Как видите, здесь есть несколько случаев, например. видна только нижняя часть сетки или верхняя часть сетки. Затем мне нужно знать высоту строки, высоту заголовка и т. д. Это позволяет мне рассчитать, сколько строк видно. Надеюсь, вы уловили идею. Результатом для общего случая будет довольно длинный фрагмент кода, когда будут перечислены все возможности. Этот расчет вы можете сделать на стороне сервера.

person Tatu Lund    schedule 29.07.2018