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

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