MenuContainer.java: Fixed typo.
* java/awt/MenuContainer.java: Fixed typo. * Makefile.in: Rebuilt. * Makefile.am (awt_java_source_files): Added SystemColor.java. * java/awt/SystemColor.java: New file. * java/awt/Color.java (rgba): Now package-private. * java/awt/event/InputEvent.java (isAltGraphDown): New method. * java/awt/event/ContainerEvent.java (getContainer): Renamed from getComponent. * java/awt/MenuItem.java (addNotify): New method. (MenuItem(String,MenuShortcut)): New constructor. (setLabel): Notify peer of change. (setEnabled): Likewise. * java/awt/GridLayout.java (toString): New method. * java/awt/FlowLayout.java (LEADING, TRAILING): New constants. (FlowLayout): Check for LEADING and TRAILING. (setAlignment): Likewise. (layoutContainer): Handle component orientation. * java/awt/Component.java (orientatin): New field. (setComponentOrientation): Wrote. (getComponentOrientation): Wrote. * java/awt/Event.java (Event): Implements Serializable. (consumed): New field for serialization. * java/awt/Dimension.java (Dimension): Implements Serializable. * java/awt/Cursor.java (Cursor): Implements Serializable. * java/awt/Container.java (Container): No longer abstract. * java/awt/Choice.java: Wrote. * java/awt/Checkbox.java: Wrote. * java/awt/ItemSelectable.java: Documented. * java/awt/CheckboxGroup.java: Wrote. * java/awt/CardLayout.java (layoutContainer): Directly use fields in other classes. (getSize): Likewise. From-SVN: r38486
This commit is contained in:
parent
83050e0d93
commit
5472d1951a
21 changed files with 851 additions and 74 deletions
|
@ -7,9 +7,269 @@ Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
|
|||
details. */
|
||||
|
||||
package java.awt;
|
||||
import java.awt.event.*;
|
||||
import java.awt.peer.ChoicePeer;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/* A very incomplete placeholder. */
|
||||
|
||||
public class Choice extends Component
|
||||
/** This component lets the user choose an item from a list of
|
||||
* Strings.
|
||||
* @author Tom Tromey <tromey@redhat.com>
|
||||
* @date December 25, 2000
|
||||
*/
|
||||
public class Choice extends Component implements ItemSelectable
|
||||
{
|
||||
/** Create a new Choice object. */
|
||||
public Choice ()
|
||||
{
|
||||
items = new ArrayList ();
|
||||
selected = -1;
|
||||
}
|
||||
|
||||
/** Add a new item to this Choice object. If the item is the first
|
||||
* item on the list, then it is selected.
|
||||
* @param item The new item; must be non-null.
|
||||
*/
|
||||
public synchronized void add (String item)
|
||||
{
|
||||
if (item == null)
|
||||
throw new IllegalArgumentException ("item must be non-null");
|
||||
items.add (item);
|
||||
|
||||
int i = items.size () - 1;
|
||||
if (peer != null)
|
||||
{
|
||||
ChoicePeer cp = (ChoicePeer) peer;
|
||||
cp.add (item, i);
|
||||
}
|
||||
|
||||
if (i == 0)
|
||||
select (0);
|
||||
}
|
||||
|
||||
/** Add a new item to this Choice object. This is the same as the
|
||||
* add method. */
|
||||
public void addItem (String item)
|
||||
{
|
||||
add (item);
|
||||
}
|
||||
|
||||
/** Add a listener for item events.
|
||||
* @param listener The listener to add.
|
||||
*/
|
||||
public synchronized void addItemListener (ItemListener listener)
|
||||
{
|
||||
listeners = AWTEventMulticaster.add (listeners, listener);
|
||||
}
|
||||
|
||||
/** This creates the component's peer. */
|
||||
public void addNotify ()
|
||||
{
|
||||
if (peer == null)
|
||||
peer = getToolkit ().createChoice (this);
|
||||
}
|
||||
|
||||
/** Returns number of items.
|
||||
* @deprecated
|
||||
*/
|
||||
public int countItems ()
|
||||
{
|
||||
return getItemCount ();
|
||||
}
|
||||
|
||||
/** Returns an item from this choice.
|
||||
* @param index Index of the item. Indices start at zero.
|
||||
*/
|
||||
public String getItem (int index)
|
||||
{
|
||||
return (String) items.get (index);
|
||||
}
|
||||
|
||||
/** Returns number of items in Choice. */
|
||||
public int getItemCount ()
|
||||
{
|
||||
return items.size ();
|
||||
}
|
||||
|
||||
/** Returns index of selected item; -1 if no item is selected. */
|
||||
public int getSelectedIndex ()
|
||||
{
|
||||
return selected;
|
||||
}
|
||||
|
||||
/** Returns currently selected item; null if no item is selected. */
|
||||
public synchronized String getSelectedItem ()
|
||||
{
|
||||
return selected == -1 ? null : (String) items.get (selected);
|
||||
}
|
||||
|
||||
/** Returns the currently selected item. */
|
||||
public synchronized Object[] getSelectedObjects ()
|
||||
{
|
||||
// The JCL says this can return null but that breaks the contract
|
||||
// for ItemSelectable.
|
||||
Object[] r;
|
||||
if (selected != -1)
|
||||
{
|
||||
r = new Object[1];
|
||||
r[0] = items.get (selected);
|
||||
}
|
||||
else
|
||||
r = new Object[0];
|
||||
return r;
|
||||
}
|
||||
|
||||
/** Inserts an item into this Choice. Existing items are shifted
|
||||
* upwards. If the new item is the only item, then it is selected.
|
||||
* If the currently selected item is shifted, then the first item is
|
||||
* selected. If the currently selected item is not shifted, then it
|
||||
* remains selected.
|
||||
* @param item The new item
|
||||
* @param index The position at which to insert it.
|
||||
*/
|
||||
public synchronized void insert (String item, int index)
|
||||
{
|
||||
if (index > items.size ())
|
||||
index = items.size ();
|
||||
items.add (index, item);
|
||||
|
||||
if (peer != null)
|
||||
{
|
||||
ChoicePeer cp = (ChoicePeer) peer;
|
||||
cp.add (item, index);
|
||||
}
|
||||
|
||||
if (items.size () == 1 || selected >= index)
|
||||
select (0);
|
||||
}
|
||||
|
||||
/** Generates a String representation of this Choice's state. */
|
||||
protected String paramString ()
|
||||
{
|
||||
return ("Choice["
|
||||
+ "selected=" + selected
|
||||
+ "]");
|
||||
}
|
||||
|
||||
/** Process an event for this Choice
|
||||
* @param event The event the process.
|
||||
*/
|
||||
protected void processEvent (AWTEvent event)
|
||||
{
|
||||
if (event instanceof ItemEvent)
|
||||
processItemEvent ((ItemEvent) event);
|
||||
else
|
||||
super.processEvent (event);
|
||||
}
|
||||
|
||||
/** Process an item event for this Choice.
|
||||
* @param event The ItemEvent to process
|
||||
*/
|
||||
protected void processItemEvent (ItemEvent event)
|
||||
{
|
||||
if (listeners != null)
|
||||
listeners.itemStateChanged (event);
|
||||
}
|
||||
|
||||
/** Remove an item from this Choice. If several matches exist, the
|
||||
* first one is removed. If the removed item is selected, the the
|
||||
* first item is selected.
|
||||
* @param item The item string.
|
||||
*/
|
||||
public synchronized void remove (String item)
|
||||
{
|
||||
int size = items.size ();
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
if (item.equals (items.get (i)))
|
||||
{
|
||||
remove (i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException ("item \"" + item + "\" not in Choice");
|
||||
}
|
||||
|
||||
/** Remove an item from this Choice. If the removed item is
|
||||
* selected, the the first item is selected.
|
||||
* @param index Index of the item to remove
|
||||
*/
|
||||
public synchronized void remove (int index)
|
||||
{
|
||||
items.remove (index);
|
||||
|
||||
if (peer != null)
|
||||
{
|
||||
ChoicePeer cp = (ChoicePeer) peer;
|
||||
cp.remove (index);
|
||||
}
|
||||
|
||||
if (index == selected)
|
||||
select (0);
|
||||
else if (selected > index)
|
||||
--selected;
|
||||
}
|
||||
|
||||
/** Remove all items from this choice. */
|
||||
public synchronized void removeAll ()
|
||||
{
|
||||
int oldsize = items.size ();
|
||||
items.clear ();
|
||||
selected = -1;
|
||||
|
||||
if (peer != null)
|
||||
{
|
||||
ChoicePeer cp = (ChoicePeer) peer;
|
||||
for (int i = 0; i < oldsize; ++i)
|
||||
{
|
||||
// Always remove item 0.
|
||||
cp.remove (0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Remove an item listener.
|
||||
* @param listener Item listener to remove.
|
||||
*/
|
||||
public synchronized void removeItemListener (ItemListener listener)
|
||||
{
|
||||
listeners = AWTEventMulticaster.remove (listeners, listener);
|
||||
}
|
||||
|
||||
/** Select an item in this Choice.
|
||||
* @param item Name of the item to select.
|
||||
*/
|
||||
public synchronized void select (String item)
|
||||
{
|
||||
int size = items.size ();
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
if (item.equals (items.get (i)))
|
||||
{
|
||||
select (i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Select an item in this choice.
|
||||
* @param index Index of item to select.
|
||||
*/
|
||||
public synchronized void select (int index)
|
||||
{
|
||||
if (index < 0 || index > items.size ())
|
||||
throw new IllegalArgumentException ("index out of range");
|
||||
selected = index;
|
||||
if (peer != null)
|
||||
{
|
||||
ChoicePeer cp = (ChoicePeer) peer;
|
||||
cp.select (index);
|
||||
}
|
||||
}
|
||||
|
||||
private ItemListener listeners;
|
||||
|
||||
// List of items.
|
||||
ArrayList items;
|
||||
// Index of selected item.
|
||||
int selected;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue