package skrueger.swing; import java.awt.Color; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import org.opengis.filter.expression.Expression; import schmitzm.geotools.styling.StylingUtil; public class ColorButton extends JButton { private Color color = Color.red; public ColorButton(Color newColor) { setColor(newColor); } public ColorButton() { setColor(color); } public ColorButton(AbstractAction abstractAction) { super(abstractAction); setColor(color); } public Color getColor() { return color; } public void setColor(Expression colorExpression) { setColor(StylingUtil.getColorFromExpression(colorExpression)); } @Override public void setAction(Action a) { super.setAction(a); setColor(color); } /** * Updates a {@link JButton}'s {@link Icon} with a {@link Color}. * * @param button * The {@link JButton} to change the {@link Icon} * @param newColor * {@link Color} to set. * * @author Stefan Alfons * Tzeggai */ public void setColor(final Color newColor) { color = newColor; if (newColor == null) { setIcon(null); // TODO nice color coose me icons?! return; } setEnabled(true); final BufferedImage bi = new BufferedImage(30, 10, BufferedImage.TYPE_INT_RGB); final Graphics2D g2d = bi.createGraphics(); g2d.setColor(newColor); g2d.setBackground(newColor); g2d.fillRect(0, 0, 30, 10); setIcon(new ImageIcon(bi)); repaint(); } }