package fr.edmhouse.display;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
public class ShadowPane extends JPanel {
private static final long serialVersionUID = 1L;
private BufferedImage shadow;
public ShadowPane() {
setOpaque(false);
setBorder(new EmptyBorder(10, 10, 10, 10));
}
@Override
public void invalidate() {
shadow = null;
super.invalidate();
}
@Override
protected void paintComponent(Graphics g) {
Insets insets = getInsets();
int x = insets.left;
int y = insets.top;
int width = getWidth() - (insets.left + insets.right);
int height = getHeight() - (insets.top + insets.bottom);
if (shadow == null) {
int shadowWidth = Math.min(Math.min(insets.left, insets.top),
Math.min(insets.right, insets.bottom));
shadow = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = shadow.createGraphics();
g2d.setColor(getBackground());
g2d.fillRect(0, 0, width, height);
g2d.dispose();
shadow = ShadowUtil.generateShadow(shadow, shadowWidth,
Color.BLACK, 0.5f);// TODO : add the shadow color to
// layout.edm and the shadowstrength
}
g.drawImage(shadow, 0, 0, this);
g.clearRect(x, y, width, height);
}
}