Example usage for com.google.gwt.aria.client AutocompleteValue NONE

List of usage examples for com.google.gwt.aria.client AutocompleteValue NONE

Introduction

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

Prototype

AutocompleteValue NONE

To view the source code for com.google.gwt.aria.client AutocompleteValue NONE.

Click Source Link

Usage

From source file:org.unitime.timetable.gwt.client.aria.AriaSuggestBox.java

License:Apache License

public AriaSuggestBox(AriaTextBox box, SuggestOracle oracle) {
    iOracle = oracle;/*from  w  ww  .  j a va 2s.  c  om*/
    iText = box;
    iText.setStyleName("gwt-SuggestBox");
    initWidget(iText);

    addEventsToTextBox();

    iSuggestionMenu = new SuggestionMenu();

    iPopupScroll = new ScrollPanel(iSuggestionMenu);
    iPopupScroll.addStyleName("scroll");

    iSuggestionPopup = new PopupPanel(true, false);
    iSuggestionPopup.setPreviewingAllNativeEvents(true);
    iSuggestionPopup.setStyleName("unitime-SuggestBoxPopup");
    iSuggestionPopup.setWidget(iPopupScroll);
    iSuggestionPopup.addAutoHidePartner(getElement());

    iSuggestionCallback = new SuggestionCallback() {
        @Override
        public void onSuggestionSelected(Suggestion suggestion) {
            if (!suggestion.getReplacementString().isEmpty()) {
                setStatus(ARIA.suggestionSelected(status(suggestion)));
            }
            iCurrentText = suggestion.getReplacementString();
            setText(suggestion.getReplacementString());
            hideSuggestionList();
            fireSuggestionEvent(suggestion);
        }
    };

    iOracleCallback = new SuggestOracle.Callback() {
        @Override
        public void onSuggestionsReady(Request request, Response response) {
            if (response.getSuggestions() == null || response.getSuggestions().isEmpty()) {
                if (iSuggestionPopup.isShowing())
                    iSuggestionPopup.hide();
            } else {
                iSuggestionMenu.clearItems();
                SuggestOracle.Suggestion first = null;
                for (SuggestOracle.Suggestion suggestion : response.getSuggestions()) {
                    iSuggestionMenu.addItem(new SuggestionMenuItem(suggestion));
                    if (first == null)
                        first = suggestion;
                }
                iSuggestionMenu.selectItem(0);
                ToolBox.setMinWidth(iSuggestionMenu.getElement().getStyle(),
                        (iText.getElement().getClientWidth() - 4) + "px");
                iSuggestionPopup.showRelativeTo(iText);
                iSuggestionMenu.scrollToView();
                if (response.getSuggestions().size() == 1) {
                    if (first.getReplacementString().isEmpty())
                        setStatus(status(first));
                    else
                        setStatus(ARIA.showingOneSuggestion(status(first)));
                } else {
                    setStatus(ARIA.showingMultipleSuggestions(response.getSuggestions().size(),
                            request.getQuery(), status(first)));
                }
            }
        }
    };

    Roles.getTextboxRole().setAriaAutocompleteProperty(iText.getElement(), AutocompleteValue.NONE);

    iSuggestionPopup.getElement().setAttribute("id", DOM.createUniqueId());
    Roles.getTextboxRole().setAriaOwnsProperty(iText.getElement(), Id.of(iSuggestionPopup.getElement()));
}

From source file:org.unitime.timetable.gwt.client.widgets.FilterBox.java

License:Apache License

