- /*
- * @(#)WindowsTableHeaderUI.java 1.13 03/12/19
- *
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- */
-
- package com.sun.java.swing.plaf.windows;
-
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.plaf.basic.*;
- import javax.swing.plaf.*;
- import javax.swing.table.*;
- import javax.swing.border.*;
- import javax.swing.*;
- import javax.swing.event.*;
-
-
-
- public class WindowsTableHeaderUI extends BasicTableHeaderUI {
- private TableCellRenderer originalHeaderRenderer;
- private int rolloverColumn = -1;
-
- public static ComponentUI createUI(JComponent h) {
- return new WindowsTableHeaderUI();
- }
-
- public void installUI(JComponent c) {
- super.installUI(c);
-
- if (XPStyle.getXP() != null) {
- originalHeaderRenderer = header.getDefaultRenderer();
- if (originalHeaderRenderer instanceof UIResource) {
- header.setDefaultRenderer(new XPDefaultRenderer());
- }
- }
- }
-
- private void updateRolloverColumn(MouseEvent e) {
- if (header.getDraggedColumn() == null &&
- header.contains(e.getPoint())) {
-
- int col = header.columnAtPoint(e.getPoint());
- if (col != rolloverColumn) {
- rolloverColumn = col;
- header.repaint();
- }
- }
- }
-
- protected MouseInputListener createMouseInputListener() {
- if (XPStyle.getXP() != null) {
- return new MouseInputHandler() {
- public void mouseMoved(MouseEvent e) {
- super.mouseMoved(e);
- updateRolloverColumn(e);
- }
-
- public void mouseEntered(MouseEvent e) {
- super.mouseEntered(e);
- updateRolloverColumn(e);
- }
-
- public void mouseExited(MouseEvent e) {
- super.mouseExited(e);
- rolloverColumn = -1;
- header.repaint();
- }
-
- public void mousePressed(MouseEvent e) {
- super.mousePressed(e);
- if (header.getReorderingAllowed()) {
- rolloverColumn = -1;
- header.repaint();
- }
- }
-
- public void mouseDragged(MouseEvent e) {
- super.mouseDragged(e);
- updateRolloverColumn(e);
- }
-
- public void mouseReleased(MouseEvent e) {
- super.mouseReleased(e);
- updateRolloverColumn(e);
- }
- };
- } else {
- return super.createMouseInputListener();
- }
- }
-
- public void uninstallUI(JComponent c) {
- if (header.getDefaultRenderer() instanceof XPDefaultRenderer) {
- header.setDefaultRenderer(originalHeaderRenderer);
- }
- super.uninstallUI(c);
- }
-
- private class XPDefaultRenderer extends DefaultTableCellRenderer implements UIResource {
- XPStyle.Skin skin = XPStyle.getXP().getSkin("header.headeritem");
- boolean isSelected, hasFocus, hasRollover;
- int column;
-
- public Component getTableCellRendererComponent(JTable table, Object value,
- boolean isSelected, boolean hasFocus,
- int row, int column) {
- if (table != null) {
- JTableHeader header = table.getTableHeader();
- if (header != null) {
- setFont(header.getFont());
- }
- }
- this.isSelected = isSelected;
- this.hasFocus = hasFocus;
- this.column = column;
- this.hasRollover = (column == rolloverColumn);
- setText((value == null) ? "" : value.toString());
- setBorder(new EmptyBorder(skin.getContentMargin()));
-
- return this;
- }
-
- private int viewIndexForColumn(TableColumn aColumn) {
- TableColumnModel cm = header.getColumnModel();
- for (int column = 0; column < cm.getColumnCount(); column++) {
- if (cm.getColumn(column) == aColumn) {
- return column;
- }
- }
- return -1;
- }
-
- public void paint(Graphics g) {
- Dimension size = getSize();
- int index = 0;
- if (column == viewIndexForColumn(header.getDraggedColumn())) {
- index = 2;
- } else if (isSelected || hasFocus || hasRollover) {
- index = 1;
- }
- skin.paintSkin(g, 0, 0, size.width-1, size.height-1, index);
- super.paint(g);
- }
- }
- }
-