Methods Summary |
---|
protected javax.swing.plaf.basic.BasicButtonListener | createButtonListener(javax.swing.AbstractButton b)
return super.createButtonListener(b);
|
public static javax.swing.plaf.ComponentUI | createUI(javax.swing.JComponent c)
// ********************************
// Create PLAF
// ********************************
return windowsButtonUI;
|
protected java.awt.Color | getFocusColor()
return focusColor;
|
private static java.awt.Insets | getOpaqueInsets(javax.swing.border.Border b, java.awt.Component c)returns - b.getBorderInsets(c) if border is opaque
- null if border is completely non-opaque
- somewhere inbetween if border is compound and
outside border is opaque and inside isn't
if (b == null) {
return null;
}
if (b.isBorderOpaque()) {
return b.getBorderInsets(c);
} else if (b instanceof CompoundBorder) {
CompoundBorder cb = (CompoundBorder)b;
Insets iOut = getOpaqueInsets(cb.getOutsideBorder(), c);
if (iOut != null && iOut.equals(cb.getOutsideBorder().getBorderInsets(c))) {
// Outside border is opaque, keep looking
Insets iIn = getOpaqueInsets(cb.getInsideBorder(), c);
if (iIn == null) {
// Inside is non-opaque, use outside insets
return iOut;
} else {
// Found non-opaque somewhere in the inside (which is
// also compound).
return new Insets(iOut.top + iIn.top, iOut.left + iIn.left,
iOut.bottom + iIn.bottom, iOut.right + iIn.right);
}
} else {
// Outside is either all non-opaque or has non-opaque
// border inside another compound border
return iOut;
}
} else {
return null;
}
|
public java.awt.Dimension | getPreferredSize(javax.swing.JComponent c)
Dimension d = super.getPreferredSize(c);
/* Ensure that the width and height of the button is odd,
* to allow for the focus line if focus is painted
*/
AbstractButton b = (AbstractButton)c;
if (d != null && b.isFocusPainted()) {
if(d.width % 2 == 0) { d.width += 1; }
if(d.height % 2 == 0) { d.height += 1; }
}
return d;
|
protected void | installDefaults(javax.swing.AbstractButton b)
super.installDefaults(b);
if(!defaults_initialized) {
String pp = getPropertyPrefix();
dashedRectGapX = UIManager.getInt(pp + "dashedRectGapX");
dashedRectGapY = UIManager.getInt(pp + "dashedRectGapY");
dashedRectGapWidth = UIManager.getInt(pp + "dashedRectGapWidth");
dashedRectGapHeight = UIManager.getInt(pp + "dashedRectGapHeight");
focusColor = UIManager.getColor(pp + "focus");
defaults_initialized = true;
}
XPStyle xp = XPStyle.getXP();
if (xp != null) {
b.setBorder(xp.getBorder("button.pushbutton"));
LookAndFeel.installProperty(b, "rolloverEnabled", Boolean.TRUE);
}
|
public void | paint(java.awt.Graphics g, javax.swing.JComponent c)
if (XPStyle.getXP() != null) {
WindowsButtonUI.paintXPButtonBackground(g, c);
}
super.paint(g, c);
|
protected void | paintButtonPressed(java.awt.Graphics g, javax.swing.AbstractButton b)
setTextShiftOffset();
|
protected void | paintFocus(java.awt.Graphics g, javax.swing.AbstractButton b, java.awt.Rectangle viewRect, java.awt.Rectangle textRect, java.awt.Rectangle iconRect)
if (b.getParent() instanceof JToolBar) {
// Windows doesn't draw the focus rect for buttons in a toolbar.
return;
}
if (XPStyle.getXP() != null) {
return;
}
// focus painted same color as text on Basic??
int width = b.getWidth();
int height = b.getHeight();
g.setColor(getFocusColor());
BasicGraphicsUtils.drawDashedRect(g, dashedRectGapX, dashedRectGapY,
width - dashedRectGapWidth, height - dashedRectGapHeight);
|
protected void | paintText(java.awt.Graphics g, javax.swing.AbstractButton b, java.awt.Rectangle textRect, java.lang.String text)Overridden method to render the text without the mnemonic
WindowsGraphicsUtils.paintText(g, b, textRect, text, getTextShiftOffset());
|
static void | paintXPButtonBackground(java.awt.Graphics g, javax.swing.JComponent c)
AbstractButton b = (AbstractButton)c;
XPStyle xp = XPStyle.getXP();
if (b.isContentAreaFilled() && xp != null &&
"imagefile".equalsIgnoreCase(xp.getString("button.pushbutton", null, "bgtype"))) {
ButtonModel model = b.getModel();
boolean toolbar = (c.getParent() instanceof JToolBar);
XPStyle.Skin skin = xp.getSkin(toolbar ? "toolbar.button" : "button.pushbutton");
// normal, rollover/activated/focus, pressed, disabled, default
int index = 0;
if (toolbar) {
if (model.isArmed() && model.isPressed()) {
index = 2;
} else if (model.isSelected() && model.isRollover()) {
index = 5;
} else if (model.isSelected()) {
index = 4;
} else if (model.isRollover()) {
index = 1;
}
} else {
if (model.isArmed() && model.isPressed() || model.isSelected()) {
index = 2;
} else if (!model.isEnabled()) {
index = 3;
} else if (model.isRollover() || model.isPressed()) {
index = 1;
} else if (b instanceof JButton && ((JButton)b).isDefaultButton()) {
index = 4;
} else if (c.hasFocus()) {
index = 1;
}
}
Dimension d = c.getSize();
int dx = 0;
int dy = 0;
int dw = d.width;
int dh = d.height;
Border border = c.getBorder();
Insets insets;
if (border != null) {
// Note: The border may be compound, containing an outer
// opaque border (supplied by the application), plus an
// inner transparent margin border. We want to size the
// background to fill the transparent part, but stay
// inside the opaque part.
insets = WindowsButtonUI.getOpaqueInsets(border, c);
} else {
insets = c.getInsets();
}
if (insets != null) {
dx += insets.left;
dy += insets.top;
dw -= (insets.left + insets.right);
dh -= (insets.top + insets.bottom);
}
skin.paintSkin(g, dx, dy, dw, dh, index);
}
|
protected void | uninstallDefaults(javax.swing.AbstractButton b)
super.uninstallDefaults(b);
defaults_initialized = false;
|