25 package sun.awt.windows;
26
27 import java.awt.*;
28 import java.awt.peer.*;
29 import java.awt.event.ActionEvent;
30 import java.awt.event.ItemEvent;
31
32 final class WListPeer extends WComponentPeer implements ListPeer {
33
34 @Override
35 public boolean isFocusable() {
36 return true;
37 }
38
39 // ListPeer implementation
40
41 @Override
42 public int[] getSelectedIndexes() {
43 List l = (List)target;
44 int len = l.getItemCount();
45 int sel[] = new int[len];
46 int nsel = 0;
47 for (int i = 0 ; i < len ; i++) {
48 if (isSelected(i)) {
49 sel[nsel++] = i;
50 }
51 }
52 int selected[] = new int[nsel];
53 System.arraycopy(sel, 0, selected, 0, nsel);
54 return selected;
55 }
56
57 @Override
58 public void add(String item, int index) {
59 addItem(item, index);
60 }
61
62 @Override
63 public void removeAll() {
64 clear();
65 }
66
67 @Override
68 public void setMultipleMode (boolean b) {
69 setMultipleSelections(b);
70 }
71
72 @Override
130 // add any items that were already inserted in the target.
131 int nitems = li.getItemCount();
132 if (nitems > 0) {
133 String[] items = new String[nitems];
134 int maxWidth = 0;
135 int width = 0;
136 for (int i = 0; i < nitems; i++) {
137 items[i] = li.getItem(i);
138 width = fm.stringWidth(items[i]);
139 if (width > maxWidth) {
140 maxWidth = width;
141 }
142 }
143 addItems(items, 0, maxWidth);
144 }
145
146 // set whether this list should allow multiple selections.
147 setMultipleSelections(li.isMultipleMode());
148
149 // select the item if necessary.
150 int sel[] = li.getSelectedIndexes();
151 for (int i = 0 ; i < sel.length ; i++) {
152 select(sel[i]);
153 }
154
155 // make the visible position visible.
156 // fix for 4676536 by kdm@sparc.spb.su
157 // we should call makeVisible() after we call select()
158 // because of a bug in Windows which is manifested by
159 // incorrect scrolling of the selected item if the list
160 // height is less than an item height of the list.
161 int index = li.getVisibleIndex();
162 if (index < 0 && sel.length > 0) {
163 index = sel[0];
164 }
165 if (index >= 0) {
166 makeVisible(index);
167 }
168
169 super.initialize();
170 }
|
25 package sun.awt.windows;
26
27 import java.awt.*;
28 import java.awt.peer.*;
29 import java.awt.event.ActionEvent;
30 import java.awt.event.ItemEvent;
31
32 final class WListPeer extends WComponentPeer implements ListPeer {
33
34 @Override
35 public boolean isFocusable() {
36 return true;
37 }
38
39 // ListPeer implementation
40
41 @Override
42 public int[] getSelectedIndexes() {
43 List l = (List)target;
44 int len = l.getItemCount();
45 int[] sel = new int[len];
46 int nsel = 0;
47 for (int i = 0 ; i < len ; i++) {
48 if (isSelected(i)) {
49 sel[nsel++] = i;
50 }
51 }
52 int[] selected = new int[nsel];
53 System.arraycopy(sel, 0, selected, 0, nsel);
54 return selected;
55 }
56
57 @Override
58 public void add(String item, int index) {
59 addItem(item, index);
60 }
61
62 @Override
63 public void removeAll() {
64 clear();
65 }
66
67 @Override
68 public void setMultipleMode (boolean b) {
69 setMultipleSelections(b);
70 }
71
72 @Override
130 // add any items that were already inserted in the target.
131 int nitems = li.getItemCount();
132 if (nitems > 0) {
133 String[] items = new String[nitems];
134 int maxWidth = 0;
135 int width = 0;
136 for (int i = 0; i < nitems; i++) {
137 items[i] = li.getItem(i);
138 width = fm.stringWidth(items[i]);
139 if (width > maxWidth) {
140 maxWidth = width;
141 }
142 }
143 addItems(items, 0, maxWidth);
144 }
145
146 // set whether this list should allow multiple selections.
147 setMultipleSelections(li.isMultipleMode());
148
149 // select the item if necessary.
150 int[] sel = li.getSelectedIndexes();
151 for (int i = 0 ; i < sel.length ; i++) {
152 select(sel[i]);
153 }
154
155 // make the visible position visible.
156 // fix for 4676536 by kdm@sparc.spb.su
157 // we should call makeVisible() after we call select()
158 // because of a bug in Windows which is manifested by
159 // incorrect scrolling of the selected item if the list
160 // height is less than an item height of the list.
161 int index = li.getVisibleIndex();
162 if (index < 0 && sel.length > 0) {
163 index = sel[0];
164 }
165 if (index >= 0) {
166 makeVisible(index);
167 }
168
169 super.initialize();
170 }
|