gtkengine.java

来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 1,225 行 · 第 1/4 页

JAVA
1,225
字号
    public void paintCheck(SynthContext context, Graphics g, int state,                           int shadowType, String info, int x, int y,                           int w, int h) {        int componentState = context.getComponentState();        JComponent component = context.getComponent();        Region r = context.getRegion();        GTKStyle style = (GTKStyle)context.getStyle();        if ("checkbutton" == info) {            int checkState = ((componentState & SynthConstants.PRESSED) == 0) ?                     SynthConstants.ENABLED : SynthConstants.PRESSED;            paintFlatBoxText(context, g, checkState, info, x, y, w, h);            paintShadow(context, g, checkState, GTKConstants.SHADOW_IN, info, x, y, w, h);        }        g.translate(x, y);        int centerY = h / 2 - 1;        // Paint check mark in center if selected.        if ((componentState & SynthConstants.SELECTED) != 0) {            g.setColor(style.getGTKColor(component, r, state,                                             GTKColorType.FOREGROUND));            g.drawLine(3, centerY + 2, 4, centerY + 2);            g.drawLine(5, centerY + 3, 6, centerY + 3);            g.drawLine(6, centerY + 2, 6, centerY + 4);            g.drawLine(7, centerY + 1, 7, centerY);            g.drawLine(7, centerY, 8, centerY);            g.drawLine(8, centerY, 8, centerY - 1);            g.drawLine(8, centerY - 1, 9, centerY - 1);            g.drawLine(9, centerY - 1, 9, centerY - 2);            if (!GTKLookAndFeel.is2_2()) {                if ((componentState & SynthConstants.PRESSED) != 0) {                    g.setColor(style.getGTKColor(component, r,                               SynthConstants.PRESSED, GTKColorType.DARK));                } else {                    g.setColor(style.getGTKColor(component, r,                               SynthConstants.ENABLED, GTKColorType.DARK));                }            }            g.drawLine(3, centerY + 1, 4, centerY + 1);            g.drawLine(4, centerY + 3, 4, centerY + 3);            g.drawLine(5, centerY + 2, 5, centerY + 2);            g.drawLine(6, centerY + 1, 6, centerY + 1);            g.drawLine(7, centerY + 2, 7, centerY + 2);            g.drawLine(10, centerY - 2, 10, centerY - 2);        }        g.translate(-x, -y);    }    public void paintExtension(SynthContext context, Graphics g, int state,                               int shadowType, String info, int x, int y,                               int w, int h, int placement, int tabIndex) {        _paintExtension(context, g, state, shadowType, x, y, w, h, placement,                        GTKColorType.LIGHT, GTKColorType.BACKGROUND,                        GTKColorType.BLACK, GTKColorType.DARK, false,tabIndex);    }    void _paintExtension(SynthContext context, Graphics g, int state,                    int shadowType, int x, int y,                    int w, int h, int placement, ColorType upperLeftType,                    ColorType backgroundType, ColorType bottomRightType,                    ColorType innerRightType, boolean paintWhite,                    int tabIndex) {        GTKStyle style = (GTKStyle)context.getStyle();        JComponent c = context.getComponent();        Region region = context.getRegion();        int xThickness = style.getXThickness();        int yThickness = style.getYThickness();        if (xThickness < 0 && yThickness < 0) {            // nothing to paint.            return;        }        Color upperLeft =            style.getGTKColor(c, region, state, upperLeftType);        Color background =            style.getGTKColor(c, region, state, backgroundType);        Color bottomRight =            style.getGTKColor(c, region, state, bottomRightType);        Color innerRight =            style.getGTKColor(c, region, state, innerRightType);        Color white = style.getGTKColor(c, region, state, GTKColorType.WHITE);                int selectedIndex = ((JTabbedPane)c).getSelectedIndex();        g.translate(x, y);        // NOTE: placement refers to the size of the extension, so that        // BOTTOM corresponds to a TabbedPane with the tabs placed at the top.        if (placement == GTKConstants.BOTTOM) {            // Fill the background.            paintBackground(context, g, state, background, 0, 1, w, h);            if (tabIndex == selectedIndex || tabIndex == 0) {                g.setColor(upperLeft);                g.drawLine(0, 1, 0, h - 1);                g.drawLine(1, 0, w - 2, 0);                if (paintWhite) {                    g.setColor(white);                    g.drawLine(1, 1, 1, h - 1);                    g.drawLine(1, 1, w - 3, 1);                }            } else {                g.setColor(upperLeft);                g.drawLine(0, 0, w - 2, 0);                if (paintWhite) {                    g.setColor(white);                    g.drawLine(0, 1, w - 3, 1);                }            }            if ((tabIndex + 1) != selectedIndex) {                g.setColor(innerRight);                g.drawLine(w - 2, 2, w - 2, h - 1);                g.setColor(bottomRight);                g.drawLine(w - 1, 1, w - 1, h - 1);            }                    } else if (placement == GTKConstants.TOP) {            // Fill the background.            paintBackground(context, g, state, background, 0, 0, w, h - 1);            if (tabIndex == selectedIndex || tabIndex == 0) {                g.setColor(upperLeft);                g.drawLine(0, 0, 0, h - 2);                g.setColor(bottomRight);                g.drawLine(1, h - 1, w - 2, h - 1);                g.setColor(innerRight);                g.drawLine(2, h - 2, w - 2, h - 2);                if (paintWhite) {                    g.setColor(white);                    g.drawLine(1, 0, 1, h - 2);                }            } else {                g.setColor(bottomRight);                g.drawLine(0, h - 1, w - 2, h - 1);                g.setColor(innerRight);                g.drawLine(0, h - 2, w - 2, h - 2);                if (paintWhite) {                    g.setColor(white);                    g.drawLine(0, 0, 0, h - 2);                }            }            if ((tabIndex + 1) != selectedIndex) {                g.setColor(bottomRight);                g.drawLine(w - 1, 0, w - 1, h - 2);                g.setColor(innerRight);                g.drawLine(w - 2, 0, w - 2, h - 2);            }        } else if (placement == GTKConstants.RIGHT) {            // Fill the background.            paintBackground(context, g, state, background, 1, 0, w, h);            if (tabIndex == selectedIndex || tabIndex == 0) {                g.setColor(upperLeft);                 g.drawLine(1, 0, w - 1, 0);                g.drawLine(0, 1, 0, h - 2);                if (paintWhite) {                    g.setColor(white);                    g.drawLine(1, 1, w, 1);                    g.drawLine(1, 1, 1, h - 3);                }            } else {                g.setColor(upperLeft);                 g.drawLine(0, 0, 0, h - 2);                if (paintWhite) {                    g.setColor(white);                    g.drawLine(1, 1, 1, h - 3);                }            }            if ((tabIndex + 1) != selectedIndex) {                g.setColor(bottomRight);                g.drawLine(1, h - 1, w - 1, h - 1);                g.setColor(innerRight);                g.drawLine(2, h - 2, w - 1, h - 2);            }        } else if (placement == GTKConstants.LEFT) {            // Fill the background.            paintBackground(context, g, state, background, 0, 0, w - 1, h);            if (tabIndex == selectedIndex || tabIndex == 0) {                g.setColor(upperLeft);                g.drawLine(0, 0, w - 2, 0);                g.setColor(bottomRight);                g.drawLine(w - 1, 1, w - 1, h - 2);                g.setColor(innerRight);                g.drawLine(w - 2, 2, w - 2, h - 2);                if (paintWhite) {                    g.setColor(white);                    g.drawLine(0, 1, w - 2, 1);                    g.drawLine(w - 2, 1, w - 2, h - 3);                }            } else {                g.setColor(bottomRight);                g.drawLine(w - 1, 0, w - 1, h - 2);                g.setColor(innerRight);                g.drawLine(w - 2, 0, w - 2, h - 2);                if (paintWhite) {                    g.setColor(white);                    g.drawLine(w - 2, 1, w - 2, h - 3);                }            }            if ((tabIndex + 1) != selectedIndex) {                g.setColor(bottomRight);                g.drawLine(0, h - 1, w - 2, h - 1);                g.setColor(innerRight);                g.drawLine(0, h - 2, w - 2, h - 2);            }        }        g.translate(-x, -y);    }    void paintFlatBoxNormal(SynthContext context, Graphics g, int state,                             String key, int x, int y, int w, int h) {        g.setColor(((GTKStyle)context.getStyle()).getGTKColor(                context.getComponent(), context.getRegion(), state,                GTKColorType.BACKGROUND));        paintFlatBox(context, g, state, key, x, y, w, h);    }    void paintFlatBoxText(SynthContext context, Graphics g, int state,                             String key, int x, int y, int w, int h) {        g.setColor(((GTKStyle)context.getStyle()).getGTKColor(                context.getComponent(), context.getRegion(), state,                GTKColorType.TEXT_BACKGROUND));        paintFlatBox(context, g, state, key, x, y, w, h);    }    // NOTE: this assumes you have set the right color before calling this    public void paintFlatBox(SynthContext context, Graphics g, int state,                             String key, int x, int y, int w, int h) {        GTKStyle style = (GTKStyle)context.getStyle();        if (key == "cell_odd") {            g.fillRect(x, y, w, h);        }        else {            paintBackground(context, g, state, g.getColor(), x, y, w, h);        }        if (key == "tooltip") {            g.setColor(Color.BLACK);            g.drawRect(x, y, w - 1, h - 1);        }    }    public void paintFocus(SynthContext context, Graphics g, int state,                           String key, int x, int y, int w, int h) {        GTKStyle style = (GTKStyle)context.getStyle();        int[] pattern = (int[])style.getClassSpecificValue(                                     context, "focus-line-pattern");        int size = style.getClassSpecificIntValue(context,                                                  "focus-line-width", 1);        if (pattern == null) {            pattern = DEFAULT_FOCUS_PATTERN;        }        if (size <= 0) {            return;        }        g.setColor(getFocusColor(context, state));        _paintFocus(g, x, y, w, h, pattern, size);    }    void _paintFocus(Graphics g, int x, int y, int w, int h, int[] pattern,                     int size) {        g.translate(x, y);        // PENDING: This will need to be optimized        int initial = size / 2;        int offset = initial;        int index = 0;        int max1 = w - size;        int max2 = max1 + h - size;        int max3 = max2 + w - size;        int max4 = max3 + h;        while (offset < max4) {            int next = offset + pattern[index];            if (index % 2 == 0) {                if (offset < max1) {                    // top                    g.fillRect(offset, 0, Math.min(next, w) - offset, size);                    offset = Math.min(next, max1);                }                if (offset != next && offset < max2) {                    // right                    g.fillRect(w - size, offset - max1, size,                               Math.min(max2, next) - offset);                    offset = Math.min(max2, next);                }                if (offset != next && offset < max3) {                    // bottom                    int x2 = w - (offset - max2);                    int temp = Math.min(next - offset, max3 - offset);                    g.fillRect(x2 - temp, h - size, temp, size);                    offset += temp;                }                if (offset != next) {

⌨️ 快捷键说明

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