Choice.java (add): Leave posting of ItemEvents to peer.

2004-01-05  Fernando Nasser  <fnasser@redhat.com>

        * java/awt/Choice.java (add): Leave posting of ItemEvents to peer.
        (insert): Ditto.
        (remove): Ditto.  Also, Check for valid argument.
        (removeAll): Use peer interface method.
        * gnu/java/awt/peer/gtk/GtkChoicePeer.java (nativeAdd): New name for
        native add function.
        (nativeRemove): New name for native remove function.
        (getHistory): New native function.
        (constructor): Generate ItemEvent.
        (add): Ditto, if selection is changed.
        (remove): Ditto, ditto.
        (removeAll): Add implementation.
        (handleEvent): Remove.  Dead code.
        (choicePostItemEvent): Add comment.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkChoicePeer.c
        (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_append): Add comments.
        (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_add): Rename to...
        (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_nativeAdd): New name.  Add
        comments and fix condition to change selection.
        (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_remove): Rename to...
        (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_nativeRemove): New name.  Add
        remove all capability.
        (Java_gnu_java_awt_peer_gtk_GtkChoicePeer_getHistory): New function.
        (item_activate): Add cast to remove compiler warning.

From-SVN: r75443
This commit is contained in:
Fernando Nasser 2004-01-05 21:18:06 +00:00 committed by Fernando Nasser
parent b17fc9eb25
commit b7a9b4af03
4 changed files with 157 additions and 75 deletions

View file

@ -169,17 +169,6 @@ add(String item)
ChoicePeer cp = (ChoicePeer) peer;
cp.add (item, i);
}
if (i == 0)
{
selectedIndex = 0;
// We must generate an ItemEvent here
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent (
new ItemEvent ((ItemSelectable)this,
ItemEvent.ITEM_STATE_CHANGED,
getItem(0),
ItemEvent.SELECTED));
}
}
/*************************************************************************/
@ -229,17 +218,6 @@ insert(String item, int index)
ChoicePeer cp = (ChoicePeer) peer;
cp.add (item, index);
}
if (getItemCount () == 1 || selectedIndex >= index)
{
select (0);
// We must generate an ItemEvent here
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent (
new ItemEvent ((ItemSelectable)this,
ItemEvent.ITEM_STATE_CHANGED,
getItem(0),
ItemEvent.SELECTED));
}
}
/*************************************************************************/
@ -273,6 +251,9 @@ remove(String item)
public synchronized void
remove(int index)
{
if ((index < 0) || (index > getItemCount()))
throw new IllegalArgumentException("Bad index: " + index);
pItems.removeElementAt(index);
if (peer != null)
@ -281,17 +262,7 @@ remove(int index)
cp.remove (index);
}
if ((index == selectedIndex) && (getItemCount() > 0))
{
select (0);
// We must generate an ItemEvent here
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent (
new ItemEvent ((ItemSelectable)this,
ItemEvent.ITEM_STATE_CHANGED,
getItem(0),
ItemEvent.SELECTED));
}
else if (selectedIndex > index)
if (selectedIndex > index)
--selectedIndex;
}
@ -303,26 +274,15 @@ remove(int index)
public synchronized void
removeAll()
{
int count = getItemCount();
if (count <= 0)
if (getItemCount() <= 0)
return;
ChoicePeer cp = (ChoicePeer) peer;
pItems.removeAllElements ();
// Select the first item to prevent an spurious ItemEvent to be generated
if (cp != null)
if (peer != null)
{
cp.select (0);
selectedIndex = 0; // Just to keep consistent
}
for (int i = (count - 1); i >= 0; i--)
{
// Always remove the last to avoid generation of ItemEvents.
pItems.removeElementAt(i);
if (cp != null)
cp.remove (i);
ChoicePeer cp = (ChoicePeer) peer;
cp.removeAll ();
}
selectedIndex = -1;