home *** CD-ROM | disk | FTP | other *** search
- package sun.awt.windows;
-
- import java.awt.Dimension;
- import java.awt.Event;
- import java.awt.FontMetrics;
- import java.awt.List;
- import java.awt.peer.ListPeer;
-
- class WListPeer extends WComponentPeer implements ListPeer {
- native void create(WComponentPeer var1);
-
- void initialize() {
- List li = (List)super.target;
- this.setMultipleSelections(li.allowsMultipleSelections());
- int nitems = li.countItems();
-
- for(int i = 0; i < nitems; ++i) {
- this.addItem(li.getItem(i), -1);
- }
-
- int index = li.getVisibleIndex();
- if (index >= 0) {
- this.makeVisible(index);
- }
-
- int[] sel = li.getSelectedIndexes();
-
- for(int i = 0; i < sel.length; ++i) {
- this.select(sel[i]);
- }
-
- super.initialize();
- }
-
- WListPeer(List target) {
- super(target);
- }
-
- public Dimension minimumSize() {
- return this.minimumSize(4);
- }
-
- public native void setMultipleSelections(boolean var1);
-
- public native void addItem(String var1, int var2);
-
- public native void delItems(int var1, int var2);
-
- public native void select(int var1);
-
- public native void deselect(int var1);
-
- public native void makeVisible(int var1);
-
- public void clear() {
- List l = (List)super.target;
- this.delItems(0, l.countItems());
- }
-
- public int[] getSelectedIndexes() {
- List l = (List)super.target;
- int len = l.countItems();
- int[] sel = new int[len];
- int nsel = 0;
-
- for(int i = 0; i < len; ++i) {
- if (this.isSelected(i)) {
- sel[nsel++] = i;
- }
- }
-
- int[] selected = new int[nsel];
- System.arraycopy(sel, 0, selected, 0, nsel);
- return selected;
- }
-
- public Dimension preferredSize(int v) {
- return this.minimumSize(v);
- }
-
- public Dimension minimumSize(int v) {
- FontMetrics fm = ((WComponentPeer)this).getFontMetrics(super.target.getFont());
- return new Dimension(20 + fm.stringWidth("0123456789abcde"), (fm.getHeight() + 2) * v);
- }
-
- public native boolean isSelected(int var1);
-
- public void handleAction(long time, int msgData, int index) {
- List l = (List)super.target;
- l.select(index);
- super.target.postEvent(new Event(super.target, 1001, l.getItem(index)));
- }
-
- public void handleListChanged(long time, int msgData, int index, boolean isSelected) {
- boolean fireEvent = true;
- if (fireEvent) {
- if (isSelected) {
- super.target.postEvent(new Event(super.target, 701, new Integer(index)));
- return;
- }
-
- super.target.postEvent(new Event(super.target, 702, new Integer(index)));
- }
-
- }
- }
-