package com.quiltplayer.view.swing.panels;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
import net.miginfocom.swing.MigLayout;
import com.quiltplayer.view.swing.ColorConstantsDark;
import com.quiltplayer.view.swing.util.ColorUtils;
/**
* @author Vlado Palczynski
*/
public class HighlightableQPanel extends JPanel {
private static final long serialVersionUID = 1L;
protected Color background = ColorConstantsDark.BACKGROUND;
// Hit detection.
Shape shape;
public HighlightableQPanel() {
super(new MigLayout("insets 7, wrap 1"));
setDefaults();
}
private void setDefaults() {
setOpaque(true);
setBackground(background);
addMouseListener(mouseListener);
}
protected transient MouseListener mouseListener = new MouseAdapter() {
@Override
public void mouseEntered(MouseEvent e) {
background = ColorUtils.brighten(background);
repaint();
}
@Override
public void mouseExited(MouseEvent e) {
background = ColorUtils.darken(background);
repaint();
}
};
/*
* (non-Javadoc)
*
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
*/
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(background);
g2d.fillRoundRect(0, 0, getWidth(), getHeight(), 11, 11);
}
}