Example usage for com.google.gwt.aria.client Roles getButtonRole

List of usage examples for com.google.gwt.aria.client Roles getButtonRole

Introduction

In this page you can find the example usage for com.google.gwt.aria.client Roles getButtonRole.

Prototype

public static ButtonRole getButtonRole() 

Source Link

Usage

From source file:com.haulmont.cuba.web.toolkit.ui.client.jqueryfileupload.CubaFileUploadProgressWindow.java

License:Apache License

protected void constructDOM() {
    setStyleName(CLASSNAME);/*from  w w w  .  j  ava  2 s.  c om*/

    topTabStop = DOM.createDiv();
    topTabStop.setTabIndex(0);

    header = DOM.createDiv();
    header.setClassName(CLASSNAME + "-outerheader");

    headerText = DOM.createDiv();
    headerText.setClassName(CLASSNAME + "-header");

    contents = DOM.createDiv();
    contents.setClassName(CLASSNAME + "-contents");

    footer = DOM.createDiv();
    footer.setClassName(CLASSNAME + "-footer");

    resizeBox = DOM.createDiv();
    resizeBox.setClassName(CLASSNAME + "-resizebox");

    closeBox = DOM.createDiv();
    closeBox.setClassName(CLASSNAME + "-closebox");
    closeBox.setTabIndex(0);

    DOM.appendChild(footer, resizeBox);

    bottomTabStop = DOM.createDiv();
    bottomTabStop.setTabIndex(0);

    wrapper = DOM.createDiv();
    wrapper.setClassName(CLASSNAME + "-wrap");

    DOM.appendChild(wrapper, topTabStop);
    DOM.appendChild(wrapper, header);
    DOM.appendChild(header, closeBox);
    DOM.appendChild(header, headerText);
    DOM.appendChild(wrapper, contents);
    DOM.appendChild(wrapper, footer);
    DOM.appendChild(wrapper, bottomTabStop);
    DOM.appendChild(super.getContainerElement(), wrapper);

    sinkEvents(Event.ONDBLCLICK | Event.MOUSEEVENTS | Event.TOUCHEVENTS | Event.ONCLICK | Event.ONLOSECAPTURE);

    currentFileLabel = new VLabel();
    currentFileLabel.addStyleName("upload-file-label");
    currentFileLabel.setWidth("100%");

    progressBar = new VProgressBar();
    progressBar.addStyleName("upload-progressbar");
    progressBar.setIndeterminate(false);
    progressBar.setState(0);
    progressBar.setWidth("100%");

    cancelButton = new VButton();
    cancelButton.addStyleName("upload-cancel-button");
    cancelButton.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            closeWindow();
        }
    });

    contentPanel = new SimpleFocusablePanel();
    contentPanel.setStyleName("content-pane");
    contentPanel.addKeyDownHandler(this);
    contentPanel.addKeyUpHandler(this);

    setWidget(contentPanel);

    final FlowPanel verticalPanel = new FlowPanel();
    verticalPanel.setStyleName("vertical-panel");
    verticalPanel.addStyleName("v-widget");
    verticalPanel.addStyleName("v-has-width");
    verticalPanel.addStyleName("v-has-height");

    verticalPanel.add(currentFileLabel);
    verticalPanel.add(progressBar);
    verticalPanel.add(cancelButton);

    contentPanel.setWidget(verticalPanel);

    // do some calculations for window layout
    Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
        @Override
        public void execute() {
            Style contentStyle = contents.getStyle();

            ComputedStyle headerCs = new ComputedStyle(header);
            String headerHeight = headerCs.getProperty("height");
            contentStyle.setProperty("paddingTop", headerHeight);
            contentStyle.setProperty("marginTop", "-" + headerHeight);

            ComputedStyle footerCs = new ComputedStyle(footer);
            String footerHeight = footerCs.getProperty("height");
            contentStyle.setProperty("paddingBottom", footerHeight);
            contentStyle.setProperty("marginBottom", "-" + footerHeight);
        }
    });

    // Make the closebox accessible for assistive devices
    Roles.getButtonRole().set(closeBox);
    Roles.getButtonRole().setAriaLabelProperty(closeBox, "close button");

    // Provide the title to assistive devices
    AriaHelper.ensureHasId(headerText);
    Roles.getDialogRole().setAriaLabelledbyProperty(getElement(), Id.of(headerText));

    // Handlers to Prevent tab to leave the window
    // and backspace to cause browser navigation
    topEventBlocker = new Event.NativePreviewHandler() {
        @Override
        public void onPreviewNativeEvent(Event.NativePreviewEvent event) {
            NativeEvent nativeEvent = event.getNativeEvent();
            if (nativeEvent.getEventTarget().cast() == topTabStop
                    && nativeEvent.getKeyCode() == KeyCodes.KEY_TAB && nativeEvent.getShiftKey()) {
                nativeEvent.preventDefault();
            }
            if (nativeEvent.getEventTarget().cast() == topTabStop
                    && nativeEvent.getKeyCode() == KeyCodes.KEY_BACKSPACE) {
                nativeEvent.preventDefault();
            }
        }
    };

    bottomEventBlocker = new Event.NativePreviewHandler() {
        @Override
        public void onPreviewNativeEvent(Event.NativePreviewEvent event) {
            NativeEvent nativeEvent = event.getNativeEvent();
            if (nativeEvent.getEventTarget().cast() == bottomTabStop
                    && nativeEvent.getKeyCode() == KeyCodes.KEY_TAB && !nativeEvent.getShiftKey()) {
                nativeEvent.preventDefault();
            }
            if (nativeEvent.getEventTarget().cast() == bottomTabStop
                    && nativeEvent.getKeyCode() == KeyCodes.KEY_BACKSPACE) {
                nativeEvent.preventDefault();
            }
        }
    };
}

