Methods Summary |
---|
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;
|
static State | getXPButtonState(javax.swing.AbstractButton b)
Part part = getXPButtonType(b);
ButtonModel model = b.getModel();
State state = State.NORMAL;
switch (part) {
case BP_RADIOBUTTON:
/* falls through */
case BP_CHECKBOX:
if (! model.isEnabled()) {
state = (model.isSelected()) ? State.CHECKEDDISABLED
: State.UNCHECKEDDISABLED;
} else if (model.isPressed() && model.isArmed()) {
state = (model.isSelected()) ? State.CHECKEDPRESSED
: State.UNCHECKEDPRESSED;
} else if (model.isRollover()) {
state = (model.isSelected()) ? State.CHECKEDHOT
: State.UNCHECKEDHOT;
} else {
state = (model.isSelected()) ? State.CHECKEDNORMAL
: State.UNCHECKEDNORMAL;
}
break;
case BP_PUSHBUTTON:
/* falls through */
case TP_BUTTON:
boolean toolbar = (b.getParent() instanceof JToolBar);
if (toolbar) {
if (model.isArmed() && model.isPressed()) {
state = State.PRESSED;
} else if (!model.isEnabled()) {
state = State.DISABLED;
} else if (model.isSelected() && model.isRollover()) {
state = State.HOTCHECKED;
} else if (model.isSelected()) {
state = State.CHECKED;
} else if (model.isRollover()) {
state = State.HOT;
} else if (b.hasFocus()) {
state = State.HOT;
}
} else {
if ((model.isArmed() && model.isPressed())
|| model.isSelected()) {
state = State.PRESSED;
} else if (!model.isEnabled()) {
state = State.DISABLED;
} else if (model.isRollover() || model.isPressed()) {
state = State.HOT;
} else if (b instanceof JButton
&& ((JButton)b).isDefaultButton()) {
state = State.DEFAULTED;
} else if (b.hasFocus()) {
state = State.HOT;
}
}
break;
default :
state = State.NORMAL;
}
return state;
|
static Part | getXPButtonType(javax.swing.AbstractButton b)
if(b instanceof JCheckBox) {
return Part.BP_CHECKBOX;
}
if(b instanceof JRadioButton) {
return Part.BP_RADIOBUTTON;
}
boolean toolbar = (b.getParent() instanceof JToolBar);
return toolbar ? Part.TP_BUTTON : Part.BP_PUSHBUTTON;
|
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(b, getXPButtonType(b)));
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)
// 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();
Part part = getXPButtonType(b);
if (b.isContentAreaFilled() && xp != null) {
Skin skin = xp.getSkin(b, part);
State state = getXPButtonState(b);
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, state);
}
|
protected void | uninstallDefaults(javax.swing.AbstractButton b)
super.uninstallDefaults(b);
defaults_initialized = false;
|