package com.vaadin.client.ui;
+import com.google.gwt.aria.client.Roles;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.ui.Accessibility;
import com.google.gwt.user.client.ui.FocusWidget;
import com.vaadin.client.ApplicationConnection;
import com.vaadin.client.BrowserInfo;
| Event.KEYEVENTS);
// Add a11y role "button"
- Accessibility.setRole(getElement(), Accessibility.ROLE_BUTTON);
+ Roles.getButtonRole().set(getElement());
getElement().appendChild(wrapper);
wrapper.appendChild(captionElement);
this.enabled = enabled;
if (!enabled) {
cleanupCaptureState();
- Accessibility.removeState(getElement(),
- Accessibility.STATE_PRESSED);
super.setTabIndex(-1);
} else {
- Accessibility.setState(getElement(),
- Accessibility.STATE_PRESSED, "false");
super.setTabIndex(tabIndex);
}
+
+ Roles.getButtonRole().setAriaDisabledState(getElement(), !enabled);
}
}
import com.google.gwt.event.dom.client.FocusHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.Element;
import com.vaadin.client.EventHelper;
import com.vaadin.client.MouseEventDetailsBuilder;
import com.vaadin.client.communication.StateChangeEvent;
if (getIcon() != null) {
if (getWidget().icon == null) {
getWidget().icon = new Icon(getConnection());
- getWidget().wrapper.insertBefore(
- getWidget().icon.getElement(),
+ Element iconElement = getWidget().icon.getElement();
+ iconElement.setAttribute("alt", getState().iconAltText);
+
+ getWidget().wrapper.insertBefore(iconElement,
getWidget().captionElement);
}
getWidget().icon.setUri(getIcon());
import com.vaadin.event.ShortcutAction.KeyCode;
import com.vaadin.event.ShortcutAction.ModifierKey;
import com.vaadin.event.ShortcutListener;
+import com.vaadin.server.Resource;
import com.vaadin.shared.MouseEventDetails;
import com.vaadin.shared.ui.button.ButtonServerRpc;
import com.vaadin.shared.ui.button.ButtonState;
return (ButtonState) super.getState();
}
+ /**
+ * Sets the component's icon and alt text.
+ *
+ * An alt text is shown when an image could not be loaded, and read by
+ * assisitve devices.
+ *
+ * @param icon
+ * the icon to be shown with the component's caption.
+ * @param iconAltText
+ * String to use as alt text
+ */
+ public void setIcon(Resource icon, String iconAltText) {
+ super.setIcon(icon);
+ getState().iconAltText = iconAltText == null ? "" : iconAltText;
+ }
+
+ /**
+ * Returns the icon's alt text.
+ *
+ * @return String with the alt text
+ */
+ public String getIconAlternateText() {
+ return getState().iconAltText;
+ }
+
+ public void setIconAlternateText(String iconAltText) {
+ getState().iconAltText = iconAltText;
+ }
+
/**
* Set whether the caption text is rendered as HTML or not. You might need
* to retheme button to allow higher content than the original text style.
* If caption should be rendered in HTML
*/
public boolean htmlContentAllowed = false;
+ public String iconAltText = "";
}