240 lines
7.1 KiB
Java
240 lines
7.1 KiB
Java
/* DefaultComboBoxModel.java --
|
|
Copyright (C) 2002, 2004 Free Software Foundation, Inc.
|
|
|
|
This file is part of GNU Classpath.
|
|
|
|
GNU Classpath is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2, or (at your option)
|
|
any later version.
|
|
|
|
GNU Classpath is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with GNU Classpath; see the file COPYING. If not, write to the
|
|
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
02111-1307 USA.
|
|
|
|
Linking this library statically or dynamically with other modules is
|
|
making a combined work based on this library. Thus, the terms and
|
|
conditions of the GNU General Public License cover the whole
|
|
combination.
|
|
|
|
As a special exception, the copyright holders of this library give you
|
|
permission to link this library with independent modules to produce an
|
|
executable, regardless of the license terms of these independent
|
|
modules, and to copy and distribute the resulting executable under
|
|
terms of your choice, provided that you also meet, for each linked
|
|
independent module, the terms and conditions of the license of that
|
|
module. An independent module is a module which is not derived from
|
|
or based on this library. If you modify this library, you may extend
|
|
this exception to your version of the library, but you are not
|
|
obligated to do so. If you do not wish to do so, delete this
|
|
exception statement from your version. */
|
|
|
|
package javax.swing;
|
|
|
|
import java.io.Serializable;
|
|
import java.util.Arrays;
|
|
import java.util.Vector;
|
|
|
|
|
|
/**
|
|
* DefaultComboBoxModel is a data model for JComboBox. This model keeps track
|
|
* of elements contained in the JComboBox as well as the current combo box
|
|
* selection. Whenever selection in the JComboBox changes, the ComboBoxModel
|
|
* will fire ListDataEvents to ComboBox's ListDataListeners.
|
|
*
|
|
* @author Andrew Selkirk
|
|
* @author Olga Rodimina
|
|
* @author Robert Schuster
|
|
* @version 1.0
|
|
*/
|
|
public class DefaultComboBoxModel extends AbstractListModel
|
|
implements MutableComboBoxModel, Serializable
|
|
{
|
|
private static final long serialVersionUID = 6698657703676921904L;
|
|
|
|
/**
|
|
* List containing items in the combo box
|
|
*/
|
|
private Vector list;
|
|
|
|
/**
|
|
* Currently selected item in the combo box list
|
|
*/
|
|
private Object selectedItem = null;
|
|
|
|
/**
|
|
* Constructor DefaultComboBoxModel. Create empty JComboBox.
|
|
*/
|
|
public DefaultComboBoxModel()
|
|
{
|
|
list = new Vector();
|
|
}
|
|
|
|
/**
|
|
* Constructs new DefaultComboBoxModel object and initializes its item list
|
|
* to values in the given array.
|
|
*
|
|
* @param items array containing items of the combo box.
|
|
*/
|
|
public DefaultComboBoxModel(Object[] items)
|
|
{
|
|
list = new Vector(Arrays.asList(items));
|
|
}
|
|
|
|
/**
|
|
* Consturcts new DefaultComboBoxModel object and initializes its item list
|
|
* to values in the given vector.
|
|
*
|
|
* @param vector Vector containing items for this combo box.
|
|
*/
|
|
public DefaultComboBoxModel(Vector vector)
|
|
{
|
|
this.list = vector;
|
|
}
|
|
|
|
/**
|
|
* This method adds element to the combo box list. It fires ListDataEvent
|
|
* indicating that component was added to the combo box to all of the
|
|
* JComboBox's registered ListDataListeners.
|
|
*
|
|
* @param object item to add to the combo box list
|
|
*/
|
|
public void addElement(Object object)
|
|
{
|
|
list.add(object);
|
|
fireIntervalAdded(this, list.size(), list.size());
|
|
}
|
|
|
|
/**
|
|
* This method removes element at the specified index from the combo box
|
|
* list. It fires ListDataEvent indicating that component was removed from
|
|
* the combo box list to all of the JComboBox's registered
|
|
* ListDataListeners.
|
|
*
|
|
* @param index index specifying location of the element to remove in the
|
|
* combo box list.
|
|
*/
|
|
public void removeElementAt(int index)
|
|
{
|
|
list.remove(index);
|
|
fireIntervalRemoved(this, index, index);
|
|
}
|
|
|
|
/**
|
|
* This method inserts given object to the combo box list at the specified
|
|
* index. It fires ListDataEvent indicating that component was inserted to
|
|
* the combo box list to all of the JComboBox's registered
|
|
* ListDataListeners.
|
|
*
|
|
* @param object element to insert
|
|
* @param index index specifing position in the list where given element
|
|
* should be inserted.
|
|
*/
|
|
public void insertElementAt(Object object, int index)
|
|
{
|
|
list.insertElementAt(object, index);
|
|
fireIntervalAdded(this, index, index);
|
|
}
|
|
|
|
/**
|
|
* Removes given object from the combo box list. It fires ListDataEvent
|
|
* indicating that component was removed from the combo box list to all of
|
|
* the JComboBox's registered ListDataListeners.
|
|
*
|
|
* @param object Element that will be removed from the combo box list
|
|
*/
|
|
public void removeElement(Object object)
|
|
{
|
|
int index = getIndexOf(object);
|
|
if (index != -1)
|
|
removeElementAt(index);
|
|
}
|
|
|
|
/**
|
|
* Removes all the items from the JComboBox's item list. It fires
|
|
* ListDataEvent indicating that all the elements were removed from the
|
|
* combo box list to all of the JComboBox's registered ListDataListeners.
|
|
*/
|
|
public void removeAllElements()
|
|
{
|
|
int listSize = getSize();
|
|
list.clear();
|
|
fireIntervalAdded(this, 0, listSize - 1);
|
|
}
|
|
|
|
/**
|
|
* Returns number of items in the combo box list
|
|
*
|
|
* @return number of items in the combo box list
|
|
*/
|
|
public int getSize()
|
|
{
|
|
return list.size();
|
|
}
|
|
|
|
/**
|
|
* Selects given object in the combo box list. This method fires
|
|
* ListDataEvent to all registered ListDataListeners of the JComboBox. The
|
|
* start and end index of the event is set to -1 to indicate combo box's
|
|
* selection has changed, and not its contents.
|
|
*
|
|
* <p>If the given object is not contained in the combo box list then nothing
|
|
* happens.</p>
|
|
*
|
|
* @param object item to select in the JComboBox
|
|
*/
|
|
public void setSelectedItem(Object object)
|
|
{
|
|
|
|
/* Updates the selected item only if the given object
|
|
* is null or in the list (this is how the JDK behaves).
|
|
*/
|
|
if(object == null || list.contains(object)) {
|
|
selectedItem = object;
|
|
fireContentsChanged(this, -1, -1);
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Returns currently selected item in the combo box list
|
|
*
|
|
* @return currently selected item in the combo box list
|
|
*/
|
|
public Object getSelectedItem()
|
|
{
|
|
return selectedItem;
|
|
}
|
|
|
|
/**
|
|
* Returns element in the combo box list located at the given index
|
|
*
|
|
* @param index specifying location of the element in the list
|
|
*
|
|
* @return return element in the combo box list located at the given index
|
|
*/
|
|
public Object getElementAt(int index)
|
|
{
|
|
return list.elementAt(index);
|
|
}
|
|
|
|
/**
|
|
* Returns index of the specified object in the combo box list.
|
|
*
|
|
* @param object element to look for in the combo box list .
|
|
*
|
|
* @return Index specifying position of the specified element in combo box
|
|
* list.
|
|
*/
|
|
public int getIndexOf(Object object)
|
|
{
|
|
return list.indexOf(object);
|
|
}
|
|
}
|