< prev index next >

src/java.desktop/windows/classes/sun/awt/windows/WListPeer.java

Print this page




  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     }


< prev index next >