Vaadin:如何对托盘通知点击做出反应?

时间:2017-05-25 13:54:08

标签: vaadin7

我正在使用托盘通知让用户了解一些待处理操作。它工作正常但很想能够点击它并做我需要它做的事情,如显示正确的屏幕等。可悲的是,我找不到像其他组件一样的点击监听器。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

据我所知,Vaadin 7或8中的default notification无法实现。

如果您正在使用Vaadin 7,您可以使用非模态窗口(或类似的东西)伪造它,或使用提供{{1的fancy-layouts add-on(也兼容8)组件(online demosource)。它不完全相同,但可能提供您所需要的东西。另外要小心选择v7版本并添加建议的maven repo。

基本用法:

FancyNotifications

<强>结果:

fancy notifications

如果您使用的是8,则notify add-ononline demogithub page)支持点击监听器。请注意,此附加组件目前支持Vaadin 8,适用于支持Notification API的浏览器:

  

开发主要在Chrome上完成。 Firefox也经过测试,主要按计划运行。其他浏览器仍未测试。据我所知,IE11和Edge不支持Notification API。无论如何,加载项只能用于在支持Notification API的浏览器上显示通知。

来自github demo

public class MyUi extends UI {
    @Override
    protected void init(VaadinRequest request) {
        FancyNotifications fancyNotifications = new FancyNotifications();
        fancyNotifications.setPosition(FancyNotificationsState.Position.BOTTOM_RIGHT);

        Button button = new Button("Show notification", buttonClickEvent -> {
            FancyNotification fancyNotification = new FancyNotification(null, "Meh", "Click me to navigate to GITHUB");
            fancyNotification.getTitleLabel().setContentMode(ContentMode.HTML);
            fancyNotification.getDescriptionLabel().setContentMode(ContentMode.HTML);
            fancyNotification.addLayoutClickListener(notificationClickEvent -> Page.getCurrent().setLocation("https://github.com/alump/FancyLayouts"));
            fancyNotifications.showNotification(fancyNotification);
        });

        VerticalLayout content = new VerticalLayout();
        content.setSizeFull();
        setContent(content);

        content.addComponents(button, fancyNotifications);
        content.setComponentAlignment(button, Alignment.MIDDLE_CENTER);
    }
}

......看起来像是:

clickable-tray-notification