package jp.ac.kyutech.mns.ist; import java.awt.BasicStroke; import java.awt.event.InputEvent; import java.awt.geom.Point2D; import jp.ac.kyutech.mns.ist.util.MouseWheelRotationListener; import jp.ac.kyutech.mns.ist.util.WheelRotationHandler; import edu.umd.cs.piccolo.PCanvas; import edu.umd.cs.piccolo.PLayer; import edu.umd.cs.piccolo.event.PBasicInputEventHandler; import edu.umd.cs.piccolo.event.PDragSequenceEventHandler; import edu.umd.cs.piccolo.event.PInputEvent; import edu.umd.cs.piccolo.event.PInputEventFilter; import edu.umd.cs.piccolo.nodes.PPath; import edu.umd.cs.piccolox.PFrame; /** * SimpleATNでは未使用.マウス手書き機能.Piccolo Java のサンプルほぼそのまま. * @author miuramo * */ public class PothosSample extends PFrame implements MouseWheelRotationListener { /** * */ private static final long serialVersionUID = 1L; public PLayer layer; public PothosSample() { this(null); } public PothosSample(final PCanvas aCanvas) { super("PothosSample", false, aCanvas); } public void initialize() { super.initialize(); final PBasicInputEventHandler squiggleEventHandler = createSquiggleEventHandler(); // final PBasicInputEventHandler squiggleEventHandler = new SquiggleHandler(this); squiggleEventHandler.setEventFilter(new PInputEventFilter(InputEvent.BUTTON1_MASK)); // getCanvas().removeInputEventListener(getCanvas().getPanEventHandler()); getCanvas().addInputEventListener(squiggleEventHandler); getCanvas().removeInputEventListener(getCanvas().getZoomEventHandler()); final WheelRotationHandler wrHandler = new WheelRotationHandler(getCanvas(), getCanvas().getCamera()); wrHandler.setEventFilter(new PInputEventFilter(InputEvent.BUTTON2_MASK)); getCanvas().addInputEventListener(wrHandler); getCanvas().getPanEventHandler().setEventFilter(new PInputEventFilter(InputEvent.BUTTON3_MASK)); layer = getCanvas().getLayer(); } 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(); 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 PothosSample(); } @Override public void mouseWheelRotated(float f) { // TODO Auto-generated method stub } }