package org.limewire.ui.swing.painter; import java.awt.Graphics2D; import java.awt.Paint; import org.jdesktop.swingx.JXButton; import org.jdesktop.swingx.painter.AbstractPainter; /** * Background painter a simple 3 state rounded button. * When the mouse is not over the component is left * unpainted */ public class PopupButtonBackgroundPainter extends AbstractPainter<JXButton> { final private int arcWidth; final private int arcHeight; final private Paint backgroundPressed; final private Paint backgroundRollover; public PopupButtonBackgroundPainter(Paint backgroundPressed, Paint backgroundRollover, int arcWidth, int arcHeight) { this.arcWidth = arcWidth; this.arcHeight = arcHeight; this.backgroundPressed = backgroundPressed; this.backgroundRollover = backgroundRollover; this.setAntialiasing(true); } @Override protected void doPaint(Graphics2D g, JXButton button, int width, int height) { if (button.getModel().isPressed() || button.getModel().isSelected()) { g.setPaint(backgroundPressed); g.fillRoundRect(1, 0, width-2, height-1, arcWidth, arcHeight); } else if (button.getModel().isRollover() || button.hasFocus()) { g.setPaint(backgroundRollover); g.fillRoundRect(1, 0, width-2, height-1, arcWidth, arcHeight); } } }