/*
* Copyright 2000-2013 Vaadin 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.vaadin.ui;
import java.io.Serializable;
import com.vaadin.shared.ui.ui.NotificationConfigurationBean;
import com.vaadin.shared.ui.ui.NotificationConfigurationBean.Role;
import com.vaadin.shared.ui.ui.UIState.NotificationConfigurationState;
/**
* Provides methods for configuring the notification.
*
* @author Vaadin Ltd
* @since 7.1
*/
public interface NotificationConfiguration extends Serializable {
public void setStyleConfiguration(String style, String prefix,
String postfix, Role ariaRole);
/**
* Returns the complete configuration object for the given notification
* style.
*
* @param style
* String of the notification style to return
* @return The notification configuration object
*/
public NotificationConfigurationBean getStyleConfiguration(String style);
/**
* Sets the accessibility prefix for the given notification style.
*
* This prefix is read to assistive device users in front of the content of
* the notification, but not visible on the page.
*
* @param style
* String of the notification style
* @param prefix
* String that is placed before the notification content
*/
public void setAssistivePrefixForStyle(String style, String prefix);
/**
* Returns the accessibility prefix for the given notification style.
*
* This prefix is read to assistive device users in front of the content of
* the notification, but not visible on the page.
*
* @param style
* String of the notification style
* @return The prefix of the provided notification style
*/
public String getAssistivePrefixForStyle(String style);
/**
* Sets the accessibility postfix for the given notification style.
*
* This postfix is read to assistive device users after the content of the
* notification, but not visible on the page.
*
* @param style
* String of the notification style
* @param postfix
* String that is placed after the notification content
*/
public void setAssistivePostfixForStyle(String style, String postfix);
/**
* Returns the accessibility postfix for the given notification style.
*
* This postfix is read to assistive device users after the content of the
* notification, but not visible on the page.
*
* @param style
* String of the notification style
* @return The postfix of the provided notification style
*/
public String getAssistivePostfixForStyle(String style);
/**
* Sets the WAI-ARIA role for a notification style.
*
* This role defines how an assistive device handles a notification.
* Available roles are alert, alertdialog and status (@see Roles
* Model)
*
* The default role is alert.
*
* @param style
* String of the notification style
* @param role
* Role to set for the notification type
*/
public void setAssistiveRoleForStyle(String style, Role role);
/**
* Returns the WAI-ARIA role for a notification style.
*
* This role defines how an assistive device handles a notification.
* Available roles are alert, alertdialog and status (@see Roles
* Model )
*
* The default role is alert.
*
* @param style
* String of the notification style
* @return The current Role for the notification type
*/
public Role getAssistiveRoleForStyle(String style);
}
class NotificationConfigurationImpl implements NotificationConfiguration {
private UI ui;
public NotificationConfigurationImpl(UI ui) {
this.ui = ui;
}
/*
* (non-Javadoc)
*
* @see
* com.vaadin.ui.NotificationConfiguration#setStyleConfiguration(java.lang
* .String, java.lang.String, java.lang.String,
* com.vaadin.ui.NotificationConfiguration.Role)
*/
@Override
public void setStyleConfiguration(String style, String prefix,
String postfix, Role ariaRole) {
getState().setup.put(style, new NotificationConfigurationBean(prefix,
postfix, ariaRole));
}
/*
* (non-Javadoc)
*
* @see
* com.vaadin.ui.NotificationConfiguration#getStyleConfiguration(java.lang
* .String)
*/
@Override
public NotificationConfigurationBean getStyleConfiguration(String style) {
return getState(false).setup.get(style);
}
/*
* (non-Javadoc)
*
* @see
* com.vaadin.ui.NotificationConfiguration#setStylePrefix(java.lang.String,
* java.lang.String)
*/
@Override
public void setAssistivePrefixForStyle(String style, String prefix) {
getConfigurationBean(style).setAssistivePrefix(prefix);
}
/*
* (non-Javadoc)
*
* @see
* com.vaadin.ui.NotificationConfiguration#getStylePrefix(java.lang.String)
*/
@Override
public String getAssistivePrefixForStyle(String style) {
NotificationConfigurationBean styleSetup = getState().setup.get(style);
if (styleSetup != null) {
return styleSetup.getAssistivePrefix();
}
return null;
}
/*
* (non-Javadoc)
*
* @see
* com.vaadin.ui.NotificationConfiguration#setStylePostfix(com.vaadin.ui
* .Notification.Type, java.lang.String)
*/
@Override
public void setAssistivePostfixForStyle(String style, String postfix) {
getConfigurationBean(style).setAssistivePostfix(postfix);
}
/*
* (non-Javadoc)
*
* @see
* com.vaadin.ui.NotificationConfiguration#getStylePostfix(com.vaadin.ui
* .Notification.Type)
*/
@Override
public String getAssistivePostfixForStyle(String style) {
NotificationConfigurationBean styleSetup = getState().setup.get(style);
if (styleSetup != null) {
return styleSetup.getAssistivePostfix();
}
return null;
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.NotificationConfiguration#setStyleRole(com.vaadin.ui.
* Notification.Type, com.vaadin.ui.NotificationConfiguration.Role)
*/
@Override
public void setAssistiveRoleForStyle(String style, Role role) {
getConfigurationBean(style).setAssistiveRole(role);
}
/*
* (non-Javadoc)
*
* @see com.vaadin.ui.NotificationConfiguration#getStyleRole(com.vaadin.ui.
* Notification.Type)
*/
@Override
public Role getAssistiveRoleForStyle(String style) {
NotificationConfigurationBean styleSetup = getState().setup.get(style);
if (styleSetup != null) {
return styleSetup.getAssistiveRole();
}
return null;
}
private NotificationConfigurationBean getConfigurationBean(String style) {
NotificationConfigurationBean styleSetup = getState().setup.get(style);
if (styleSetup == null) {
styleSetup = new NotificationConfigurationBean();
getState().setup.put(style, styleSetup);
}
return styleSetup;
}
private NotificationConfigurationState getState() {
return ui.getState().notificationConfiguration;
}
private NotificationConfigurationState getState(boolean markAsDirty) {
return ui.getState(markAsDirty).notificationConfiguration;
}
}