/*
* @(#)WindowsGraphicsUtils.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 com.sun.java.swing.SwingUtilities2;
import java.awt.*;
import javax.swing.*;
/**
* A collection of static utility methods used for rendering the Windows look
* and feel.
*
* @version 1.13 12/19/03
* @author Mark Davidson
* @since 1.4
*/
public class WindowsGraphicsUtils {
/**
* Renders a text String in Windows without the mnemonic.
* This is here because the WindowsUI hiearchy doesn't match the Component heirarchy. All
* the overriden paintText methods of the ButtonUI delegates will call this static method.
* <p>
* @param g Graphics context
* @param b Current button to render
* @param textRect Bounding rectangle to render the text.
* @param text String to render
*/
public static void paintText(Graphics g, AbstractButton b,
Rectangle textRect, String text,
int textShiftOffset) {
ButtonModel model = b.getModel();
FontMetrics fm = SwingUtilities2.getFontMetrics(b, g);
int mnemIndex = b.getDisplayedMnemonicIndex();
// W2K Feature: Check to see if the Underscore should be rendered.
if (WindowsLookAndFeel.isMnemonicHidden() == true) {
mnemIndex = -1;
}
/* Draw the Text */
Color color = b.getForeground();
if(model.isEnabled()) {
/*** paint the text normally */
if(!(b instanceof JMenuItem && model.isArmed())
&& !(b instanceof JMenu && (model.isSelected() || model.isRollover()))) {
/* We shall not set foreground color for selected menu or
* armed menuitem. Foreground must be set in appropriate
* Windows* class because these colors passes from
* BasicMenuItemUI as protected fields and we can't
* reach them from this class */
g.setColor(b.getForeground());
}
SwingUtilities2.drawStringUnderlineCharAt(b, g,text, mnemIndex,
textRect.x + textShiftOffset,
textRect.y + fm.getAscent() + textShiftOffset);
} else { /*** paint the text disabled ***/
color = UIManager.getColor("Button.disabledForeground");
Color shadow = UIManager.getColor("Button.disabledShadow");
XPStyle xp = XPStyle.getXP();
if (xp != null) {
color = xp.getColor("button.pushbutton(disabled).textcolor", color);
} else {
// Paint shadow only if not XP
if (shadow == null) {
shadow = b.getBackground().darker();
}
g.setColor(shadow);
SwingUtilities2.drawStringUnderlineCharAt(b, g,text,
mnemIndex,
textRect.x,
textRect.y + fm.getAscent());
}
if (color == null) {
color = b.getBackground().brighter();
}
g.setColor(color);
SwingUtilities2.drawStringUnderlineCharAt(b, g,text,
mnemIndex,
textRect.x - 1,
textRect.y + fm.getAscent() - 1);
}
}
static boolean isLeftToRight(Component c) {
return c.getComponentOrientation().isLeftToRight();
}
}
|