package cit.PureATN; import java.awt.BasicStroke; import java.awt.event.InputEvent; import java.awt.geom.Point2D; import javax.swing.WindowConstants; import org.piccolo2d.PCanvas; import org.piccolo2d.PLayer; 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.nodes.PPath; import org.piccolo2d.util.PPaintContext; public class Note extends PFrame { /** * */ private static final long serialVersionUID = 1L; private PLayer layer; public static PInputEventFilter disablemask = new PInputEventFilter(0); public static Note theapp; // The Application public Note() { this(null); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); theapp = this; // どこからでもNote.theapp で参照できるように } public Note(final PCanvas aCanvas) { super("Note", false, aCanvas); setSize(650, 800); } public void initialize() { super.initialize(); // らくがき用マウスイベント 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); layer = getCanvas().getLayer(); getCanvas().setDefaultRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); getCanvas().setAnimatingRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); getCanvas().setInteractingRenderQuality(PPaintContext.HIGH_QUALITY_RENDERING); } public PBasicInputEventHandler createSquiggleEventHandler() { return new PDragSequenceEventHandler() { protected PPath squiggle; public void startDrag(final PInputEvent e) { super.startDrag(e); final Point2D p = e.getPosition(); squiggle = new PPath.Float(); squiggle.moveTo((float) p.getX(), (float) p.getY()); squiggle.setStroke(new BasicStroke((float) (1 / e.getCamera().getViewScale()))); layer.addChild(squiggle); } public void drag(final PInputEvent e) { super.drag(e); updateSquiggle(e); } public void endDrag(final PInputEvent e) { super.endDrag(e); updateSquiggle(e); squiggle = null; } public void updateSquiggle(final PInputEvent aEvent) { final Point2D p = aEvent.getPosition(); squiggle.lineTo((float) p.getX(), (float) p.getY()); } }; } public static void main(final String[] args) { new Note(); } }