package jp.ac.kyutech.mns.ist; import java.awt.Color; import java.util.ArrayList; import edu.umd.cs.piccolo.event.PBasicInputEventHandler; import edu.umd.cs.piccolo.event.PInputEvent; import edu.umd.cs.piccolo.nodes.PPath; public class DrawPenToolbar extends PPath { private static final long serialVersionUID = 1232113462523688590L; ArrayList<PPath> palettes; // PCamera camera; public Color color; public int width; ArrayList<PenWidth> penwidths; public DrawPenToolbar(){ // camera = cam; palettes = new ArrayList<PPath>(); for(float f=0.0f; f<0.8f; f+=0.06f){ final PPath p = PPath.createRectangle(0, 0, 18, 15); Color c = new Color(Color.HSBtoRGB(f, 0.9f, 0.7f)); p.setPaint(c); if (color == null) color = c; addChild(p); p.offset(palettes.size()*18, 0); palettes.add(p); p.addAttribute("nozoom", true); p.addInputEventListener(new PBasicInputEventHandler(){ public void mouseEntered(PInputEvent e){ p.setScale(2.0f); } public void mousePressed(PInputEvent e){ color = (Color) p.getPaint(); setColor(color); } public void mouseExited(PInputEvent e){ p.setScale(1.0f); } }); } final PPath p = PPath.createRectangle(0, 0, 18, 15); p.setPaint(new Color(0, 0, 90)); addChild(p); p.offset(palettes.size()*18, 0); palettes.add(p); // p.addAttribute("nozoom", true); p.addInputEventListener(new PBasicInputEventHandler(){ public void mouseEntered(PInputEvent e){ p.setScale(2.0f); } public void mousePressed(PInputEvent e){ color = (Color) p.getPaint(); setColor(color); } public void mouseExited(PInputEvent e){ p.setScale(1.0f); } }); penwidths = new ArrayList<DrawPenToolbar.PenWidth>(); for(int i=2;i<=10;i+=2){ PenWidth pw = new PenWidth(i); addChild(pw); palettes.add(pw); penwidths.add(pw); pw.offset(palettes.size()*18, 0); } setPenWidth(6); setBounds(getFullBounds()); } public void setColor(Color c){ color = c; for(PenWidth pw : penwidths){ pw.centerP.setPaint(c); pw.centerP.setStrokePaint(c); } } public void setPenWidth(int w){ for(PenWidth pw : penwidths){ pw.setPaint(Color.white); } PenWidth pw = penwidths.get(w/2-1); pw.setPaint(Color.yellow); width = w; } class PenWidth extends PPath { private static final long serialVersionUID = -3703176136509527442L; int w; PPath centerP; PenWidth(int _w){ setPathToRectangle(0, 0, 18, 16); setPaint(Color.white); w = _w; centerP = PPath.createEllipse(9-w/2, 8-w/2, w, w); centerP.setPaint(color); centerP.setStrokePaint(color); addChild(centerP); addInputEventListener(new PBasicInputEventHandler(){ public void mouseEntered(PInputEvent e){ setStroke(Note.getCachedBasicStroke(2f)); } public void mousePressed(PInputEvent e){ setPenWidth(w); } public void mouseExited(PInputEvent e){ setStroke(Note.getCachedBasicStroke(1f)); } }); } } }