home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 January / PCO0198.ISO / 1&1 / java.z / java_301 / sun / awt / windows / WListPeer.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-10-20  |  3.1 KB  |  107 lines

  1. package sun.awt.windows;
  2.  
  3. import java.awt.Dimension;
  4. import java.awt.Event;
  5. import java.awt.FontMetrics;
  6. import java.awt.List;
  7. import java.awt.peer.ListPeer;
  8.  
  9. class WListPeer extends WComponentPeer implements ListPeer {
  10.    native void create(WComponentPeer var1);
  11.  
  12.    void initialize() {
  13.       List li = (List)super.target;
  14.       this.setMultipleSelections(li.allowsMultipleSelections());
  15.       int nitems = li.countItems();
  16.  
  17.       for(int i = 0; i < nitems; ++i) {
  18.          this.addItem(li.getItem(i), -1);
  19.       }
  20.  
  21.       int index = li.getVisibleIndex();
  22.       if (index >= 0) {
  23.          this.makeVisible(index);
  24.       }
  25.  
  26.       int[] sel = li.getSelectedIndexes();
  27.  
  28.       for(int i = 0; i < sel.length; ++i) {
  29.          this.select(sel[i]);
  30.       }
  31.  
  32.       super.initialize();
  33.    }
  34.  
  35.    WListPeer(List target) {
  36.       super(target);
  37.    }
  38.  
  39.    public Dimension minimumSize() {
  40.       return this.minimumSize(4);
  41.    }
  42.  
  43.    public native void setMultipleSelections(boolean var1);
  44.  
  45.    public native void addItem(String var1, int var2);
  46.  
  47.    public native void delItems(int var1, int var2);
  48.  
  49.    public native void select(int var1);
  50.  
  51.    public native void deselect(int var1);
  52.  
  53.    public native void makeVisible(int var1);
  54.  
  55.    public void clear() {
  56.       List l = (List)super.target;
  57.       this.delItems(0, l.countItems());
  58.    }
  59.  
  60.    public int[] getSelectedIndexes() {
  61.       List l = (List)super.target;
  62.       int len = l.countItems();
  63.       int[] sel = new int[len];
  64.       int nsel = 0;
  65.  
  66.       for(int i = 0; i < len; ++i) {
  67.          if (this.isSelected(i)) {
  68.             sel[nsel++] = i;
  69.          }
  70.       }
  71.  
  72.       int[] selected = new int[nsel];
  73.       System.arraycopy(sel, 0, selected, 0, nsel);
  74.       return selected;
  75.    }
  76.  
  77.    public Dimension preferredSize(int v) {
  78.       return this.minimumSize(v);
  79.    }
  80.  
  81.    public Dimension minimumSize(int v) {
  82.       FontMetrics fm = ((WComponentPeer)this).getFontMetrics(super.target.getFont());
  83.       return new Dimension(20 + fm.stringWidth("0123456789abcde"), (fm.getHeight() + 2) * v);
  84.    }
  85.  
  86.    public native boolean isSelected(int var1);
  87.  
  88.    public void handleAction(long time, int msgData, int index) {
  89.       List l = (List)super.target;
  90.       l.select(index);
  91.       super.target.postEvent(new Event(super.target, 1001, l.getItem(index)));
  92.    }
  93.  
  94.    public void handleListChanged(long time, int msgData, int index, boolean isSelected) {
  95.       boolean fireEvent = true;
  96.       if (fireEvent) {
  97.          if (isSelected) {
  98.             super.target.postEvent(new Event(super.target, 701, new Integer(index)));
  99.             return;
  100.          }
  101.  
  102.          super.target.postEvent(new Event(super.target, 702, new Integer(index)));
  103.       }
  104.  
  105.    }
  106. }
  107.