📄 gtkdefaultstyle.java
字号:
/* * GTKDefaultStyle.java * * @(#)GTKDefaultStyle.java 1.1 05/08/05 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package com.sun.java.swing.plaf.gtk;import java.awt.*;import javax.swing.*;import javax.swing.plaf.*;import javax.swing.plaf.synth.*;/** * * @version 1.1, 08/05/05 * @author Kirill Kirichenko */class GTKDefaultStyle extends GTKStyle { private static final int DEFAULT_XTHICKNESS = 2; private static final int DEFAULT_YTHICKNESS = 2; private static final Color[][] DEFAULT_COLORS; /** * State the color array at an particular index in DEFAULT_COLORS * represents. */ private static final int[] DEFAULT_COLOR_MAP; static { DEFAULT_COLOR_MAP = new int[] { SynthConstants.PRESSED, SynthConstants.SELECTED, SynthConstants.ENABLED, SynthConstants.MOUSE_OVER, SynthConstants.DISABLED }; DEFAULT_COLORS = new Color[5][]; // 2.0 colors // if (!GTKLookAndFeel.is2_2()) { DEFAULT_COLORS[0] = getColorsFrom( new ColorUIResource(195, 195, 195), BLACK_COLOR); DEFAULT_COLORS[1] = getColorsFrom( new ColorUIResource(0, 0, 156), WHITE_COLOR); DEFAULT_COLORS[2] = getColorsFrom( new ColorUIResource(214, 214, 214), BLACK_COLOR); DEFAULT_COLORS[3] = getColorsFrom( new ColorUIResource(233, 233, 233), BLACK_COLOR); DEFAULT_COLORS[4] = getColorsFrom( new ColorUIResource(214, 214, 214), new ColorUIResource(117, 117, 117)); DEFAULT_COLORS[0][GTKColorType.TEXT_BACKGROUND.getID()] = new ColorUIResource(188, 210, 238); DEFAULT_COLORS[1][GTKColorType.TEXT_BACKGROUND.getID()] = new ColorUIResource(164, 223, 255); DEFAULT_COLORS[1][GTKColorType.TEXT_FOREGROUND.getID()] = BLACK_COLOR; DEFAULT_COLORS[2][GTKColorType.TEXT_FOREGROUND.getID()] = BLACK_COLOR; DEFAULT_COLORS[4][GTKColorType.TEXT_FOREGROUND.getID()] = DEFAULT_COLORS[2][GTKColorType.TEXT_FOREGROUND.getID()]; } else { // 2.2 colors DEFAULT_COLORS[0] = getColorsFrom( new ColorUIResource(186, 181, 171), BLACK_COLOR); DEFAULT_COLORS[1] = getColorsFrom( new ColorUIResource(75, 105, 131), WHITE_COLOR); DEFAULT_COLORS[2] = getColorsFrom( new ColorUIResource(220, 218, 213), BLACK_COLOR); DEFAULT_COLORS[3] = getColorsFrom( new ColorUIResource(238, 235, 231), BLACK_COLOR); DEFAULT_COLORS[4] = getColorsFrom( new ColorUIResource(220, 218, 213), new ColorUIResource(117, 117, 117)); DEFAULT_COLORS[0][GTKColorType.TEXT_BACKGROUND.getID()] = new ColorUIResource(128, 125, 116); DEFAULT_COLORS[1][GTKColorType.TEXT_BACKGROUND.getID()] = new ColorUIResource(75, 105, 131); DEFAULT_COLORS[2][GTKColorType.TEXT_BACKGROUND.getID()] = WHITE_COLOR; DEFAULT_COLORS[3][GTKColorType.TEXT_BACKGROUND.getID()] = WHITE_COLOR; DEFAULT_COLORS[4][GTKColorType.TEXT_BACKGROUND.getID()] = new ColorUIResource(238, 235, 231); DEFAULT_COLORS[0][GTKColorType.TEXT_FOREGROUND.getID()] = WHITE_COLOR; DEFAULT_COLORS[1][GTKColorType.TEXT_FOREGROUND.getID()] = WHITE_COLOR; DEFAULT_COLORS[2][GTKColorType.TEXT_FOREGROUND.getID()] = BLACK_COLOR; DEFAULT_COLORS[3][GTKColorType.TEXT_FOREGROUND.getID()] = BLACK_COLOR; DEFAULT_COLORS[4][GTKColorType.TEXT_FOREGROUND.getID()] = new ColorUIResource(117, 117, 117); } } GTKDefaultStyle(Font font) { super(font); } Color getStyleSpecificColor(SynthContext context, int state, ColorType type) { Region id = (context != null) ? context.getRegion() : null; Color color = null; if (id == Region.TOOL_TIP) { color = getToolTipColor(state, type); } else if (id == Region.PROGRESS_BAR && GTKLookAndFeel.is2_2()) { color = getProgressBarColor(state, type); } else if ((id == Region.MENU || id == Region.MENU_ITEM || id == Region.POPUP_MENU_SEPARATOR || id == Region.CHECK_BOX_MENU_ITEM || id == Region.RADIO_BUTTON_MENU_ITEM || id == Region.MENU_ITEM_ACCELERATOR) && GTKLookAndFeel.is2_2()) { color = getMenuItemColor(state, type); } if (color != null) { return color; } for (int counter = DEFAULT_COLOR_MAP.length - 1; counter >= 0; counter--) { if ((DEFAULT_COLOR_MAP[counter] & state) != 0) { if (type.getID() < DEFAULT_COLORS[counter].length) { return DEFAULT_COLORS[counter][type.getID()]; } } } if (type.getID() < DEFAULT_COLORS[2].length) { return DEFAULT_COLORS[2][type.getID()]; } return null; } private Color getToolTipColor(int state, ColorType type) { if (state == SynthConstants.ENABLED) { if(type == GTKColorType.BACKGROUND) { return(GTKLookAndFeel.is2_2() ? new ColorUIResource(0xEEE1B3) : new ColorUIResource(0xFFFFC0)); } if(type == GTKColorType.FOREGROUND) { return new ColorUIResource(0x000000); } } return null; } private Color getProgressBarColor(int state, ColorType type) { if (state == SynthConstants.ENABLED) { if(type == GTKColorType.BACKGROUND) { return new ColorUIResource(0xBAB5AB); } } else if (state == SynthConstants.MOUSE_OVER) { if(type == GTKColorType.BACKGROUND) { return new ColorUIResource(0x4B6983); } } return null; } private Color getMenuItemColor(int state, ColorType type) { if (state == SynthConstants.SELECTED) { if(type == GTKColorType.TEXT_FOREGROUND || type == GTKColorType.FOREGROUND) { return new ColorUIResource(0xFFFFFF); } } else if (state == SynthConstants.MOUSE_OVER) { if(type == GTKColorType.BACKGROUND) { return new ColorUIResource(0x9db8d2); } if(type == GTKColorType.FOREGROUND) { return GTKStyle.WHITE_COLOR; } if(type == GTKColorType.TEXT_FOREGROUND) { return new ColorUIResource(0xFFFFFF); } } return null; } /** * Returns the X thickness to use for this GTKStyle. * * @return x thickness. */ int getXThickness() { return DEFAULT_XTHICKNESS; } /** * Returns the Y thickness to use for this GTKStyle. * * @return x thickness. */ int getYThickness() { return DEFAULT_YTHICKNESS; } /** * Returns the value for a class specific property. A class specific value * is a value that will be picked up based on class hierarchy. * * @param context SynthContext indentifying requestor * @param key Key identifying class specific value * @return Value, or null if one has not been defined. */ Object getClassSpecificValue(Region region, String key) { return null; } /** * Creates an array of colors populated based on the passed in * the background color. Specifically this sets the * BACKGROUND, LIGHT, DARK, MID, BLACK, WHITE and FOCUS colors * from that of color, which is assumed to be the background. */ private static Color[] getColorsFrom(Color bg, Color fg) { Color lightColor = calculateLightColor(bg); Color darkColor = calculateDarkColor(bg); Color midColor = calculateMidColor(lightColor, darkColor); Color[] colors = new Color[GTKColorType.MAX_COUNT]; colors[GTKColorType.BACKGROUND.getID()] = bg; colors[GTKColorType.LIGHT.getID()] = lightColor; colors[GTKColorType.DARK.getID()] = darkColor; colors[GTKColorType.MID.getID()] = midColor; colors[GTKColorType.BLACK.getID()] = BLACK_COLOR; colors[GTKColorType.WHITE.getID()] = WHITE_COLOR; colors[GTKColorType.FOCUS.getID()] = BLACK_COLOR; colors[GTKColorType.FOREGROUND.getID()] = fg; colors[GTKColorType.TEXT_FOREGROUND.getID()] = fg; colors[GTKColorType.TEXT_BACKGROUND.getID()] = WHITE_COLOR; return colors; } /** * Calculates the LIGHT color from the background color. */ private static Color calculateLightColor(Color bg) { return GTKColorType.adjustColor(bg, 1.0f, 1.3f, 1.3f); } /** * Calculates the DARK color from the background color. */ private static Color calculateDarkColor(Color bg) { return GTKColorType.adjustColor(bg, 1.0f, .7f, .7f); } /** * Calculates the MID color from the light and dark colors. */ private static Color calculateMidColor(Color lightColor, Color darkColor) { int light = lightColor.getRGB(); int dark = darkColor.getRGB(); int rLight = (light & 0xFF0000) >> 16; int rDark = (dark & 0xFF0000) >> 16; int gLight = (light & 0x00FF00) >> 8; int gDark = (dark & 0x00FF00) >> 8; int bLight = (light & 0xFF); int bDark = (dark & 0xFF); return new ColorUIResource((((rLight + rDark) / 2) << 16) | (((gLight + gDark) / 2) << 8) | ((bLight + bDark) / 2)); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -