Kaynağa Gözat

Update some APIs based on the 7.2 API review comments

* NotificationConfiguration "helpers" removed from Notification
* NotificationConfiguration methods accept Type instead of style (String)
* Tab.setIconAltText -> Tab.setIconAlternateText
* Remove the two new TabSheet.addTab() methods
* UI.reinit() -> UI.refresh()

Change-Id: I97488e7c6de8cfacc591450d69c821b2973b8707
tags/7.2.0.beta1
Jonatan Kronqvist 10 yıl önce
ebeveyn
işleme
d2e24feb09

+ 26
- 19
client/src/com/vaadin/client/ui/VNotification.java Dosyayı Görüntüle

@@ -38,9 +38,9 @@ import com.vaadin.client.UIDL;
import com.vaadin.client.Util;
import com.vaadin.client.ui.aria.AriaHelper;
import com.vaadin.shared.Position;
import com.vaadin.shared.ui.ui.NotificationConfigurationBean;
import com.vaadin.shared.ui.ui.NotificationConfigurationBean.Role;
import com.vaadin.shared.ui.ui.UIConstants;
import com.vaadin.shared.ui.ui.UIState.NotificationTypeConfiguration;
import com.vaadin.shared.ui.ui.NotificationRole;

public class VNotification extends VOverlay {

@@ -161,20 +161,20 @@ public class VNotification extends VOverlay {
}

public void show(Widget widget, Position position, String style) {
NotificationConfigurationBean styleSetup = getUiState(style);
NotificationTypeConfiguration styleSetup = getUiState(style);
setWaiAriaRole(styleSetup);

FlowPanel panel = new FlowPanel();
if (styleSetup.hasAssistivePrefix()) {
panel.add(new Label(styleSetup.getAssistivePrefix()));
if (hasPrefix(styleSetup)) {
panel.add(new Label(styleSetup.prefix));
AriaHelper.setVisibleForAssistiveDevicesOnly(panel.getElement(),
true);
}

panel.add(widget);

if (styleSetup.hasAssistivePostfix()) {
panel.add(new Label(styleSetup.getAssistivePostfix()));
if (hasPostfix(styleSetup)) {
panel.add(new Label(styleSetup.postfix));
AriaHelper.setVisibleForAssistiveDevicesOnly(panel.getElement(),
true);
}
@@ -182,8 +182,16 @@ public class VNotification extends VOverlay {
show(position, style);
}

private boolean hasPostfix(NotificationTypeConfiguration styleSetup) {
return styleSetup != null && styleSetup.postfix != null && !styleSetup.postfix.isEmpty();
}

private boolean hasPrefix(NotificationTypeConfiguration styleSetup) {
return styleSetup != null && styleSetup.prefix != null && !styleSetup.prefix.isEmpty();
}

public void show(String html, Position position, String style) {
NotificationConfigurationBean styleSetup = getUiState(style);
NotificationTypeConfiguration styleSetup = getUiState(style);
String assistiveDeviceOnlyStyle = AriaHelper.ASSISTIVE_DEVICE_ONLY_STYLE;

setWaiAriaRole(styleSetup);
@@ -191,32 +199,31 @@ public class VNotification extends VOverlay {
String type = "";
String usage = "";

if (styleSetup != null && styleSetup.hasAssistivePrefix()) {
if (hasPrefix(styleSetup)) {
type = "<span class='" + assistiveDeviceOnlyStyle + "'>"
+ styleSetup.getAssistivePrefix() + "</span>";
+ styleSetup.prefix + "</span>";
}

if (styleSetup != null && styleSetup.hasAssistivePostfix()) {
if (hasPostfix(styleSetup)) {
usage = "<span class='" + assistiveDeviceOnlyStyle + "'>"
+ styleSetup.getAssistivePostfix() + "</span>";
+ styleSetup.postfix + "</span>";
}

setWidget(new HTML(type + html + usage));
show(position, style);
}

private NotificationConfigurationBean getUiState(String style) {
NotificationConfigurationBean styleSetup = getApplicationConnection()
.getUIConnector().getState().notificationConfiguration.setup
private NotificationTypeConfiguration getUiState(String style) {
return getApplicationConnection()
.getUIConnector().getState().notificationConfigurations
.get(style);
return styleSetup;
}

private void setWaiAriaRole(NotificationConfigurationBean styleSetup) {
private void setWaiAriaRole(NotificationTypeConfiguration styleSetup) {
Roles.getAlertRole().set(getElement());

if (styleSetup != null && styleSetup.getAssistiveRole() != null) {
if (Role.STATUS == styleSetup.getAssistiveRole()) {
if (styleSetup != null && styleSetup.notificationRole != null) {
if (NotificationRole.STATUS == styleSetup.notificationRole) {
Roles.getStatusRole().set(getElement());
}
}

+ 1
- 1
client/src/com/vaadin/client/ui/VWindow.java Dosyayı Görüntüle

@@ -67,7 +67,7 @@ import com.vaadin.client.ui.window.WindowMoveHandler;
import com.vaadin.shared.Connector;
import com.vaadin.shared.EventId;
import com.vaadin.shared.ui.window.WindowMode;
import com.vaadin.shared.ui.window.WindowState.WindowRole;
import com.vaadin.shared.ui.window.WindowRole;

/**
* "Sub window" component.

+ 1
- 1
server/src/com/vaadin/annotations/PreserveOnRefresh.java Dosyayı Görüntüle

@@ -32,7 +32,7 @@ import com.vaadin.ui.UI;
* current UI instance when a reload is detected.
* <p>
* Whenever a request is received that reloads a preserved UI, the UI's
* {@link UI#reinit(com.vaadin.server.VaadinRequest) reinit} method is invoked
* {@link UI#refresh(com.vaadin.server.VaadinRequest) refresh} method is invoked
* by the framework.
* <p>
* By using

+ 1
- 1
server/src/com/vaadin/server/Page.java Dosyayı Görüntüle

@@ -636,7 +636,7 @@ public class Page implements Serializable {
}

public void init(VaadinRequest request) {
// NOTE: UI.reinit makes assumptions about the semantics of this method.
// NOTE: UI.refresh makes assumptions about the semantics of this method.
// It should be kept in sync if this method is changed.

// Extract special parameter sent by vaadinBootstrap.js

+ 1
- 1
server/src/com/vaadin/server/UIProvider.java Dosyayı Görüntüle

@@ -131,7 +131,7 @@ public abstract class UIProvider implements Serializable {
* the value of window.name in the browser.
* <p>
* Whenever a preserved UI is reused, its
* {@link UI#reinit(com.vaadin.server.VaadinRequest) reinit} method is
* {@link UI#refresh(com.vaadin.server.VaadinRequest) refresh} method is
* invoked by the framework first.
*
*

+ 1
- 1
server/src/com/vaadin/server/communication/UIInitHandler.java Dosyayı Görüntüle

@@ -266,7 +266,7 @@ public abstract class UIInitHandler extends SynchronizedRequestHandler {
*/
private void reinitUI(UI ui, VaadinRequest request) {
UI.setCurrent(ui);
ui.doReinit(request);
ui.doRefresh(request);
}

/**

+ 22
- 145
server/src/com/vaadin/ui/Notification.java Dosyayı Görüntüle

@@ -21,7 +21,6 @@ import java.io.Serializable;
import com.vaadin.server.Page;
import com.vaadin.server.Resource;
import com.vaadin.shared.Position;
import com.vaadin.shared.ui.ui.NotificationConfigurationBean.Role;

/**
* A notification message, used to display temporary messages to the user - for
@@ -64,7 +63,27 @@ import com.vaadin.shared.ui.ui.NotificationConfigurationBean.Role;
*/
public class Notification implements Serializable {
public enum Type {
HUMANIZED_MESSAGE, WARNING_MESSAGE, ERROR_MESSAGE, TRAY_NOTIFICATION, ASSISTIVE_NOTIFICATION;
HUMANIZED_MESSAGE("humanized"), WARNING_MESSAGE("warning"), ERROR_MESSAGE(
"error"), TRAY_NOTIFICATION("tray"),
/**
* @since 7.2
*/
ASSISTIVE_NOTIFICATION("assistive");

private String style;

Type(String style) {
this.style = style;
}

/**
* @since 7.2
*
* @return the style name for this notification type.
*/
public String getStyle() {
return style;
}
}

@Deprecated
@@ -187,44 +206,28 @@ public class Notification implements Serializable {
}

private void setType(Type type) {
styleName = type.getStyle();
switch (type) {
case WARNING_MESSAGE:
delayMsec = 1500;
styleName = "warning";
setNavigationConfiguration("Warning: ", "", Role.ALERT);
break;
case ERROR_MESSAGE:
delayMsec = -1;
styleName = "error";
setNavigationConfiguration("Error: ", " - close with ESC",
Role.ALERT);
break;
case TRAY_NOTIFICATION:
delayMsec = 3000;
position = Position.BOTTOM_RIGHT;
styleName = "tray";
setNavigationConfiguration("Info: ", "", Role.STATUS);
break;
case ASSISTIVE_NOTIFICATION:
delayMsec = 3000;
position = Position.ASSISTIVE;
styleName = "assistive";
setNavigationConfiguration("Note: ", "", Role.ALERT);
break;
case HUMANIZED_MESSAGE:
default:
styleName = "humanized";
setNavigationConfiguration("Info: ", "", Role.ALERT);
break;
}
}

private void setNavigationConfiguration(String prefix, String postfix,
Role ariaRole) {
UI.getCurrent().getNotificationConfiguration()
.setStyleConfiguration(styleName, prefix, postfix, ariaRole);
}

/**
* Gets the caption part of the notification message.
*
@@ -339,132 +342,6 @@ public class Notification implements Serializable {
return styleName;
}

/**
* Sets the accessibility prefix for a notification type.
*
* This prefix is read to assistive device users before the content of the
* notification, but not visible on the page.
*
* @param type
* Type of the notification
* @param prefix
* String that is placed before the notification content
*/
public void setAssistivePrefixForType(Type type, String prefix) {
UI.getCurrent().getNotificationConfiguration()
.setAssistivePrefixForStyle(getStyle(type), prefix);
}

/**
* Gets the accessibility prefix for a notification type.
*
* This prefix is read to assistive device users before the content of the
* notification, but not visible on the page.
*
* @param type
* Type of the notification
* @return The accessibility prefix for the provided notification type
*/
public String getAssistivePrefixForType(Type type) {
return UI.getCurrent().getNotificationConfiguration()
.getAssistivePrefixForStyle(getStyle(type));
}

/**
* Sets the accessibility postfix for a notification type.
*
* This postfix is read to assistive device users after the content of the
* notification, but not visible on the page.
*
* @param type
* Type of the notification
* @param postfix
* String that is placed after the notification content
*/
public void setAssistivePostfixForType(Type type, String postfix) {
UI.getCurrent().getNotificationConfiguration()
.setAssistivePostfixForStyle(getStyle(type), postfix);
}

/**
* Gets the accessibility postfix for a notification type.
*
* This postfix is read to assistive device users after the content of the
* notification, but not visible on the page.
*
* @param type
* Type of the notification
* @return The accessibility postfix for the provided notification type
*/
public String getAssistivePostfixForType(Type type) {
return UI.getCurrent().getNotificationConfiguration()
.getAssistivePostfixForStyle(getStyle(type));
}

/**
* Sets the WAI-ARIA role for a notification type.
*
* This role defines how an assistive device handles a notification.
* Available roles are alert and status (@see <a
* href="http://www.w3.org/TR/2011/CR-wai-aria-20110118/roles">Roles
* Model</a>).
*
* The default role is alert.
*
* @param type
* Type of the notification
* @param role
* Role to set for the notification type
*/
public void setAssistiveRoleForType(Type type, Role role) {
UI.getCurrent().getNotificationConfiguration()
.setAssistiveRoleForStyle(getStyle(type), role);
}

/**
* Gets the WAI-ARIA role for a notification type.
*
* This role defines how an assistive device handles a notification.
* Available roles are alert and status (@see <a
* href="http://www.w3.org/TR/2011/CR-wai-aria-20110118/roles">Roles
* Model</a>)
*
* The default role is alert.
*
* @param type
* Type of the notification
* @return Role to set for the notification type
*/
public Role getAssistiveRoleForType(Type type) {
return UI.getCurrent().getNotificationConfiguration()
.getAssistiveRoleForStyle(getStyle(type));
}

private String getStyle(Type type) {
String style = "";

switch (type) {
case WARNING_MESSAGE:
style = "warning";
break;
case ERROR_MESSAGE:
style = "error";
break;
case TRAY_NOTIFICATION:
style = "tray";
break;
case ASSISTIVE_NOTIFICATION:
style = "assistive";
break;
case HUMANIZED_MESSAGE:
default:
style = "humanized";
break;
}

return style;
}

/**
* Sets whether html is allowed in the caption and description. If set to
* true, the texts are passed to the browser as html and the developer is

+ 78
- 162
server/src/com/vaadin/ui/NotificationConfiguration.java Dosyayı Görüntüle

@@ -21,112 +21,99 @@ 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;
import com.vaadin.shared.ui.ui.NotificationRole;
import com.vaadin.shared.ui.ui.UIState.NotificationTypeConfiguration;
import com.vaadin.ui.Notification.Type;

/**
* Provides methods for configuring the notification.
*
*
* @author Vaadin Ltd
* @since 7.1
* @since 7.2
*/
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
* Sets the accessibility prefix for a notification type.
* <p>
* This prefix is read to assistive device users before the content of the
* notification, but not visible on the page.
*
* @param type
* type of the notification
* @param prefix
* String that is placed before the notification content
* string that is placed before the notification content
*/
public void setAssistivePrefixForStyle(String style, String prefix);
public void setAssistivePrefix(Type type, 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
* Gets the accessibility prefix for a notification type.
* <p>
* This prefix is read to assistive device users before the content of the
* notification, but not visible on the page.
*
* @param type
* type of the notification
* @return The accessibility prefix for the provided notification type
*/
public String getAssistivePrefixForStyle(String style);
public String getAssistivePrefix(Type type);

/**
* Sets the accessibility postfix for the given notification style.
*
* Sets the accessibility postfix for a notification type.
* <p>
* 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 type
* type of the notification
* @param postfix
* String that is placed after the notification content
* string that is placed after the notification content
*/
public void setAssistivePostfixForStyle(String style, String postfix);
public void setAssistivePostfix(Type type, String postfix);

/**
* Returns the accessibility postfix for the given notification style.
*
* Gets the accessibility postfix for a notification type.
* <p>
* 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
*
* @param type
* type of the notification
* @return The accessibility postfix for the provided notification type
*/
public String getAssistivePostfixForStyle(String style);
public String getAssistivePostfix(Type type);

/**
* Sets the WAI-ARIA role for a notification style.
*
* Sets the WAI-ARIA role for a notification type.
* <p>
* This role defines how an assistive device handles a notification.
* Available roles are alert, alertdialog and status (@see <a
* Available roles are alert and status (@see <a
* href="http://www.w3.org/TR/2011/CR-wai-aria-20110118/roles">Roles
* Model</a>)
*
* Model</a>).
*
* The default role is alert.
*
* @param style
* String of the notification style
*
* @param type
* type of the notification
* @param role
* Role to set for the notification type
* role to set for the notification type
*/
public void setAssistiveRoleForStyle(String style, Role role);
public void setAssistiveRole(Type type, NotificationRole role);

/**
* Returns the WAI-ARIA role for a notification style.
*
* Gets the WAI-ARIA role for a notification type.
* <p>
* This role defines how an assistive device handles a notification.
* Available roles are alert, alertdialog and status (@see <a
* Available roles are alert and status (@see <a
* href="http://www.w3.org/TR/2011/CR-wai-aria-20110118/roles">Roles
* Model</a> )
*
* Model</a>)
* <p>
* The default role is alert.
*
* @param style
* String of the notification style
* @return The current Role for the notification type
*
* @param type
* type of the notification
* @return role to set for the notification type
*/
public Role getAssistiveRoleForStyle(String style);
public NotificationRole getAssistiveRole(Type type);
}

class NotificationConfigurationImpl implements NotificationConfiguration {
@@ -137,133 +124,62 @@ class NotificationConfigurationImpl implements NotificationConfiguration {
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);
public void setAssistivePrefix(Type type, String prefix) {
getConfigurationBean(type).prefix = prefix;
}

/*
* (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);
public String getAssistivePrefix(Type type) {
NotificationTypeConfiguration styleSetup = getTypeConf(type);
if (styleSetup != null) {
return styleSetup.getAssistivePrefix();
return styleSetup.prefix;
}

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);
public void setAssistivePostfix(Type type, String postfix) {
getConfigurationBean(type).postfix = 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);
public String getAssistivePostfix(Type type) {
NotificationTypeConfiguration styleSetup = getTypeConf(type);
if (styleSetup != null) {
return styleSetup.getAssistivePostfix();
return styleSetup.postfix;
}

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);
public void setAssistiveRole(Type type, NotificationRole role) {
getConfigurationBean(type).notificationRole = 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);
public NotificationRole getAssistiveRole(Type type) {
NotificationTypeConfiguration styleSetup = getTypeConf(type);
if (styleSetup != null) {
return styleSetup.getAssistiveRole();
return styleSetup.notificationRole;
}

return null;
}

private NotificationConfigurationBean getConfigurationBean(String style) {
NotificationConfigurationBean styleSetup = getState().setup.get(style);
private NotificationTypeConfiguration getConfigurationBean(Type type) {
NotificationTypeConfiguration styleSetup = getTypeConf(type);
if (styleSetup == null) {
styleSetup = new NotificationConfigurationBean();
getState().setup.put(style, styleSetup);
styleSetup = new NotificationTypeConfiguration();
ui.getState().notificationConfigurations.put(type.getStyle(), styleSetup);
}

return styleSetup;
}

private NotificationConfigurationState getState() {
return ui.getState().notificationConfiguration;
private NotificationTypeConfiguration getTypeConf(Type type) {
return ui.getState().notificationConfigurations.get(type.getStyle());
}

private NotificationConfigurationState getState(boolean markAsDirty) {
return ui.getState(markAsDirty).notificationConfiguration;
}

}

+ 16
- 69
server/src/com/vaadin/ui/TabSheet.java Dosyayı Görüntüle

@@ -292,34 +292,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
* @return the created {@link Tab}
*/
public Tab addTab(Component c, String caption, Resource icon) {
return addTab(c, caption, icon, "", components.size());
}

/**
* Adds a new tab into TabSheet.
*
* The first tab added to a tab sheet is automatically selected and a tab
* selection event is fired.
*
* If the component is already present in the tab sheet, changes its caption
* and icon and icon alternate text and returns the corresponding (old) tab,
* preserving other tab metadata.
*
* @param c
* the component to be added onto tab - should not be null.
* @param caption
* the caption to be set for the component and used rendered in
* tab bar
* @param icon
* the icon to be set for the component and used rendered in tab
* bar
* @param iconAltText
* the alternate text for the icon
* @return the created {@link Tab}
*/
public Tab addTab(Component c, String caption, Resource icon,
String iconAltText) {
return addTab(c, caption, icon, iconAltText, components.size());
return addTab(c, caption, icon, components.size());
}

/**
@@ -344,43 +317,13 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
* the position at where the the tab should be added.
* @return the created {@link Tab}
*/
public Tab addTab(Component c, String caption, Resource icon, int position) {
return addTab(c, caption, icon, "", position);
}

/**
* Adds a new tab into TabSheet.
*
* The first tab added to a tab sheet is automatically selected and a tab
* selection event is fired.
*
* If the component is already present in the tab sheet, changes its caption
* and icon and icon alternate text and returns the corresponding (old) tab,
* preserving other tab metadata like the position.
*
* @param tabComponent
* the component to be added onto tab - should not be null.
* @param caption
* the caption to be set for the component and used rendered in
* tab bar
* @param icon
* the icon to be set for the component and used rendered in tab
* bar
* @param iconAltText
* the alternate text for the icon
* @param position
* the position at where the the tab should be added.
* @return the created {@link Tab}
*/
public Tab addTab(Component tabComponent, String caption, Resource icon,
String iconAltText, int position) {

public Tab addTab(Component tabComponent, String caption, Resource icon, int position) {
if (tabComponent == null) {
return null;
} else if (tabs.containsKey(tabComponent)) {
Tab tab = tabs.get(tabComponent);
tab.setCaption(caption);
tab.setIcon(icon, iconAltText);
tab.setIcon(icon);
return tab;
} else {
components.add(position, tabComponent);
@@ -461,11 +404,11 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
Tab tab = ((TabSheet) source).getTab(c);
caption = tab.getCaption();
icon = tab.getIcon();
iconAltText = tab.getIconAltText();
iconAltText = tab.getIconAlternateText();
}
source.removeComponent(c);
addTab(c, caption, icon, iconAltText);
Tab tab = addTab(c, caption, icon);
tab.setIconAlternateText(iconAltText);
}
}

@@ -968,16 +911,20 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,

/**
* Gets the icon alt text for the tab.
*
* @since 7.2
*/
public String getIconAltText();
public String getIconAlternateText();

/**
* Sets the icon alt text for the tab.
*
*
* @since 7.2
*
* @param iconAltText
* the icon to set
*/
public void setIconAltText(String iconAltText);
public void setIconAlternateText(String iconAltText);

/**
* Gets the description for the tab. The description can be used to
@@ -1135,12 +1082,12 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
}

@Override
public String getIconAltText() {
public String getIconAlternateText() {
return tabState.iconAltText;
}

@Override
public void setIconAltText(String iconAltText) {
public void setIconAlternateText(String iconAltText) {
tabState.iconAltText = iconAltText;
markAsDirty();
}
@@ -1428,7 +1375,7 @@ public class TabSheet extends AbstractComponentContainer implements Focusable,
*/
private static void copyTabMetadata(Tab from, Tab to) {
to.setCaption(from.getCaption());
to.setIcon(from.getIcon(), from.getIconAltText());
to.setIcon(from.getIcon(), from.getIconAlternateText());
to.setDescription(from.getDescription());
to.setVisible(from.isVisible());
to.setEnabled(from.isEnabled());

+ 5
- 5
server/src/com/vaadin/ui/UI.java Dosyayı Görüntüle

@@ -668,10 +668,10 @@ public abstract class UI extends AbstractSingleComponentContainer implements
* @param request
* the request that caused this UI to be reloaded
*/
public void doReinit(VaadinRequest request) {
public void doRefresh(VaadinRequest request) {
// This is a horrible hack. We want to have the most recent location and
// browser window size available in reinit(), but we want to call
// listeners, if any, only after reinit(). So we momentarily assign the
// browser window size available in refresh(), but we want to call
// listeners, if any, only after refresh(). So we momentarily assign the
// old values back before setting the new values again to ensure the
// events are properly fired.

@@ -683,7 +683,7 @@ public abstract class UI extends AbstractSingleComponentContainer implements

page.init(request);

reinit(request);
refresh(request);

URI newLocation = page.getLocation();
int newWidth = page.getBrowserWindowWidth();
@@ -709,7 +709,7 @@ public abstract class UI extends AbstractSingleComponentContainer implements
* @param request
* the request that caused this UI to be reloaded
*/
protected void reinit(VaadinRequest request) {
protected void refresh(VaadinRequest request) {
}

/**

+ 1
- 1
server/src/com/vaadin/ui/Window.java Dosyayı Görüntüle

@@ -41,7 +41,7 @@ import com.vaadin.shared.MouseEventDetails;
import com.vaadin.shared.ui.window.WindowMode;
import com.vaadin.shared.ui.window.WindowServerRpc;
import com.vaadin.shared.ui.window.WindowState;
import com.vaadin.shared.ui.window.WindowState.WindowRole;
import com.vaadin.shared.ui.window.WindowRole;
import com.vaadin.util.ReflectTools;

/**

server/tests/src/com/vaadin/ui/UIInitReinitTest.java → server/tests/src/com/vaadin/ui/UIInitRefreshTest.java Dosyayı Görüntüle

@@ -27,10 +27,10 @@ import com.vaadin.server.Page.UriFragmentChangedEvent;
import com.vaadin.server.Page.UriFragmentChangedListener;
import com.vaadin.server.VaadinRequest;

public class UIInitReinitTest {
public class UIInitRefreshTest {

private boolean initCalled;
private boolean reinitCalled;
private boolean refreshCalled;
private boolean fragmentChangeCalled;
private boolean browserWindowResizeCalled;

@@ -52,8 +52,8 @@ public class UIInitReinitTest {
}

@Override
protected void reinit(VaadinRequest request) {
reinitCalled = true;
protected void refresh(VaadinRequest request) {
refreshCalled = true;

Assert.assertEquals("bar", getPage().getUriFragment());
Assert.assertEquals(200, getPage().getBrowserWindowWidth());
@@ -79,7 +79,7 @@ public class UIInitReinitTest {

@Before
public void setUp() {
initCalled = reinitCalled = fragmentChangeCalled = browserWindowResizeCalled = false;
initCalled = refreshCalled = fragmentChangeCalled = browserWindowResizeCalled = false;
}

@Test
@@ -107,9 +107,9 @@ public class UIInitReinitTest {
Assert.assertFalse(fragmentChangeCalled);
Assert.assertFalse(browserWindowResizeCalled);

ui.doReinit(reinitRequest);
ui.doRefresh(reinitRequest);

Assert.assertTrue(reinitCalled);
Assert.assertTrue(refreshCalled);
Assert.assertTrue(fragmentChangeCalled);
Assert.assertTrue(browserWindowResizeCalled);
}

+ 0
- 137
shared/src/com/vaadin/shared/ui/ui/NotificationConfigurationBean.java Dosyayı Görüntüle

@@ -1,137 +0,0 @@
/*
* 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.shared.ui.ui;

import java.io.Serializable;

/**
* Holds configuration information for a notification type.
*
* @author Vaadin Ltd
*/
public class NotificationConfigurationBean implements Serializable {
/**
* Available WAI-ARIA roles for a notification.
*/
public enum Role {
ALERT, STATUS
}

private String prefix;
private String postfix;
private Role role = Role.ALERT;

public NotificationConfigurationBean() {
}

public NotificationConfigurationBean(String prefix, String postfix,
Role role) {
this.prefix = prefix;
this.postfix = postfix;
this.role = role;
}

/**
* Returns the accessibility prefix, which is placed before the notification
* content.
*
* @return the prefix
*/
public String getAssistivePrefix() {
return prefix;
}

/**
* Sets the accessibility prefix, which is placed before the notification
* content.
*
* @param pefix
* the prefix to set
*/
public void setAssistivePrefix(String prefix) {
this.prefix = prefix;
}

/**
* Checks if an accessibility prefix is set.
*
* @return true when assistivePrefix is not null and has a length > 0, false
* otherwise
*/
public boolean hasAssistivePrefix() {
return prefix != null && !prefix.isEmpty();
}

/**
* Returns the accessibility postfix, which is placed after the notification
* content.
*
* @return the postfix
*/
public String getAssistivePostfix() {
return postfix;
}

/**
* Sets the accessibility postfix, which is placed after the notification
* content.
*
* @param postfix
* the postfix to set
*/
public void setAssistivePostfix(String postfix) {
this.postfix = postfix;
}

/**
* Checks if an accessibility postfix is set.
*
* @return true when postfix is not null and has a length > 0, false
* otherwise
*/
public boolean hasAssistivePostfix() {
return postfix != null && !postfix.isEmpty();
}

/**
* Returns the WAI-ARIA role that defines how an assistive device will
* inform the user about a notification.
*
* @return the role
*/
public Role getAssistiveRole() {
return role;
}

/**
* Sets the WAI-ARIA role that defines how an assistive device will inform
* the user about a notification.
*
* Available roles are alert, alertdialog and status (@see <a
* href="http://www.w3.org/TR/2011/CR-wai-aria-20110118/roles">Roles
* Model</a>).
*
* @param role
* the role to set
*/
public void setAssistiveRole(Role role) {
this.role = role;
}
}

+ 25
- 0
shared/src/com/vaadin/shared/ui/ui/NotificationRole.java Dosyayı Görüntüle

@@ -0,0 +1,25 @@
/*
* 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.shared.ui.ui;

/**
* Available WAI-ARIA roles for a notification.
*
* @since 7.2
*/
public enum NotificationRole {
ALERT, STATUS
}

+ 48
- 35
shared/src/com/vaadin/shared/ui/ui/UIState.java Dosyayı Görüntüle

@@ -23,17 +23,50 @@ import java.util.Map;

import com.vaadin.shared.communication.PushMode;
import com.vaadin.shared.ui.TabIndexState;
import com.vaadin.shared.ui.ui.NotificationConfigurationBean.Role;

public class UIState extends TabIndexState {
public TooltipConfigurationState tooltipConfiguration = new TooltipConfigurationState();
public LoadingIndicatorConfigurationState loadingIndicatorConfiguration = new LoadingIndicatorConfigurationState();
public NotificationConfigurationState notificationConfiguration = new NotificationConfigurationState();
public int pollInterval = -1;

// Informing users of assistive devices, that the content of this container
// is announced automatically and does not need to be navigated into
public String overlayContainerLabel = "This content is announced automatically and does not need to be navigated into.";
public Map<String, NotificationTypeConfiguration> notificationConfigurations = new HashMap<String, NotificationTypeConfiguration>();
{
notificationConfigurations.put("error",
new NotificationTypeConfiguration("Error: ",
" - close with ESC-key", NotificationRole.ALERT));
notificationConfigurations.put("warning",
new NotificationTypeConfiguration("Warning: ", null,
NotificationRole.ALERT));
notificationConfigurations.put("humanized",
new NotificationTypeConfiguration("Info: ", null,
NotificationRole.ALERT));
notificationConfigurations.put("tray",
new NotificationTypeConfiguration("Status: ", null,
NotificationRole.STATUS));
notificationConfigurations.put("assistive",
new NotificationTypeConfiguration("Note: ", null,
NotificationRole.STATUS));
}
/**
* State related to the Page class.
*/
public PageState pageState = new PageState();
/**
* State related to the LocaleService class.
*/
public LocaleServiceState localeServiceState = new LocaleServiceState();
/**
* Configuration for the push channel
*/
public PushConfigurationState pushConfiguration = new PushConfigurationState();
{
primaryStyleName = "v-ui";
// Default is 1 for legacy reasons
tabIndex = 1;
}

public static class LoadingIndicatorConfigurationState implements
Serializable {
@@ -50,19 +83,19 @@ public class UIState extends TabIndexState {
public int maxWidth = 500;
}

public static class NotificationConfigurationState implements Serializable {
public Map<String, NotificationConfigurationBean> setup = new HashMap<String, NotificationConfigurationBean>();
{
setup.put("error", new NotificationConfigurationBean("Error: ",
" - close with ESC-key", Role.ALERT));
setup.put("warning", new NotificationConfigurationBean("Warning: ",
null, Role.ALERT));
setup.put("humanized", new NotificationConfigurationBean("Info: ",
null, Role.ALERT));
setup.put("tray", new NotificationConfigurationBean("Status: ",
null, Role.STATUS));
setup.put("assistive", new NotificationConfigurationBean("Note: ",
null, Role.STATUS));
public static class NotificationTypeConfiguration implements Serializable {
public String prefix;
public String postfix;
public NotificationRole notificationRole = NotificationRole.ALERT;
public NotificationTypeConfiguration() {
}
public NotificationTypeConfiguration(String prefix, String postfix,
NotificationRole role) {
this.prefix = prefix;
this.postfix = postfix;
this.notificationRole = role;
}
}

@@ -80,26 +113,6 @@ public class UIState extends TabIndexState {
}
}

/**
* State related to the Page class.
*/
public PageState pageState = new PageState();
/**
* State related to the LocaleService class.
*/
public LocaleServiceState localeServiceState = new LocaleServiceState();

/**
* Configuration for the push channel
*/
public PushConfigurationState pushConfiguration = new PushConfigurationState();

{
primaryStyleName = "v-ui";
// Default is 1 for legacy reasons
tabIndex = 1;
}

public static class LocaleServiceState implements Serializable {
public List<LocaleData> localeData = new ArrayList<LocaleData>();
}

+ 25
- 0
shared/src/com/vaadin/shared/ui/window/WindowRole.java Dosyayı Görüntüle

@@ -0,0 +1,25 @@
/*
* 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.shared.ui.window;

/**
* Available WAI-ARIA roles for a window.
*
* @since 7.2
*/
public enum WindowRole {
ALERTDIALOG, DIALOG
}

+ 0
- 7
shared/src/com/vaadin/shared/ui/window/WindowState.java Dosyayı Görüntüle

@@ -23,13 +23,6 @@ public class WindowState extends PanelState {
primaryStyleName = "v-window";
}

/**
* Available WAI-ARIA roles for a window.
*/
public enum WindowRole {
ALERTDIALOG, DIALOG
}

public boolean modal = false;
public boolean resizable = true;
public boolean resizeLazy = false;

+ 12
- 7
uitest/src/com/vaadin/tests/components/notification/NotificationsWaiAria.java Dosyayı Görüntüle

@@ -2,7 +2,7 @@ package com.vaadin.tests.components.notification;

import com.vaadin.data.Item;
import com.vaadin.server.Page;
import com.vaadin.shared.ui.ui.NotificationConfigurationBean.Role;
import com.vaadin.shared.ui.ui.NotificationRole;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
@@ -11,8 +11,10 @@ import com.vaadin.ui.ComboBox;
import com.vaadin.ui.NativeSelect;
import com.vaadin.ui.Notification;
import com.vaadin.ui.Notification.Type;
import com.vaadin.ui.NotificationConfiguration;
import com.vaadin.ui.TextArea;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;

public class NotificationsWaiAria extends TestBase {

@@ -36,9 +38,9 @@ public class NotificationsWaiAria extends TestBase {
" - closes automatically after 10 seconds");
addComponent(postfix);

role = new NativeSelect("Role");
role.addItem(Role.ALERT);
role.addItem(Role.STATUS);
role = new NativeSelect("NotificationRole");
role.addItem(NotificationRole.ALERT);
role.addItem(NotificationRole.STATUS);
role.setValue(role.getItemIds().iterator().next());
addComponent(role);

@@ -96,9 +98,12 @@ public class NotificationsWaiAria extends TestBase {

Notification n = new Notification(tf.getValue(), typeValue);
n.setHtmlContentAllowed(true);
n.setAssistivePrefixForType(typeValue, prefix.getValue());
n.setAssistivePostfixForType(typeValue, postfix.getValue());
n.setAssistiveRoleForType(typeValue, (Role) role.getValue());
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());
}

+ 1
- 1
uitest/src/com/vaadin/tests/components/tabsheet/TabSheetIcons.java Dosyayı Görüntüle

@@ -46,7 +46,7 @@ public class TabSheetIcons extends TestBase {

for (Component c : tab) {
tabsheet.addTab(c);
tabsheet.getTab(c).setIconAltText(
tabsheet.getTab(c).setIconAlternateText(
"iconalt" + tabsheet.getComponentCount());
}


uitest/src/com/vaadin/tests/components/ui/UIReinit.java → uitest/src/com/vaadin/tests/components/ui/UIRefresh.java Dosyayı Görüntüle

@@ -22,7 +22,7 @@ import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Label;

@PreserveOnRefresh
public class UIReinit extends AbstractTestUI {
public class UIRefresh extends AbstractTestUI {

public static final String REINIT_ID = "reinit";

@@ -31,7 +31,7 @@ public class UIReinit extends AbstractTestUI {
}

@Override
protected void reinit(VaadinRequest request) {
protected void refresh(VaadinRequest request) {
Label l = new Label("Reinit!");
l.setId(REINIT_ID);
addComponent(l);

uitest/src/com/vaadin/tests/components/ui/UIReinitTest.java → uitest/src/com/vaadin/tests/components/ui/UIRefreshTest.java Dosyayı Görüntüle

@@ -22,18 +22,18 @@ import org.junit.Test;
import com.vaadin.testbench.By;
import com.vaadin.tests.tb3.MultiBrowserTest;

public class UIReinitTest extends MultiBrowserTest {
public class UIRefreshTest extends MultiBrowserTest {

@Test
public void testUIReinit() {
public void testUIRefresh() {
openTestURL();
Assert.assertFalse(reinitLabelExists());
// Reload the page; UI.reinit should be invoked
// Reload the page; UI.refresh should be invoked
openTestURL();
Assert.assertTrue(reinitLabelExists());
}

private boolean reinitLabelExists() {
return !getDriver().findElements(By.id(UIReinit.REINIT_ID)).isEmpty();
return !getDriver().findElements(By.id(UIRefresh.REINIT_ID)).isEmpty();
}
}

+ 1
- 1
uitest/src/com/vaadin/tests/components/window/ExtraWindowShownWaiAria.java Dosyayı Görüntüle

@@ -2,7 +2,7 @@ package com.vaadin.tests.components.window;

import com.vaadin.server.ThemeResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.shared.ui.window.WindowState.WindowRole;
import com.vaadin.shared.ui.window.WindowRole;
import com.vaadin.tests.components.AbstractTestUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;

Loading…
İptal
Kaydet