package cit.PureATN; import java.awt.event.InputEvent; import java.awt.geom.Point2D; import javax.swing.WindowConstants; import org.piccolo2d.PCamera; import org.piccolo2d.PCanvas; import org.piccolo2d.PLayer; import org.piccolo2d.PNode; import org.piccolo2d.event.PBasicInputEventHandler; import org.piccolo2d.event.PDragSequenceEventHandler; import org.piccolo2d.event.PInputEvent; import org.piccolo2d.event.PInputEventFilter; import org.piccolo2d.event.PMouseWheelZoomEventHandler; import org.piccolo2d.extras.PFrame; import org.piccolo2d.util.PPaintContext; public class Note extends PFrame { public static void main(final String[] args) { new Note(); } private static final long serialVersionUID = 1L; public PLayer layer; public static PInputEventFilter disablemask = new PInputEventFilter(0); public static Note theapp; // The Application public DPenReceiver dPenReceiver; public Note() { this(null); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); theapp = this; // どこからでもNote.theapp で参照できるように } public static String currentTitle = "Note (Esc key to zoom whole strokes)"; public Note(final PCanvas aCanvas) { super(currentTitle, false, aCanvas); setSize(650, 800); setLocation(10, 10); dPenReceiver = new DPenReceiver(this); } public void initialize() { super.initialize(); // らくがき用マウスイベント // final PBasicInputEventHandler squiggleEventHandler = // createSSSquiggleEventHandler(); final PBasicInputEventHandler squiggleEventHandler = createSquiggleEventHandler(); squiggleEventHandler.setEventFilter(new PInputEventFilter(InputEvent.BUTTON1_MASK)); getCanvas().removeInputEventListener(getCanvas().getPanEventHandler()); getCanvas().addInputEventListener(squiggleEventHandler); // install mouse wheel zoom event handler final PMouseWheelZoomEventHandler mouseWheelZoomEventHandler = new PMouseWheelZoomEventHandler(); getCanvas().addInputEventListener(mouseWheelZoomEventHandler); // pan // final MyPPanEventHandler panEventHandler = new // MyPPanEventHandler(getCanvas()); // panEventHandler.setEventFilter(disablemask); // getCanvas().addInputEventListener(panEventHandler); getCanvas().addKeyListener(new KeyEvent_on_Note(getCanvas())); layer = getCanvas().getLayer(); getCanvas().setDefaultRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); getCanvas().setAnimatingRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); getCanvas().setInteractingRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); } /** * マウスで描くときのPenIDをどうするか (1〜10) * * @param penidint */ public void setMousePenID(int penidint) { mousePenID = penidint; setTitle(currentTitle + " [PenID:0" + penidint + "]"); } public int mousePenID = 1; // マウスで描くときのPenID public PBasicInputEventHandler createSquiggleEventHandler() { return new PDragSequenceEventHandler() { PNode pressPN; public void startDrag(final PInputEvent e) { super.startDrag(e); pressPN = e.getPickedNode(); // System.out.println(pressPN.getClass().getName()); if (pressPN instanceof PCamera) { String mousePenIDStr = "pen0" + mousePenID; PenUser.press(mousePenIDStr, 1, false); final Point2D p = e.getPosition(); // squiggle = new ShortStroke(); // layer.addChild(squiggle); // squiggle.startDrag_on_draw(p.getX(), p.getY()); PenUser.add(mousePenIDStr, (int) p.getX(), (int) p.getY()); // // squiggle.setStroke(new BasicStroke((float) (3 / // // e.getCamera().getViewScale()))); // layer.repaint(); } else { } } public void drag(final PInputEvent e) { super.drag(e); if (pressPN instanceof PCamera) updateSquiggle(e); } public void endDrag(final PInputEvent e) { super.endDrag(e); if (pressPN instanceof PCamera) { updateSquiggle(e); String mousePenIDStr = "pen0" + mousePenID; PenUser.press(mousePenIDStr, 0, false); } } public void updateSquiggle(final PInputEvent aEvent) { final Point2D p = aEvent.getPosition(); // squiggle.drag_on_draw(p.getX(), p.getY()); // layer.repaint(); String mousePenIDStr = "pen0" + mousePenID; PenUser.add(mousePenIDStr, (int) p.getX(), (int) p.getY()); } }; } }