package cit.PureATN; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDropEvent; import java.awt.event.InputEvent; import java.util.TooManyListenersException; import javax.swing.WindowConstants; import org.piccolo2d.PCanvas; import org.piccolo2d.PLayer; import org.piccolo2d.event.PBasicInputEventHandler; 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 = this.createSquiggleEvent();// may be overridden by multinote System.out.println(squiggleEventHandler.getClass().getName()); 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(new WheelEvent_on_Note(getCanvas())); // 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); //ドラッグ&ドロップによるファイルオープン DropTarget dropTarget = new DropTarget(); try{ dropTarget.addDropTargetListener(new PathDropTargetListener(this)); getCanvas().setDropTarget(dropTarget); }catch(TooManyListenersException ex){ ex.printStackTrace(System.out); } } public SquiggleEventHandler createSquiggleEvent(){ // may be overridden return new SquiggleEventHandler(this); } /** * マウスで描くときのPenIDをどうするか (1〜10) * * @param penidint */ public void setMousePenID(int penidint) { mousePenID = penidint; setTitle(currentTitle + String.format(" [PenID:%02d]" , penidint )); } public int mousePenID = 1; // マウスで描くときのPenID public int getMousePenID() { return mousePenID; } public void openFile(String absolutePath, DropTargetDropEvent dtde) { byte[] ba = PenUser.loadFromFile(absolutePath); PenUser.byteSerializeImport(ba); } }