From source file:com.vaadin.client.ui.VAbstractPopupCalendar.java

License:Apache License

public VAbstractPopupCalendar(PANEL calendarPanel, R resolution) {
    super(resolution);

    calendarToggle.setText("");
    calendarToggle.addClickHandler(this);

    calendarToggle.addDomHandler(new MouseOverHandler() {
        @Override/*w w w  . j a va2s .c o  m*/
        public void onMouseOver(MouseOverEvent event) {
            cursorOverCalendarToggleButton = true;
        }
    }, MouseOverEvent.getType());

    calendarToggle.addDomHandler(new MouseOutHandler() {
        @Override
        public void onMouseOut(MouseOutEvent event) {
            cursorOverCalendarToggleButton = false;
        }
    }, MouseOutEvent.getType());

    // -2 instead of -1 to avoid FocusWidget.onAttach to reset it
    calendarToggle.getElement().setTabIndex(-2);

    Roles.getButtonRole().set(calendarToggle.getElement());
    Roles.getButtonRole().setAriaHiddenState(calendarToggle.getElement(), true);

    add(calendarToggle);

    // Description of the usage of the widget for assisitve device users
    descriptionForAssisitveDevicesElement = DOM.createDiv();
    descriptionForAssisitveDevicesElement.setInnerText(TextualDateFieldState.DESCRIPTION_FOR_ASSISTIVE_DEVICES);
    AriaHelper.ensureHasId(descriptionForAssisitveDevicesElement);
    Roles.getTextboxRole().setAriaDescribedbyProperty(text.getElement(),
            Id.of(descriptionForAssisitveDevicesElement));
    AriaHelper.setVisibleForAssistiveDevicesOnly(descriptionForAssisitveDevicesElement, true);

    calendar = calendarPanel;
    calendar.setParentField(this);
    calendar.setFocusOutListener(new FocusOutListener() {
        @Override
        public boolean onFocusOut(DomEvent<?> event) {
            event.preventDefault();
            closeCalendarPanel();
            return true;
        }
    });

    // FIXME: Problem is, that the element with the provided id does not
    // exist yet in html. This is the same problem as with the context menu.
    // Apply here the same fix (#11795)
    Roles.getTextboxRole().setAriaControlsProperty(text.getElement(), Id.of(calendar.getElement()));
    Roles.getButtonRole().setAriaControlsProperty(calendarToggle.getElement(), Id.of(calendar.getElement()));

    calendar.setSubmitListener(new SubmitListener() {
        @Override
        public void onSubmit() {
            // Update internal value and send valuechange event if immediate
            updateValue(calendar.getDate());

            // Update text field (a must when not immediate).
            buildDate(true);

            closeCalendarPanel();
        }

        @Override
        public void onCancel() {
            closeCalendarPanel();
        }
    });

    popup = new VOverlay(true, false);
    popup.setOwner(this);

    FlowPanel wrapper = new FlowPanel();
    selectedDate = new Label();
    selectedDate.setStyleName(getStylePrimaryName() + "-selecteddate");
    AriaHelper.setVisibleForAssistiveDevicesOnly(selectedDate.getElement(), true);

    Roles.getTextboxRole().setAriaLiveProperty(selectedDate.getElement(), LiveValue.ASSERTIVE);
    Roles.getTextboxRole().setAriaAtomicProperty(selectedDate.getElement(), true);
    wrapper.add(selectedDate);
    wrapper.add(calendar);

    popup.setWidget(wrapper);
    popup.addCloseHandler(this);

    DOM.setElementProperty(calendar.getElement(), "id", "PID_VAADIN_POPUPCAL");

    sinkEvents(Event.ONKEYDOWN);

    updateStyleNames();
}

