Example usage for com.google.gwt.user.client.ui SimpleGwtSuggestBox SimpleGwtSuggestBox

List of usage examples for com.google.gwt.user.client.ui SimpleGwtSuggestBox SimpleGwtSuggestBox

Introduction

In this page you can find the example usage for com.google.gwt.user.client.ui SimpleGwtSuggestBox SimpleGwtSuggestBox.

Prototype

public SimpleGwtSuggestBox(final SuggestOracle suggestOracle) 

Source Link

Document

Creates a new SimpleGwtSuggestBox.

Usage

From source file:com.googlecode.simplegwt.combobox.client.ui.ComboBox.java

License:Apache License

/**
 * Creates a new <code>ComboBox</code>.
 * /*ww  w. j  a v a2 s  .  c o m*/
 * @param openIconImage
 * @param oracle
 */
public ComboBox(final Image openIconImage, final ComboBoxOracle<T> oracle) {
    this.oracle = oracle;
    suggestBox = new SimpleGwtSuggestBox(oracle.getSuggestOracle());

    final ShowSuggestionsCommand command = new ShowSuggestionsCommand(suggestBox);

    openIcon = new CommandIcon(openIconImage, command);

    final HorizontalPanel layout = new HorizontalPanel();
    final FocusPanel iconWrapper = new FocusPanel();
    iconWrapper.setStylePrimaryName("openIconWrapper");
    iconWrapper.add(openIcon);
    iconWrapper.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            selectedIndex = -1;
            iconWrapper.setFocus(true);
            command.execute();
        }
    });

    KeyDownHandler keyDownHandler = new KeyDownHandler() {
        public void onKeyDown(KeyDownEvent event) {
            boolean navKey = false;

            if (!suggestBox.isSuggestionListShowing()) {
                selectedIndex = -1;
            }

            switch (event.getNativeKeyCode()) {
            case KeyCodes.KEY_UP:
                selectedIndex--;
                navKey = true;
                break;
            case KeyCodes.KEY_DOWN:
                selectedIndex++;
                navKey = true;
                break;
            case KeyCodes.KEY_ESCAPE:
                suggestBox.hideSuggestionList();
                break;
            case KeyCodes.KEY_ENTER:
            case KeyCodes.KEY_TAB:
                if (suggestBox.getSuggestionMenuSelectedItemIndex() < 0) {
                    suggestBox.hideSuggestionList();
                } else if (suggestBox.isSuggestionListShowing()) {
                    suggestBox.doSelectedItemAction();
                }
                break;
            }

            if (navKey) {
                if (selectedIndex > -1) {
                    if (!suggestBox.isSuggestionListShowing()) {
                        command.execute();
                    }

                    suggestBox.selectItem(selectedIndex);
                } else if (selectedIndex < -1) {
                    selectedIndex = -1;
                }

                event.stopPropagation();
                event.preventDefault();
            }
        }
    };

    suggestBox.addKeyDownHandler(keyDownHandler);
    iconWrapper.addKeyDownHandler(keyDownHandler);

    layout.add(suggestBox);
    layout.add(iconWrapper);

    initWidget(layout);

    setStylePrimaryName("simpleGwt-ComboBox");

    new HoverStyler().registerOn(iconWrapper);
}