home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import java.util.Enumeration;
- import javax.swing.CellRendererPane;
- import javax.swing.JComponent;
- import javax.swing.LookAndFeel;
- import javax.swing.event.MouseInputListener;
- import javax.swing.plaf.ComponentUI;
- import javax.swing.plaf.TableHeaderUI;
- import javax.swing.table.JTableHeader;
- import javax.swing.table.TableCellRenderer;
- import javax.swing.table.TableColumn;
- import javax.swing.table.TableColumnModel;
-
- public class BasicTableHeaderUI extends TableHeaderUI {
- protected JTableHeader header;
- protected CellRendererPane rendererPane;
- protected MouseInputListener mouseInputListener;
-
- protected MouseInputListener createMouseInputListener() {
- return new MouseInputHandler(this);
- }
-
- public static ComponentUI createUI(JComponent var0) {
- return new BasicTableHeaderUI();
- }
-
- public void installUI(JComponent var1) {
- this.header = (JTableHeader)var1;
- this.rendererPane = new CellRendererPane();
- this.header.add(this.rendererPane);
- this.installDefaults();
- this.installListeners();
- this.installKeyboardActions();
- }
-
- protected void installDefaults() {
- LookAndFeel.installColorsAndFont(this.header, "TableHeader.background", "TableHeader.foreground", "TableHeader.font");
- }
-
- protected void installListeners() {
- this.mouseInputListener = this.createMouseInputListener();
- this.header.addMouseListener(this.mouseInputListener);
- this.header.addMouseMotionListener(this.mouseInputListener);
- }
-
- protected void installKeyboardActions() {
- }
-
- public void uninstallUI(JComponent var1) {
- this.uninstallDefaults();
- this.uninstallListeners();
- this.uninstallKeyboardActions();
- this.header.remove(this.rendererPane);
- this.rendererPane = null;
- this.header = null;
- }
-
- protected void uninstallDefaults() {
- }
-
- protected void uninstallListeners() {
- this.header.removeMouseListener(this.mouseInputListener);
- this.header.removeMouseMotionListener(this.mouseInputListener);
- this.mouseInputListener = null;
- }
-
- protected void uninstallKeyboardActions() {
- }
-
- public void paint(Graphics var1, JComponent var2) {
- if (this.header.getColumnModel().getColumnCount() > 0) {
- Rectangle var3 = var1.getClipBounds();
- TableColumnModel var4 = this.header.getColumnModel();
- int var5 = var4.getColumnIndexAtX(var3.x);
- int var6 = var4.getColumnIndexAtX(var3.x + var3.width - 1);
- if (var5 == -1) {
- var5 = 0;
- }
-
- if (var6 == -1) {
- var6 = var4.getColumnCount() - 1;
- }
-
- TableColumn var7 = this.header.getDraggedColumn();
- Rectangle var8 = this.header.getHeaderRect(var5);
-
- for(int var9 = var5; var9 <= var6; ++var9) {
- TableColumn var10 = var4.getColumn(var9);
- int var11 = var10.getWidth();
- var8.width = var11;
- if (var10 != var7) {
- this.paintCell(var1, var8, var9);
- }
-
- var8.x += var11;
- }
-
- if (var7 != null) {
- int var12 = this.viewIndexForColumn(var7);
- Rectangle var13 = this.header.getHeaderRect(var12);
- var1.setColor(this.header.getParent().getBackground());
- var1.fillRect(var13.x, var13.y, var13.width, var13.height);
- var13.x += this.header.getDraggedDistance();
- this.paintCell(var1, var13, var12);
- }
-
- this.rendererPane.removeAll();
- }
- }
-
- private Component getHeaderRenderer(int var1) {
- TableColumn var2 = this.header.getColumnModel().getColumn(var1);
- TableCellRenderer var3 = var2.getHeaderRenderer();
- if (var3 == null) {
- var3 = this.header.getDefaultRenderer();
- }
-
- return var3.getTableCellRendererComponent(this.header.getTable(), var2.getHeaderValue(), false, false, -1, var1);
- }
-
- private void paintCell(Graphics var1, Rectangle var2, int var3) {
- Component var4 = this.getHeaderRenderer(var3);
- this.rendererPane.paintComponent(var1, var4, this.header, var2.x, var2.y, var2.width, var2.height, true);
- }
-
- private int viewIndexForColumn(TableColumn var1) {
- TableColumnModel var2 = this.header.getColumnModel();
-
- for(int var3 = 0; var3 < var2.getColumnCount(); ++var3) {
- if (var2.getColumn(var3) == var1) {
- return var3;
- }
- }
-
- return -1;
- }
-
- private int getHeaderHeight() {
- int var1 = 0;
- boolean var2 = false;
- TableColumnModel var3 = this.header.getColumnModel();
-
- for(int var4 = 0; var4 < var3.getColumnCount(); ++var4) {
- TableColumn var5 = var3.getColumn(var4);
- if (var5.getHeaderRenderer() != null || !var2) {
- Component var6 = this.getHeaderRenderer(var4);
- int var7 = var6.getPreferredSize().height;
- var1 = Math.max(var1, var7);
- if (var7 > 0) {
- var2 = true;
- }
- }
- }
-
- return var1;
- }
-
- private Dimension createHeaderSize(long var1) {
- TableColumnModel var3 = this.header.getColumnModel();
- if (var1 > 2147483647L) {
- var1 = 2147483647L;
- }
-
- return new Dimension((int)var1, this.getHeaderHeight());
- }
-
- public Dimension getMinimumSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMinWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createHeaderSize(var2);
- }
-
- public Dimension getPreferredSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getPreferredWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createHeaderSize(var2);
- }
-
- public Dimension getMaximumSize(JComponent var1) {
- long var2 = 0L;
-
- TableColumn var5;
- for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMaxWidth()) {
- var5 = (TableColumn)var4.nextElement();
- }
-
- return this.createHeaderSize(var2);
- }
-
- // $FF: synthetic method
- static int access$000(BasicTableHeaderUI var0, TableColumn var1) {
- return var0.viewIndexForColumn(var1);
- }
- }
-