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