/* * 12/22/2008 * * CompletionListModel.java - A model that allows bulk addition of elements. * * This library is distributed under a modified BSD license. See the included * RSyntaxTextArea.License.txt file for details. */ package org.fife.ui.autocomplete; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.swing.AbstractListModel; /** * A list model implementation that allows the bulk addition of elements. * This is the only feature missing from <code>DefaultListModel</code> that * we need. * * @author Robert Futrell * @version 1.0 */ class CompletionListModel extends AbstractListModel { /** * Container for items in this model. */ private List<Completion> delegate; /** * Constructor. */ public CompletionListModel() { delegate = new ArrayList<Completion>(); } /** * Removes all of the elements from this list. The list will * be empty after this call returns (unless it throws an exception). * * @see #setContents(Collection) */ public void clear() { int end = delegate.size()-1; delegate.clear(); if (end >= 0) { fireIntervalRemoved(this, 0, end); } } /** * {@inheritDoc} */ public Object getElementAt(int index) { return delegate.get(index); } /** * {@inheritDoc} */ public int getSize() { return delegate.size(); } /** * Sets the contents of this model. All previous contents are removed. * * @param contents The new contents of this model. */ public void setContents(Collection<Completion> contents) { clear(); int count = contents.size(); if (count>0) { delegate.addAll(contents); fireIntervalAdded(this, 0, count-1); // endpoints included (!) } } }