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