// Created by plusminus on 13:43:23 - 16.05.2008 package org.androad.ui.common; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.NoSuchElementException; import org.androad.util.LexicographicalComparator; import android.widget.EditText; public abstract class InlineAutoCompleterConstant extends InlineAutoCompleterDynamic{ // =========================================================== // Final Fields // =========================================================== // =========================================================== // Fields // =========================================================== final protected List<String> mStrings; final protected boolean mProgressive; // =========================================================== // Constructors // =========================================================== public InlineAutoCompleterConstant(final EditText editTextToApplyTo, final List<String> aStrings, final boolean aProgressive) { super(editTextToApplyTo); Collections.sort(aStrings, new LexicographicalComparator()); this.mStrings = aStrings; this.mProgressive = aProgressive; } // =========================================================== // Getter & Setter // =========================================================== public void clearStatic(){ this.mStrings.clear(); } // =========================================================== // Methods from SuperClass/Interfaces // =========================================================== @Override public abstract boolean onEnter(); @Override public ArrayList<String> onGetAutoCompletionStrings() { final ArrayList<String> out = new ArrayList<String>(); final String strBefore = super.getCurrent(); for (final String s : this.mStrings) { if(s != null && s.toLowerCase().startsWith(strBefore.toLowerCase())) { if(this.mProgressive && s.compareToIgnoreCase(strBefore) != 0) { out.add(s); } else { out.add(s); } } } if(out.size() > 0) { return out; } throw new NoSuchElementException(); } // =========================================================== // Methods // =========================================================== // =========================================================== // Inner and Anonymous Classes // =========================================================== }