Событие уведомления о закрытии в окне Vaadin

Я пишу приложение в Vaadin, которое ищет результаты. Для указания критериев используется форма, а для представления результатов используется таблица. Я также хочу показать количество результатов, найденных в Window.Notification of Vaadin. Моя проблема в том, что я хочу, чтобы уведомление оставалось там, пока пользователь не нажмет на него, чтобы оно не исчезло через несколько секунд. Если вы просто введете большое время задержки, то, если вы не нажмете на эти уведомления и выполните несколько поисков, все уведомления о результатах будут приходить друг за другом. Поэтому, если вы затем нажмете на них, чтобы удалить их, вы увидите количество результатов вашего предыдущего поиска. Это то, чего я хочу избежать.

Уведомления добавляются в окно, и, насколько я понимаю, вы не можете получить ссылку на них, чтобы обновить их. Таким образом, вы не можете изменить текущее уведомление, если оно уже есть. После покраски он удаляется из LinkedList<Notification> notifications com.vaadin.ui.Window.

Одна из вещей, на которые я смотрел, это то, как Vaadin закрывает уведомление после того, как вы на него нажмете, чтобы, возможно, я мог делать то же самое перед каждым поиском, чтобы предыдущее уведомление удалялось, а новый поиск добавлял новое уведомление. Но пока я не могу найти, как это делается.

Уведомление в html отображается в виде div. Так что, может быть, есть javascript, который я мог бы вызвать в Vaadin, чтобы удалить этот div?

Кто-нибудь знает, как работает таймер для закрытия уведомления после определенной задержки? Будет ли это вызывать javascript, который я также мог бы вызвать?


person gizmo753    schedule 29.03.2012    source источник


Ответы (1)


Если задержка уведомления равна -1, пользователь должен нажать на нее. Если уведомление не имеет тип TYPE_ERROR_MESSAGE, вы должны сами создать объект уведомления:

Notification message = new Notification("Message", Notification.TYPE_HUMANIZED_MESSAGE);
message.setDelayMsec(-1);
getWindow().showNotification(message);

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

person Ingo Kegel    schedule 29.03.2012
comment
да, но если вы установите задержку на -1, никакие другие действия не могут быть выполнены без закрытия уведомления о результатах. Что я хотел бы сделать, так это показать результаты и уведомление о результатах. Пользователь может работать с результатами и по-прежнему может видеть общее количество результатов. Я знаю, что в Vaadin не предусмотрен механизм для этого, но Vaadin выполняет действие, которое я хочу вызвать, по прошествии секунд задержки или при нажатии на уведомление. Я хотел бы знать, можно ли вызвать это действие напрямую. Я рассмотрю ваше предложение о VNotification - person gizmo753; 29.03.2012
comment
@ gizmo753 Похоже, вам нужно разработать собственный виджет - person Ingo Kegel; 29.03.2012