From source file:com.vaadin.client.ui.VAbstractPopupCalendar.java

License:Apache License

protected void updateTextFieldEnabled() {
    boolean reallyEnabled = isEnabled() && isTextFieldEnabled();
    // IE has a non input disabled themeing that can not be overridden so we
    // must fake the functionality using readonly and unselectable
    if (BrowserInfo.get().isIE()) {
        if (!reallyEnabled) {
            text.getElement().setAttribute("unselectable", "on");
            text.getElement().setAttribute("readonly", "");
            text.setTabIndex(-2);//from  w w w  .  ja  v  a  2 s .c o  m
        } else if (reallyEnabled && text.getElement().hasAttribute("unselectable")) {
            text.getElement().removeAttribute("unselectable");
            text.getElement().removeAttribute("readonly");
            text.setTabIndex(0);
        }
    } else {
        text.setEnabled(reallyEnabled);
    }

    if (reallyEnabled) {
        calendarToggle.setTabIndex(-1);
        Roles.getButtonRole().setAriaHiddenState(calendarToggle.getElement(), true);
    } else {
        calendarToggle.setTabIndex(0);
        Roles.getButtonRole().setAriaHiddenState(calendarToggle.getElement(), false);
    }

    handleAriaAttributes();
}

From source file:com.vaadin.client.ui.VAbstractPopupCalendar.java

License:Apache License

@Override
public void setEnabled(boolean enabled) {
    super.setEnabled(enabled);
    updateTextFieldEnabled();//from w ww . j a  va 2s .c o m
    calendarToggle.setEnabled(enabled);
    Roles.getButtonRole().setAriaDisabledState(calendarToggle.getElement(), !enabled);
}

From source file:com.vaadin.client.ui.VButton.java

License:Apache License

public VButton() {
    super(DOM.createDiv());
    setTabIndex(0);/*from  w  ww.  j a v  a 2 s . c o m*/
    sinkEvents(Event.ONCLICK | Event.MOUSEEVENTS | Event.FOCUSEVENTS | Event.KEYEVENTS);

    // Add a11y role "button"
    Roles.getButtonRole().set(getElement());

    getElement().appendChild(wrapper);
    wrapper.appendChild(captionElement);

    setStyleName(CLASSNAME);

    addClickHandler(this);
}

From source file:com.vaadin.client.ui.VButton.java

License:Apache License

/**
 * Sets whether this button is enabled.//from w  w  w. j  a  v  a  2 s .co m
 * 
 * @param enabled
 *            <code>true</code> to enable the button, <code>false</code> to
 *            disable it
 */

@Override
public final void setEnabled(boolean enabled) {
    if (isEnabled() != enabled) {
        this.enabled = enabled;
        if (!enabled) {
            cleanupCaptureState();
            Roles.getButtonRole().setAriaDisabledState(getElement(), !enabled);
            super.setTabIndex(-1);
        } else {
            Roles.getButtonRole().removeAriaDisabledState(getElement());
            super.setTabIndex(tabIndex);
        }

    }
}

From source file:com.vaadin.client.ui.VComboBox.java

License:Apache License

/**
 * Default constructor.//ww  w. j a  v a 2s.  c o  m
 */
public VComboBox() {
    tb = createTextBox();
    suggestionPopup = createSuggestionPopup();

    popupOpener.addMouseDownHandler(VComboBox.this);
    Roles.getButtonRole().setAriaHiddenState(popupOpener.getElement(), true);
    Roles.getButtonRole().set(popupOpener.getElement());

    panel.add(tb);
    panel.add(popupOpener);
    initWidget(panel);
    Roles.getComboboxRole().set(panel.getElement());

    tb.addKeyDownHandler(this);
    tb.addKeyUpHandler(this);

    tb.addFocusHandler(this);
    tb.addBlurHandler(this);

    panel.addDomHandler(this, ClickEvent.getType());

    setStyleName(CLASSNAME);

    sinkEvents(Event.ONPASTE);
}

