Important Notice - Forums is archived
To simplify things and help our users to be more productive, we have archived the current forum and focus our efforts on helping developers on Stack Overflow. You can post new questions on Stack Overflow or join our Discord channel.

Vaadin lets you build secure, UX-first PWAs entirely in Java.
Free ebook & tutorial.
Блокировка нотификации при обновлении контейнера
Добрый день!
Кто-нибудь сталкивался с необходимость блокировать нотификацию при обновлении контейнера. Есть что-нибудь уже готов в хелперах ваадина? А то пока довольствуюсь своим велосипедом: https://vaadin.com/forum#!/thread/8121726
Заранее спасибо!
Не думаю что есть в core что-то подобное просто потому, что это не имеет большого смысла.
В вашей реализации Вы после того как обновили контейнер бросаете событие ItemSetChangeEvent.
Собственно, ввиду того, что неизвестно как именно обновлялся конейнер, ничего более точного там кинуть и нельзя.
Но по этим же причинам обработка такого события не является умной (по крайней мере на данный момент).
К примеру, в таблице, получение такого события приводит к сбросу кеша и полной перерисовке таблицы. Я думаю, что это общий подход во всех UI контейнерах, использующих Data Source контейнер.
А сброс кеша и полная перерисовка эквивалентна простой замене контейнера новым.
Так что существующий велосипед - создать новый контейнер, заполнить его данными из старого и изменениями и потом установить в UI компоненту. Пока контейнер не установлен, события от него не слушаются.
Вообще, вся эта возня была затеяна ради FilterTable, который сбрасывает фильтры при установке нового источника данных (что, в принципе, логично, поскольку структура источника может изменится, но не в моем случае). Поэтому пришлось городить что-то вроде ContainerLocker. Пришлось к нему добавить еще и сохранение soft order information, поскольку сортировка IndexedContainer необратимая, а перезаливка контейнера не знает об установленном ранее порядке.
А так, конечно, взял новый контейнер и вперед и вопросов бы не было.