/*
 * @(#)ListModel.java	1.18 05/11/17
 *
 * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */

package javax.swing;

import javax.swing.event.ListDataListener;

/**
 * This interface defines the methods components like JList use 
 * to get the value of each cell in a list and the length of the list.
 * Logically the model is a vector, indices vary from 0 to
 * ListDataModel.getSize() - 1.  Any change to the contents or
 * length of the data model must be reported to all of the
 * ListDataListeners.
 *
 * @version 0.0 03/01/97
 * @author Hans Muller
 * @see JList
 */
public interface ListModel
{
  /** 
   * Returns the length of the list.
   * @return the length of the list
   */
  int getSize();

  /**
   * Returns the value at the specified index.  
   * @param index the requested index
   * @return the value at <code>index</code>
   */
  Object getElementAt(int index);

  /**
   * Adds a listener to the list that's notified each time a change
   * to the data model occurs.
   * @param l the <code>ListDataListener</code> to be added
   */  
  void addListDataListener(ListDataListener l);

  /**
   * Removes a listener from the list that's notified each time a 
   * change to the data model occurs.
   * @param l the <code>ListDataListener</code> to be removed
   */  
  void removeListDataListener(ListDataListener l);
}

