/******************************************************************************* * Copyright (c) 2011 Softberries Krzysztof Grajek. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Softberries Krzysztof Grajek - initial API and implementation ******************************************************************************/ package net.sf.swtaddons.autocomplete.combo; import java.util.Arrays; import java.util.List; import net.sf.swtaddons.autocomplete.AutocompleteContentProposalProvider; import net.sf.swtaddons.autocomplete.AutocompleteSelectorContentProposalProvider; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.FocusListener; import org.eclipse.swt.widgets.Combo; public class AutocompleteComboSelector extends AutocompleteCombo { private final class UpdateProposalListFocusListener implements FocusListener { @Override public void focusGained(FocusEvent e) { // do nothing } @Override public void focusLost(FocusEvent e) { Combo theCombo = (Combo) e.getSource(); List items = Arrays.asList(theCombo.getItems()); if (! items.contains(theCombo.getText())) { theCombo.select(0); } } } public AutocompleteComboSelector(Combo aCombo) { super(aCombo); aCombo.addFocusListener(new UpdateProposalListFocusListener()); } @Override protected AutocompleteContentProposalProvider getContentProposalProvider(String[] proposals) { return new AutocompleteSelectorContentProposalProvider(proposals, this.combo); } }