Виджет уведомлений GWT?

знаете ли вы, есть ли какой-нибудь виджет уведомлений для GWT, как этот?

http://demo.vaadin.com/sampler#NotificationHumanized


person jcdmb    schedule 17.05.2011    source источник


Ответы (1)


AFAIK нет такого виджета в ядре GWT, но почему бы не накатить свой собственный:

public class DelayedPopup extends PopupPanel {

    public DelayedPopup(String text, boolean autoHide, boolean modal) {
        super(autoHide, modal);
        setWidget(new Label(text));
    }

    void show(int delayMilliseconds) {
        show();
        Timer t = new Timer() {
            @Override
            public void run() {
                DelayedPopup.this.hide();
            }
        };

        // Schedule the timer to close the popup in 3 seconds.
        t.schedule(3000);
    }
}

Это не в моей голове, поэтому он может не компилироваться, но вы поняли идею.

Обновление:

В соответствии с комментарием я добавляю уведомление, которое скрывается при движении мыши:

public class Notification extends PopupPanel {

    public Notification(String text) {
        super(false, false);
        setWidget(new Label(text));
    }

    @Override
    public void show() {
        installCloseHandler();
        super.show();
    }

    public native void installCloseHandler() /*-{
        var tmp = this;
        $wnd.onmousemove = function() {
            // edit the com.google.gwt.sample.contacts.client package 
            // to match your own package name
            [email protected]::hide()();
            $wnd.onmousemove = null;
        }
    }-*/;
}
person Peter Knego    schedule 17.05.2011
comment
Я согласен с тем, что свернуть свой собственный должно быть легко. Стоит отметить, что ссылка на ссылку выше, похоже, не использует таймер для закрытия уведомления. Вместо этого он, кажется, слушает onMouseMove и сразу же запускает увольнение при перемещении мыши. - person pohl; 18.05.2011
comment
Ты прав. Обновленный пост с новой версией, которая скрывает уведомление о движении мыши. - person Peter Knego; 18.05.2011