001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.plugins.streetside.gui.boilerplate;
003
004import java.awt.Color;
005import java.awt.Graphics;
006import java.awt.Graphics2D;
007import java.awt.RenderingHints;
008
009import javax.swing.Action;
010import javax.swing.BorderFactory;
011import javax.swing.JButton;
012
013import org.openstreetmap.josm.plugins.streetside.utils.StreetsideColorScheme;
014
015
016public class StreetsideButton extends JButton {
017
018  private static final long serialVersionUID = -3060978712233067368L;
019
020  public StreetsideButton(final Action action) {
021    this(action, false);
022  }
023
024  public StreetsideButton(final Action action, boolean slim) {
025    super(action);
026    setForeground(Color.WHITE);
027    setBorder(slim ? BorderFactory.createEmptyBorder(3, 4, 3, 4) : BorderFactory.createEmptyBorder(7, 10, 7, 10));
028  }
029
030  @Override
031  protected void paintComponent(final Graphics g) {
032    if (!isEnabled()) {
033      g.setColor(StreetsideColorScheme.TOOLBAR_DARK_GREY);
034    } else if (getModel().isPressed()) {
035      g.setColor(StreetsideColorScheme.STREETSIDE_BLUE.darker().darker());
036    } else if (getModel().isRollover()) {
037      g.setColor(StreetsideColorScheme.STREETSIDE_BLUE.darker());
038    } else {
039      g.setColor(StreetsideColorScheme.STREETSIDE_BLUE);
040    }
041    ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
042    g.fillRoundRect(0, 0, getWidth(), getHeight(), 3, 3);
043    super.paintComponent(g);
044  }
045
046  @Override
047  public boolean isContentAreaFilled() {
048    return false;
049  }
050}