1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47:
48: public class GtkListPeer extends GtkComponentPeer
49: implements ListPeer
50: {
51: void create ()
52: {
53: List list = (List) awtComponent;
54:
55: create (list.getRows ());
56:
57: setMultipleMode (list.isMultipleMode ());
58: }
59:
60: native void create (int rows);
61: native void connectSignals ();
62: native void gtkWidgetModifyFont (String name, int style, int size);
63: native void gtkWidgetRequestFocus ();
64:
65: native void getSize (int rows, int visibleRows, int dims[]);
66:
67: public GtkListPeer (List list)
68: {
69: super (list);
70:
71: setMultipleMode (list.isMultipleMode ());
72:
73: if (list.getItemCount () > 0)
74: append (list.getItems ());
75: }
76:
77: native void append (String items[]);
78:
79: public native void add (String item, int index);
80:
81: public void addItem (String item, int index)
82: {
83: add (item, index);
84: }
85:
86: public void clear ()
87: {
88: removeAll ();
89: }
90:
91: public native void delItems (int start, int end);
92: public native void deselect (int index);
93:
94: public Dimension getMinimumSize (int rows)
95: {
96: return minimumSize (rows);
97: }
98:
99: public Dimension getPreferredSize (int rows)
100: {
101: return preferredSize (rows);
102: }
103:
104: public native int[] getSelectedIndexes ();
105: public native void makeVisible (int index);
106:
107: public Dimension minimumSize (int rows)
108: {
109: int dims[] = new int[2];
110:
111: int visibleRows = ((List) awtComponent).getRows();
112: getSize (rows, visibleRows, dims);
113: return new Dimension (dims[0], dims[1]);
114: }
115:
116: public Dimension preferredSize (int rows)
117: {
118: int dims[] = new int[2];
119:
120: int visibleRows = ((List) awtComponent).getRows();
121: getSize (rows, visibleRows, dims);
122: return new Dimension (dims[0], dims[1]);
123: }
124:
125: public void removeAll ()
126: {
127: delItems (0, -1);
128: }
129:
130: public native void select (int index);
131: public native void setMultipleMode (boolean b);
132:
133: public void setMultipleSelections (boolean b)
134: {
135: setMultipleMode (b);
136: }
137:
138: public void handleEvent (AWTEvent e)
139: {
140: if (e.getID () == MouseEvent.MOUSE_CLICKED && isEnabled ())
141: {
142:
143:
144: MouseEvent me = (MouseEvent) e;
145: if (!me.isConsumed ()
146: && (me.getModifiersEx () & MouseEvent.BUTTON1_DOWN_MASK) != 0
147: && me.getClickCount() == 2)
148: {
149: String selectedItem = ((List) awtComponent).getSelectedItem ();
150:
151:
152:
153: if (selectedItem != null)
154: postActionEvent (((List) awtComponent).getSelectedItem (),
155: me.getModifiersEx ());
156: }
157: }
158:
159: if (e.getID () == KeyEvent.KEY_PRESSED)
160: {
161: KeyEvent ke = (KeyEvent) e;
162: if (!ke.isConsumed () && ke.getKeyCode () == KeyEvent.VK_ENTER)
163: {
164: String selectedItem = ((List) awtComponent).getSelectedItem ();
165:
166:
167:
168: if (selectedItem != null)
169: postActionEvent (selectedItem, ke.getModifiersEx ());
170: }
171: }
172:
173: super.handleEvent (e);
174: }
175:
176: protected void postItemEvent (int item, int stateChange)
177: {
178: postItemEvent (new Integer (item), stateChange);
179: }
180: }