package com.vaadin.tests.components.notification; import java.util.LinkedHashMap; import com.vaadin.server.Page; import com.vaadin.server.VaadinRequest; import com.vaadin.shared.ui.ValueChangeMode; import com.vaadin.shared.ui.ui.NotificationRole; import com.vaadin.tests.components.AbstractReindeerTestUI; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Notification; import com.vaadin.ui.Notification.Type; import com.vaadin.ui.NotificationConfiguration; import com.vaadin.ui.TextField; import com.vaadin.ui.UI; import com.vaadin.v7.ui.NativeSelect; import com.vaadin.v7.ui.TextArea; /** * Test UI for different roles of Notifications. * * @since 7.2 * @author Vaadin Ltd */ public class NotificationsWaiAria extends AbstractReindeerTestUI { private static final String CAPTION = "CAPTION"; private TextField prefix; private TextField postfix; private NativeSelect role; private TextArea tf; private ComboBox<Notification.Type> type; @SuppressWarnings("unchecked") @Override protected void setup(VaadinRequest request) { prefix = new TextField("Prefix", "Info"); // The text fields need to be non-immediate to avoid an extra event that // hides the notification while the test is still trying to read its // contents. prefix.setValueChangeMode(ValueChangeMode.BLUR); addComponent(prefix); postfix = new TextField("Postfix", " - closes automatically after 10 seconds"); postfix.setValueChangeMode(ValueChangeMode.BLUR); addComponent(postfix); role = new NativeSelect("NotificationRole"); role.addItem(NotificationRole.ALERT); role.addItem(NotificationRole.STATUS); role.setValue(role.getItemIds().iterator().next()); addComponent(role); tf = new TextArea("Text", "Hello world"); tf.setImmediate(false); tf.setRows(10); addComponent(tf); type = new ComboBox<>(); LinkedHashMap<Notification.Type, String> items = new LinkedHashMap<>(); items.put(Notification.Type.HUMANIZED_MESSAGE, "Humanized"); items.put(Notification.Type.ERROR_MESSAGE, "Error"); items.put(Notification.Type.WARNING_MESSAGE, "Warning"); items.put(Notification.Type.TRAY_NOTIFICATION, "Tray"); items.put(Notification.Type.ASSISTIVE_NOTIFICATION, "Assistive"); type.setItemCaptionGenerator(item -> items.get(item)); type.setItems(items.keySet()); type.setValue(items.keySet().iterator().next()); addComponent(type); Button showNotification = new Button("Show notification", new SettingHandler()); addComponent(showNotification); Button showDefaultNotification = new Button("Default notification", new DefaultHandler()); addComponent(showDefaultNotification); } @Override protected String getTestDescription() { return "Generic test case for notifications"; } @Override protected Integer getTicketNumber() { return null; } private class SettingHandler implements ClickListener { @Override public void buttonClick(ClickEvent event) { Type typeValue = type.getValue(); Notification n = new Notification(tf.getValue(), typeValue); n.setDelayMsec(-1); n.setHtmlContentAllowed(true); NotificationConfiguration notificationConf = UI.getCurrent() .getNotificationConfiguration(); notificationConf.setAssistivePrefix(typeValue, prefix.getValue()); notificationConf.setAssistivePostfix(typeValue, postfix.getValue()); notificationConf.setAssistiveRole(typeValue, (NotificationRole) role.getValue()); n.show(Page.getCurrent()); } } private class DefaultHandler implements ClickListener { @Override public void buttonClick(ClickEvent event) { Notification n = new Notification(tf.getValue(), type.getValue()); n.setHtmlContentAllowed(true); n.show(Page.getCurrent()); } } }