public FilterBox() {
    setStyleName("unitime-FilterBox");

    final Timer blur = new Timer() {
        @Override/*from www . j  ava2 s  .  c om*/
        public void run() {
            if (!iFocus) {
                removeStyleName("unitime-FilterBoxFocus");
                if (isFilterPopupShowing())
                    hideFilterPopup();
            }
        }
    };

    iFocusHandler = new FocusHandler() {
        @Override
        public void onFocus(FocusEvent event) {
            if (event.getSource() != null && event.getSource() instanceof Focusable)
                iLastFocusedWidget = (Focusable) event.getSource();
            iFocus = true;
            addStyleName("unitime-FilterBoxFocus");
            if (iShowSuggestionsOnFocus)
                refreshSuggestions();
        }
    };

    iBlurHandler = new BlurHandler() {
        @Override
        public void onBlur(BlurEvent event) {
            iFocus = false;
            iLastFocusedWidget = null;
            blur.schedule(100);
        }
    };

    iFilter = new AriaTextBox();
    iFilter.setStyleName("filter");

    iFilter.addKeyDownHandler(new KeyDownHandler() {
        @Override
        public void onKeyDown(KeyDownEvent event) {
            if (isFilterPopupShowing()) {
                hideFilterPopup();
            }
            if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_BACKSPACE && iFilter.getText().isEmpty()) {
                if (getWidgetCount() > 4) {
                    remove(getWidgetCount() - 5);
                    resizeFilterIfNeeded();
                    setAriaLabel(toAriaString());
                    ValueChangeEvent.fire(FilterBox.this, getValue());
                    setStatus(getAriaLabel());
                }
            }
            if (isSuggestionsShowing()) {
                switch (event.getNativeEvent().getKeyCode()) {
                case KeyCodes.KEY_DOWN:
                    iSuggestionMenu.selectItem(iSuggestionMenu.getSelectedItemIndex() + 1);
                    setStatus(ARIA.onSuggestion(iSuggestionMenu.getSelectedItemIndex() + 1,
                            iSuggestionMenu.getNumItems(),
                            iSuggestionMenu.getSelectedSuggestion().toAriaString(FilterBox.this)));
                    break;
                case KeyCodes.KEY_UP:
                    if (iSuggestionMenu.getSelectedItemIndex() == -1) {
                        iSuggestionMenu.selectItem(iSuggestionMenu.getNumItems() - 1);
                    } else {
                        iSuggestionMenu.selectItem(iSuggestionMenu.getSelectedItemIndex() - 1);
                    }
                    setStatus(ARIA.onSuggestion(iSuggestionMenu.getSelectedItemIndex() + 1,
                            iSuggestionMenu.getNumItems(),
                            iSuggestionMenu.getSelectedSuggestion().toAriaString(FilterBox.this)));
                    break;
                case KeyCodes.KEY_ENTER:
                    iSuggestionMenu.executeSelected();
                    hideSuggestions();
                    break;
                case KeyCodes.KEY_TAB:
                    hideSuggestions();
                    break;
                case KeyCodes.KEY_ESCAPE:
                    hideSuggestions();
                    break;
                }
                switch (event.getNativeEvent().getKeyCode()) {
                case KeyCodes.KEY_DOWN:
                case KeyCodes.KEY_UP:
                case KeyCodes.KEY_ENTER:
                case KeyCodes.KEY_ESCAPE:
                    event.preventDefault();
                    event.stopPropagation();
                }
            } else {
                if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_DOWN
                        && (event.getNativeEvent().getAltKey()
                                || iFilter.getCursorPos() == iFilter.getText().length())) {
                    showSuggestions();
                    event.preventDefault();
                    event.stopPropagation();
                }
            }
        }
    });
    iFilter.addKeyUpHandler(new KeyUpHandler() {
        @Override
        public void onKeyUp(KeyUpEvent event) {
            refreshSuggestions();
        }
    });
    iFilter.addFocusHandler(iFocusHandler);
    iFilter.addBlurHandler(iBlurHandler);
    add(iFilter);
    iFilter.addChangeHandler(new ChangeHandler() {
        @Override
        public void onChange(ChangeEvent event) {
            setAriaLabel(toAriaString());
            ValueChangeEvent.fire(FilterBox.this, getValue());
        }
    });

    iFilterClear = new Image(RESOURCES.filter_clear());
    iFilterClear.setAltText(MESSAGES.altClearFilter());
    iFilterClear.setTitle(MESSAGES.altClearFilter());
    iFilterClear.setStyleName("button-image");
    add(iFilterClear);
    iFilterClear.setVisible(false);
    Roles.getDocumentRole().setAriaHiddenState(iFilterClear.getElement(), true);
    iFilter.addChangeHandler(new ChangeHandler() {
        @Override
        public void onChange(ChangeEvent event) {
            if (iFilterClear.isVisible() && getValue().isEmpty()) {
                resizeFilterIfNeeded();
            } else if (!iFilterClear.isVisible() && !getValue().isEmpty()) {
                resizeFilterIfNeeded();
            }
        }
    });

    iFilterOpen = new Image(RESOURCES.filter_open());
    iFilterOpen.setAltText(MESSAGES.altOpenFilter());
    iFilterOpen.setTitle(MESSAGES.altOpenFilter());
    iFilterOpen.addStyleName("button-image");
    add(iFilterOpen);
    Roles.getDocumentRole().setAriaHiddenState(iFilterOpen.getElement(), true);

    iFilterClose = new Image(RESOURCES.filter_close());
    iFilterClose.setAltText(MESSAGES.altCloseFilter());
    iFilterClose.setTitle(MESSAGES.altCloseFilter());
    iFilterClose.addStyleName("button-image");
    add(iFilterClose);
    iFilterClose.setVisible(false);
    Roles.getDocumentRole().setAriaHiddenState(iFilterClose.getElement(), true);

    iFilterPopup = new PopupPanelKeepFocus();
    iFilterPopup.setStyleName("unitime-FilterBoxPopup");
    iFilterPopup.setAutoHideEnabled(false);
    iSuggestionMenu = new SuggestionMenu();
    iSuggestionsPopup = new PopupPanelKeepFocus();
    iSuggestionsPopup.setWidget(iSuggestionMenu);
    iSuggestionsPopup.setStyleName("unitime-FilterBoxPopup");

    sinkEvents(Event.ONMOUSEDOWN);

    iSuggestionsPopup.getElement().setAttribute("id", DOM.createUniqueId());
    Roles.getTextboxRole().setAriaOwnsProperty(iFilter.getElement(), Id.of(iSuggestionsPopup.getElement()));

    Roles.getTextboxRole().setAriaAutocompleteProperty(iFilter.getElement(), AutocompleteValue.NONE);
}

