summaryrefslogtreecommitdiff
path: root/libjava/javax/swing/DefaultListModel.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/javax/swing/DefaultListModel.java')
-rw-r--r--libjava/javax/swing/DefaultListModel.java529
1 files changed, 529 insertions, 0 deletions
diff --git a/libjava/javax/swing/DefaultListModel.java b/libjava/javax/swing/DefaultListModel.java
new file mode 100644
index 00000000000..3a841635903
--- /dev/null
+++ b/libjava/javax/swing/DefaultListModel.java
@@ -0,0 +1,529 @@
+/* DefaultListModel.java --
+ Copyright (C) 2002 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;
+
+// Imports
+import java.util.*;
+
+/**
+ * DefaultListModel
+ * @author Andrew Selkirk
+ * @version 1.0
+ */
+public class DefaultListModel extends AbstractListModel {
+
+ //-------------------------------------------------------------
+ // Variables --------------------------------------------------
+ //-------------------------------------------------------------
+
+ /**
+ * elements. Note: Sun obviously implemented the storage as a
+ * Vector according to the similar API on this class. I choose
+ * instead to implement the model with a proper collection object.
+ * Is this a good choice? Probably not (ya..I know there are
+ * sync issues by doing this)
+ */
+ private ArrayList elements = new ArrayList();
+
+
+ //-------------------------------------------------------------
+ // Initialization ---------------------------------------------
+ //-------------------------------------------------------------
+
+ /**
+ * Constructor DefaultListModel
+ */
+ public DefaultListModel() {
+ // TODO
+ } // DefaultListModel()
+
+
+ //-------------------------------------------------------------
+ // Methods ----------------------------------------------------
+ //-------------------------------------------------------------
+
+ /**
+ * elementAt
+ * @param index TODO
+ * @returns Object
+ */
+ public Object elementAt(int index) {
+ return elements.get(index);
+ } // elementAt()
+
+ /**
+ * toString
+ * @returns String
+ */
+ public String toString() {
+ return elements.toString();
+ } // toString()
+
+ /**
+ * indexOf
+ * @param element TODO
+ * @returns int
+ */
+ public int indexOf(Object element) {
+ return elements.indexOf(element);
+ } // indexOf()
+
+ /**
+ * indexOf
+ * @param element TODO
+ * @param startIndex TODO
+ * @returns int
+ */
+ public int indexOf(Object element, int startIndex) {
+
+ // Variables
+ int index;
+ Object test;
+
+ // Process Elements
+ for (index = startIndex; index < elements.size(); index++) {
+ test = elements.get(index);
+ if (test.equals(element) == true) {
+ return index;
+ } // if
+ } // for
+ return -1;
+
+ } // indexOf()
+
+ /**
+ * lastIndexOf
+ * @param element TODO
+ * @returns int
+ */
+ public int lastIndexOf(Object element) {
+ return elements.lastIndexOf(element);
+ } // lastIndexOf()
+
+ /**
+ * lastIndexOf
+ * @param element TODO
+ * @param endIndex TODO
+ * @returns int
+ */
+ public int lastIndexOf(Object element, int endIndex) {
+
+ // Variables
+ int index;
+ Object test;
+
+ // Process Elements
+ for (index = endIndex; index >= 0; index--) {
+ test = elements.get(index);
+ if (test.equals(element) == true) {
+ return index;
+ } // if
+ } // for
+ return -1;
+
+ } // lastIndexOf()
+
+ /**
+ * get
+ * @param index TODO
+ * @returns Object
+ */
+ public Object get(int index) {
+ return elements.get(index);
+ } // get()
+
+ /**
+ * set
+ * @param index TODO
+ * @param element TODO
+ * @returns Object
+ */
+ public Object set(int index, Object element) {
+
+ // Variables
+ Object result;
+
+ // Process Action
+ result = elements.set(index, element);
+
+ // Send event
+ fireContentsChanged(this, index, index);
+
+ return result;
+
+ } // set()
+
+ /**
+ * add
+ * @param index TODO
+ * @param element TODO
+ */
+ public void add(int index, Object element) {
+
+ // Process Action
+ elements.add(index, element);
+
+ // Send event
+ fireContentsChanged(this, index, index);
+
+ } // add()
+
+ /**
+ * addElement
+ * @param element TODO
+ */
+ public void addElement(Object element) {
+
+ // Process Action
+ elements.add(element);
+
+ // Send event
+ fireIntervalAdded(this, elements.size(), elements.size());
+
+ } // addElement()
+
+ /**
+ * size
+ * @returns int
+ */
+ public int size() {
+ return elements.size();
+ } // size()
+
+ /**
+ * toArray
+ * @returns Object[]
+ */
+ public Object[] toArray() {
+ return elements.toArray();
+ } // toArray()
+
+ /**
+ * contains
+ * @param element TODO
+ * @returns boolean
+ */
+ public boolean contains(Object element) {
+ return elements.contains(element);
+ } // contains()
+
+ /**
+ * copyInto
+ * @param array TODO
+ */
+ public void copyInto(Object[] array) {
+
+ // Variables
+ int index;
+ int size;
+ Object[] srcArray;
+
+ // Initialize
+ size = size();
+ srcArray = toArray();
+
+ // Process Elements
+ for (index = 0; index < size; index++) {
+ array[index] = srcArray[index];
+ } // for
+
+ } // copyInto()
+
+ /**
+ * clear
+ */
+ public void clear() {
+
+ // Process Action
+ elements.clear();
+
+ // Send event
+ fireIntervalRemoved(this, 0, elements.size());
+
+ } // clear()
+
+ /**
+ * remove
+ * @param index TODO
+ * @returns Object
+ */
+ public Object remove(int index) {
+
+ // Variables
+ Object result;
+
+ // Process Action
+ result = elements.remove(index);
+
+ // Send event
+ fireIntervalRemoved(this, index, index);
+
+ return result;
+
+ } // remove()
+
+ /**
+ * isEmpty
+ * @returns boolean
+ */
+ public boolean isEmpty() {
+ return elements.isEmpty();
+ } // isEmpty()
+
+ /**
+ * elements
+ * @returns Enumeration
+ */
+ public Enumeration elements() {
+
+ // TODO
+ // Note: This is a pathetic implementation. If Vector
+ // was used for storage, this wouldn't be an issue. I'll
+ // have to implement an Enumeration inner class sometime.
+
+ // Variables
+ Vector vector;
+
+ // Get Enumeration
+ vector = new Vector(elements);
+ return vector.elements();
+
+ } // elements()
+
+ /**
+ * trimToSize
+ */
+ public void trimToSize() {
+ elements.trimToSize();
+ } // trimToSize()
+
+ /**
+ * ensureCapacity
+ * @param size TODO
+ */
+ public void ensureCapacity(int size) {
+ elements.ensureCapacity(size);
+ } // ensureCapacity()
+
+ /**
+ * setSize
+ * @param size TODO
+ */
+ public void setSize(int size) {
+ elements.ensureCapacity(size);
+ } // setSize()
+
+ /**
+ * capacity
+ * @returns int
+ */
+ public int capacity() {
+ return elements.size();
+ } // capacity()
+
+ /**
+ * firstElement
+ * @returns Object
+ */
+ public Object firstElement() {
+
+ // Variables
+ Object element;
+
+ try {
+ element = elements.get(0);
+ return element;
+ } catch (IndexOutOfBoundsException e) {
+ throw new NoSuchElementException();
+ } // try
+
+ } // firstElement()
+
+ /**
+ * lastElement
+ * @returns Object
+ */
+ public Object lastElement() {
+
+ // Variables
+ Object element;
+
+ try {
+ element = elements.get(elements.size() - 1);
+ return element;
+ } catch (ArrayIndexOutOfBoundsException e) {
+ throw new NoSuchElementException();
+ } // try
+
+ } // lastElement()
+
+ /**
+ * setElementAt
+ * @param element TODO
+ * @param index TODO
+ */
+ public void setElementAt(Object element, int index) {
+
+ // Process Action
+ elements.set(index, element);
+
+ // Send event
+ fireContentsChanged(this, index, index);
+
+ } // setElementAt()
+
+ /**
+ * removeElementAt
+ * @param index TODO
+ */
+ public void removeElementAt(int index) {
+
+ // Process Action
+ elements.remove(index);
+
+ // Send event
+ fireIntervalRemoved(this, index, index);
+
+ } // removeElementAt()
+
+ /**
+ * insertElementAt
+ * @param element TODO
+ * @param index TODO
+ */
+ public void insertElementAt(Object element, int index) {
+
+ // Process Action
+ elements.add(index, element);
+
+ // Send event
+ fireIntervalRemoved(this, index, index);
+
+ } // insertElementAt()
+
+ /**
+ * removeElement
+ * @param element TODO
+ * @returns boolean
+ */
+ public boolean removeElement(Object element) {
+
+ // Variables
+ int index;
+
+ index = elements.indexOf(element);
+ if (index != -1) {
+ elements.remove(index);
+
+ // Send event
+ fireIntervalRemoved(this, index, index);
+
+ return true;
+
+ } // if
+
+ return false;
+
+ } // removeElement()
+
+ /**
+ * removeAllElements
+ */
+ public void removeAllElements() {
+
+ // Variables
+ int size;
+
+ size = size();
+
+ if (size > 0) {
+
+ // Process Action
+ elements.clear();
+
+ // Send event
+ fireIntervalRemoved(this, 0, size - 1);
+
+ } // if
+
+ } // removeAllElements()
+
+ /**
+ * removeRange
+ * @param startIndex TODO
+ * @param endIndex TODO
+ */
+ public void removeRange(int startIndex, int endIndex) {
+
+ // Variables
+ int index;
+
+ // Check Indices
+ if (startIndex > endIndex) {
+ throw new IllegalArgumentException();
+ } // if
+
+ // Process Elements
+ for (index = endIndex; index >= startIndex; index--) {
+ elements.remove(index);
+ } // for
+
+ // Send event
+ fireIntervalRemoved(this, startIndex, endIndex);
+
+ } // removeRange()
+
+ /**
+ * getSize
+ * @returns int
+ */
+ public int getSize() {
+ return elements.size();
+ } // getSize()
+
+ /**
+ * getElementAt
+ * @param index TODO
+ * @returns Object
+ */
+ public Object getElementAt(int index) {
+ return elements.get(index);
+ } // getElementAt()
+
+
+} // DefaultListModel