/* * @(#)ListSelectionModel.java 1.21 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.swing; import javax.swing.event.*; /** * This interface represents the current state of the * selection for any of the components that display a * list of values with stable indices. The selection is * modeled as a set of intervals, each interval represents * a contiguous range of selected list elements. * The methods for modifying the set of selected intervals * all take a pair of indices, index0 and index1, that represent * a closed interval, i.e. the interval includes both index0 and * index1. * * @version 1.21 12/19/03 * @author Hans Muller * @author Philip Milne * @see DefaultListSelectionModel */ public interface ListSelectionModel { /** * A value for the selectionMode property: select one list index * at a time. * * @see #setSelectionMode */ int SINGLE_SELECTION = 0; /** * A value for the selectionMode property: select one contiguous * range of indices at a time. * * @see #setSelectionMode */ int SINGLE_INTERVAL_SELECTION = 1; /** * A value for the selectionMode property: select one or more * contiguous ranges of indices at a time. * * @see #setSelectionMode */ int MULTIPLE_INTERVAL_SELECTION = 2; /** * Change the selection to be between index0 and index1 inclusive. * If this represents a change to the current selection, then * notify each ListSelectionListener. Note that index0 doesn't have * to be less than or equal to index1. * * @param index0 one end of the interval. * @param index1 other end of the interval * @see #addListSelectionListener */ void setSelectionInterval(int index0, int index1); /** * Change the selection to be the set union of the current selection * and the indices between index0 and index1 inclusive. If this represents * a change to the current selection, then notify each * ListSelectionListener. Note that index0 doesn't have to be less * than or equal to index1. * * @param index0 one end of the interval. * @param index1 other end of the interval * @see #addListSelectionListener */ void addSelectionInterval(int index0, int index1); /** * Change the selection to be the set difference of the current selection * and the indices between index0 and index1 inclusive. If this represents * a change to the current selection, then notify each * ListSelectionListener. Note that index0 doesn't have to be less * than or equal to index1. * * @param index0 one end of the interval. * @param index1 other end of the interval * @see #addListSelectionListener */ void removeSelectionInterval(int index0, int index1); /** * Returns the first selected index or -1 if the selection is empty. */ int getMinSelectionIndex(); /** * Returns the last selected index or -1 if the selection is empty. */ int getMaxSelectionIndex(); /** * Returns true if the specified index is selected. */ boolean isSelectedIndex(int index); /** * Return the first index argument from the most recent call to * setSelectionInterval(), addSelectionInterval() or removeSelectionInterval(). * The most recent index0 is considered the "anchor" and the most recent * index1 is considered the "lead". Some interfaces display these * indices specially, e.g. Windows95 displays the lead index with a * dotted yellow outline. * * @see #getLeadSelectionIndex * @see #setSelectionInterval * @see #addSelectionInterval */ int getAnchorSelectionIndex(); /** * Set the anchor selection index. * * @see #getAnchorSelectionIndex */ void setAnchorSelectionIndex(int index); /** * Return the second index argument from the most recent call to * setSelectionInterval(), addSelectionInterval() or removeSelectionInterval(). * * @see #getAnchorSelectionIndex * @see #setSelectionInterval * @see #addSelectionInterval */ int getLeadSelectionIndex(); /** * Set the lead selection index. * * @see #getLeadSelectionIndex */ void setLeadSelectionIndex(int index); /** * Change the selection to the empty set. If this represents * a change to the current selection then notify each ListSelectionListener. * * @see #addListSelectionListener */ void clearSelection(); /** * Returns true if no indices are selected. */ boolean isSelectionEmpty(); /** * Insert length indices beginning before/after index. This is typically * called to sync the selection model with a corresponding change * in the data model. */ void insertIndexInterval(int index, int length, boolean before); /** * Remove the indices in the interval index0,index1 (inclusive) from * the selection model. This is typically called to sync the selection * model width a corresponding change in the data model. */ void removeIndexInterval(int index0, int index1); /** * This property is true if upcoming changes to the value * of the model should be considered a single event. For example * if the model is being updated in response to a user drag, * the value of the valueIsAdjusting property will be set to true * when the drag is initiated and be set to false when * the drag is finished. This property allows listeners to * to update only when a change has been finalized, rather * than always handling all of the intermediate values. * * @param valueIsAdjusting The new value of the property. * @see #getValueIsAdjusting */ void setValueIsAdjusting(boolean valueIsAdjusting); /** * Returns true if the value is undergoing a series of changes. * @return true if the value is currently adjusting * @see #setValueIsAdjusting */ boolean getValueIsAdjusting(); /** * Set the selection mode. The following selectionMode values are allowed: * * * @see #getSelectionMode */ void setSelectionMode(int selectionMode); /** * Returns the current selection mode. * @return The value of the selectionMode property. * @see #setSelectionMode */ int getSelectionMode(); /** * Add a listener to the list that's notified each time a change * to the selection occurs. * * @param x the ListSelectionListener * @see #removeListSelectionListener * @see #setSelectionInterval * @see #addSelectionInterval * @see #removeSelectionInterval * @see #clearSelection * @see #insertIndexInterval * @see #removeIndexInterval */ void addListSelectionListener(ListSelectionListener x); /** * Remove a listener from the list that's notified each time a * change to the selection occurs. * * @param x the ListSelectionListener * @see #addListSelectionListener */ void removeListSelectionListener(ListSelectionListener x); }