home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIPHEFT062001.ISO / browser / nc32lyc / comm.z / java40.jar / java / awt / List.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-08-15  |  8.5 KB  |  494 lines

  1. package java.awt;
  2.  
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.ItemEvent;
  6. import java.awt.event.ItemListener;
  7. import java.awt.peer.ListPeer;
  8. import java.io.IOException;
  9. import java.io.ObjectInputStream;
  10. import java.io.ObjectOutputStream;
  11. import java.util.Vector;
  12.  
  13. public class List extends Component implements ItemSelectable {
  14.    Vector items;
  15.    int rows;
  16.    boolean multipleMode;
  17.    int[] selected;
  18.    int visibleIndex;
  19.    transient ActionListener actionListener;
  20.    transient ItemListener itemListener;
  21.    private static final String base = "list";
  22.    private static int nameCounter;
  23.    private static final long serialVersionUID = -3304312411574666869L;
  24.    static final int DEFAULT_VISIBLE_ROWS = 4;
  25.    private int listSerializedDataVersion;
  26.  
  27.    public List() {
  28.       this(0, false);
  29.    }
  30.  
  31.    public List(int var1) {
  32.       this(var1, false);
  33.    }
  34.  
  35.    public List(int var1, boolean var2) {
  36.       this.items = new Vector();
  37.       this.multipleMode = false;
  38.       this.selected = new int[0];
  39.       this.visibleIndex = -1;
  40.       this.listSerializedDataVersion = 1;
  41.       super.name = "list" + nameCounter++;
  42.       this.rows = var1 != 0 ? var1 : 4;
  43.       this.multipleMode = var2;
  44.    }
  45.  
  46.    public void addNotify() {
  47.       if (super.peer == null) {
  48.          super.peer = ((Component)this).getToolkit().createList(this);
  49.       }
  50.  
  51.       super.addNotify();
  52.       synchronized(this){}
  53.  
  54.       try {
  55.          this.visibleIndex = -1;
  56.       } catch (Throwable var3) {
  57.          throw var3;
  58.       }
  59.  
  60.    }
  61.  
  62.    public void removeNotify() {
  63.       synchronized(this){}
  64.  
  65.       try {
  66.          ListPeer var3 = (ListPeer)super.peer;
  67.          if (var3 != null) {
  68.             this.selected = var3.getSelectedIndexes();
  69.          }
  70.       } catch (Throwable var5) {
  71.          throw var5;
  72.       }
  73.  
  74.       super.removeNotify();
  75.    }
  76.  
  77.    public int getItemCount() {
  78.       return this.countItems();
  79.    }
  80.  
  81.    public int countItems() {
  82.       return this.items.size();
  83.    }
  84.  
  85.    public String getItem(int var1) {
  86.       return (String)this.items.elementAt(var1);
  87.    }
  88.  
  89.    public synchronized String[] getItems() {
  90.       String[] var1 = new String[this.items.size()];
  91.       this.items.copyInto(var1);
  92.       return var1;
  93.    }
  94.  
  95.    public void add(String var1) {
  96.       this.addItem(var1);
  97.    }
  98.  
  99.    public void addItem(String var1) {
  100.       this.addItem(var1, -1);
  101.    }
  102.  
  103.    public synchronized void add(String var1, int var2) {
  104.       this.addItem(var1, var2);
  105.    }
  106.  
  107.    public synchronized void addItem(String var1, int var2) {
  108.       if (var2 < -1 || var2 >= this.items.size()) {
  109.          var2 = -1;
  110.       }
  111.  
  112.       if (var2 == -1) {
  113.          this.items.addElement(var1);
  114.       } else {
  115.          this.items.insertElementAt(var1, var2);
  116.       }
  117.  
  118.       ListPeer var3 = (ListPeer)super.peer;
  119.       if (var3 != null) {
  120.          var3.addItem(var1, var2);
  121.       }
  122.  
  123.    }
  124.  
  125.    public synchronized void replaceItem(String var1, int var2) {
  126.       this.remove(var2);
  127.       this.add(var1, var2);
  128.    }
  129.  
  130.    public synchronized void removeAll() {
  131.       this.clear();
  132.    }
  133.  
  134.    public synchronized void clear() {
  135.       ListPeer var1 = (ListPeer)super.peer;
  136.       if (var1 != null) {
  137.          var1.clear();
  138.       }
  139.  
  140.       this.items = new Vector();
  141.       this.selected = new int[0];
  142.    }
  143.  
  144.    public synchronized void remove(String var1) {
  145.       int var2 = this.items.indexOf(var1);
  146.       if (var2 < 0) {
  147.          throw new IllegalArgumentException("item " + var1 + " not found in list");
  148.       } else {
  149.          this.remove(var2);
  150.       }
  151.    }
  152.  
  153.    public synchronized void remove(int var1) {
  154.       this.delItem(var1);
  155.    }
  156.  
  157.    public synchronized void delItem(int var1) {
  158.       this.delItems(var1, var1);
  159.    }
  160.  
  161.    public synchronized int getSelectedIndex() {
  162.       int[] var1 = this.getSelectedIndexes();
  163.       return var1.length == 1 ? var1[0] : -1;
  164.    }
  165.  
  166.    public synchronized int[] getSelectedIndexes() {
  167.       ListPeer var1 = (ListPeer)super.peer;
  168.       if (var1 != null) {
  169.          this.selected = var1.getSelectedIndexes();
  170.       }
  171.  
  172.       return this.selected;
  173.    }
  174.  
  175.    public synchronized String getSelectedItem() {
  176.       int var1 = this.getSelectedIndex();
  177.       return var1 < 0 ? null : this.getItem(var1);
  178.    }
  179.  
  180.    public synchronized String[] getSelectedItems() {
  181.       int[] var1 = this.getSelectedIndexes();
  182.       String[] var2 = new String[var1.length];
  183.  
  184.       for(int var3 = 0; var3 < var1.length; ++var3) {
  185.          var2[var3] = this.getItem(var1[var3]);
  186.       }
  187.  
  188.       return var2;
  189.    }
  190.  
  191.    public Object[] getSelectedObjects() {
  192.       return this.getSelectedItems();
  193.    }
  194.  
  195.    public void select(int var1) {
  196.       ListPeer var2;
  197.       do {
  198.          var2 = (ListPeer)super.peer;
  199.          if (var2 != null) {
  200.             var2.select(var1);
  201.             return;
  202.          }
  203.  
  204.          synchronized(this){}
  205.  
  206.          try {
  207.             boolean var5 = false;
  208.  
  209.             for(int var6 = 0; var6 < this.selected.length; ++var6) {
  210.                if (this.selected[var6] == var1) {
  211.                   var5 = true;
  212.                   break;
  213.                }
  214.             }
  215.  
  216.             if (!var5) {
  217.                if (!this.multipleMode) {
  218.                   this.selected = new int[1];
  219.                   this.selected[0] = var1;
  220.                } else {
  221.                   int[] var7 = new int[this.selected.length + 1];
  222.                   System.arraycopy(this.selected, 0, var7, 0, this.selected.length);
  223.                   var7[this.selected.length] = var1;
  224.                   this.selected = var7;
  225.                }
  226.             }
  227.          } catch (Throwable var9) {
  228.             throw var9;
  229.          }
  230.       } while(var2 != super.peer);
  231.  
  232.    }
  233.  
  234.    public synchronized void deselect(int var1) {
  235.       ListPeer var2 = (ListPeer)super.peer;
  236.       if (var2 != null) {
  237.          var2.deselect(var1);
  238.       }
  239.  
  240.       for(int var3 = 0; var3 < this.selected.length; ++var3) {
  241.          if (this.selected[var3] == var1) {
  242.             int[] var4 = new int[this.selected.length - 1];
  243.             System.arraycopy(this.selected, 0, var4, 0, var3);
  244.             System.arraycopy(this.selected, var3 + 1, var4, var3, this.selected.length - (var3 + 1));
  245.             this.selected = var4;
  246.             return;
  247.          }
  248.       }
  249.  
  250.    }
  251.  
  252.    public boolean isIndexSelected(int var1) {
  253.       return this.isSelected(var1);
  254.    }
  255.  
  256.    public boolean isSelected(int var1) {
  257.       int[] var2 = this.getSelectedIndexes();
  258.  
  259.       for(int var3 = 0; var3 < var2.length; ++var3) {
  260.          if (var2[var3] == var1) {
  261.             return true;
  262.          }
  263.       }
  264.  
  265.       return false;
  266.    }
  267.  
  268.    public int getRows() {
  269.       return this.rows;
  270.    }
  271.  
  272.    public boolean isMultipleMode() {
  273.       return this.allowsMultipleSelections();
  274.    }
  275.  
  276.    public boolean allowsMultipleSelections() {
  277.       return this.multipleMode;
  278.    }
  279.  
  280.    public synchronized void setMultipleMode(boolean var1) {
  281.       this.setMultipleSelections(var1);
  282.    }
  283.  
  284.    public synchronized void setMultipleSelections(boolean var1) {
  285.       if (var1 != this.multipleMode) {
  286.          this.multipleMode = var1;
  287.          ListPeer var2 = (ListPeer)super.peer;
  288.          if (var2 != null) {
  289.             var2.setMultipleSelections(var1);
  290.          }
  291.       }
  292.  
  293.    }
  294.  
  295.    public int getVisibleIndex() {
  296.       return this.visibleIndex;
  297.    }
  298.  
  299.    public synchronized void makeVisible(int var1) {
  300.       this.visibleIndex = var1;
  301.       ListPeer var2 = (ListPeer)super.peer;
  302.       if (var2 != null) {
  303.          var2.makeVisible(var1);
  304.       }
  305.  
  306.    }
  307.  
  308.    public Dimension getPreferredSize(int var1) {
  309.       return this.preferredSize(var1);
  310.    }
  311.  
  312.    public Dimension preferredSize(int var1) {
  313.       Object var3 = Component.LOCK;
  314.       synchronized(var3){}
  315.  
  316.       Dimension var2;
  317.       try {
  318.          ListPeer var5 = (ListPeer)super.peer;
  319.          var2 = var5 != null ? var5.preferredSize(var1) : super.preferredSize();
  320.       } catch (Throwable var7) {
  321.          throw var7;
  322.       }
  323.  
  324.       return var2;
  325.    }
  326.  
  327.    public Dimension getPreferredSize() {
  328.       return this.preferredSize();
  329.    }
  330.  
  331.    public Dimension preferredSize() {
  332.       Object var2 = Component.LOCK;
  333.       synchronized(var2){}
  334.  
  335.       Dimension var1;
  336.       try {
  337.          var1 = this.rows > 0 ? this.preferredSize(this.rows) : super.preferredSize();
  338.       } catch (Throwable var5) {
  339.          throw var5;
  340.       }
  341.  
  342.       return var1;
  343.    }
  344.  
  345.    public Dimension getMinimumSize(int var1) {
  346.       return this.minimumSize(var1);
  347.    }
  348.  
  349.    public Dimension minimumSize(int var1) {
  350.       Object var3 = Component.LOCK;
  351.       synchronized(var3){}
  352.  
  353.       Dimension var2;
  354.       try {
  355.          ListPeer var5 = (ListPeer)super.peer;
  356.          var2 = var5 != null ? var5.minimumSize(var1) : super.minimumSize();
  357.       } catch (Throwable var7) {
  358.          throw var7;
  359.       }
  360.  
  361.       return var2;
  362.    }
  363.  
  364.    public Dimension getMinimumSize() {
  365.       return this.minimumSize();
  366.    }
  367.  
  368.    public Dimension minimumSize() {
  369.       Object var2 = Component.LOCK;
  370.       synchronized(var2){}
  371.  
  372.       Dimension var1;
  373.       try {
  374.          var1 = this.rows > 0 ? this.minimumSize(this.rows) : super.minimumSize();
  375.       } catch (Throwable var5) {
  376.          throw var5;
  377.       }
  378.  
  379.       return var1;
  380.    }
  381.  
  382.    public synchronized void addItemListener(ItemListener var1) {
  383.       this.itemListener = AWTEventMulticaster.add(this.itemListener, var1);
  384.       super.newEventsOnly = true;
  385.    }
  386.  
  387.    public synchronized void removeItemListener(ItemListener var1) {
  388.       this.itemListener = AWTEventMulticaster.remove(this.itemListener, var1);
  389.    }
  390.  
  391.    public synchronized void addActionListener(ActionListener var1) {
  392.       this.actionListener = AWTEventMulticaster.add(this.actionListener, var1);
  393.       super.newEventsOnly = true;
  394.    }
  395.  
  396.    public synchronized void removeActionListener(ActionListener var1) {
  397.       this.actionListener = AWTEventMulticaster.remove(this.actionListener, var1);
  398.    }
  399.  
  400.    boolean eventEnabled(AWTEvent var1) {
  401.       switch (var1.id) {
  402.          case 701:
  403.             if ((super.eventMask & 512L) == 0L && this.itemListener == null) {
  404.                return false;
  405.             }
  406.  
  407.             return true;
  408.          case 1001:
  409.             if ((super.eventMask & 128L) == 0L && this.actionListener == null) {
  410.                return false;
  411.             }
  412.  
  413.             return true;
  414.          default:
  415.             return super.eventEnabled(var1);
  416.       }
  417.    }
  418.  
  419.    protected void processEvent(AWTEvent var1) {
  420.       if (var1 instanceof ItemEvent) {
  421.          this.processItemEvent((ItemEvent)var1);
  422.       } else if (var1 instanceof ActionEvent) {
  423.          this.processActionEvent((ActionEvent)var1);
  424.       } else {
  425.          super.processEvent(var1);
  426.       }
  427.    }
  428.  
  429.    protected void processItemEvent(ItemEvent var1) {
  430.       if (this.itemListener != null) {
  431.          this.itemListener.itemStateChanged(var1);
  432.       }
  433.  
  434.    }
  435.  
  436.    protected void processActionEvent(ActionEvent var1) {
  437.       if (this.actionListener != null) {
  438.          this.actionListener.actionPerformed(var1);
  439.       }
  440.  
  441.    }
  442.  
  443.    protected String paramString() {
  444.       return super.paramString() + ",selected=" + this.getSelectedItem();
  445.    }
  446.  
  447.    public synchronized void delItems(int var1, int var2) {
  448.       for(int var3 = var2; var3 >= var1; --var3) {
  449.          this.items.removeElementAt(var3);
  450.       }
  451.  
  452.       ListPeer var4 = (ListPeer)super.peer;
  453.       if (var4 != null) {
  454.          var4.delItems(var1, var2);
  455.       }
  456.  
  457.    }
  458.  
  459.    private void writeObject(ObjectOutputStream var1) throws IOException {
  460.       synchronized(this){}
  461.  
  462.       try {
  463.          ListPeer var4 = (ListPeer)super.peer;
  464.          if (var4 != null) {
  465.             this.selected = var4.getSelectedIndexes();
  466.          }
  467.       } catch (Throwable var6) {
  468.          throw var6;
  469.       }
  470.  
  471.       var1.defaultWriteObject();
  472.       AWTEventMulticaster.save(var1, "itemL", this.itemListener);
  473.       AWTEventMulticaster.save(var1, "actionL", this.actionListener);
  474.       var1.writeObject((Object)null);
  475.    }
  476.  
  477.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  478.       var1.defaultReadObject();
  479.  
  480.       Object var2;
  481.       while((var2 = var1.readObject()) != null) {
  482.          String var3 = ((String)var2).intern();
  483.          if (var3 == "itemL") {
  484.             this.addItemListener((ItemListener)var1.readObject());
  485.          } else if (var3 == "actionL") {
  486.             this.addActionListener((ActionListener)var1.readObject());
  487.          } else {
  488.             var1.readObject();
  489.          }
  490.       }
  491.  
  492.    }
  493. }
  494.