/*
* Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code 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
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package java.awt;
import java.util.Vector;
import java.util.Locale;
import java.util.EventListener;
import java.awt.peer.ListPeer;
import java.awt.event.*;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.io.IOException;
import javax.accessibility.*;
The List
component presents the user with a
scrolling list of text items. The list can be set up so that
the user can choose either one item or multiple items.
For example, the code . . .
List lst = new List(4, false);
lst.add("Mercury");
lst.add("Venus");
lst.add("Earth");
lst.add("JavaSoft");
lst.add("Mars");
lst.add("Jupiter");
lst.add("Saturn");
lst.add("Uranus");
lst.add("Neptune");
lst.add("Pluto");
cnt.add(lst);
where cnt
is a container, produces the following
scrolling list:
If the List allows multiple selections, then clicking on
an item that is already selected deselects it. In the preceding
example, only one item from the scrolling list can be selected
at a time, since the second argument when creating the new scrolling
list is false
. If the List does not allow multiple
selections, selecting an item causes any other selected item
to be deselected.
Note that the list in the example shown was created with four visible
rows. Once the list has been created, the number of visible rows
cannot be changed. A default List
is created with
four rows, so that lst = new List()
is equivalent to
list = new List(4, false)
.
Beginning with Java 1.1, the Abstract Window Toolkit
sends the List
object all mouse, keyboard, and focus events
that occur over it. (The old AWT event model is being maintained
only for backwards compatibility, and its use is discouraged.)
When an item is selected or deselected by the user, AWT sends an instance
of ItemEvent
to the list.
When the user double-clicks on an item in a scrolling list,
AWT sends an instance of ActionEvent
to the
list following the item event. AWT also generates an action event
when the user presses the return key while an item in the
list is selected.
If an application wants to perform some action based on an item
in this list being selected or activated by the user, it should implement
ItemListener
or ActionListener
as appropriate and register the new listener to receive
events from this list.
For multiple-selection scrolling lists, it is considered a better
user interface to use an external gesture (such as clicking on a
button) to trigger the action.
Author: Sami Shaio See Also: Since: JDK1.0
/**
* The <code>List</code> component presents the user with a
* scrolling list of text items. The list can be set up so that
* the user can choose either one item or multiple items.
* <p>
* For example, the code . . .
* <p>
* <hr><blockquote><pre>
* List lst = new List(4, false);
* lst.add("Mercury");
* lst.add("Venus");
* lst.add("Earth");
* lst.add("JavaSoft");
* lst.add("Mars");
* lst.add("Jupiter");
* lst.add("Saturn");
* lst.add("Uranus");
* lst.add("Neptune");
* lst.add("Pluto");
* cnt.add(lst);
* </pre></blockquote><hr>
* <p>
* where <code>cnt</code> is a container, produces the following
* scrolling list:
* <p>
* <img src="doc-files/List-1.gif"
* alt="Shows a list containing: Venus, Earth, JavaSoft, and Mars. Javasoft is selected." style="float:center; margin: 7px 10px;">
* <p>
* If the List allows multiple selections, then clicking on
* an item that is already selected deselects it. In the preceding
* example, only one item from the scrolling list can be selected
* at a time, since the second argument when creating the new scrolling
* list is <code>false</code>. If the List does not allow multiple
* selections, selecting an item causes any other selected item
* to be deselected.
* <p>
* Note that the list in the example shown was created with four visible
* rows. Once the list has been created, the number of visible rows
* cannot be changed. A default <code>List</code> is created with
* four rows, so that <code>lst = new List()</code> is equivalent to
* <code>list = new List(4, false)</code>.
* <p>
* Beginning with Java 1.1, the Abstract Window Toolkit
* sends the <code>List</code> object all mouse, keyboard, and focus events
* that occur over it. (The old AWT event model is being maintained
* only for backwards compatibility, and its use is discouraged.)
* <p>
* When an item is selected or deselected by the user, AWT sends an instance
* of <code>ItemEvent</code> to the list.
* When the user double-clicks on an item in a scrolling list,
* AWT sends an instance of <code>ActionEvent</code> to the
* list following the item event. AWT also generates an action event
* when the user presses the return key while an item in the
* list is selected.
* <p>
* If an application wants to perform some action based on an item
* in this list being selected or activated by the user, it should implement
* <code>ItemListener</code> or <code>ActionListener</code>
* as appropriate and register the new listener to receive
* events from this list.
* <p>
* For multiple-selection scrolling lists, it is considered a better
* user interface to use an external gesture (such as clicking on a
* button) to trigger the action.
* @author Sami Shaio
* @see java.awt.event.ItemEvent
* @see java.awt.event.ItemListener
* @see java.awt.event.ActionEvent
* @see java.awt.event.ActionListener
* @since JDK1.0
*/
public class List extends Component implements ItemSelectable, Accessible {
A vector created to contain items which will become
part of the List Component.
See Also: @serial
/**
* A vector created to contain items which will become
* part of the List Component.
*
* @serial
* @see #addItem(String)
* @see #getItem(int)
*/
Vector items = new Vector();
This field will represent the number of visible rows in the
List
Component. It is specified only once, and
that is when the list component is actually
created. It will never change.
See Also: @serial
/**
* This field will represent the number of visible rows in the
* <code>List</code> Component. It is specified only once, and
* that is when the list component is actually
* created. It will never change.
*
* @serial
* @see #getRows()
*/
int rows = 0;
multipleMode
is a variable that will
be set to true
if a list component is to be set to
multiple selection mode, that is where the user can
select more than one item in a list at one time.
multipleMode
will be set to false if the
list component is set to single selection, that is where
the user can only select one item on the list at any
one time.
See Also: @serial
/**
* <code>multipleMode</code> is a variable that will
* be set to <code>true</code> if a list component is to be set to
* multiple selection mode, that is where the user can
* select more than one item in a list at one time.
* <code>multipleMode</code> will be set to false if the
* list component is set to single selection, that is where
* the user can only select one item on the list at any
* one time.
*
* @serial
* @see #isMultipleMode()
* @see #setMultipleMode(boolean)
*/
boolean multipleMode = false;
selected
is an array that will contain
the indices of items that have been selected.
See Also: @serial
/**
* <code>selected</code> is an array that will contain
* the indices of items that have been selected.
*
* @serial
* @see #getSelectedIndexes()
* @see #getSelectedIndex()
*/
int selected[] = new int[0];
This variable contains the value that will be used
when trying to make a particular list item visible.
See Also: @serial
/**
* This variable contains the value that will be used
* when trying to make a particular list item visible.
*
* @serial
* @see #makeVisible(int)
*/
int visibleIndex = -1;
transient ActionListener actionListener;
transient ItemListener itemListener;
private static final String base = "list";
private static int nameCounter = 0;
/*
* JDK 1.1 serialVersionUID
*/
private static final long serialVersionUID = -3304312411574666869L;
Creates a new scrolling list.
By default, there are four visible lines and multiple selections are
not allowed. Note that this is a convenience method for
List(0, false)
. Also note that the number of visible
lines in the list cannot be changed after it has been created.
Throws: - HeadlessException – if GraphicsEnvironment.isHeadless()
returns true.
See Also:
/**
* Creates a new scrolling list.
* By default, there are four visible lines and multiple selections are
* not allowed. Note that this is a convenience method for
* <code>List(0, false)</code>. Also note that the number of visible
* lines in the list cannot be changed after it has been created.
* @exception HeadlessException if GraphicsEnvironment.isHeadless()
* returns true.
* @see java.awt.GraphicsEnvironment#isHeadless
*/
public List() throws HeadlessException {
this(0, false);
}
Creates a new scrolling list initialized with the specified
number of visible lines. By default, multiple selections are
not allowed. Note that this is a convenience method for
List(rows, false)
. Also note that the number
of visible rows in the list cannot be changed after it has
been created.
Params: - rows – the number of items to show.
Throws: - HeadlessException – if GraphicsEnvironment.isHeadless()
returns true.
See Also: Since: JDK1.1
/**
* Creates a new scrolling list initialized with the specified
* number of visible lines. By default, multiple selections are
* not allowed. Note that this is a convenience method for
* <code>List(rows, false)</code>. Also note that the number
* of visible rows in the list cannot be changed after it has
* been created.
* @param rows the number of items to show.
* @exception HeadlessException if GraphicsEnvironment.isHeadless()
* returns true.
* @see java.awt.GraphicsEnvironment#isHeadless
* @since JDK1.1
*/
public List(int rows) throws HeadlessException {
this(rows, false);
}
The default number of visible rows is 4. A list with
zero rows is unusable and unsightly.
/**
* The default number of visible rows is 4. A list with
* zero rows is unusable and unsightly.
*/
final static int DEFAULT_VISIBLE_ROWS = 4;
Creates a new scrolling list initialized to display the specified
number of rows. Note that if zero rows are specified, then
the list will be created with a default of four rows.
Also note that the number of visible rows in the list cannot
be changed after it has been created.
If the value of multipleMode
is
true
, then the user can select multiple items from
the list. If it is false
, only one item at a time
can be selected.
Params: - rows – the number of items to show.
- multipleMode – if
true
,
then multiple selections are allowed;
otherwise, only one item can be selected at a time.
Throws: - HeadlessException – if GraphicsEnvironment.isHeadless()
returns true.
See Also:
/**
* Creates a new scrolling list initialized to display the specified
* number of rows. Note that if zero rows are specified, then
* the list will be created with a default of four rows.
* Also note that the number of visible rows in the list cannot
* be changed after it has been created.
* If the value of <code>multipleMode</code> is
* <code>true</code>, then the user can select multiple items from
* the list. If it is <code>false</code>, only one item at a time
* can be selected.
* @param rows the number of items to show.
* @param multipleMode if <code>true</code>,
* then multiple selections are allowed;
* otherwise, only one item can be selected at a time.
* @exception HeadlessException if GraphicsEnvironment.isHeadless()
* returns true.
* @see java.awt.GraphicsEnvironment#isHeadless
*/
public List(int rows, boolean multipleMode) throws HeadlessException {
GraphicsEnvironment.checkHeadless();
this.rows = (rows != 0) ? rows : DEFAULT_VISIBLE_ROWS;
this.multipleMode = multipleMode;
}
Construct a name for this component. Called by
getName
when the name is null
.
/**
* Construct a name for this component. Called by
* <code>getName</code> when the name is <code>null</code>.
*/
String constructComponentName() {
synchronized (List.class) {
return base + nameCounter++;
}
}
Creates the peer for the list. The peer allows us to modify the
list's appearance without changing its functionality.
/**
* Creates the peer for the list. The peer allows us to modify the
* list's appearance without changing its functionality.
*/
public void addNotify() {
synchronized (getTreeLock()) {
if (peer == null)
peer = getToolkit().createList(this);
super.addNotify();
}
}
Removes the peer for this list. The peer allows us to modify the
list's appearance without changing its functionality.
/**
* Removes the peer for this list. The peer allows us to modify the
* list's appearance without changing its functionality.
*/
public void removeNotify() {
synchronized (getTreeLock()) {
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
selected = peer.getSelectedIndexes();
}
super.removeNotify();
}
}
Gets the number of items in the list.
See Also: Returns: the number of items in the list Since: JDK1.1
/**
* Gets the number of items in the list.
* @return the number of items in the list
* @see #getItem
* @since JDK1.1
*/
public int getItemCount() {
return countItems();
}
Deprecated: As of JDK version 1.1,
replaced by getItemCount()
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>getItemCount()</code>.
*/
@Deprecated
public int countItems() {
return items.size();
}
Gets the item associated with the specified index.
Params: - index – the position of the item
See Also: Returns: an item that is associated with
the specified index
/**
* Gets the item associated with the specified index.
* @return an item that is associated with
* the specified index
* @param index the position of the item
* @see #getItemCount
*/
public String getItem(int index) {
return getItemImpl(index);
}
// NOTE: This method may be called by privileged threads.
// We implement this functionality in a package-private method
// to insure that it cannot be overridden by client subclasses.
// DO NOT INVOKE CLIENT CODE ON THIS THREAD!
final String getItemImpl(int index) {
return (String)items.elementAt(index);
}
Gets the items in the list.
See Also: Returns: a string array containing items of the list Since: JDK1.1
/**
* Gets the items in the list.
* @return a string array containing items of the list
* @see #select
* @see #deselect
* @see #isIndexSelected
* @since JDK1.1
*/
public synchronized String[] getItems() {
String itemCopies[] = new String[items.size()];
items.copyInto(itemCopies);
return itemCopies;
}
Adds the specified item to the end of scrolling list.
Params: - item – the item to be added
Since: JDK1.1
/**
* Adds the specified item to the end of scrolling list.
* @param item the item to be added
* @since JDK1.1
*/
public void add(String item) {
addItem(item);
}
Deprecated: replaced by add(String)
.
/**
* @deprecated replaced by <code>add(String)</code>.
*/
@Deprecated
public void addItem(String item) {
addItem(item, -1);
}
Adds the specified item to the the scrolling list
at the position indicated by the index. The index is
zero-based. If the value of the index is less than zero,
or if the value of the index is greater than or equal to
the number of items in the list, then the item is added
to the end of the list.
Params: - item – the item to be added;
if this parameter is
null
then the item is
treated as an empty string, ""
- index – the position at which to add the item
Since: JDK1.1
/**
* Adds the specified item to the the scrolling list
* at the position indicated by the index. The index is
* zero-based. If the value of the index is less than zero,
* or if the value of the index is greater than or equal to
* the number of items in the list, then the item is added
* to the end of the list.
* @param item the item to be added;
* if this parameter is <code>null</code> then the item is
* treated as an empty string, <code>""</code>
* @param index the position at which to add the item
* @since JDK1.1
*/
public void add(String item, int index) {
addItem(item, index);
}
Deprecated: replaced by add(String, int)
.
/**
* @deprecated replaced by <code>add(String, int)</code>.
*/
@Deprecated
public synchronized void addItem(String item, int index) {
if (index < -1 || index >= items.size()) {
index = -1;
}
if (item == null) {
item = "";
}
if (index == -1) {
items.addElement(item);
} else {
items.insertElementAt(item, index);
}
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
peer.add(item, index);
}
}
Replaces the item at the specified index in the scrolling list
with the new string.
Params: - newValue – a new string to replace an existing item
- index – the position of the item to replace
Throws: - ArrayIndexOutOfBoundsException – if
index
is out of range
/**
* Replaces the item at the specified index in the scrolling list
* with the new string.
* @param newValue a new string to replace an existing item
* @param index the position of the item to replace
* @exception ArrayIndexOutOfBoundsException if <code>index</code>
* is out of range
*/
public synchronized void replaceItem(String newValue, int index) {
remove(index);
add(newValue, index);
}
Removes all items from this list.
See Also: - remove
- delItems
Since: JDK1.1
/**
* Removes all items from this list.
* @see #remove
* @see #delItems
* @since JDK1.1
*/
public void removeAll() {
clear();
}
Deprecated: As of JDK version 1.1,
replaced by removeAll()
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>removeAll()</code>.
*/
@Deprecated
public synchronized void clear() {
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
peer.removeAll();
}
items = new Vector();
selected = new int[0];
}
Removes the first occurrence of an item from the list.
If the specified item is selected, and is the only selected
item in the list, the list is set to have no selection.
Params: - item – the item to remove from the list
Throws: - IllegalArgumentException –
if the item doesn't exist in the list
Since: JDK1.1
/**
* Removes the first occurrence of an item from the list.
* If the specified item is selected, and is the only selected
* item in the list, the list is set to have no selection.
* @param item the item to remove from the list
* @exception IllegalArgumentException
* if the item doesn't exist in the list
* @since JDK1.1
*/
public synchronized void remove(String item) {
int index = items.indexOf(item);
if (index < 0) {
throw new IllegalArgumentException("item " + item +
" not found in list");
} else {
remove(index);
}
}
Removes the item at the specified position
from this scrolling list.
If the item with the specified position is selected, and is the
only selected item in the list, the list is set to have no selection.
Params: - position – the index of the item to delete
Throws: - ArrayIndexOutOfBoundsException –
if the
position
is less than 0 or
greater than getItemCount()-1
See Also: Since: JDK1.1
/**
* Removes the item at the specified position
* from this scrolling list.
* If the item with the specified position is selected, and is the
* only selected item in the list, the list is set to have no selection.
* @param position the index of the item to delete
* @see #add(String, int)
* @since JDK1.1
* @exception ArrayIndexOutOfBoundsException
* if the <code>position</code> is less than 0 or
* greater than <code>getItemCount()-1</code>
*/
public void remove(int position) {
delItem(position);
}
Deprecated: replaced by remove(String)
and remove(int)
.
/**
* @deprecated replaced by <code>remove(String)</code>
* and <code>remove(int)</code>.
*/
@Deprecated
public void delItem(int position) {
delItems(position, position);
}
Gets the index of the selected item on the list,
See Also: Returns: the index of the selected item;
if no item is selected, or if multiple items are
selected, -1
is returned.
/**
* Gets the index of the selected item on the list,
*
* @return the index of the selected item;
* if no item is selected, or if multiple items are
* selected, <code>-1</code> is returned.
* @see #select
* @see #deselect
* @see #isIndexSelected
*/
public synchronized int getSelectedIndex() {
int sel[] = getSelectedIndexes();
return (sel.length == 1) ? sel[0] : -1;
}
Gets the selected indexes on the list.
See Also: Returns: an array of the selected indexes on this scrolling list;
if no item is selected, a zero-length array is returned.
/**
* Gets the selected indexes on the list.
*
* @return an array of the selected indexes on this scrolling list;
* if no item is selected, a zero-length array is returned.
* @see #select
* @see #deselect
* @see #isIndexSelected
*/
public synchronized int[] getSelectedIndexes() {
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
selected = ((ListPeer)peer).getSelectedIndexes();
}
return (int[])selected.clone();
}
Gets the selected item on this scrolling list.
See Also: Returns: the selected item on the list;
if no item is selected, or if multiple items are
selected, null
is returned.
/**
* Gets the selected item on this scrolling list.
*
* @return the selected item on the list;
* if no item is selected, or if multiple items are
* selected, <code>null</code> is returned.
* @see #select
* @see #deselect
* @see #isIndexSelected
*/
public synchronized String getSelectedItem() {
int index = getSelectedIndex();
return (index < 0) ? null : getItem(index);
}
Gets the selected items on this scrolling list.
See Also: Returns: an array of the selected items on this scrolling list;
if no item is selected, a zero-length array is returned.
/**
* Gets the selected items on this scrolling list.
*
* @return an array of the selected items on this scrolling list;
* if no item is selected, a zero-length array is returned.
* @see #select
* @see #deselect
* @see #isIndexSelected
*/
public synchronized String[] getSelectedItems() {
int sel[] = getSelectedIndexes();
String str[] = new String[sel.length];
for (int i = 0 ; i < sel.length ; i++) {
str[i] = getItem(sel[i]);
}
return str;
}
Gets the selected items on this scrolling list in an array of Objects.
See Also: Returns: an array of Object
s representing the
selected items on this scrolling list;
if no item is selected, a zero-length array is returned.
/**
* Gets the selected items on this scrolling list in an array of Objects.
* @return an array of <code>Object</code>s representing the
* selected items on this scrolling list;
* if no item is selected, a zero-length array is returned.
* @see #getSelectedItems
* @see ItemSelectable
*/
public Object[] getSelectedObjects() {
return getSelectedItems();
}
Selects the item at the specified index in the scrolling list.
Note that passing out of range parameters is invalid,
and will result in unspecified behavior.
Note that this method should be primarily used to
initially select an item in this component.
Programmatically calling this method will not trigger
an ItemEvent
. The only way to trigger an
ItemEvent
is by user interaction.
Params: - index – the position of the item to select
See Also:
/**
* Selects the item at the specified index in the scrolling list.
*<p>
* Note that passing out of range parameters is invalid,
* and will result in unspecified behavior.
*
* <p>Note that this method should be primarily used to
* initially select an item in this component.
* Programmatically calling this method will <i>not</i> trigger
* an <code>ItemEvent</code>. The only way to trigger an
* <code>ItemEvent</code> is by user interaction.
*
* @param index the position of the item to select
* @see #getSelectedItem
* @see #deselect
* @see #isIndexSelected
*/
public void select(int index) {
// Bug #4059614: select can't be synchronized while calling the peer,
// because it is called from the Window Thread. It is sufficient to
// synchronize the code that manipulates 'selected' except for the
// case where the peer changes. To handle this case, we simply
// repeat the selection process.
ListPeer peer;
do {
peer = (ListPeer)this.peer;
if (peer != null) {
peer.select(index);
return;
}
synchronized(this)
{
boolean alreadySelected = false;
for (int i = 0 ; i < selected.length ; i++) {
if (selected[i] == index) {
alreadySelected = true;
break;
}
}
if (!alreadySelected) {
if (!multipleMode) {
selected = new int[1];
selected[0] = index;
} else {
int newsel[] = new int[selected.length + 1];
System.arraycopy(selected, 0, newsel, 0,
selected.length);
newsel[selected.length] = index;
selected = newsel;
}
}
}
} while (peer != this.peer);
}
Deselects the item at the specified index.
Note that passing out of range parameters is invalid,
and will result in unspecified behavior.
If the item at the specified index is not selected,
then the operation is ignored.
Params: - index – the position of the item to deselect
See Also:
/**
* Deselects the item at the specified index.
* <p>
* Note that passing out of range parameters is invalid,
* and will result in unspecified behavior.
* <p>
* If the item at the specified index is not selected,
* then the operation is ignored.
* @param index the position of the item to deselect
* @see #select
* @see #getSelectedItem
* @see #isIndexSelected
*/
public synchronized void deselect(int index) {
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
if (isMultipleMode() || (getSelectedIndex() == index)) {
peer.deselect(index);
}
}
for (int i = 0 ; i < selected.length ; i++) {
if (selected[i] == index) {
int newsel[] = new int[selected.length - 1];
System.arraycopy(selected, 0, newsel, 0, i);
System.arraycopy(selected, i+1, newsel, i, selected.length - (i+1));
selected = newsel;
return;
}
}
}
Determines if the specified item in this scrolling list is
selected.
Params: - index – the item to be checked
See Also: Returns: true
if the specified item has been
selected; false
otherwise Since: JDK1.1
/**
* Determines if the specified item in this scrolling list is
* selected.
* @param index the item to be checked
* @return <code>true</code> if the specified item has been
* selected; <code>false</code> otherwise
* @see #select
* @see #deselect
* @since JDK1.1
*/
public boolean isIndexSelected(int index) {
return isSelected(index);
}
Deprecated: As of JDK version 1.1,
replaced by isIndexSelected(int)
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>isIndexSelected(int)</code>.
*/
@Deprecated
public boolean isSelected(int index) {
int sel[] = getSelectedIndexes();
for (int i = 0 ; i < sel.length ; i++) {
if (sel[i] == index) {
return true;
}
}
return false;
}
Gets the number of visible lines in this list. Note that
once the List
has been created, this number
will never change.
Returns: the number of visible lines in this scrolling list
/**
* Gets the number of visible lines in this list. Note that
* once the <code>List</code> has been created, this number
* will never change.
* @return the number of visible lines in this scrolling list
*/
public int getRows() {
return rows;
}
Determines whether this list allows multiple selections.
See Also: Returns: true
if this list allows multiple
selections; otherwise, false
Since: JDK1.1
/**
* Determines whether this list allows multiple selections.
* @return <code>true</code> if this list allows multiple
* selections; otherwise, <code>false</code>
* @see #setMultipleMode
* @since JDK1.1
*/
public boolean isMultipleMode() {
return allowsMultipleSelections();
}
Deprecated: As of JDK version 1.1,
replaced by isMultipleMode()
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>isMultipleMode()</code>.
*/
@Deprecated
public boolean allowsMultipleSelections() {
return multipleMode;
}
Sets the flag that determines whether this list
allows multiple selections.
When the selection mode is changed from multiple-selection to
single-selection, the selected items change as follows:
If a selected item has the location cursor, only that
item will remain selected. If no selected item has the
location cursor, all items will be deselected.
Params: - b – if
true
then multiple selections
are allowed; otherwise, only one item from
the list can be selected at once
See Also: Since: JDK1.1
/**
* Sets the flag that determines whether this list
* allows multiple selections.
* When the selection mode is changed from multiple-selection to
* single-selection, the selected items change as follows:
* If a selected item has the location cursor, only that
* item will remain selected. If no selected item has the
* location cursor, all items will be deselected.
* @param b if <code>true</code> then multiple selections
* are allowed; otherwise, only one item from
* the list can be selected at once
* @see #isMultipleMode
* @since JDK1.1
*/
public void setMultipleMode(boolean b) {
setMultipleSelections(b);
}
Deprecated: As of JDK version 1.1,
replaced by setMultipleMode(boolean)
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>setMultipleMode(boolean)</code>.
*/
@Deprecated
public synchronized void setMultipleSelections(boolean b) {
if (b != multipleMode) {
multipleMode = b;
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
peer.setMultipleMode(b);
}
}
}
Gets the index of the item that was last made visible by
the method makeVisible
.
See Also: Returns: the index of the item that was last made visible
/**
* Gets the index of the item that was last made visible by
* the method <code>makeVisible</code>.
* @return the index of the item that was last made visible
* @see #makeVisible
*/
public int getVisibleIndex() {
return visibleIndex;
}
Makes the item at the specified index visible.
Params: - index – the position of the item
See Also:
/**
* Makes the item at the specified index visible.
* @param index the position of the item
* @see #getVisibleIndex
*/
public synchronized void makeVisible(int index) {
visibleIndex = index;
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
peer.makeVisible(index);
}
}
Gets the preferred dimensions for a list with the specified
number of rows.
Params: - rows – number of rows in the list
See Also: Returns: the preferred dimensions for displaying this scrolling list
given that the specified number of rows must be visible Since: JDK1.1
/**
* Gets the preferred dimensions for a list with the specified
* number of rows.
* @param rows number of rows in the list
* @return the preferred dimensions for displaying this scrolling list
* given that the specified number of rows must be visible
* @see java.awt.Component#getPreferredSize
* @since JDK1.1
*/
public Dimension getPreferredSize(int rows) {
return preferredSize(rows);
}
Deprecated: As of JDK version 1.1,
replaced by getPreferredSize(int)
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>getPreferredSize(int)</code>.
*/
@Deprecated
public Dimension preferredSize(int rows) {
synchronized (getTreeLock()) {
ListPeer peer = (ListPeer)this.peer;
return (peer != null) ?
peer.getPreferredSize(rows) :
super.preferredSize();
}
}
Gets the preferred size of this scrolling list.
See Also: Returns: the preferred dimensions for displaying this scrolling list Since: JDK1.1
/**
* Gets the preferred size of this scrolling list.
* @return the preferred dimensions for displaying this scrolling list
* @see java.awt.Component#getPreferredSize
* @since JDK1.1
*/
public Dimension getPreferredSize() {
return preferredSize();
}
Deprecated: As of JDK version 1.1,
replaced by getPreferredSize()
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>getPreferredSize()</code>.
*/
@Deprecated
public Dimension preferredSize() {
synchronized (getTreeLock()) {
return (rows > 0) ?
preferredSize(rows) :
super.preferredSize();
}
}
Gets the minimum dimensions for a list with the specified
number of rows.
Params: - rows – number of rows in the list
See Also: Returns: the minimum dimensions for displaying this scrolling list
given that the specified number of rows must be visible Since: JDK1.1
/**
* Gets the minimum dimensions for a list with the specified
* number of rows.
* @param rows number of rows in the list
* @return the minimum dimensions for displaying this scrolling list
* given that the specified number of rows must be visible
* @see java.awt.Component#getMinimumSize
* @since JDK1.1
*/
public Dimension getMinimumSize(int rows) {
return minimumSize(rows);
}
Deprecated: As of JDK version 1.1,
replaced by getMinimumSize(int)
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>getMinimumSize(int)</code>.
*/
@Deprecated
public Dimension minimumSize(int rows) {
synchronized (getTreeLock()) {
ListPeer peer = (ListPeer)this.peer;
return (peer != null) ?
peer.getMinimumSize(rows) :
super.minimumSize();
}
}
Determines the minimum size of this scrolling list.
See Also: Returns: the minimum dimensions needed
to display this scrolling list Since: JDK1.1
/**
* Determines the minimum size of this scrolling list.
* @return the minimum dimensions needed
* to display this scrolling list
* @see java.awt.Component#getMinimumSize()
* @since JDK1.1
*/
public Dimension getMinimumSize() {
return minimumSize();
}
Deprecated: As of JDK version 1.1,
replaced by getMinimumSize()
.
/**
* @deprecated As of JDK version 1.1,
* replaced by <code>getMinimumSize()</code>.
*/
@Deprecated
public Dimension minimumSize() {
synchronized (getTreeLock()) {
return (rows > 0) ? minimumSize(rows) : super.minimumSize();
}
}
Adds the specified item listener to receive item events from
this list. Item events are sent in response to user input, but not
in response to calls to select
or deselect
.
If listener l
is null
,
no exception is thrown and no action is performed.
Refer to AWT Threading Issues for details on AWT's threading model.
Params: - l – the item listener
See Also: Since: JDK1.1
/**
* Adds the specified item listener to receive item events from
* this list. Item events are sent in response to user input, but not
* in response to calls to <code>select</code> or <code>deselect</code>.
* If listener <code>l</code> is <code>null</code>,
* no exception is thrown and no action is performed.
* <p>Refer to <a href="doc-files/AWTThreadIssues.html#ListenersThreads"
* >AWT Threading Issues</a> for details on AWT's threading model.
*
* @param l the item listener
* @see #removeItemListener
* @see #getItemListeners
* @see #select
* @see #deselect
* @see java.awt.event.ItemEvent
* @see java.awt.event.ItemListener
* @since JDK1.1
*/
public synchronized void addItemListener(ItemListener l) {
if (l == null) {
return;
}
itemListener = AWTEventMulticaster.add(itemListener, l);
newEventsOnly = true;
}
Removes the specified item listener so that it no longer
receives item events from this list.
If listener l
is null
,
no exception is thrown and no action is performed.
Refer to AWT Threading Issues for details on AWT's threading model.
Params: - l – the item listener
See Also: Since: JDK1.1
/**
* Removes the specified item listener so that it no longer
* receives item events from this list.
* If listener <code>l</code> is <code>null</code>,
* no exception is thrown and no action is performed.
* <p>Refer to <a href="doc-files/AWTThreadIssues.html#ListenersThreads"
* >AWT Threading Issues</a> for details on AWT's threading model.
*
* @param l the item listener
* @see #addItemListener
* @see #getItemListeners
* @see java.awt.event.ItemEvent
* @see java.awt.event.ItemListener
* @since JDK1.1
*/
public synchronized void removeItemListener(ItemListener l) {
if (l == null) {
return;
}
itemListener = AWTEventMulticaster.remove(itemListener, l);
}
Returns an array of all the item listeners
registered on this list.
See Also: Returns: all of this list's ItemListener
s
or an empty array if no item
listeners are currently registered Since: 1.4
/**
* Returns an array of all the item listeners
* registered on this list.
*
* @return all of this list's <code>ItemListener</code>s
* or an empty array if no item
* listeners are currently registered
*
* @see #addItemListener
* @see #removeItemListener
* @see java.awt.event.ItemEvent
* @see java.awt.event.ItemListener
* @since 1.4
*/
public synchronized ItemListener[] getItemListeners() {
return (ItemListener[])(getListeners(ItemListener.class));
}
Adds the specified action listener to receive action events from
this list. Action events occur when a user double-clicks
on a list item or types Enter when the list has the keyboard
focus.
If listener l
is null
,
no exception is thrown and no action is performed.
Refer to AWT Threading Issues for details on AWT's threading model.
Params: - l – the action listener
See Also: Since: JDK1.1
/**
* Adds the specified action listener to receive action events from
* this list. Action events occur when a user double-clicks
* on a list item or types Enter when the list has the keyboard
* focus.
* <p>
* If listener <code>l</code> is <code>null</code>,
* no exception is thrown and no action is performed.
* <p>Refer to <a href="doc-files/AWTThreadIssues.html#ListenersThreads"
* >AWT Threading Issues</a> for details on AWT's threading model.
*
* @param l the action listener
* @see #removeActionListener
* @see #getActionListeners
* @see java.awt.event.ActionEvent
* @see java.awt.event.ActionListener
* @since JDK1.1
*/
public synchronized void addActionListener(ActionListener l) {
if (l == null) {
return;
}
actionListener = AWTEventMulticaster.add(actionListener, l);
newEventsOnly = true;
}
Removes the specified action listener so that it no longer
receives action events from this list. Action events
occur when a user double-clicks on a list item.
If listener l
is null
,
no exception is thrown and no action is performed.
Refer to AWT Threading Issues for details on AWT's threading model.
Params: - l – the action listener
See Also: Since: JDK1.1
/**
* Removes the specified action listener so that it no longer
* receives action events from this list. Action events
* occur when a user double-clicks on a list item.
* If listener <code>l</code> is <code>null</code>,
* no exception is thrown and no action is performed.
* <p>Refer to <a href="doc-files/AWTThreadIssues.html#ListenersThreads"
* >AWT Threading Issues</a> for details on AWT's threading model.
*
* @param l the action listener
* @see #addActionListener
* @see #getActionListeners
* @see java.awt.event.ActionEvent
* @see java.awt.event.ActionListener
* @since JDK1.1
*/
public synchronized void removeActionListener(ActionListener l) {
if (l == null) {
return;
}
actionListener = AWTEventMulticaster.remove(actionListener, l);
}
Returns an array of all the action listeners
registered on this list.
See Also: Returns: all of this list's ActionListener
s
or an empty array if no action
listeners are currently registered Since: 1.4
/**
* Returns an array of all the action listeners
* registered on this list.
*
* @return all of this list's <code>ActionListener</code>s
* or an empty array if no action
* listeners are currently registered
*
* @see #addActionListener
* @see #removeActionListener
* @see java.awt.event.ActionEvent
* @see java.awt.event.ActionListener
* @since 1.4
*/
public synchronized ActionListener[] getActionListeners() {
return (ActionListener[])(getListeners(ActionListener.class));
}
Returns an array of all the objects currently registered
as FooListener
s
upon this List
.
FooListener
s are registered using the
addFooListener
method.
You can specify the listenerType
argument
with a class literal, such as
FooListener.class
.
For example, you can query a
List
l
for its item listeners with the following code:
ItemListener[] ils = (ItemListener[])(l.getListeners(ItemListener.class));
If no such listeners exist, this method returns an empty array.
Params: - listenerType – the type of listeners requested; this parameter
should specify an interface that descends from
java.util.EventListener
Throws: - ClassCastException – if
listenerType
doesn't specify a class or interface that implements
java.util.EventListener
See Also: Returns: an array of all objects registered as
FooListener
s on this list,
or an empty array if no such
listeners have been added Since: 1.3
/**
* Returns an array of all the objects currently registered
* as <code><em>Foo</em>Listener</code>s
* upon this <code>List</code>.
* <code><em>Foo</em>Listener</code>s are registered using the
* <code>add<em>Foo</em>Listener</code> method.
*
* <p>
* You can specify the <code>listenerType</code> argument
* with a class literal, such as
* <code><em>Foo</em>Listener.class</code>.
* For example, you can query a
* <code>List</code> <code>l</code>
* for its item listeners with the following code:
*
* <pre>ItemListener[] ils = (ItemListener[])(l.getListeners(ItemListener.class));</pre>
*
* If no such listeners exist, this method returns an empty array.
*
* @param listenerType the type of listeners requested; this parameter
* should specify an interface that descends from
* <code>java.util.EventListener</code>
* @return an array of all objects registered as
* <code><em>Foo</em>Listener</code>s on this list,
* or an empty array if no such
* listeners have been added
* @exception ClassCastException if <code>listenerType</code>
* doesn't specify a class or interface that implements
* <code>java.util.EventListener</code>
*
* @see #getItemListeners
* @since 1.3
*/
public <T extends EventListener> T[] getListeners(Class<T> listenerType) {
EventListener l = null;
if (listenerType == ActionListener.class) {
l = actionListener;
} else if (listenerType == ItemListener.class) {
l = itemListener;
} else {
return super.getListeners(listenerType);
}
return AWTEventMulticaster.getListeners(l, listenerType);
}
// REMIND: remove when filtering is done at lower level
boolean eventEnabled(AWTEvent e) {
switch(e.id) {
case ActionEvent.ACTION_PERFORMED:
if ((eventMask & AWTEvent.ACTION_EVENT_MASK) != 0 ||
actionListener != null) {
return true;
}
return false;
case ItemEvent.ITEM_STATE_CHANGED:
if ((eventMask & AWTEvent.ITEM_EVENT_MASK) != 0 ||
itemListener != null) {
return true;
}
return false;
default:
break;
}
return super.eventEnabled(e);
}
Processes events on this scrolling list. If an event is
an instance of ItemEvent
, it invokes the
processItemEvent
method. Else, if the
event is an instance of ActionEvent
,
it invokes processActionEvent
.
If the event is not an item event or an action event,
it invokes processEvent
on the superclass.
Note that if the event parameter is null
the behavior is unspecified and may result in an
exception.
Params: - e – the event
See Also: Since: JDK1.1
/**
* Processes events on this scrolling list. If an event is
* an instance of <code>ItemEvent</code>, it invokes the
* <code>processItemEvent</code> method. Else, if the
* event is an instance of <code>ActionEvent</code>,
* it invokes <code>processActionEvent</code>.
* If the event is not an item event or an action event,
* it invokes <code>processEvent</code> on the superclass.
* <p>Note that if the event parameter is <code>null</code>
* the behavior is unspecified and may result in an
* exception.
*
* @param e the event
* @see java.awt.event.ActionEvent
* @see java.awt.event.ItemEvent
* @see #processActionEvent
* @see #processItemEvent
* @since JDK1.1
*/
protected void processEvent(AWTEvent e) {
if (e instanceof ItemEvent) {
processItemEvent((ItemEvent)e);
return;
} else if (e instanceof ActionEvent) {
processActionEvent((ActionEvent)e);
return;
}
super.processEvent(e);
}
Processes item events occurring on this list by
dispatching them to any registered
ItemListener
objects.
This method is not called unless item events are
enabled for this component. Item events are enabled
when one of the following occurs:
- An
ItemListener
object is registered
via addItemListener
.
- Item events are enabled via
enableEvents
.
Note that if the event parameter is null
the behavior is unspecified and may result in an
exception.
Params: - e – the item event
See Also: Since: JDK1.1
/**
* Processes item events occurring on this list by
* dispatching them to any registered
* <code>ItemListener</code> objects.
* <p>
* This method is not called unless item events are
* enabled for this component. Item events are enabled
* when one of the following occurs:
* <p><ul>
* <li>An <code>ItemListener</code> object is registered
* via <code>addItemListener</code>.
* <li>Item events are enabled via <code>enableEvents</code>.
* </ul>
* <p>Note that if the event parameter is <code>null</code>
* the behavior is unspecified and may result in an
* exception.
*
* @param e the item event
* @see java.awt.event.ItemEvent
* @see java.awt.event.ItemListener
* @see #addItemListener
* @see java.awt.Component#enableEvents
* @since JDK1.1
*/
protected void processItemEvent(ItemEvent e) {
ItemListener listener = itemListener;
if (listener != null) {
listener.itemStateChanged(e);
}
}
Processes action events occurring on this component
by dispatching them to any registered
ActionListener
objects.
This method is not called unless action events are
enabled for this component. Action events are enabled
when one of the following occurs:
- An
ActionListener
object is registered
via addActionListener
.
- Action events are enabled via
enableEvents
.
Note that if the event parameter is null
the behavior is unspecified and may result in an
exception.
Params: - e – the action event
See Also: Since: JDK1.1
/**
* Processes action events occurring on this component
* by dispatching them to any registered
* <code>ActionListener</code> objects.
* <p>
* This method is not called unless action events are
* enabled for this component. Action events are enabled
* when one of the following occurs:
* <p><ul>
* <li>An <code>ActionListener</code> object is registered
* via <code>addActionListener</code>.
* <li>Action events are enabled via <code>enableEvents</code>.
* </ul>
* <p>Note that if the event parameter is <code>null</code>
* the behavior is unspecified and may result in an
* exception.
*
* @param e the action event
* @see java.awt.event.ActionEvent
* @see java.awt.event.ActionListener
* @see #addActionListener
* @see java.awt.Component#enableEvents
* @since JDK1.1
*/
protected void processActionEvent(ActionEvent e) {
ActionListener listener = actionListener;
if (listener != null) {
listener.actionPerformed(e);
}
}
Returns the parameter string representing the state of this
scrolling list. This string is useful for debugging.
Returns: the parameter string of this scrolling list
/**
* Returns the parameter string representing the state of this
* scrolling list. This string is useful for debugging.
* @return the parameter string of this scrolling list
*/
protected String paramString() {
return super.paramString() + ",selected=" + getSelectedItem();
}
Deprecated: As of JDK version 1.1,
Not for public use in the future.
This method is expected to be retained only as a package
private method.
/**
* @deprecated As of JDK version 1.1,
* Not for public use in the future.
* This method is expected to be retained only as a package
* private method.
*/
@Deprecated
public synchronized void delItems(int start, int end) {
for (int i = end; i >= start; i--) {
items.removeElementAt(i);
}
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
peer.delItems(start, end);
}
}
/*
* Serialization support. Since the value of the selected
* field isn't necessarily up to date, we sync it up with the
* peer before serializing.
*/
The List
component's
Serialized Data Version.
@serial
/**
* The <code>List</code> component's
* Serialized Data Version.
*
* @serial
*/
private int listSerializedDataVersion = 1;
Writes default serializable fields to stream. Writes
a list of serializable ItemListeners
and ActionListeners
as optional data.
The non-serializable listeners are detected and
no attempt is made to serialize them.
Params: - s – the
ObjectOutputStream
to write
See Also: @serialData null
terminated sequence of 0
or more pairs; the pair consists of a String
and an Object
; the String
indicates the type of object and is one of the
following:
itemListenerK
indicating an
ItemListener
object;
actionListenerK
indicating an
ActionListener
object
/**
* Writes default serializable fields to stream. Writes
* a list of serializable <code>ItemListeners</code>
* and <code>ActionListeners</code> as optional data.
* The non-serializable listeners are detected and
* no attempt is made to serialize them.
*
* @serialData <code>null</code> terminated sequence of 0
* or more pairs; the pair consists of a <code>String</code>
* and an <code>Object</code>; the <code>String</code>
* indicates the type of object and is one of the
* following:
* <code>itemListenerK</code> indicating an
* <code>ItemListener</code> object;
* <code>actionListenerK</code> indicating an
* <code>ActionListener</code> object
*
* @param s the <code>ObjectOutputStream</code> to write
* @see AWTEventMulticaster#save(ObjectOutputStream, String, EventListener)
* @see java.awt.Component#itemListenerK
* @see java.awt.Component#actionListenerK
* @see #readObject(ObjectInputStream)
*/
private void writeObject(ObjectOutputStream s)
throws IOException
{
synchronized (this) {
ListPeer peer = (ListPeer)this.peer;
if (peer != null) {
selected = peer.getSelectedIndexes();
}
}
s.defaultWriteObject();
AWTEventMulticaster.save(s, itemListenerK, itemListener);
AWTEventMulticaster.save(s, actionListenerK, actionListener);
s.writeObject(null);
}
Reads the ObjectInputStream
and if it
isn't null
adds a listener to receive
both item events and action events (as specified
by the key stored in the stream) fired by the
List
.
Unrecognized keys or values will be ignored.
Params: - s – the
ObjectInputStream
to write
Throws: - HeadlessException – if
GraphicsEnvironment.isHeadless
returns
true
See Also:
/**
* Reads the <code>ObjectInputStream</code> and if it
* isn't <code>null</code> adds a listener to receive
* both item events and action events (as specified
* by the key stored in the stream) fired by the
* <code>List</code>.
* Unrecognized keys or values will be ignored.
*
* @param s the <code>ObjectInputStream</code> to write
* @exception HeadlessException if
* <code>GraphicsEnvironment.isHeadless</code> returns
* <code>true</code>
* @see #removeItemListener(ItemListener)
* @see #addItemListener(ItemListener)
* @see java.awt.GraphicsEnvironment#isHeadless
* @see #writeObject(ObjectOutputStream)
*/
private void readObject(ObjectInputStream s)
throws ClassNotFoundException, IOException, HeadlessException
{
GraphicsEnvironment.checkHeadless();
s.defaultReadObject();
Object keyOrNull;
while(null != (keyOrNull = s.readObject())) {
String key = ((String)keyOrNull).intern();
if (itemListenerK == key)
addItemListener((ItemListener)(s.readObject()));
else if (actionListenerK == key)
addActionListener((ActionListener)(s.readObject()));
else // skip value for unrecognized key
s.readObject();
}
}
/////////////////
// Accessibility support
////////////////
Gets the AccessibleContext
associated with this
List
. For lists, the AccessibleContext
takes the form of an AccessibleAWTList
.
A new AccessibleAWTList
instance is created, if necessary.
Returns: an AccessibleAWTList
that serves as the
AccessibleContext
of this List
Since: 1.3
/**
* Gets the <code>AccessibleContext</code> associated with this
* <code>List</code>. For lists, the <code>AccessibleContext</code>
* takes the form of an <code>AccessibleAWTList</code>.
* A new <code>AccessibleAWTList</code> instance is created, if necessary.
*
* @return an <code>AccessibleAWTList</code> that serves as the
* <code>AccessibleContext</code> of this <code>List</code>
* @since 1.3
*/
public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) {
accessibleContext = new AccessibleAWTList();
}
return accessibleContext;
}
This class implements accessibility support for the
List
class. It provides an implementation of the
Java Accessibility API appropriate to list user-interface elements.
Since: 1.3
/**
* This class implements accessibility support for the
* <code>List</code> class. It provides an implementation of the
* Java Accessibility API appropriate to list user-interface elements.
* @since 1.3
*/
protected class AccessibleAWTList extends AccessibleAWTComponent
implements AccessibleSelection, ItemListener, ActionListener
{
/*
* JDK 1.3 serialVersionUID
*/
private static final long serialVersionUID = 7924617370136012829L;
public AccessibleAWTList() {
super();
List.this.addActionListener(this);
List.this.addItemListener(this);
}
public void actionPerformed(ActionEvent event) {
}
public void itemStateChanged(ItemEvent event) {
}
Get the state set of this object.
See Also: Returns: an instance of AccessibleState containing the current state
of the object
/**
* Get the state set of this object.
*
* @return an instance of AccessibleState containing the current state
* of the object
* @see AccessibleState
*/
public AccessibleStateSet getAccessibleStateSet() {
AccessibleStateSet states = super.getAccessibleStateSet();
if (List.this.isMultipleMode()) {
states.add(AccessibleState.MULTISELECTABLE);
}
return states;
}
Get the role of this object.
See Also: Returns: an instance of AccessibleRole describing the role of the
object
/**
* Get the role of this object.
*
* @return an instance of AccessibleRole describing the role of the
* object
* @see AccessibleRole
*/
public AccessibleRole getAccessibleRole() {
return AccessibleRole.LIST;
}
Returns the Accessible child contained at the local coordinate
Point, if one exists.
Returns: the Accessible at the specified location, if it exists
/**
* Returns the Accessible child contained at the local coordinate
* Point, if one exists.
*
* @return the Accessible at the specified location, if it exists
*/
public Accessible getAccessibleAt(Point p) {
return null; // fredxFIXME Not implemented yet
}
Returns the number of accessible children in the object. If all
of the children of this object implement Accessible, than this
method should return the number of children of this object.
Returns: the number of accessible children in the object.
/**
* Returns the number of accessible children in the object. If all
* of the children of this object implement Accessible, than this
* method should return the number of children of this object.
*
* @return the number of accessible children in the object.
*/
public int getAccessibleChildrenCount() {
return List.this.getItemCount();
}
Return the nth Accessible child of the object.
Params: - i – zero-based index of child
Returns: the nth Accessible child of the object
/**
* Return the nth Accessible child of the object.
*
* @param i zero-based index of child
* @return the nth Accessible child of the object
*/
public Accessible getAccessibleChild(int i) {
synchronized(List.this) {
if (i >= List.this.getItemCount()) {
return null;
} else {
return new AccessibleAWTListChild(List.this, i);
}
}
}
Get the AccessibleSelection associated with this object. In the
implementation of the Java Accessibility API for this class,
return this object, which is responsible for implementing the
AccessibleSelection interface on behalf of itself.
Returns: this object
/**
* Get the AccessibleSelection associated with this object. In the
* implementation of the Java Accessibility API for this class,
* return this object, which is responsible for implementing the
* AccessibleSelection interface on behalf of itself.
*
* @return this object
*/
public AccessibleSelection getAccessibleSelection() {
return this;
}
// AccessibleSelection methods
Returns the number of items currently selected.
If no items are selected, the return value will be 0.
Returns: the number of items currently selected.
/**
* Returns the number of items currently selected.
* If no items are selected, the return value will be 0.
*
* @return the number of items currently selected.
*/
public int getAccessibleSelectionCount() {
return List.this.getSelectedIndexes().length;
}
Returns an Accessible representing the specified selected item
in the object. If there isn't a selection, or there are
fewer items selected than the integer passed in, the return
value will be null.
Params: - i – the zero-based index of selected items
Returns: an Accessible containing the selected item
/**
* Returns an Accessible representing the specified selected item
* in the object. If there isn't a selection, or there are
* fewer items selected than the integer passed in, the return
* value will be null.
*
* @param i the zero-based index of selected items
* @return an Accessible containing the selected item
*/
public Accessible getAccessibleSelection(int i) {
synchronized(List.this) {
int len = getAccessibleSelectionCount();
if (i < 0 || i >= len) {
return null;
} else {
return getAccessibleChild(List.this.getSelectedIndexes()[i]);
}
}
}
Returns true if the current child of this object is selected.
Params: - i – the zero-based index of the child in this Accessible
object.
See Also:
/**
* Returns true if the current child of this object is selected.
*
* @param i the zero-based index of the child in this Accessible
* object.
* @see AccessibleContext#getAccessibleChild
*/
public boolean isAccessibleChildSelected(int i) {
return List.this.isIndexSelected(i);
}
Adds the specified selected item in the object to the object's
selection. If the object supports multiple selections,
the specified item is added to any existing selection, otherwise
it replaces any existing selection in the object. If the
specified item is already selected, this method has no effect.
Params: - i – the zero-based index of selectable items
/**
* Adds the specified selected item in the object to the object's
* selection. If the object supports multiple selections,
* the specified item is added to any existing selection, otherwise
* it replaces any existing selection in the object. If the
* specified item is already selected, this method has no effect.
*
* @param i the zero-based index of selectable items
*/
public void addAccessibleSelection(int i) {
List.this.select(i);
}
Removes the specified selected item in the object from the object's
selection. If the specified item isn't currently selected, this
method has no effect.
Params: - i – the zero-based index of selectable items
/**
* Removes the specified selected item in the object from the object's
* selection. If the specified item isn't currently selected, this
* method has no effect.
*
* @param i the zero-based index of selectable items
*/
public void removeAccessibleSelection(int i) {
List.this.deselect(i);
}
Clears the selection in the object, so that nothing in the
object is selected.
/**
* Clears the selection in the object, so that nothing in the
* object is selected.
*/
public void clearAccessibleSelection() {
synchronized(List.this) {
int selectedIndexes[] = List.this.getSelectedIndexes();
if (selectedIndexes == null)
return;
for (int i = selectedIndexes.length - 1; i >= 0; i--) {
List.this.deselect(selectedIndexes[i]);
}
}
}
Causes every selected item in the object to be selected
if the object supports multiple selections.
/**
* Causes every selected item in the object to be selected
* if the object supports multiple selections.
*/
public void selectAllAccessibleSelection() {
synchronized(List.this) {
for (int i = List.this.getItemCount() - 1; i >= 0; i--) {
List.this.select(i);
}
}
}
This class implements accessibility support for
List children. It provides an implementation of the
Java Accessibility API appropriate to list children
user-interface elements.
Since: 1.3
/**
* This class implements accessibility support for
* List children. It provides an implementation of the
* Java Accessibility API appropriate to list children
* user-interface elements.
* @since 1.3
*/
protected class AccessibleAWTListChild extends AccessibleAWTComponent
implements Accessible
{
/*
* JDK 1.3 serialVersionUID
*/
private static final long serialVersionUID = 4412022926028300317L;
// [[[FIXME]]] need to finish implementing this!!!
private List parent;
private int indexInParent;
public AccessibleAWTListChild(List parent, int indexInParent) {
this.parent = parent;
this.setAccessibleParent(parent);
this.indexInParent = indexInParent;
}
//
// required Accessible methods
//
Gets the AccessibleContext for this object. In the
implementation of the Java Accessibility API for this class,
return this object, which acts as its own AccessibleContext.
Returns: this object
/**
* Gets the AccessibleContext for this object. In the
* implementation of the Java Accessibility API for this class,
* return this object, which acts as its own AccessibleContext.
*
* @return this object
*/
public AccessibleContext getAccessibleContext() {
return this;
}
//
// required AccessibleContext methods
//
Get the role of this object.
See Also: Returns: an instance of AccessibleRole describing the role of
the object
/**
* Get the role of this object.
*
* @return an instance of AccessibleRole describing the role of
* the object
* @see AccessibleRole
*/
public AccessibleRole getAccessibleRole() {
return AccessibleRole.LIST_ITEM;
}
Get the state set of this object. The AccessibleStateSet of an
object is composed of a set of unique AccessibleState's. A
change in the AccessibleStateSet of an object will cause a
PropertyChangeEvent to be fired for the
ACCESSIBLE_STATE_PROPERTY property.
See Also: Returns: an instance of AccessibleStateSet containing the
current state set of the object
/**
* Get the state set of this object. The AccessibleStateSet of an
* object is composed of a set of unique AccessibleState's. A
* change in the AccessibleStateSet of an object will cause a
* PropertyChangeEvent to be fired for the
* ACCESSIBLE_STATE_PROPERTY property.
*
* @return an instance of AccessibleStateSet containing the
* current state set of the object
* @see AccessibleStateSet
* @see AccessibleState
* @see #addPropertyChangeListener
*/
public AccessibleStateSet getAccessibleStateSet() {
AccessibleStateSet states = super.getAccessibleStateSet();
if (parent.isIndexSelected(indexInParent)) {
states.add(AccessibleState.SELECTED);
}
return states;
}
Gets the locale of the component. If the component does not
have a locale, then the locale of its parent is returned.
Throws: - IllegalComponentStateException –
If the Component does not have its own locale and has not yet
been added to a containment hierarchy such that the locale can
be determined from the containing parent.
Returns: This component's locale. If this component does not have
a locale, the locale of its parent is returned.
/**
* Gets the locale of the component. If the component does not
* have a locale, then the locale of its parent is returned.
*
* @return This component's locale. If this component does not have
* a locale, the locale of its parent is returned.
*
* @exception IllegalComponentStateException
* If the Component does not have its own locale and has not yet
* been added to a containment hierarchy such that the locale can
* be determined from the containing parent.
*/
public Locale getLocale() {
return parent.getLocale();
}
Get the 0-based index of this object in its accessible parent.
See Also: Returns: the 0-based index of this object in its parent; -1 if
this object does not have an accessible parent.
/**
* Get the 0-based index of this object in its accessible parent.
*
* @return the 0-based index of this object in its parent; -1 if
* this object does not have an accessible parent.
*
* @see #getAccessibleParent
* @see #getAccessibleChildrenCount
* @see #getAccessibleChild
*/
public int getAccessibleIndexInParent() {
return indexInParent;
}
Returns the number of accessible children of the object.
Returns: the number of accessible children of the object.
/**
* Returns the number of accessible children of the object.
*
* @return the number of accessible children of the object.
*/
public int getAccessibleChildrenCount() {
return 0; // list elements can't have children
}
Return the specified Accessible child of the object. The
Accessible children of an Accessible object are zero-based,
so the first child of an Accessible child is at index 0, the
second child is at index 1, and so on.
Params: - i – zero-based index of child
See Also: Returns: the Accessible child of the object
/**
* Return the specified Accessible child of the object. The
* Accessible children of an Accessible object are zero-based,
* so the first child of an Accessible child is at index 0, the
* second child is at index 1, and so on.
*
* @param i zero-based index of child
* @return the Accessible child of the object
* @see #getAccessibleChildrenCount
*/
public Accessible getAccessibleChild(int i) {
return null; // list elements can't have children
}
//
// AccessibleComponent delegatation to parent List
//
Get the background color of this object.
See Also: Returns: the background color, if supported, of the object;
otherwise, null
/**
* Get the background color of this object.
*
* @return the background color, if supported, of the object;
* otherwise, null
* @see #setBackground
*/
public Color getBackground() {
return parent.getBackground();
}
Set the background color of this object.
Params: - c – the new Color for the background
See Also:
/**
* Set the background color of this object.
*
* @param c the new Color for the background
* @see #setBackground
*/
public void setBackground(Color c) {
parent.setBackground(c);
}
Get the foreground color of this object.
See Also: Returns: the foreground color, if supported, of the object;
otherwise, null
/**
* Get the foreground color of this object.
*
* @return the foreground color, if supported, of the object;
* otherwise, null
* @see #setForeground
*/
public Color getForeground() {
return parent.getForeground();
}
Set the foreground color of this object.
Params: - c – the new Color for the foreground
See Also:
/**
* Set the foreground color of this object.
*
* @param c the new Color for the foreground
* @see #getForeground
*/
public void setForeground(Color c) {
parent.setForeground(c);
}
Get the Cursor of this object.
See Also: Returns: the Cursor, if supported, of the object; otherwise, null
/**
* Get the Cursor of this object.
*
* @return the Cursor, if supported, of the object; otherwise, null
* @see #setCursor
*/
public Cursor getCursor() {
return parent.getCursor();
}
Set the Cursor of this object.
The method may have no visual effect if the Java platform
implementation and/or the native system do not support
changing the mouse cursor shape.
Params: - cursor – the new Cursor for the object
See Also:
/**
* Set the Cursor of this object.
* <p>
* The method may have no visual effect if the Java platform
* implementation and/or the native system do not support
* changing the mouse cursor shape.
* @param cursor the new Cursor for the object
* @see #getCursor
*/
public void setCursor(Cursor cursor) {
parent.setCursor(cursor);
}
Get the Font of this object.
See Also: Returns: the Font,if supported, for the object; otherwise, null
/**
* Get the Font of this object.
*
* @return the Font,if supported, for the object; otherwise, null
* @see #setFont
*/
public Font getFont() {
return parent.getFont();
}
Set the Font of this object.
Params: - f – the new Font for the object
See Also:
/**
* Set the Font of this object.
*
* @param f the new Font for the object
* @see #getFont
*/
public void setFont(Font f) {
parent.setFont(f);
}
Get the FontMetrics of this object.
Params: - f – the Font
See Also: Returns: the FontMetrics, if supported, the object; otherwise, null
/**
* Get the FontMetrics of this object.
*
* @param f the Font
* @return the FontMetrics, if supported, the object; otherwise, null
* @see #getFont
*/
public FontMetrics getFontMetrics(Font f) {
return parent.getFontMetrics(f);
}
Determine if the object is enabled. Objects that are enabled
will also have the AccessibleState.ENABLED state set in their
AccessibleStateSet.
See Also: Returns: true if object is enabled; otherwise, false
/**
* Determine if the object is enabled. Objects that are enabled
* will also have the AccessibleState.ENABLED state set in their
* AccessibleStateSet.
*
* @return true if object is enabled; otherwise, false
* @see #setEnabled
* @see AccessibleContext#getAccessibleStateSet
* @see AccessibleState#ENABLED
* @see AccessibleStateSet
*/
public boolean isEnabled() {
return parent.isEnabled();
}
Set the enabled state of the object.
Params: - b – if true, enables this object; otherwise, disables it
See Also:
/**
* Set the enabled state of the object.
*
* @param b if true, enables this object; otherwise, disables it
* @see #isEnabled
*/
public void setEnabled(boolean b) {
parent.setEnabled(b);
}
Determine if the object is visible. Note: this means that the
object intends to be visible; however, it may not be
showing on the screen because one of the objects that this object
is contained by is currently not visible. To determine if an
object is showing on the screen, use isShowing().
Objects that are visible will also have the
AccessibleState.VISIBLE state set in their AccessibleStateSet.
See Also: Returns: true if object is visible; otherwise, false
/**
* Determine if the object is visible. Note: this means that the
* object intends to be visible; however, it may not be
* showing on the screen because one of the objects that this object
* is contained by is currently not visible. To determine if an
* object is showing on the screen, use isShowing().
* <p>Objects that are visible will also have the
* AccessibleState.VISIBLE state set in their AccessibleStateSet.
*
* @return true if object is visible; otherwise, false
* @see #setVisible
* @see AccessibleContext#getAccessibleStateSet
* @see AccessibleState#VISIBLE
* @see AccessibleStateSet
*/
public boolean isVisible() {
// [[[FIXME]]] needs to work like isShowing() below
return false;
// return parent.isVisible();
}
Set the visible state of the object.
Params: - b – if true, shows this object; otherwise, hides it
See Also:
/**
* Set the visible state of the object.
*
* @param b if true, shows this object; otherwise, hides it
* @see #isVisible
*/
public void setVisible(boolean b) {
// [[[FIXME]]] should scroll to item to make it show!
parent.setVisible(b);
}
Determine if the object is showing. This is determined by
checking the visibility of the object and visibility of the
object ancestors.
Note: this will return true even if the object is obscured
by another (for example, it to object is underneath a menu
that was pulled down).
Returns: true if object is showing; otherwise, false
/**
* Determine if the object is showing. This is determined by
* checking the visibility of the object and visibility of the
* object ancestors.
* Note: this will return true even if the object is obscured
* by another (for example, it to object is underneath a menu
* that was pulled down).
*
* @return true if object is showing; otherwise, false
*/
public boolean isShowing() {
// [[[FIXME]]] only if it's showing!!!
return false;
// return parent.isShowing();
}
Checks whether the specified point is within this object's
bounds, where the point's x and y coordinates are defined to
be relative to the coordinate system of the object.
Params: - p – the Point relative to the coordinate system of the
object
See Also: Returns: true if object contains Point; otherwise false
/**
* Checks whether the specified point is within this object's
* bounds, where the point's x and y coordinates are defined to
* be relative to the coordinate system of the object.
*
* @param p the Point relative to the coordinate system of the
* object
* @return true if object contains Point; otherwise false
* @see #getBounds
*/
public boolean contains(Point p) {
// [[[FIXME]]] - only if p is within the list element!!!
return false;
// return parent.contains(p);
}
Returns the location of the object on the screen.
See Also: Returns: location of object on screen; null if this object
is not on the screen
/**
* Returns the location of the object on the screen.
*
* @return location of object on screen; null if this object
* is not on the screen
* @see #getBounds
* @see #getLocation
*/
public Point getLocationOnScreen() {
// [[[FIXME]]] sigh
return null;
}
Gets the location of the object relative to the parent in the
form of a point specifying the object's top-left corner in the
screen's coordinate space.
See Also: Returns: An instance of Point representing the top-left corner of
the objects's bounds in the coordinate space of the screen; null
if this object or its parent are not on the screen
/**
* Gets the location of the object relative to the parent in the
* form of a point specifying the object's top-left corner in the
* screen's coordinate space.
*
* @return An instance of Point representing the top-left corner of
* the objects's bounds in the coordinate space of the screen; null
* if this object or its parent are not on the screen
* @see #getBounds
* @see #getLocationOnScreen
*/
public Point getLocation() {
// [[[FIXME]]]
return null;
}
Sets the location of the object relative to the parent.
Params: - p – the new position for the top-left corner
See Also:
/**
* Sets the location of the object relative to the parent.
* @param p the new position for the top-left corner
* @see #getLocation
*/
public void setLocation(Point p) {
// [[[FIXME]]] maybe - can simply return as no-op
}
Gets the bounds of this object in the form of a Rectangle object.
The bounds specify this object's width, height, and location
relative to its parent.
See Also: Returns: A rectangle indicating this component's bounds; null if
this object is not on the screen.
/**
* Gets the bounds of this object in the form of a Rectangle object.
* The bounds specify this object's width, height, and location
* relative to its parent.
*
* @return A rectangle indicating this component's bounds; null if
* this object is not on the screen.
* @see #contains
*/
public Rectangle getBounds() {
// [[[FIXME]]]
return null;
}
Sets the bounds of this object in the form of a Rectangle
object. The bounds specify this object's width, height, and
location relative to its parent.
Params: - r – rectangle indicating this component's bounds
See Also:
/**
* Sets the bounds of this object in the form of a Rectangle
* object. The bounds specify this object's width, height, and
* location relative to its parent.
*
* @param r rectangle indicating this component's bounds
* @see #getBounds
*/
public void setBounds(Rectangle r) {
// no-op; not supported
}
Returns the size of this object in the form of a Dimension
object. The height field of the Dimension object contains this
objects's height, and the width field of the Dimension object
contains this object's width.
See Also: Returns: A Dimension object that indicates the size of this
component; null if this object is not on the screen
/**
* Returns the size of this object in the form of a Dimension
* object. The height field of the Dimension object contains this
* objects's height, and the width field of the Dimension object
* contains this object's width.
*
* @return A Dimension object that indicates the size of this
* component; null if this object is not on the screen
* @see #setSize
*/
public Dimension getSize() {
// [[[FIXME]]]
return null;
}
Resizes this object so that it has width and height.
Params: - d – - The dimension specifying the new size of the object.
See Also:
/**
* Resizes this object so that it has width and height.
*
* @param d - The dimension specifying the new size of the object.
* @see #getSize
*/
public void setSize(Dimension d) {
// not supported; no-op
}
Returns the Accessible
child, if one exists,
contained at the local coordinate Point
.
Params: - p – the point relative to the coordinate system of this
object
Returns: the Accessible
, if it exists,
at the specified location; otherwise null
/**
* Returns the <code>Accessible</code> child, if one exists,
* contained at the local coordinate <code>Point</code>.
*
* @param p the point relative to the coordinate system of this
* object
* @return the <code>Accessible</code>, if it exists,
* at the specified location; otherwise <code>null</code>
*/
public Accessible getAccessibleAt(Point p) {
return null; // object cannot have children!
}
Returns whether this object can accept focus or not. Objects
that can accept focus will also have the
AccessibleState.FOCUSABLE
state set in their
AccessibleStateSet
.
See Also: Returns: true if object can accept focus; otherwise false
/**
* Returns whether this object can accept focus or not. Objects
* that can accept focus will also have the
* <code>AccessibleState.FOCUSABLE</code> state set in their
* <code>AccessibleStateSet</code>.
*
* @return true if object can accept focus; otherwise false
* @see AccessibleContext#getAccessibleStateSet
* @see AccessibleState#FOCUSABLE
* @see AccessibleState#FOCUSED
* @see AccessibleStateSet
*/
public boolean isFocusTraversable() {
return false; // list element cannot receive focus!
}
Requests focus for this object. If this object cannot accept
focus, nothing will happen. Otherwise, the object will attempt
to take focus.
See Also: - isFocusTraversable
/**
* Requests focus for this object. If this object cannot accept
* focus, nothing will happen. Otherwise, the object will attempt
* to take focus.
* @see #isFocusTraversable
*/
public void requestFocus() {
// nothing to do; a no-op
}
Adds the specified focus listener to receive focus events from
this component.
Params: - l – the focus listener
See Also:
/**
* Adds the specified focus listener to receive focus events from
* this component.
*
* @param l the focus listener
* @see #removeFocusListener
*/
public void addFocusListener(FocusListener l) {
// nothing to do; a no-op
}
Removes the specified focus listener so it no longer receives
focus events from this component.
Params: - l – the focus listener
See Also:
/**
* Removes the specified focus listener so it no longer receives
* focus events from this component.
*
* @param l the focus listener
* @see #addFocusListener
*/
public void removeFocusListener(FocusListener l) {
// nothing to do; a no-op
}
} // inner class AccessibleAWTListChild
} // inner class AccessibleAWTList
}