List of usage examples for com.google.gwt.user.client.ui SimpleGwtSuggestBox SimpleGwtSuggestBox
public SimpleGwtSuggestBox(final SuggestOracle suggestOracle)
SimpleGwtSuggestBox. 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); }