home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 1998 November
/
Chip_1998-11_cd.bin
/
tema
/
Cafe
/
jfc.bin
/
ListSelectionModel.java
< prev
next >
Wrap
Text File
|
1998-02-26
|
9KB
|
267 lines
/*
* @(#)ListSelectionModel.java 1.9 98/01/30
*
* Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
*
* This software is the confidential and proprietary information of Sun
* Microsystems, Inc. ("Confidential Information"). You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with Sun.
*
* SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
* SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
* IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
* PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
* SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
* THIS SOFTWARE OR ITS DERIVATIVES.
*
*/
package com.sun.java.swing;
import com.sun.java.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.9 01/30/98
* @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() or addSelectionInterval().
* 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() or addSelectionInterval().
*
* @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);
/**
* @return The value of the valueIsAdjusting property.
* @see #setValueIsAdjusting
*/
boolean getValueIsAdjusting();
/**
* The following selectionMode values are allowed:
* <ul>
* <li> <code>SINGLE_SELECTION</code>
* Only one list index can be selected at a time. In this
* mode the setSelectionInterval and addSelectionInterval
* methods are equivalent, and only the second index
* argument (the "lead index") is used.
* <li> <code>SINGLE_INTERVAL_SELECTION</code>
* One contiguous index interval can be selected at a time.
* In this mode setSelectionInterval and addSelectionInterval
* are equivalent.
* <li> <code>MULTIPLE_INTERVAL_SELECTION</code>
* In this mode, there's no restriction on what can be selected.
* </ul>
*
* @see #getSelectionMode
*/
void setSelectionMode(int selectionMode);
/**
* @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 l 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 l the ListSelectionListener
* @see #addListSelectionListener
*/
void removeListSelectionListener(ListSelectionListener x);
}