package krasa.grepconsole.stats.common; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.geom.Rectangle2D; import javax.swing.*; import org.jetbrains.annotations.Nullable; public class ColorPanel extends JComponent { private static final Dimension SIZE = new Dimension(15, 15); protected final Dimension size; @Nullable private Color myColor = null; private Color borderColor = null; private String tooltip; public ColorPanel(String tooltip) { this(tooltip, SIZE); } public ColorPanel(String tooltip, final Dimension dimension) { this.tooltip = tooltip; addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { super.mousePressed(e); onMousePressed(e); } }); size = dimension; } protected void onMousePressed(MouseEvent e) { } @Override public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g.create(); try { if (myColor != null && isEnabled()) { g2d.setColor(myColor); g2d.fillRect(0, 0, getWidth(), getHeight()); g2d.draw(new Rectangle2D.Double(0.5, 0.5, getWidth() - 1, getHeight() - 1)); } g2d.setColor(borderColor); g2d.draw(new Rectangle2D.Double(1.5, 1.5, getWidth() - 3, getHeight() - 3)); } finally { g2d.dispose(); } } @Override public Dimension getPreferredSize() { return size; } @Override public Dimension getMaximumSize() { return size; } @Override public Dimension getMinimumSize() { return size; } @Override public String getToolTipText() { return tooltip; } public void setSelectedColor(@Nullable Color color) { myColor = color; repaint(); } public void setBorderColor(Color borderColor) { this.borderColor = borderColor; } }