home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / table / DefaultTableModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-26  |  5.7 KB  |  343 lines

  1. package com.sun.java.swing.table;
  2.  
  3. import com.sun.java.swing.event.TableModelEvent;
  4. import java.io.Serializable;
  5. import java.util.Enumeration;
  6. import java.util.Vector;
  7.  
  8. public class DefaultTableModel extends AbstractTableModel implements Serializable {
  9.    protected Vector dataVector;
  10.    protected Vector columnIdentifiers;
  11.    int numColumns;
  12.    int numRows;
  13.  
  14.    public DefaultTableModel() {
  15.       this((Vector)null, 0);
  16.    }
  17.  
  18.    public DefaultTableModel(int var1, int var2) {
  19.       this(new Vector(var1), var2);
  20.    }
  21.  
  22.    public DefaultTableModel(Vector var1, int var2) {
  23.       if (var1 != null) {
  24.          this.numColumns = var1.size();
  25.          this.columnIdentifiers = var1;
  26.       } else {
  27.          this.numColumns = 0;
  28.          this.columnIdentifiers = new Vector();
  29.       }
  30.  
  31.       this.dataVector = new Vector();
  32.       this.numRows = 0;
  33.       if (var2 != 0) {
  34.          this.setNumRows(var2);
  35.       }
  36.  
  37.    }
  38.  
  39.    public DefaultTableModel(Object[] var1, int var2) {
  40.       this(convertToVector(var1), var2);
  41.    }
  42.  
  43.    public DefaultTableModel(Vector var1, Vector var2) {
  44.       this((Vector)null, 0);
  45.       this.setDataVector(var1, var2);
  46.    }
  47.  
  48.    public DefaultTableModel(Object[][] var1, Object[] var2) {
  49.       this((Vector)null, 0);
  50.       this.setDataVector(var1, var2);
  51.    }
  52.  
  53.    public Vector getDataVector() {
  54.       return this.dataVector;
  55.    }
  56.  
  57.    public void setDataVector(Vector var1, Vector var2) {
  58.       if (var1 == null) {
  59.          throw new IllegalArgumentException("setDataVector() - Null parameter");
  60.       } else {
  61.          if (var2 != null) {
  62.             this.columnIdentifiers = var2;
  63.          }
  64.  
  65.          this.dataVector = var1;
  66.          this.numColumns = ((Vector)this.dataVector.elementAt(0)).size();
  67.          this.newDataAvailable((TableModelEvent)null);
  68.       }
  69.    }
  70.  
  71.    public void setDataVector(Object[][] var1, Object[] var2) {
  72.       Vector var3 = null;
  73.       if (var2 != null) {
  74.          var3 = convertToVector(var2);
  75.       }
  76.  
  77.       this.setDataVector(convertToVector(var1), var3);
  78.    }
  79.  
  80.    public void newDataAvailable(TableModelEvent var1) {
  81.       if (var1 == null || this.dataVector.size() != this.numRows) {
  82.          this.numRows = this.dataVector.size();
  83.          var1 = new TableModelEvent(this, -1);
  84.          this.setColumnIdentifiers(this.columnIdentifiers);
  85.       }
  86.  
  87.       ((AbstractTableModel)this).fireTableChanged(var1);
  88.    }
  89.  
  90.    public void newRowsAdded(TableModelEvent var1) {
  91.       this.numRows = this.dataVector.size();
  92.       int var2 = var1.getFirstRow();
  93.       int var3 = var1.getLastRow();
  94.       if (var2 < 0) {
  95.          var2 = 0;
  96.       }
  97.  
  98.       if (var3 < 0) {
  99.          var3 = this.numRows - 1;
  100.       }
  101.  
  102.       for(int var4 = var2; var4 <= var3; ++var4) {
  103.          ((Vector)this.dataVector.elementAt(var4)).setSize(this.numColumns);
  104.       }
  105.  
  106.       ((AbstractTableModel)this).fireTableChanged(var1);
  107.    }
  108.  
  109.    public void rowsRemoved(TableModelEvent var1) {
  110.       if (var1 == null) {
  111.          throw new IllegalArgumentException("rowsRemoved() - null parameter");
  112.       } else {
  113.          this.numRows = this.dataVector.size();
  114.          ((AbstractTableModel)this).fireTableChanged(var1);
  115.       }
  116.    }
  117.  
  118.    public void setColumnIdentifiers(Vector var1) {
  119.       if (var1 != null) {
  120.          this.columnIdentifiers = var1;
  121.          this.numColumns = var1.size();
  122.       } else {
  123.          this.columnIdentifiers = new Vector();
  124.          this.numColumns = 0;
  125.       }
  126.  
  127.       ((AbstractTableModel)this).fireTableStructureChanged();
  128.    }
  129.  
  130.    public void setColumnIdentifiers(Object[] var1) {
  131.       this.setColumnIdentifiers(convertToVector(var1));
  132.    }
  133.  
  134.    public void setNumRows(int var1) {
  135.       if (var1 >= 0 && var1 != this.numRows) {
  136.          int var2 = this.numRows;
  137.          if (var1 <= this.numRows) {
  138.             this.numRows = var1;
  139.             this.dataVector.setSize(this.numRows);
  140.             this.rowsRemoved(new TableModelEvent(this, this.numRows, var2 - 1, -1, -1));
  141.          } else {
  142.             while(this.numRows < var1) {
  143.                Vector var3 = new Vector(this.numColumns);
  144.                this.dataVector.addElement(var3);
  145.                ++this.numRows;
  146.             }
  147.  
  148.             this.newRowsAdded(new TableModelEvent(this, var2, this.numRows - 1, -1, 1));
  149.          }
  150.       }
  151.    }
  152.  
  153.    public void addColumn(Object var1) {
  154.       this.addColumn(var1, (Vector)null);
  155.    }
  156.  
  157.    public void addColumn(Object var1, Vector var2) {
  158.       if (var1 == null) {
  159.          throw new IllegalArgumentException("addColumn() - null parameter");
  160.       } else {
  161.          this.columnIdentifiers.addElement(var1);
  162.          ++this.numColumns;
  163.          int var3 = 0;
  164.  
  165.          for(Enumeration var4 = this.dataVector.elements(); var4.hasMoreElements(); ++var3) {
  166.             Object var5;
  167.             if (var2 != null && var3 < var2.size()) {
  168.                var5 = var2.elementAt(var3);
  169.             } else {
  170.                var5 = null;
  171.             }
  172.  
  173.             ((Vector)var4.nextElement()).addElement(var5);
  174.          }
  175.  
  176.          ((AbstractTableModel)this).fireTableChanged((TableModelEvent)null);
  177.       }
  178.    }
  179.  
  180.    public void addColumn(Object var1, Object[] var2) {
  181.       if (var1 == null) {
  182.          throw new IllegalArgumentException("addColumn() - null parameter");
  183.       } else {
  184.          this.columnIdentifiers.addElement(var1);
  185.          ++this.numColumns;
  186.          int var3 = 0;
  187.  
  188.          for(Enumeration var4 = this.dataVector.elements(); var4.hasMoreElements(); ++var3) {
  189.             Object var5;
  190.             if (var2 != null && var3 < var2.length) {
  191.                var5 = var2[var3];
  192.             } else {
  193.                var5 = null;
  194.             }
  195.  
  196.             ((Vector)var4.nextElement()).addElement(var5);
  197.          }
  198.  
  199.          ((AbstractTableModel)this).fireTableChanged((TableModelEvent)null);
  200.       }
  201.    }
  202.  
  203.    public void addRow(Vector var1) {
  204.       if (var1 == null) {
  205.          new Vector(this.numColumns);
  206.       }
  207.  
  208.       this.dataVector.addElement(var1);
  209.       ++this.numRows;
  210.       this.newRowsAdded(new TableModelEvent(this, this.numRows - 1, this.numRows - 1, -1, 1));
  211.    }
  212.  
  213.    public void addRow(Object[] var1) {
  214.       Vector var2 = null;
  215.       if (var1 != null) {
  216.          var2 = convertToVector(var1);
  217.       }
  218.  
  219.       this.addRow(var2);
  220.    }
  221.  
  222.    public void insertRow(int var1, Vector var2) {
  223.       Vector var3 = var2;
  224.       if (var2 == null) {
  225.          var3 = new Vector(this.numColumns);
  226.       }
  227.  
  228.       var3.setSize(this.numColumns);
  229.       this.dataVector.insertElementAt(var3, var1);
  230.       ++this.numRows;
  231.       this.newRowsAdded(new TableModelEvent(this, var1, this.numRows - 1, -1, 1));
  232.    }
  233.  
  234.    public void insertRow(int var1, Object[] var2) {
  235.       Vector var3 = null;
  236.       if (var2 != null) {
  237.          var3 = convertToVector(var2);
  238.       }
  239.  
  240.       this.insertRow(var1, var3);
  241.    }
  242.  
  243.    public void moveRow(int var1, int var2, int var3) {
  244.       if (var1 >= 0 && var1 < this.numColumns) {
  245.          if (var2 >= 0 && var2 < this.numColumns) {
  246.             if (var1 < var2) {
  247.                throw new ArrayIndexOutOfBoundsException();
  248.             } else if (var1 > var3 || var3 > var2) {
  249.                boolean var4 = var3 < var1;
  250.                Object var5 = null;
  251.                TableModelEvent var8;
  252.                if (var4) {
  253.                   var8 = new TableModelEvent(this, var3, var2);
  254.                } else {
  255.                   var8 = new TableModelEvent(this, var1, var3);
  256.                }
  257.  
  258.                for(int var6 = var1; var6 <= var2; ++var6) {
  259.                   Object var7 = this.dataVector.elementAt(var6);
  260.                   this.dataVector.removeElementAt(var6);
  261.                   this.dataVector.insertElementAt(var7, var3);
  262.                   if (var4) {
  263.                      ++var3;
  264.                   }
  265.                }
  266.  
  267.                ((AbstractTableModel)this).fireTableChanged(var8);
  268.             }
  269.          } else {
  270.             throw new ArrayIndexOutOfBoundsException(var2);
  271.          }
  272.       } else {
  273.          throw new ArrayIndexOutOfBoundsException(var1);
  274.       }
  275.    }
  276.  
  277.    public void removeRow(int var1) {
  278.       this.dataVector.removeElementAt(var1);
  279.       --this.numRows;
  280.       this.rowsRemoved(new TableModelEvent(this, var1, this.numRows - 1, -1, -1));
  281.    }
  282.  
  283.    public int getRowCount() {
  284.       return this.numRows;
  285.    }
  286.  
  287.    public int getColumnCount() {
  288.       return this.numColumns;
  289.    }
  290.  
  291.    public String getColumnName(int var1) {
  292.       if (this.columnIdentifiers != null && this.columnIdentifiers.size() > var1) {
  293.          Object var2 = this.columnIdentifiers.elementAt(var1);
  294.          return var2 == null ? super.getColumnName(var1) : var2.toString();
  295.       } else {
  296.          return super.getColumnName(var1);
  297.       }
  298.    }
  299.  
  300.    public boolean isCellEditable(int var1, int var2) {
  301.       return true;
  302.    }
  303.  
  304.    public Object getValueAt(int var1, int var2) {
  305.       Vector var3 = (Vector)this.dataVector.elementAt(var1);
  306.       return var3.elementAt(var2);
  307.    }
  308.  
  309.    public void setValueAt(Object var1, int var2, int var3) {
  310.       Vector var4 = (Vector)this.dataVector.elementAt(var2);
  311.       var4.setElementAt(var1, var3);
  312.       ((AbstractTableModel)this).fireTableChanged(new TableModelEvent(this, var2, var2, var3));
  313.    }
  314.  
  315.    protected static Vector convertToVector(Object[] var0) {
  316.       if (var0 == null) {
  317.          return new Vector();
  318.       } else {
  319.          Vector var1 = new Vector(var0.length);
  320.  
  321.          for(int var2 = 0; var2 < var0.length; ++var2) {
  322.             var1.addElement(var0[var2]);
  323.          }
  324.  
  325.          return var1;
  326.       }
  327.    }
  328.  
  329.    protected static Vector convertToVector(Object[][] var0) {
  330.       if (var0 == null) {
  331.          return new Vector();
  332.       } else {
  333.          Vector var1 = new Vector(var0.length);
  334.  
  335.          for(int var2 = 0; var2 < var0.length; ++var2) {
  336.             var1.addElement(convertToVector(var0[var2]));
  337.          }
  338.  
  339.          return var1;
  340.       }
  341.    }
  342. }
  343.