001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.widgets;
003
004import java.util.List;
005
006import javax.swing.text.JTextComponent;
007
008import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox;
009import org.openstreetmap.josm.Main;
010
011public class HistoryComboBox extends AutoCompletingComboBox {
012    private ComboBoxHistory model;
013
014    public static final int DEFAULT_SEARCH_HISTORY_SIZE = 15;
015
016    /**
017     * Constructs a new {@code HistoryComboBox}.
018     */
019    public HistoryComboBox() {
020        int maxsize = Main.pref.getInteger("search.history-size", DEFAULT_SEARCH_HISTORY_SIZE);
021        setModel(model = new ComboBoxHistory(maxsize));
022        setEditable(true);
023    }
024
025    public String getText() {
026        return ((JTextComponent)getEditor().getEditorComponent()).getText();
027    }
028
029    public void setText(String value) {
030        setAutocompleteEnabled(false);
031        ((JTextComponent)getEditor().getEditorComponent()).setText(value);
032        setAutocompleteEnabled(true);
033    }
034
035    public void addCurrentItemToHistory() {
036        model.addElement((String)getEditor().getItem());
037    }
038
039    public void setHistory(List<String> history) {
040        model.setItemsAsString(history);
041    }
042
043    public List<String> getHistory() {
044        return model.asStringList();
045    }
046}