package gnu.java.awt.peer.gtk;
import java.awt.AWTEvent;
import java.awt.Dimension;
import java.awt.List;
import java.awt.event.MouseEvent;
import java.awt.event.KeyEvent;
import java.awt.peer.ListPeer;
public class GtkListPeer extends GtkComponentPeer
implements ListPeer
{
native void create ();
native void connectJObject ();
native void connectSignals ();
native void getSize (int rows, int dims[]);
public GtkListPeer (List list)
{
super (list);
setMultipleMode (list.isMultipleMode ());
if (list.getItemCount () > 0)
append (list.getItems ());
}
native void append (String items[]);
public native void add (String item, int index);
public void addItem (String item, int index)
{
add (item, index);
}
public void clear ()
{
removeAll ();
}
public native void delItems (int start, int end);
public native void deselect (int index);
public Dimension getMinimumSize (int rows)
{
return minimumSize (rows);
}
public Dimension getPreferredSize (int rows)
{
return preferredSize (rows);
}
public native int[] getSelectedIndexes ();
public native void makeVisible (int index);
public Dimension minimumSize (int rows)
{
int dims[] = new int[2];
getSize (rows, dims);
return new Dimension (dims[0], dims[1]);
}
public Dimension preferredSize (int rows)
{
int dims[] = new int[2];
getSize (rows, dims);
return new Dimension (dims[0], dims[1]);
}
public void removeAll ()
{
delItems (0, -1);
}
public native void select (int index);
public native void setMultipleMode (boolean b);
public void setMultipleSelections (boolean b)
{
setMultipleMode (b);
}
public void handleEvent (AWTEvent e)
{
if (e.getID () == MouseEvent.MOUSE_CLICKED && isEnabled ())
{
MouseEvent me = (MouseEvent) e;
if (!me.isConsumed ()
&& (me.getModifiers () & MouseEvent.BUTTON1_MASK) != 0
&& me.getClickCount() == 2)
{
String selectedItem = ((List)awtComponent).getSelectedItem ();
if (selectedItem != null)
postActionEvent (((List)awtComponent).getSelectedItem (),
me.getModifiers ());
}
}
if (e.getID () == KeyEvent.KEY_PRESSED)
{
KeyEvent ke = (KeyEvent) e;
if (!ke.isConsumed () && ke.getKeyCode () == KeyEvent.VK_ENTER)
{
String selectedItem = ((List)awtComponent).getSelectedItem ();
if (selectedItem != null)
postActionEvent (selectedItem, ke.getModifiers ());
}
}
super.handleEvent (e);
}
protected void postItemEvent (int item, int stateChange)
{
postItemEvent (new Integer (item), stateChange);
}
}