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