home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &… the Search for Life CD 3 / 0_CD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / plaf / basic / BasicTableHeaderUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  5.0 KB  |  210 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Graphics;
  6. import java.awt.Rectangle;
  7. import java.util.Enumeration;
  8. import javax.swing.CellRendererPane;
  9. import javax.swing.JComponent;
  10. import javax.swing.LookAndFeel;
  11. import javax.swing.event.MouseInputListener;
  12. import javax.swing.plaf.ComponentUI;
  13. import javax.swing.plaf.TableHeaderUI;
  14. import javax.swing.table.JTableHeader;
  15. import javax.swing.table.TableCellRenderer;
  16. import javax.swing.table.TableColumn;
  17. import javax.swing.table.TableColumnModel;
  18.  
  19. public class BasicTableHeaderUI extends TableHeaderUI {
  20.    protected JTableHeader header;
  21.    protected CellRendererPane rendererPane;
  22.    protected MouseInputListener mouseInputListener;
  23.  
  24.    protected MouseInputListener createMouseInputListener() {
  25.       return new MouseInputHandler(this);
  26.    }
  27.  
  28.    public static ComponentUI createUI(JComponent var0) {
  29.       return new BasicTableHeaderUI();
  30.    }
  31.  
  32.    public void installUI(JComponent var1) {
  33.       this.header = (JTableHeader)var1;
  34.       this.rendererPane = new CellRendererPane();
  35.       this.header.add(this.rendererPane);
  36.       this.installDefaults();
  37.       this.installListeners();
  38.       this.installKeyboardActions();
  39.    }
  40.  
  41.    protected void installDefaults() {
  42.       LookAndFeel.installColorsAndFont(this.header, "TableHeader.background", "TableHeader.foreground", "TableHeader.font");
  43.    }
  44.  
  45.    protected void installListeners() {
  46.       this.mouseInputListener = this.createMouseInputListener();
  47.       this.header.addMouseListener(this.mouseInputListener);
  48.       this.header.addMouseMotionListener(this.mouseInputListener);
  49.    }
  50.  
  51.    protected void installKeyboardActions() {
  52.    }
  53.  
  54.    public void uninstallUI(JComponent var1) {
  55.       this.uninstallDefaults();
  56.       this.uninstallListeners();
  57.       this.uninstallKeyboardActions();
  58.       this.header.remove(this.rendererPane);
  59.       this.rendererPane = null;
  60.       this.header = null;
  61.    }
  62.  
  63.    protected void uninstallDefaults() {
  64.    }
  65.  
  66.    protected void uninstallListeners() {
  67.       this.header.removeMouseListener(this.mouseInputListener);
  68.       this.header.removeMouseMotionListener(this.mouseInputListener);
  69.       this.mouseInputListener = null;
  70.    }
  71.  
  72.    protected void uninstallKeyboardActions() {
  73.    }
  74.  
  75.    public void paint(Graphics var1, JComponent var2) {
  76.       if (this.header.getColumnModel().getColumnCount() > 0) {
  77.          Rectangle var3 = var1.getClipBounds();
  78.          TableColumnModel var4 = this.header.getColumnModel();
  79.          int var5 = var4.getColumnIndexAtX(var3.x);
  80.          int var6 = var4.getColumnIndexAtX(var3.x + var3.width - 1);
  81.          if (var5 == -1) {
  82.             var5 = 0;
  83.          }
  84.  
  85.          if (var6 == -1) {
  86.             var6 = var4.getColumnCount() - 1;
  87.          }
  88.  
  89.          TableColumn var7 = this.header.getDraggedColumn();
  90.          Rectangle var8 = this.header.getHeaderRect(var5);
  91.  
  92.          for(int var9 = var5; var9 <= var6; ++var9) {
  93.             TableColumn var10 = var4.getColumn(var9);
  94.             int var11 = var10.getWidth();
  95.             var8.width = var11;
  96.             if (var10 != var7) {
  97.                this.paintCell(var1, var8, var9);
  98.             }
  99.  
  100.             var8.x += var11;
  101.          }
  102.  
  103.          if (var7 != null) {
  104.             int var12 = this.viewIndexForColumn(var7);
  105.             Rectangle var13 = this.header.getHeaderRect(var12);
  106.             var1.setColor(this.header.getParent().getBackground());
  107.             var1.fillRect(var13.x, var13.y, var13.width, var13.height);
  108.             var13.x += this.header.getDraggedDistance();
  109.             this.paintCell(var1, var13, var12);
  110.          }
  111.  
  112.          this.rendererPane.removeAll();
  113.       }
  114.    }
  115.  
  116.    private Component getHeaderRenderer(int var1) {
  117.       TableColumn var2 = this.header.getColumnModel().getColumn(var1);
  118.       TableCellRenderer var3 = var2.getHeaderRenderer();
  119.       if (var3 == null) {
  120.          var3 = this.header.getDefaultRenderer();
  121.       }
  122.  
  123.       return var3.getTableCellRendererComponent(this.header.getTable(), var2.getHeaderValue(), false, false, -1, var1);
  124.    }
  125.  
  126.    private void paintCell(Graphics var1, Rectangle var2, int var3) {
  127.       Component var4 = this.getHeaderRenderer(var3);
  128.       this.rendererPane.paintComponent(var1, var4, this.header, var2.x, var2.y, var2.width, var2.height, true);
  129.    }
  130.  
  131.    private int viewIndexForColumn(TableColumn var1) {
  132.       TableColumnModel var2 = this.header.getColumnModel();
  133.  
  134.       for(int var3 = 0; var3 < var2.getColumnCount(); ++var3) {
  135.          if (var2.getColumn(var3) == var1) {
  136.             return var3;
  137.          }
  138.       }
  139.  
  140.       return -1;
  141.    }
  142.  
  143.    private int getHeaderHeight() {
  144.       int var1 = 0;
  145.       boolean var2 = false;
  146.       TableColumnModel var3 = this.header.getColumnModel();
  147.  
  148.       for(int var4 = 0; var4 < var3.getColumnCount(); ++var4) {
  149.          TableColumn var5 = var3.getColumn(var4);
  150.          if (var5.getHeaderRenderer() != null || !var2) {
  151.             Component var6 = this.getHeaderRenderer(var4);
  152.             int var7 = var6.getPreferredSize().height;
  153.             var1 = Math.max(var1, var7);
  154.             if (var7 > 0) {
  155.                var2 = true;
  156.             }
  157.          }
  158.       }
  159.  
  160.       return var1;
  161.    }
  162.  
  163.    private Dimension createHeaderSize(long var1) {
  164.       TableColumnModel var3 = this.header.getColumnModel();
  165.       if (var1 > 2147483647L) {
  166.          var1 = 2147483647L;
  167.       }
  168.  
  169.       return new Dimension((int)var1, this.getHeaderHeight());
  170.    }
  171.  
  172.    public Dimension getMinimumSize(JComponent var1) {
  173.       long var2 = 0L;
  174.  
  175.       TableColumn var5;
  176.       for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMinWidth()) {
  177.          var5 = (TableColumn)var4.nextElement();
  178.       }
  179.  
  180.       return this.createHeaderSize(var2);
  181.    }
  182.  
  183.    public Dimension getPreferredSize(JComponent var1) {
  184.       long var2 = 0L;
  185.  
  186.       TableColumn var5;
  187.       for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getPreferredWidth()) {
  188.          var5 = (TableColumn)var4.nextElement();
  189.       }
  190.  
  191.       return this.createHeaderSize(var2);
  192.    }
  193.  
  194.    public Dimension getMaximumSize(JComponent var1) {
  195.       long var2 = 0L;
  196.  
  197.       TableColumn var5;
  198.       for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMaxWidth()) {
  199.          var5 = (TableColumn)var4.nextElement();
  200.       }
  201.  
  202.       return this.createHeaderSize(var2);
  203.    }
  204.  
  205.    // $FF: synthetic method
  206.    static int access$000(BasicTableHeaderUI var0, TableColumn var1) {
  207.       return var0.viewIndexForColumn(var1);
  208.    }
  209. }
  210.