From source file:com.vaadin.client.ui.VFilterSelect.java

License:Apache License

/**
 * Default constructor./*  ww  w. j a v  a 2 s  .co m*/
 */
public VFilterSelect() {
    tb = createTextBox();
    suggestionPopup = createSuggestionPopup();

    popupOpener.sinkEvents(Event.ONMOUSEDOWN);
    Roles.getButtonRole().setAriaHiddenState(popupOpener.getElement(), true);
    Roles.getButtonRole().set(popupOpener.getElement());

    panel.add(tb);
    panel.add(popupOpener);
    initWidget(panel);
    Roles.getComboboxRole().set(panel.getElement());

    tb.addKeyDownHandler(this);
    tb.addKeyUpHandler(this);

    tb.addFocusHandler(this);
    tb.addBlurHandler(this);
    tb.addClickHandler(this);

    popupOpener.addClickHandler(this);

    setStyleName(CLASSNAME);

    sinkEvents(Event.ONPASTE);
}

From source file:com.vaadin.client.ui.VPopupCalendar.java

License:Apache License

public VPopupCalendar() {
    super();//ww  w  .  j  a va 2 s. co  m

    calendarToggle.setText("");
    calendarToggle.addClickHandler(this);

    calendarToggle.addDomHandler(new MouseOverHandler() {
        @Override
        public void onMouseOver(MouseOverEvent event) {
            cursorOverCalendarToggleButton = true;
        }
    }, MouseOverEvent.getType());

    calendarToggle.addDomHandler(new MouseOutHandler() {
        @Override
        public void onMouseOut(MouseOutEvent event) {
            cursorOverCalendarToggleButton = false;
        }
    }, MouseOutEvent.getType());

    // -2 instead of -1 to avoid FocusWidget.onAttach to reset it
    calendarToggle.getElement().setTabIndex(-2);

    Roles.getButtonRole().set(calendarToggle.getElement());
    Roles.getButtonRole().setAriaHiddenState(calendarToggle.getElement(), true);

    add(calendarToggle);

    // Description of the usage of the widget for assisitve device users
    descriptionForAssisitveDevicesElement = DOM.createDiv();
    descriptionForAssisitveDevicesElement.setInnerText(PopupDateFieldState.DESCRIPTION_FOR_ASSISTIVE_DEVICES);
    AriaHelper.ensureHasId(descriptionForAssisitveDevicesElement);
    Roles.getTextboxRole().setAriaDescribedbyProperty(text.getElement(),
            Id.of(descriptionForAssisitveDevicesElement));
    AriaHelper.setVisibleForAssistiveDevicesOnly(descriptionForAssisitveDevicesElement, true);

    calendar = GWT.create(VCalendarPanel.class);
    calendar.setParentField(this);
    calendar.setFocusOutListener(new FocusOutListener() {
        @Override
        public boolean onFocusOut(DomEvent<?> event) {
            event.preventDefault();
            closeCalendarPanel();
            return true;
        }
    });

    // FIXME: Problem is, that the element with the provided id does not
    // exist yet in html. This is the same problem as with the context menu.
    // Apply here the same fix (#11795)
    Roles.getTextboxRole().setAriaControlsProperty(text.getElement(), Id.of(calendar.getElement()));
    Roles.getButtonRole().setAriaControlsProperty(calendarToggle.getElement(), Id.of(calendar.getElement()));

    calendar.setSubmitListener(new SubmitListener() {
        @Override
        public void onSubmit() {
            // Update internal value and send valuechange event if immediate
            updateValue(calendar.getDate());

            // Update text field (a must when not immediate).
            buildDate(true);

            closeCalendarPanel();
        }

        @Override
        public void onCancel() {
            closeCalendarPanel();
        }
    });

    popup = new VOverlay(true, false, true);
    popup.setOwner(this);

    FlowPanel wrapper = new FlowPanel();
    selectedDate = new Label();
    selectedDate.setStyleName(getStylePrimaryName() + "-selecteddate");
    AriaHelper.setVisibleForAssistiveDevicesOnly(selectedDate.getElement(), true);

    Roles.getTextboxRole().setAriaLiveProperty(selectedDate.getElement(), LiveValue.ASSERTIVE);
    Roles.getTextboxRole().setAriaAtomicProperty(selectedDate.getElement(), true);
    wrapper.add(selectedDate);
    wrapper.add(calendar);

    popup.setWidget(wrapper);
    popup.addCloseHandler(this);

    DOM.setElementProperty(calendar.getElement(), "id", "PID_VAADIN_POPUPCAL");

    sinkEvents(Event.ONKEYDOWN);

    updateStyleNames();
}

