home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / table / DefaultTableColumnModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  6.3 KB  |  337 lines

  1. package javax.swing.table;
  2.  
  3. import java.beans.PropertyChangeEvent;
  4. import java.beans.PropertyChangeListener;
  5. import java.io.Serializable;
  6. import java.util.Enumeration;
  7. import java.util.EventListener;
  8. import java.util.Vector;
  9. import javax.swing.DefaultListSelectionModel;
  10. import javax.swing.ListSelectionModel;
  11. import javax.swing.event.ChangeEvent;
  12. import javax.swing.event.EventListenerList;
  13. import javax.swing.event.ListSelectionEvent;
  14. import javax.swing.event.ListSelectionListener;
  15. import javax.swing.event.TableColumnModelEvent;
  16. import javax.swing.event.TableColumnModelListener;
  17.  
  18. public class DefaultTableColumnModel implements TableColumnModel, PropertyChangeListener, ListSelectionListener, Serializable {
  19.    protected Vector tableColumns = new Vector();
  20.    protected ListSelectionModel selectionModel;
  21.    protected int columnMargin;
  22.    protected EventListenerList listenerList = new EventListenerList();
  23.    protected transient ChangeEvent changeEvent = null;
  24.    protected boolean columnSelectionAllowed;
  25.    protected int totalColumnWidth;
  26.    // $FF: synthetic field
  27.    static Class class$javax$swing$event$TableColumnModelListener;
  28.  
  29.    public DefaultTableColumnModel() {
  30.       this.setSelectionModel(this.createSelectionModel());
  31.       this.getSelectionModel().setAnchorSelectionIndex(0);
  32.       this.setColumnMargin(1);
  33.       this.invalidateWidthCache();
  34.       this.setColumnSelectionAllowed(false);
  35.    }
  36.  
  37.    public void addColumn(TableColumn var1) {
  38.       if (var1 == null) {
  39.          throw new IllegalArgumentException("Object is null");
  40.       } else {
  41.          this.tableColumns.addElement(var1);
  42.          var1.addPropertyChangeListener(this);
  43.          this.invalidateWidthCache();
  44.          this.fireColumnAdded(new TableColumnModelEvent(this, 0, this.getColumnCount() - 1));
  45.       }
  46.    }
  47.  
  48.    public void removeColumn(TableColumn var1) {
  49.       int var2 = this.tableColumns.indexOf(var1);
  50.       if (var2 != -1) {
  51.          if (this.selectionModel != null) {
  52.             this.selectionModel.removeIndexInterval(var2, var2);
  53.          }
  54.  
  55.          var1.removePropertyChangeListener(this);
  56.          this.tableColumns.removeElementAt(var2);
  57.          this.invalidateWidthCache();
  58.          this.fireColumnRemoved(new TableColumnModelEvent(this, this.getColumnCount() - 1, 0));
  59.       }
  60.  
  61.    }
  62.  
  63.    public void moveColumn(int var1, int var2) {
  64.       if (var1 >= 0 && var1 < this.getColumnCount() && var2 >= 0 && var2 < this.getColumnCount()) {
  65.          if (var1 == var2) {
  66.             this.fireColumnMoved(new TableColumnModelEvent(this, var1, var2));
  67.          } else {
  68.             TableColumn var3 = (TableColumn)this.tableColumns.elementAt(var1);
  69.             boolean var4 = false;
  70.             if (this.selectionModel.isSelectedIndex(var1)) {
  71.                this.selectionModel.removeSelectionInterval(var1, var1);
  72.                var4 = true;
  73.             }
  74.  
  75.             this.tableColumns.removeElementAt(var1);
  76.             this.tableColumns.insertElementAt(var3, var2);
  77.             if (var4) {
  78.                this.selectionModel.addSelectionInterval(var2, var2);
  79.             }
  80.  
  81.             this.fireColumnMoved(new TableColumnModelEvent(this, var1, var2));
  82.          }
  83.       } else {
  84.          throw new IllegalArgumentException("moveColumn() - Index out of range");
  85.       }
  86.    }
  87.  
  88.    public void setColumnMargin(int var1) {
  89.       if (var1 != this.columnMargin) {
  90.          this.columnMargin = var1;
  91.          this.fireColumnMarginChanged();
  92.       }
  93.  
  94.    }
  95.  
  96.    public int getColumnCount() {
  97.       return this.tableColumns.size();
  98.    }
  99.  
  100.    public Enumeration getColumns() {
  101.       return this.tableColumns.elements();
  102.    }
  103.  
  104.    public int getColumnIndex(Object var1) {
  105.       if (var1 == null) {
  106.          throw new IllegalArgumentException("Identifier is null");
  107.       } else {
  108.          Enumeration var2 = this.getColumns();
  109.  
  110.          for(int var4 = 0; var2.hasMoreElements(); ++var4) {
  111.             TableColumn var3 = (TableColumn)var2.nextElement();
  112.             if (var1.equals(var3.getIdentifier())) {
  113.                return var4;
  114.             }
  115.          }
  116.  
  117.          throw new IllegalArgumentException("Identifier not found");
  118.       }
  119.    }
  120.  
  121.    public TableColumn getColumn(int var1) {
  122.       return (TableColumn)this.tableColumns.elementAt(var1);
  123.    }
  124.  
  125.    public int getColumnMargin() {
  126.       return this.columnMargin;
  127.    }
  128.  
  129.    public int getColumnIndexAtX(int var1) {
  130.       if (var1 < 0) {
  131.          return -1;
  132.       } else {
  133.          int var2 = this.getColumnCount();
  134.  
  135.          for(int var3 = 0; var3 < var2; ++var3) {
  136.             var1 -= this.getColumn(var3).getWidth();
  137.             if (var1 < 0) {
  138.                return var3;
  139.             }
  140.          }
  141.  
  142.          return -1;
  143.       }
  144.    }
  145.  
  146.    public int getTotalColumnWidth() {
  147.       if (this.totalColumnWidth == -1) {
  148.          this.recalcWidthCache();
  149.       }
  150.  
  151.       return this.totalColumnWidth;
  152.    }
  153.  
  154.    public void setSelectionModel(ListSelectionModel var1) {
  155.       if (var1 == null) {
  156.          throw new IllegalArgumentException("Cannot set a null SelectionModel");
  157.       } else {
  158.          ListSelectionModel var2 = this.selectionModel;
  159.          if (var1 != var2) {
  160.             if (var2 != null) {
  161.                var2.removeListSelectionListener(this);
  162.             }
  163.  
  164.             this.selectionModel = var1;
  165.             if (var1 != null) {
  166.                var1.addListSelectionListener(this);
  167.             }
  168.          }
  169.  
  170.       }
  171.    }
  172.  
  173.    public ListSelectionModel getSelectionModel() {
  174.       return this.selectionModel;
  175.    }
  176.  
  177.    public void setColumnSelectionAllowed(boolean var1) {
  178.       this.columnSelectionAllowed = var1;
  179.    }
  180.  
  181.    public boolean getColumnSelectionAllowed() {
  182.       return this.columnSelectionAllowed;
  183.    }
  184.  
  185.    public int[] getSelectedColumns() {
  186.       if (this.selectionModel != null) {
  187.          int var1 = this.selectionModel.getMinSelectionIndex();
  188.          int var2 = this.selectionModel.getMaxSelectionIndex();
  189.          if (var1 != -1 && var2 != -1) {
  190.             int[] var3 = new int[1 + (var2 - var1)];
  191.             int var4 = 0;
  192.  
  193.             for(int var5 = var1; var5 <= var2; ++var5) {
  194.                if (this.selectionModel.isSelectedIndex(var5)) {
  195.                   var3[var4++] = var5;
  196.                }
  197.             }
  198.  
  199.             int[] var6 = new int[var4];
  200.             System.arraycopy(var3, 0, var6, 0, var4);
  201.             return var6;
  202.          } else {
  203.             return new int[0];
  204.          }
  205.       } else {
  206.          return new int[0];
  207.       }
  208.    }
  209.  
  210.    public int getSelectedColumnCount() {
  211.       if (this.selectionModel != null) {
  212.          int var1 = this.selectionModel.getMinSelectionIndex();
  213.          int var2 = this.selectionModel.getMaxSelectionIndex();
  214.          int var3 = 0;
  215.  
  216.          for(int var4 = var1; var4 <= var2; ++var4) {
  217.             if (this.selectionModel.isSelectedIndex(var4)) {
  218.                ++var3;
  219.             }
  220.          }
  221.  
  222.          return var3;
  223.       } else {
  224.          return 0;
  225.       }
  226.    }
  227.  
  228.    public void addColumnModelListener(TableColumnModelListener var1) {
  229.       this.listenerList.add(class$javax$swing$event$TableColumnModelListener == null ? (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")) : class$javax$swing$event$TableColumnModelListener, var1);
  230.    }
  231.  
  232.    public void removeColumnModelListener(TableColumnModelListener var1) {
  233.       this.listenerList.remove(class$javax$swing$event$TableColumnModelListener == null ? (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")) : class$javax$swing$event$TableColumnModelListener, var1);
  234.    }
  235.  
  236.    protected void fireColumnAdded(TableColumnModelEvent var1) {
  237.       Object[] var2 = this.listenerList.getListenerList();
  238.  
  239.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  240.          if (var2[var3] == (class$javax$swing$event$TableColumnModelListener == null ? (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")) : class$javax$swing$event$TableColumnModelListener)) {
  241.             ((TableColumnModelListener)var2[var3 + 1]).columnAdded(var1);
  242.          }
  243.       }
  244.  
  245.    }
  246.  
  247.    protected void fireColumnRemoved(TableColumnModelEvent var1) {
  248.       Object[] var2 = this.listenerList.getListenerList();
  249.  
  250.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  251.          if (var2[var3] == (class$javax$swing$event$TableColumnModelListener == null ? (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")) : class$javax$swing$event$TableColumnModelListener)) {
  252.             ((TableColumnModelListener)var2[var3 + 1]).columnRemoved(var1);
  253.          }
  254.       }
  255.  
  256.    }
  257.  
  258.    protected void fireColumnMoved(TableColumnModelEvent var1) {
  259.       Object[] var2 = this.listenerList.getListenerList();
  260.  
  261.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  262.          if (var2[var3] == (class$javax$swing$event$TableColumnModelListener == null ? (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")) : class$javax$swing$event$TableColumnModelListener)) {
  263.             ((TableColumnModelListener)var2[var3 + 1]).columnMoved(var1);
  264.          }
  265.       }
  266.  
  267.    }
  268.  
  269.    protected void fireColumnSelectionChanged(ListSelectionEvent var1) {
  270.       Object[] var2 = this.listenerList.getListenerList();
  271.  
  272.       for(int var3 = var2.length - 2; var3 >= 0; var3 -= 2) {
  273.          if (var2[var3] == (class$javax$swing$event$TableColumnModelListener == null ? (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")) : class$javax$swing$event$TableColumnModelListener)) {
  274.             ((TableColumnModelListener)var2[var3 + 1]).columnSelectionChanged(var1);
  275.          }
  276.       }
  277.  
  278.    }
  279.  
  280.    protected void fireColumnMarginChanged() {
  281.       Object[] var1 = this.listenerList.getListenerList();
  282.  
  283.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  284.          if (var1[var2] == (class$javax$swing$event$TableColumnModelListener == null ? (class$javax$swing$event$TableColumnModelListener = class$("javax.swing.event.TableColumnModelListener")) : class$javax$swing$event$TableColumnModelListener)) {
  285.             if (this.changeEvent == null) {
  286.                this.changeEvent = new ChangeEvent(this);
  287.             }
  288.  
  289.             ((TableColumnModelListener)var1[var2 + 1]).columnMarginChanged(this.changeEvent);
  290.          }
  291.       }
  292.  
  293.    }
  294.  
  295.    public EventListener[] getListeners(Class var1) {
  296.       return this.listenerList.getListeners(var1);
  297.    }
  298.  
  299.    public void propertyChange(PropertyChangeEvent var1) {
  300.       String var2 = var1.getPropertyName();
  301.       if (var2 == "width" || var2 == "preferredWidth") {
  302.          this.invalidateWidthCache();
  303.          this.fireColumnMarginChanged();
  304.       }
  305.  
  306.    }
  307.  
  308.    public void valueChanged(ListSelectionEvent var1) {
  309.       this.fireColumnSelectionChanged(var1);
  310.    }
  311.  
  312.    protected ListSelectionModel createSelectionModel() {
  313.       return new DefaultListSelectionModel();
  314.    }
  315.  
  316.    protected void recalcWidthCache() {
  317.       Enumeration var1 = this.getColumns();
  318.  
  319.       for(this.totalColumnWidth = 0; var1.hasMoreElements(); this.totalColumnWidth += ((TableColumn)var1.nextElement()).getWidth()) {
  320.       }
  321.  
  322.    }
  323.  
  324.    private void invalidateWidthCache() {
  325.       this.totalColumnWidth = -1;
  326.    }
  327.  
  328.    // $FF: synthetic method
  329.    static Class class$(String var0) {
  330.       try {
  331.          return Class.forName(var0);
  332.       } catch (ClassNotFoundException var2) {
  333.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  334.       }
  335.    }
  336. }
  337.