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

  1. package com.sun.java.swing.table;
  2.  
  3. import com.sun.java.accessibility.Accessible;
  4. import com.sun.java.accessibility.AccessibleContext;
  5. import com.sun.java.swing.JComponent;
  6. import com.sun.java.swing.JTable;
  7. import com.sun.java.swing.ToolTipManager;
  8. import com.sun.java.swing.UIManager;
  9. import com.sun.java.swing.event.ChangeEvent;
  10. import com.sun.java.swing.event.ListSelectionEvent;
  11. import com.sun.java.swing.event.TableColumnModelEvent;
  12. import com.sun.java.swing.event.TableColumnModelListener;
  13. import com.sun.java.swing.plaf.TableHeaderUI;
  14. import java.awt.AWTEvent;
  15. import java.awt.Component;
  16. import java.awt.Container;
  17. import java.awt.Point;
  18. import java.awt.Rectangle;
  19. import java.awt.event.InputEvent;
  20. import java.awt.event.MouseEvent;
  21. import java.util.Enumeration;
  22.  
  23. public class JTableHeader extends JComponent implements TableColumnModelListener, Accessible {
  24.    protected JTable table;
  25.    protected TableColumnModel columnModel;
  26.    protected boolean reorderingAllowed;
  27.    protected boolean resizingAllowed;
  28.    protected boolean updateTableInRealTime;
  29.    protected transient TableColumn resizingColumn;
  30.    protected transient TableColumn draggedColumn;
  31.    protected transient int draggedDistance;
  32.  
  33.    public JTableHeader() {
  34.       this((TableColumnModel)null);
  35.    }
  36.  
  37.    public JTableHeader(TableColumnModel var1) {
  38.       if (var1 == null) {
  39.          var1 = this.createDefaultColumnModel();
  40.       }
  41.  
  42.       this.setColumnModel(var1);
  43.       this.initializeLocalVars();
  44.       this.updateUI();
  45.    }
  46.  
  47.    public void setTable(JTable var1) {
  48.       this.table = var1;
  49.    }
  50.  
  51.    public JTable getTable() {
  52.       return this.table;
  53.    }
  54.  
  55.    public void setReorderingAllowed(boolean var1) {
  56.       this.reorderingAllowed = var1;
  57.    }
  58.  
  59.    public boolean getReorderingAllowed() {
  60.       return this.reorderingAllowed;
  61.    }
  62.  
  63.    public void setResizingAllowed(boolean var1) {
  64.       this.resizingAllowed = var1;
  65.    }
  66.  
  67.    public boolean getResizingAllowed() {
  68.       return this.resizingAllowed;
  69.    }
  70.  
  71.    public TableColumn getDraggedColumn() {
  72.       return this.draggedColumn;
  73.    }
  74.  
  75.    public int getDraggedDistance() {
  76.       return this.draggedDistance;
  77.    }
  78.  
  79.    public TableColumn getResizingColumn() {
  80.       return this.resizingColumn;
  81.    }
  82.  
  83.    public void setUpdateTableInRealTime(boolean var1) {
  84.       this.updateTableInRealTime = var1;
  85.    }
  86.  
  87.    public boolean getUpdateTableInRealTime() {
  88.       return this.updateTableInRealTime;
  89.    }
  90.  
  91.    public int columnAtPoint(Point var1) {
  92.       return this.getColumnModel().getColumnIndexAtX(var1.x);
  93.    }
  94.  
  95.    public Rectangle getHeaderRect(int var1) {
  96.       TableColumnModel var2 = this.getColumnModel();
  97.       if (var1 >= 0 && var1 < var2.getColumnCount()) {
  98.          int var3 = 0;
  99.          int var4 = 0;
  100.          int var5 = this.getColumnModel().getColumnMargin();
  101.  
  102.          for(Enumeration var6 = this.getColumnModel().getColumns(); var6.hasMoreElements(); ++var4) {
  103.             TableColumn var7 = (TableColumn)var6.nextElement();
  104.             if (var4 == var1) {
  105.                return new Rectangle(var3, 0, var7.getWidth() + var5, ((Component)this).getSize().height);
  106.             }
  107.  
  108.             var3 += var7.getWidth() + var5;
  109.          }
  110.  
  111.          return new Rectangle();
  112.       } else {
  113.          throw new IllegalArgumentException("Column index out of range");
  114.       }
  115.    }
  116.  
  117.    public String getToolTipText(MouseEvent var1) {
  118.       String var2 = null;
  119.       Point var3 = var1.getPoint();
  120.       int var4;
  121.       if ((var4 = this.columnModel.getColumnIndexAtX(var3.x)) != -1) {
  122.          TableColumn var5 = this.columnModel.getColumn(var4);
  123.          TableCellRenderer var6 = var5.getHeaderRenderer();
  124.          Component var7 = var6.getTableCellRendererComponent(this.getTable(), var5.getHeaderValue(), false, false, -1, var4);
  125.          if (var7 instanceof JComponent) {
  126.             Rectangle var9 = this.getHeaderRect(var4);
  127.             var3.translate(-var9.x, -var9.y);
  128.             MouseEvent var8 = new MouseEvent(var7, ((AWTEvent)var1).getID(), ((InputEvent)var1).getWhen(), ((InputEvent)var1).getModifiers(), var3.x, var3.y, var1.getClickCount(), var1.isPopupTrigger());
  129.             var2 = ((JComponent)var7).getToolTipText(var8);
  130.          }
  131.       }
  132.  
  133.       if (var2 == null) {
  134.          var2 = ((JComponent)this).getToolTipText();
  135.       }
  136.  
  137.       return var2;
  138.    }
  139.  
  140.    public TableHeaderUI getUI() {
  141.       return (TableHeaderUI)super.ui;
  142.    }
  143.  
  144.    public void setUI(TableHeaderUI var1) {
  145.       if (super.ui != var1) {
  146.          super.setUI(var1);
  147.          ((Component)this).repaint();
  148.       }
  149.  
  150.    }
  151.  
  152.    public void updateUI() {
  153.       this.setUI((TableHeaderUI)UIManager.getUI(this));
  154.       this.resizeAndRepaint();
  155.       ((Container)this).invalidate();
  156.    }
  157.  
  158.    public String getUIClassID() {
  159.       return "TableHeaderUI";
  160.    }
  161.  
  162.    public void setColumnModel(TableColumnModel var1) {
  163.       if (var1 == null) {
  164.          throw new IllegalArgumentException("Cannot set a null ColumnModel");
  165.       } else {
  166.          TableColumnModel var2 = this.columnModel;
  167.          if (var1 != var2) {
  168.             if (var2 != null) {
  169.                var2.removeColumnModelListener(this);
  170.             }
  171.  
  172.             this.columnModel = var1;
  173.             var1.addColumnModelListener(this);
  174.             this.resizeAndRepaint();
  175.          }
  176.  
  177.       }
  178.    }
  179.  
  180.    public TableColumnModel getColumnModel() {
  181.       return this.columnModel;
  182.    }
  183.  
  184.    public boolean isOpaque() {
  185.       return true;
  186.    }
  187.  
  188.    public void columnAdded(TableColumnModelEvent var1) {
  189.       this.resizeAndRepaint();
  190.    }
  191.  
  192.    public void columnRemoved(TableColumnModelEvent var1) {
  193.       this.resizeAndRepaint();
  194.    }
  195.  
  196.    public void columnMoved(TableColumnModelEvent var1) {
  197.       ((Component)this).repaint();
  198.    }
  199.  
  200.    public void columnMarginChanged(ChangeEvent var1) {
  201.       this.resizeAndRepaint();
  202.    }
  203.  
  204.    public void columnSelectionChanged(ListSelectionEvent var1) {
  205.    }
  206.  
  207.    protected TableColumnModel createDefaultColumnModel() {
  208.       return new DefaultTableColumnModel();
  209.    }
  210.  
  211.    protected void initializeLocalVars() {
  212.       this.table = null;
  213.       this.reorderingAllowed = true;
  214.       this.resizingAllowed = true;
  215.       this.draggedColumn = null;
  216.       this.draggedDistance = 0;
  217.       this.resizingColumn = null;
  218.       this.updateTableInRealTime = true;
  219.       ToolTipManager var1 = ToolTipManager.sharedInstance();
  220.       var1.registerComponent(this);
  221.    }
  222.  
  223.    public void resizeAndRepaint() {
  224.       ((JComponent)this).revalidate();
  225.       ((Component)this).repaint();
  226.    }
  227.  
  228.    public void setDraggedColumn(TableColumn var1) {
  229.       this.draggedColumn = var1;
  230.    }
  231.  
  232.    public void setDraggedDistance(int var1) {
  233.       this.draggedDistance = var1;
  234.    }
  235.  
  236.    public void setResizingColumn(TableColumn var1) {
  237.       this.resizingColumn = var1;
  238.    }
  239.  
  240.    public AccessibleContext getAccessibleContext() {
  241.       if (super.accessibleContext == null) {
  242.          super.accessibleContext = new AccessibleJTableHeader(this);
  243.       }
  244.  
  245.       return super.accessibleContext;
  246.    }
  247. }
  248.