⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uiutils.java

📁 eq跨平台查询工具源码 eq跨平台查询工具源码
💻 JAVA
字号:
/* * UIUtils.java * * Copyright (C) 2002, 2003, 2004, 2005, 2006 Takis Diakoumis * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program 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 for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. * */package org.underworldlabs.swing.plaf;import com.sun.java.swing.plaf.motif.MotifLookAndFeel;import com.sun.java.swing.plaf.windows.WindowsLookAndFeel;import java.awt.Color;import java.awt.Component;import java.awt.Graphics;import java.io.Serializable;import javax.swing.Icon;import javax.swing.JMenuItem;import javax.swing.UIManager;import javax.swing.plaf.UIResource;import javax.swing.plaf.metal.MetalLookAndFeel;import javax.swing.plaf.metal.OceanTheme;import org.underworldlabs.swing.plaf.smoothgradient.SmoothGradientLookAndFeel;/* ---------------------------------------------------------- * CVS NOTE: Changes to the CVS repository prior to the  *           release of version 3.0.0beta1 has meant a  *           resetting of CVS revision numbers. * ---------------------------------------------------------- *//** * User interface utilities. Allows for central determination of * colours, icons etc. * * @author   Takis Diakoumis * @version  $Revision: 1.10 $ * @date     $Date: 2006/09/05 11:57:53 $ */public class UIUtils {               /** the active colour for text */    private static Color defaultActiveTextColour;    /** the active colour for backgrounds */    private static Color defaultActiveBackgroundColour;    /** the inactive colour for backgrounds */    private static Color defaultInactiveBackgroundColour;    /** True if checked for windows yet. */    private static boolean checkedWindows;        /** True if running on Windows. */    private static boolean isWindows;    /** True if checked for mac yet. */    private static boolean checkedMac;    /** True if running on Mac. */    private static boolean isMac;    /**     * Convenience method for consistent border colour.     *     * @return the system default border colour     */    public static Color getDefaultBorderColour() {        return UIManager.getColor("controlShadow");    }    /**     * Returns true if running on Mac.     */    public static boolean isMac() {        if (!checkedMac) {            String osName = System.getProperty ("os.name");            if (osName != null && osName.indexOf("Mac") != -1) {                isMac = true;            }            checkedMac = true;        }        return isMac;    }            /**     * Returns true if running on Windows.     */    public static boolean isWindows() {        if (!checkedWindows) {            String osName = System.getProperty ("os.name");            if (osName != null && osName.indexOf("Windows") != -1) {                isWindows = true;            }            checkedWindows = true;        }        return isWindows;    }    /**     * Returns whether the current applied look and feel is     * the SmoothGradientLookAndFeel default look and feel.     *     * @return true | false     */    public static boolean isDefaultLookAndFeel() {        return (UIManager.getLookAndFeel() instanceof SmoothGradientLookAndFeel);                //|| usingOcean();    }    /**     * Returns whether the current applied look and feel is     * an instance of GTK look and feel.     *     * @return true | false     */    public static boolean isGtkLookAndFeel() {        if (isWindows() || isMac()) {            return false;        }        return (UIManager.getLookAndFeel() instanceof                     com.sun.java.swing.plaf.gtk.GTKLookAndFeel);    }        /**     * Returns whether the current applied look and feel is     * the MetalLookAndFeel     *     * @return true | false     */    public static boolean isMetalLookAndFeel() {        return UIManager.getLookAndFeel() instanceof MetalLookAndFeel;    }    /**     * Returns whether the current applied look and feel is     * the MotifLookAndFeel     *     * @return true | false     */    public static boolean isMotifLookAndFeel() {        return UIManager.getLookAndFeel() instanceof MotifLookAndFeel;    }    /**     * Returns whether the current applied look and feel is     * the WindowsLookAndFeel     *     * @return true | false     */    public static boolean isWindowsLookAndFeel() {        return UIManager.getLookAndFeel() instanceof WindowsLookAndFeel;    }    /**     * Returns true if we're using the Ocean Theme under the     * MetalLookAndFeel.     */    public static boolean usingOcean() {        if (isMetalLookAndFeel()) {            MetalLookAndFeel laf = (MetalLookAndFeel)UIManager.getLookAndFeel();            return (laf.getCurrentTheme() instanceof OceanTheme);        }        return false;    }    public static Color getDefaultInactiveBackgroundColour() {        if (defaultInactiveBackgroundColour == null) {            defaultInactiveBackgroundColour = UIManager.getColor("control");        }        return defaultInactiveBackgroundColour;    }    public static Color getInverse(Color colour) {        int red = 255 - colour.getRed();        int green = 255 - colour.getGreen();        int blue = 255 - colour.getBlue();        return new Color(red, green, blue);    }        public static Color getDefaultActiveBackgroundColour() {        if (defaultActiveBackgroundColour == null) {            if (!isWindowsLookAndFeel()) {                Color color = UIManager.getColor("activeCaptionBorder");                if (color == null) {                    color = UIManager.getColor("controlShadow");                }                defaultActiveBackgroundColour = getBrighter(color, 0.85);            }            else {                defaultActiveBackgroundColour =                         UIManager.getColor("controlLtHighlight");            }        }        return defaultActiveBackgroundColour;            }        public static Color getDefaultActiveTextColour() {        if (defaultActiveTextColour == null) {            if (!isWindowsLookAndFeel()) {                defaultActiveTextColour = UIManager.getColor("activeCaptionText");                if (defaultActiveTextColour == null) {                    // default to black text                    defaultActiveTextColour = Color.BLACK;                }            }            else {                defaultActiveTextColour = UIManager.getColor("controlText");            }        }        return defaultActiveTextColour;    }        public static Color getDarker(Color color, double factor) {	return new Color(Math.max((int)(color.getRed()   * factor), 0), 			 Math.max((int)(color.getGreen() * factor), 0),			 Math.max((int)(color.getBlue()  * factor), 0));    }    public static Color getBrighter(Color color, double factor) {        int r = color.getRed();        int g = color.getGreen();        int b = color.getBlue();        int i = (int)(1.0/(1.0-factor));        if ( r == 0 && g == 0 && b == 0) {           return new Color(i, i, i);        }        if ( r > 0 && r < i ) r = i;        if ( g > 0 && g < i ) g = i;        if ( b > 0 && b < i ) b = i;        return new Color(Math.min((int)(r/factor), 255),                         Math.min((int)(g/factor), 255),                         Math.min((int)(b/factor), 255));    }    // Cached Access to Icons ***********************************************************        private static Icon checkBoxIcon;    private static Icon checkBoxMenuItemIcon;    private static Icon radioButtonMenuItemIcon;    private static Icon menuArrowIcon;    private static Icon expandedTreeIcon;    private static Icon collapsedTreeIcon;            /**     * Answers an <code>Icon</code> used for <code>JCheckBox</code>es.     */    /*    static Icon getCheckBoxIcon() {        if (checkBoxIcon == null) {            checkBoxIcon = new CheckBoxIcon();        }        return checkBoxIcon;    }    */        /**     * Answers an <code>Icon</code> used for <code>JCheckButtonMenuItem</code>s.     */    static Icon getCheckBoxMenuItemIcon() {        if (checkBoxMenuItemIcon == null) {            checkBoxMenuItemIcon = new CheckBoxMenuItemIcon();        }        return checkBoxMenuItemIcon;    }            /**     * Answers an <code>Icon</code> used for <code>JRadioButtonMenuItem</code>s.     */    /*    static Icon getRadioButtonMenuItemIcon() {        if (radioButtonMenuItemIcon == null) {            radioButtonMenuItemIcon = new RadioButtonMenuItemIcon();        }        return radioButtonMenuItemIcon;    }    */        /**     * Answers an <code>Icon</code> used for arrows in <code>JMenu</code>s.     */    /*    static Icon getMenuArrowIcon() {        if (menuArrowIcon == null) {            menuArrowIcon = new MenuArrowIcon();        }        return menuArrowIcon;    }    */        /**     * Answers an <code>Icon</code> used in <code>JTree</code>s.     */    public static Icon getExpandedTreeIcon() {        if (expandedTreeIcon == null) {            expandedTreeIcon = new ExpandedTreeIcon();        }        return expandedTreeIcon;    }        /**     * Answers an <code>Icon</code> used in <code>JTree</code>s.     */    public static Icon getCollapsedTreeIcon() {        if (collapsedTreeIcon == null) {            collapsedTreeIcon = new CollapsedTreeIcon();        }        return collapsedTreeIcon;    }    private static class CheckBoxMenuItemIcon implements Icon, UIResource, Serializable {                private static final int SIZE = 13;                public int getIconWidth()	{ return SIZE; }        public int getIconHeight() { return SIZE; }                public void paintIcon(Component c, Graphics g, int x, int y) {            JMenuItem b = (JMenuItem) c;            if (b.isSelected()) {                drawCheck(g, x, y + 1);            }        }    }    // Helper method utilized by the CheckBoxIcon and the CheckBoxMenuItemIcon.    private static void drawCheck(Graphics g, int x, int y) {        g.translate(x, y);        g.drawLine(3, 5, 3, 5);        g.fillRect(3, 6, 2, 2);        g.drawLine(4, 8, 9, 3);        g.drawLine(5, 8, 9, 4);        g.drawLine(5, 9, 9, 5);        g.translate(-x, -y);    }    /**     * The minus sign button icon used in trees     */    private static class ExpandedTreeIcon implements Icon, Serializable {                protected static final int SIZE      = 9;        protected static final int HALF_SIZE = 4;                public void paintIcon(Component c, Graphics g, int x, int y) {            Color backgroundColor = c.getBackground();                        g.setColor(backgroundColor != null ? backgroundColor : Color.white);            g.fillRect(x, y, SIZE - 1, SIZE - 1);            g.setColor(Color.gray);            g.drawRect(x, y, SIZE - 1, SIZE - 1);            g.setColor(Color.black);            g.drawLine(x + 2, y + HALF_SIZE, x + (SIZE - 3), y + HALF_SIZE);        }                public int getIconWidth()	{ return SIZE; }        public int getIconHeight() { return SIZE; }    }            /**     * The plus sign button icon used in trees.     */    private static class CollapsedTreeIcon extends ExpandedTreeIcon {        public void paintIcon(Component c, Graphics g, int x, int y) {            super.paintIcon(c, g, x, y);            g.drawLine(x + HALF_SIZE, y + 2, x + HALF_SIZE, y + (SIZE - 3));        }    }    private UIUtils() {}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -