NotificationExample.java
/* 
 * Copyright 2009 IT Mill Ltd.
 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 
 * http://www.apache.org/licenses/LICENSE-2.0
 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */

package com.itmill.toolkit.demo.featurebrowser;

import com.itmill.toolkit.data.Item;
import com.itmill.toolkit.ui.AbstractSelect;
import com.itmill.toolkit.ui.Alignment;
import com.itmill.toolkit.ui.Button;
import com.itmill.toolkit.ui.CustomComponent;
import com.itmill.toolkit.ui.NativeSelect;
import com.itmill.toolkit.ui.RichTextArea;
import com.itmill.toolkit.ui.TextField;
import com.itmill.toolkit.ui.VerticalLayout;
import com.itmill.toolkit.ui.Window;
import com.itmill.toolkit.ui.Button.ClickEvent;
import com.itmill.toolkit.ui.Button.ClickListener;

/**
 * Demonstrates the use of Notifications.
 
 @author IT Mill Ltd.
 @see com.itmill.toolkit.ui.Window
 */
public class NotificationExample extends CustomComponent {

    // Dropdown select for notification type, using the native dropdown
    NativeSelect type;
    // Textfield for the notification caption
    TextField caption;
    // Textfield for the notification content
    TextField message;

    /**
     * Default constructor; We're subclassing CustomComponent, so we need to
     * choose a root component and set it as composition root.
     */
    public NotificationExample() {
        // Main layout
        final VerticalLayout main = new VerticalLayout();
        main.setSizeUndefined();
        main.setSpacing(true);
        main.setMargin(true)// use theme-specific margin
        setCompositionRoot(main);

        // Create the 'type' dropdown select.
        type = new NativeSelect("Notification type");
        main.addComponent(type);
        // no empty selection allowed
        type.setNullSelectionAllowed(false);
        // we want a different caption than the value
        type.addContainerProperty("caption", String.class, null);
        type.setItemCaptionMode(AbstractSelect.ITEM_CAPTION_MODE_PROPERTY);
        type.setItemCaptionPropertyId("caption");
        // add some content (items) using the Container API
        Item i = type.addItem(new Integer(
                Window.Notification.TYPE_HUMANIZED_MESSAGE));
        i.getItemProperty("caption").setValue("Humanized message");
        i = type.addItem(new Integer(Window.Notification.TYPE_WARNING_MESSAGE));
        i.getItemProperty("caption").setValue("Warning message");
        i = type.addItem(new Integer(Window.Notification.TYPE_ERROR_MESSAGE));
        i.getItemProperty("caption").setValue("Error message");
        i = type
                .addItem(new Integer(Window.Notification.TYPE_TRAY_NOTIFICATION));
        i.getItemProperty("caption").setValue("Tray notification");
        // set the initially selected item
        type.setValue(new Integer(Window.Notification.TYPE_HUMANIZED_MESSAGE));

        // Notification caption
        caption = new TextField("Caption");
        main.addComponent(caption);
        caption.setColumns(20);
        caption.setValue("Brown Fox!");

        // Notification message
        message = new RichTextArea();
        main.addComponent(message);
        message.setCaption("Message");
        message.setValue("A quick one jumped over the lazy dog.");

        // Button to show the notification
        final Button b = new Button("Show notification"new ClickListener() {
            // this is an inline ClickListener
            public void buttonClick(ClickEvent event) {
                // show the notification
                getWindow().showNotification((Stringcaption.getValue(),
                        (Stringmessage.getValue(),
                        ((Integertype.getValue()).intValue());
            }
        });
        main.addComponent(b);
        main.setComponentAlignment(b, Alignment.MIDDLE_RIGHT);
    }
}