src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java
branchhttp-client-branch
changeset 55982 b6ff245c0db6
parent 55981 907bddce488c
parent 48332 651a95f30dfb
child 55983 e4a1f0c9d4c6
--- a/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/WindowsTableHeaderUI.java	Mon Dec 11 16:43:11 2017 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,247 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.java.swing.plaf.windows;
-
-import java.awt.*;
-import javax.swing.*;
-import javax.swing.border.*;
-import javax.swing.plaf.*;
-import javax.swing.plaf.basic.*;
-import javax.swing.table.*;
-
-import static com.sun.java.swing.plaf.windows.TMSchema.*;
-import static com.sun.java.swing.plaf.windows.XPStyle.*;
-import sun.swing.table.*;
-import sun.swing.SwingUtilities2;
-
-
-public class WindowsTableHeaderUI extends BasicTableHeaderUI {
-    private TableCellRenderer originalHeaderRenderer;
-
-    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());
-            }
-        }
-    }
-
-    public void uninstallUI(JComponent c) {
-        if (header.getDefaultRenderer() instanceof XPDefaultRenderer) {
-            header.setDefaultRenderer(originalHeaderRenderer);
-        }
-        super.uninstallUI(c);
-    }
-
-    @Override
-    protected void rolloverColumnUpdated(int oldColumn, int newColumn) {
-        if (XPStyle.getXP() != null) {
-            header.repaint(header.getHeaderRect(oldColumn));
-            header.repaint(header.getHeaderRect(newColumn));
-        }
-    }
-
-    @SuppressWarnings("serial") // JDK-implementation class
-    private class XPDefaultRenderer extends DefaultTableCellHeaderRenderer {
-        Skin skin;
-        boolean isSelected, hasFocus, hasRollover;
-        int column;
-
-        XPDefaultRenderer() {
-            setHorizontalAlignment(LEADING);
-        }
-
-        public Component getTableCellRendererComponent(JTable table, Object value,
-                                                       boolean isSelected, boolean hasFocus,
-                                                       int row, int column) {
-            super.getTableCellRendererComponent(table, value, isSelected,
-                                                hasFocus, row, column);
-            this.isSelected = isSelected;
-            this.hasFocus = hasFocus;
-            this.column = column;
-            this.hasRollover = (column == getRolloverColumn());
-            if (skin == null) {
-                XPStyle xp = XPStyle.getXP();
-                skin = (xp != null) ? xp.getSkin(header, Part.HP_HEADERITEM) : null;
-            }
-            Insets margins = (skin != null) ? skin.getContentMargin() : null;
-            Border border = null;
-            int contentTop = 0;
-            int contentLeft = 0;
-            int contentBottom = 0;
-            int contentRight = 0;
-            if (margins != null) {
-                contentTop = margins.top;
-                contentLeft = margins.left;
-                contentBottom = margins.bottom;
-                contentRight = margins.right;
-            }
-            /* idk:
-             * Both on Vista and XP there is some offset to the
-             * HP_HEADERITEM content. It does not seem to come from
-             * Prop.CONTENTMARGINS. Do not know where it is defined.
-             * using some hardcoded values.
-             */
-            contentLeft += 5;
-            contentBottom += 4;
-            contentRight += 5;
-
-            /* On Vista sortIcon is painted above the header's text.
-             * We use border to paint it.
-             */
-            Icon sortIcon;
-            if (WindowsLookAndFeel.isOnVista()
-                && ((sortIcon = getIcon()) instanceof javax.swing.plaf.UIResource
-                    || sortIcon == null)) {
-                contentTop += 1;
-                setIcon(null);
-                sortIcon = null;
-                SortOrder sortOrder =
-                    getColumnSortOrder(table, column);
-                if (sortOrder != null) {
-                    switch (sortOrder) {
-                    case ASCENDING:
-                        sortIcon =
-                            UIManager.getIcon("Table.ascendingSortIcon");
-                        break;
-                    case DESCENDING:
-                        sortIcon =
-                            UIManager.getIcon("Table.descendingSortIcon");
-                        break;
-                    }
-                }
-                if (sortIcon != null) {
-                    contentBottom = sortIcon.getIconHeight();
-                    border = new IconBorder(sortIcon, contentTop, contentLeft,
-                                            contentBottom, contentRight);
-                } else {
-                    sortIcon =
-                        UIManager.getIcon("Table.ascendingSortIcon");
-                    int sortIconHeight =
-                        (sortIcon != null) ? sortIcon.getIconHeight() : 0;
-                    if (sortIconHeight != 0) {
-                        contentBottom = sortIconHeight;
-                    }
-                    border =
-                        new EmptyBorder(
-                            sortIconHeight + contentTop, contentLeft,
-                            contentBottom, contentRight);
-                }
-            } else {
-                contentTop += 3;
-                border = new EmptyBorder(contentTop, contentLeft,
-                                         contentBottom, contentRight);
-            }
-            setBorder(border);
-            return this;
-        }
-
-        public void paint(Graphics g) {
-            Dimension size = getSize();
-            State state = State.NORMAL;
-            TableColumn draggedColumn = header.getDraggedColumn();
-            if (draggedColumn != null &&
-                    column == SwingUtilities2.convertColumnIndexToView(
-                            header.getColumnModel(), draggedColumn.getModelIndex())) {
-                state = State.PRESSED;
-            } else if (isSelected || hasFocus || hasRollover) {
-                state = State.HOT;
-            }
-            /* on Vista there are more states for sorted columns */
-            if (WindowsLookAndFeel.isOnVista()) {
-                SortOrder sortOrder = getColumnSortOrder(header.getTable(), column);
-                if (sortOrder != null) {
-                     switch(sortOrder) {
-                     case ASCENDING:
-                     case DESCENDING:
-                         switch (state) {
-                         case NORMAL:
-                             state = State.SORTEDNORMAL;
-                             break;
-                         case PRESSED:
-                             state = State.SORTEDPRESSED;
-                             break;
-                         case HOT:
-                             state = State.SORTEDHOT;
-                             break;
-                         default:
-                             /* do nothing */
-                         }
-                         break;
-                     default :
-                         /* do nothing */
-                     }
-                }
-            }
-            skin.paintSkin(g, 0, 0, size.width-1, size.height-1, state);
-            super.paint(g);
-        }
-    }
-
-    /**
-     * A border with an Icon at the middle of the top side.
-     * Outer insets can be provided for this border.
-     */
-    private static class IconBorder implements Border, UIResource{
-        private final Icon icon;
-        private final int top;
-        private final int left;
-        private final int bottom;
-        private final int right;
-        /**
-         * Creates this border;
-         * @param icon - icon to paint for this border
-         * @param top, left, bottom, right - outer insets for this border
-         */
-        public IconBorder(Icon icon, int top, int left,
-                          int bottom, int right) {
-            this.icon = icon;
-            this.top = top;
-            this.left = left;
-            this.bottom = bottom;
-            this.right = right;
-        }
-        public Insets getBorderInsets(Component c) {
-            return new Insets(icon.getIconHeight() + top, left, bottom, right);
-        }
-        public boolean isBorderOpaque() {
-            return false;
-        }
-        public void paintBorder(Component c, Graphics g, int x, int y,
-                                int width, int height) {
-            icon.paintIcon(c, g,
-                x + left + (width - left - right - icon.getIconWidth()) / 2,
-                y + top);
-        }
-    }
-}