package com.kreative.paint.tool.ui;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.HashSet;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import com.kreative.paint.ToolContext;
import com.kreative.paint.ToolContextConstants;
import com.kreative.paint.ToolContextListener;
import com.kreative.paint.tool.Tool;
public class CharcoalBrushesUI extends JPanel implements ToolContextListener {
private static final long serialVersionUID = 1L;
private ToolContext tc;
private Set<BrushLabel> labels;
public CharcoalBrushesUI(ToolContext tc, boolean mini) {
this.tc = tc;
labels = new HashSet<BrushLabel>();
setLayout(new GridLayout(1,0));
for (int i = 0; i < tc.getCharcoalBrushes().size(); i++) {
BrushLabel l = new BrushLabel(i);
labels.add(l);
add(l);
}
tc.addToolContextListener(this);
}
public void modeChanged(ToolContext src, boolean drawMode) {}
public void toolChanged(ToolContext src, Tool previousTool, Tool nextTool) {}
public void toolDoubleClicked(ToolContext src, Tool tool) {}
public void toolSettingsChanged(ToolContext src, long delta) {
if ((delta & ToolContextConstants.CHANGED_CHARCOAL_BRUSH) != 0L) {
for (BrushLabel l : labels) l.updateSelection();
}
}
private class BrushLabel extends JLabel {
private static final long serialVersionUID = 1L;
private int i;
public BrushLabel(int i) {
super(new ImageIcon(tc.getCharcoalBrushes().get(i).getPreparedImage()));
this.i = i;
updateSelection();
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
tc.setCharcoalBrushIndex(BrushLabel.this.i);
}
});
}
public void updateSelection() {
if (tc.getCharcoalBrushIndex() == i) {
Border inner = BorderFactory.createEmptyBorder(2, 2, 2, 2);
Border outer = BorderFactory.createLineBorder(Color.black, 2);
setBorder(BorderFactory.createCompoundBorder(outer, inner));
} else {
setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
}
}
}
}