WindowsGraphicsUtilspublic class WindowsGraphicsUtils extends Object A collection of static utility methods used for rendering the Windows look
and feel. |
Methods Summary |
---|
static boolean | isLeftToRight(java.awt.Component c)
return c.getComponentOrientation().isLeftToRight();
| static void | paintClassicText(javax.swing.AbstractButton b, java.awt.Graphics g, int x, int y, java.lang.String text, int mnemIndex)
ButtonModel model = b.getModel();
/* 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, x, y);
} else { /*** paint the text disabled ***/
color = UIManager.getColor("Button.shadow");
Color shadow = UIManager.getColor("Button.disabledShadow");
if(model.isArmed()) {
color = UIManager.getColor("Button.disabledForeground");
} else {
if (shadow == null) {
shadow = b.getBackground().darker();
}
g.setColor(shadow);
SwingUtilities2.drawStringUnderlineCharAt(b, g, text, mnemIndex,
x + 1, y + 1);
}
if (color == null) {
color = b.getBackground().brighter();
}
g.setColor(color);
SwingUtilities2.drawStringUnderlineCharAt(b, g, text, mnemIndex, x, y);
}
| public static void | paintText(java.awt.Graphics g, javax.swing.AbstractButton b, java.awt.Rectangle textRect, java.lang.String text, int textShiftOffset)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.
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;
}
XPStyle xp = XPStyle.getXP();
if (xp != null && !(b instanceof JMenuItem)) {
paintXPText(b, g, textRect.x + textShiftOffset,
textRect.y + fm.getAscent() + textShiftOffset,
text, mnemIndex);
} else {
paintClassicText(b, g, textRect.x + textShiftOffset,
textRect.y + fm.getAscent() + textShiftOffset,
text, mnemIndex);
}
| static void | paintXPText(javax.swing.AbstractButton b, java.awt.Graphics g, int x, int y, java.lang.String text, int mnemIndex)
Part part = WindowsButtonUI.getXPButtonType(b);
State state = WindowsButtonUI.getXPButtonState(b);
paintXPText(b, part, state, g, x, y, text, mnemIndex);
| static void | paintXPText(javax.swing.AbstractButton b, Part part, State state, java.awt.Graphics g, int x, int y, java.lang.String text, int mnemIndex)
XPStyle xp = XPStyle.getXP();
Color textColor = b.getForeground();
if (textColor instanceof UIResource) {
textColor = xp.getColor(b, part, state, Prop.TEXTCOLOR, b.getForeground());
// to work around an apparent bug in Windows, use the pushbutton
// color for disabled toolbar buttons if the disabled color is the
// same as the enabled color
if (part == Part.TP_BUTTON && state == State.DISABLED) {
Color enabledColor = xp.getColor(b, part, State.NORMAL,
Prop.TEXTCOLOR, b.getForeground());
if(textColor.equals(enabledColor)) {
textColor = xp.getColor(b, Part.BP_PUSHBUTTON, state,
Prop.TEXTCOLOR, textColor);
}
}
// only draw shadow if developer hasn't changed the foreground color
// and if the current style has text shadows.
TypeEnum shadowType = xp.getTypeEnum(b, part,
state, Prop.TEXTSHADOWTYPE);
if (shadowType == TypeEnum.TST_SINGLE ||
shadowType == TypeEnum.TST_CONTINUOUS) {
Color shadowColor = xp.getColor(b, part, state,
Prop.TEXTSHADOWCOLOR, Color.black);
Point offset = xp.getPoint(b, part, state, Prop.TEXTSHADOWOFFSET);
if (offset != null) {
g.setColor(shadowColor);
SwingUtilities2.drawStringUnderlineCharAt(b, g, text, mnemIndex,
x + offset.x,
y + offset.y);
}
}
}
g.setColor(textColor);
SwingUtilities2.drawStringUnderlineCharAt(b, g, text, mnemIndex, x, y);
| static void | repaintMnemonicsInContainer(java.awt.Container cont)
Component c;
for(int i=0; i<cont.getComponentCount(); i++) {
c = cont.getComponent(i);
if(c == null || !c.isVisible()) {
continue;
}
if(c instanceof AbstractButton
&& ((AbstractButton)c).getMnemonic() != '\0") {
c.repaint();
continue;
} else if(c instanceof JLabel
&& ((JLabel)c).getDisplayedMnemonic() != '\0") {
c.repaint();
continue;
}
if(c instanceof Container) {
repaintMnemonicsInContainer((Container)c);
}
}
| static void | repaintMnemonicsInWindow(java.awt.Window w)
if(w == null || !w.isShowing()) {
return;
}
Window[] ownedWindows = w.getOwnedWindows();
for(int i=0;i<ownedWindows.length;i++) {
repaintMnemonicsInWindow(ownedWindows[i]);
}
repaintMnemonicsInContainer(w);
|
|