From source file:org.unitime.timetable.gwt.client.widgets.IntervalSelector.java

License:Apache License

public IntervalSelector(boolean allowMultiSelection) {
    iAllowMultiSelection = allowMultiSelection;

    iPanel = new P("unitime-IntervalSelector");

    P row = new P("row");
    iPanel.add(row);/*from  w  w  w.  j a v  a  2s .c  om*/

    iPrev = new Button("«");
    iPrev.setEnabled(false);
    iPrev.addMouseDownHandler(new MouseDownHandler() {
        @Override
        public void onMouseDown(MouseDownEvent event) {
            Interval prev = (getValue() == null ? null : previous(getValue()));
            if (prev != null)
                setValue(prev, true);
        }
    });

    iNext = new Button("»");
    iNext.setEnabled(false);
    iNext.addMouseDownHandler(new MouseDownHandler() {
        @Override
        public void onMouseDown(MouseDownEvent event) {
            Interval next = (getValue() == null ? null : next(getValue()));
            if (next != null)
                setValue(next, true);
        }
    });

    iFilter = new AriaTextBox();
    iFilter.addStyleName("selection");

    iFilter.addKeyDownHandler(new KeyDownHandler() {
        @Override
        public void onKeyDown(KeyDownEvent event) {
            if (isSuggestionsShowing()) {
                switch (event.getNativeEvent().getKeyCode()) {
                case KeyCodes.KEY_DOWN:
                    iPopupMenu.selectItem(iPopupMenu.getSelectedItemIndex() + 1);
                    setStatus(ARIA.onSuggestion(iPopupMenu.getSelectedItemIndex() + 1, iPopupMenu.getNumItems(),
                            iPopupMenu.getSelectedInterval().toAriaString()));
                    break;
                case KeyCodes.KEY_UP:
                    if (iPopupMenu.getSelectedItemIndex() == -1) {
                        iPopupMenu.selectItem(iPopupMenu.getNumItems() - 1);
                    } else {
                        iPopupMenu.selectItem(iPopupMenu.getSelectedItemIndex() - 1);
                    }
                    setStatus(ARIA.onSuggestion(iPopupMenu.getSelectedItemIndex() + 1, iPopupMenu.getNumItems(),
                            iPopupMenu.getSelectedInterval().toAriaString()));
                    break;
                case KeyCodes.KEY_TAB:
                case KeyCodes.KEY_ENTER:
                    iPopupMenu.executeSelected();
                    hideSuggestions();
                    break;
                case KeyCodes.KEY_ESCAPE:
                    hideSuggestions();
                    break;
                }
                switch (event.getNativeEvent().getKeyCode()) {
                case KeyCodes.KEY_DOWN:
                case KeyCodes.KEY_UP:
                case KeyCodes.KEY_ENTER:
                case KeyCodes.KEY_ESCAPE:
                    event.preventDefault();
                    event.stopPropagation();
                }
            } else {
                if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_DOWN
                        && (event.getNativeEvent().getAltKey()
                                || iFilter.getCursorPos() == iFilter.getText().length())) {
                    showSuggestions();
                    event.preventDefault();
                    event.stopPropagation();
                }
            }
        }
    });

    iFilter.addKeyUpHandler(new KeyUpHandler() {
        @Override
        public void onKeyUp(KeyUpEvent event) {
            if (selectASuggestion()) {
                if (!isSuggestionsShowing())
                    showSuggestions();
                else
                    setStatus(ARIA.onSuggestion(iPopupMenu.getSelectedItemIndex() + 1, iPopupMenu.getNumItems(),
                            iPopupMenu.getSelectedInterval().toAriaString()));
            }
        }
    });

    iFilter.addValueChangeHandler(new ValueChangeHandler<String>() {
        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            if (iValues != null) {
                if (isAllowMultiSelection() && event.getValue().equals(getReplaceString(new Interval()))) {
                    setValue(new Interval());
                } else {
                    Interval value = null;
                    iterator: for (int i = 0; i < iValues.size(); i++) {
                        if (event.getValue().equals(getReplaceString(new Interval(iValues.get(i))))) {
                            value = new Interval(iValues.get(i));
                            break iterator;
                        }
                        if (isAllowMultiSelection()) {
                            for (int j = i + 1; j < iValues.size(); j++) {
                                if (event.getValue().equals(
                                        getReplaceString(new Interval(iValues.get(i), iValues.get(j))))) {
                                    value = new Interval(iValues.get(i), iValues.get(j));
                                    break iterator;
                                }
                            }
                        }
                    }
                    setValue(value);
                }
            }
        }
    });

    iFilter.addFocusHandler(new FocusHandler() {
        @Override
        public void onFocus(FocusEvent event) {
            showSuggestions();
        }
    });

    iPopupMenu = new Menu();

    iPopupScroll = new ScrollPanel(iPopupMenu);
    iPopupScroll.addStyleName("scroll");

    iPopup = new PopupPanel(true, false);
    iPopup.setPreviewingAllNativeEvents(true);
    iPopup.setStyleName("unitime-IntervalSelectorPopup");
    iPopup.setWidget(iPopupScroll);

    row.add(iPrev);
    row.add(iFilter);
    row.add(iNext);

    iWidget = new UniTimeWidget<AbsolutePanel>(iPanel);

    initWidget(iWidget);

    Roles.getTextboxRole().setAriaAutocompleteProperty(iFilter.getElement(), AutocompleteValue.NONE);

    iPopup.getElement().setAttribute("id", DOM.createUniqueId());
    Roles.getTextboxRole().setAriaOwnsProperty(iFilter.getElement(), Id.of(iPopup.getElement()));
}