From source file:com.vaadin.client.ui.VWindow.java

License:Apache License

protected void constructDOM() {
    setStyleName(CLASSNAME);/*  w  w  w . j ava  2  s . c  om*/

    topTabStop = DOM.createDiv();
    DOM.setElementAttribute(topTabStop, "tabindex", "0");

    header = DOM.createDiv();
    DOM.setElementProperty(header, "className", CLASSNAME + "-outerheader");
    headerText = DOM.createDiv();
    DOM.setElementProperty(headerText, "className", CLASSNAME + "-header");
    contents = DOM.createDiv();
    DOM.setElementProperty(contents, "className", CLASSNAME + "-contents");
    footer = DOM.createDiv();
    DOM.setElementProperty(footer, "className", CLASSNAME + "-footer");
    resizeBox = DOM.createDiv();
    DOM.setElementProperty(resizeBox, "className", CLASSNAME + "-resizebox");
    closeBox = DOM.createDiv();
    maximizeRestoreBox = DOM.createDiv();
    DOM.setElementProperty(maximizeRestoreBox, "className", CLASSNAME + "-maximizebox");
    DOM.setElementAttribute(maximizeRestoreBox, "tabindex", "0");
    DOM.setElementProperty(closeBox, "className", CLASSNAME + "-closebox");
    DOM.setElementAttribute(closeBox, "tabindex", "0");
    DOM.appendChild(footer, resizeBox);

    bottomTabStop = DOM.createDiv();
    DOM.setElementAttribute(bottomTabStop, "tabindex", "0");

    wrapper = DOM.createDiv();
    DOM.setElementProperty(wrapper, "className", CLASSNAME + "-wrap");

    DOM.appendChild(wrapper, topTabStop);
    DOM.appendChild(wrapper, header);
    DOM.appendChild(header, maximizeRestoreBox);
    DOM.appendChild(header, closeBox);
    DOM.appendChild(header, headerText);
    DOM.appendChild(wrapper, contents);
    DOM.appendChild(wrapper, footer);
    DOM.appendChild(wrapper, bottomTabStop);
    DOM.appendChild(super.getContainerElement(), wrapper);

    sinkEvents(Event.ONDBLCLICK | Event.MOUSEEVENTS | Event.TOUCHEVENTS | Event.ONCLICK | Event.ONLOSECAPTURE);

    setWidget(contentPanel);

    // Make the closebox accessible for assistive devices
    Roles.getButtonRole().set(closeBox);
    Roles.getButtonRole().setAriaLabelProperty(closeBox, "close button");

    // Make the maximizebox accessible for assistive devices
    Roles.getButtonRole().set(maximizeRestoreBox);
    Roles.getButtonRole().setAriaLabelProperty(maximizeRestoreBox, "maximize button");

    // Provide the title to assistive devices
    AriaHelper.ensureHasId(headerText);
    Roles.getDialogRole().setAriaLabelledbyProperty(getElement(), Id.of(headerText));

    // Handlers to Prevent tab to leave the window
    // and backspace to cause browser navigation
    topEventBlocker = new NativePreviewHandler() {
        @Override
        public void onPreviewNativeEvent(NativePreviewEvent event) {
            NativeEvent nativeEvent = event.getNativeEvent();
            if (nativeEvent.getEventTarget().cast() == topTabStop
                    && nativeEvent.getKeyCode() == KeyCodes.KEY_TAB && nativeEvent.getShiftKey()) {
                nativeEvent.preventDefault();
            }
            if (nativeEvent.getEventTarget().cast() == topTabStop
                    && nativeEvent.getKeyCode() == KeyCodes.KEY_BACKSPACE) {
                nativeEvent.preventDefault();
            }
        }
    };

    bottomEventBlocker = new NativePreviewHandler() {
        @Override
        public void onPreviewNativeEvent(NativePreviewEvent event) {
            NativeEvent nativeEvent = event.getNativeEvent();
            if (nativeEvent.getEventTarget().cast() == bottomTabStop
                    && nativeEvent.getKeyCode() == KeyCodes.KEY_TAB && !nativeEvent.getShiftKey()) {
                nativeEvent.preventDefault();
            }
            if (nativeEvent.getEventTarget().cast() == bottomTabStop
                    && nativeEvent.getKeyCode() == KeyCodes.KEY_BACKSPACE) {
                nativeEvent.preventDefault();
            }
        }
    };
}