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