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.Main; 009import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingComboBox; 010 011public class HistoryComboBox extends AutoCompletingComboBox { 012 private final 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}