diff --git a/src/main/java/cit/PureATN/KeyEvent_on_Note.java b/src/main/java/cit/PureATN/KeyEvent_on_Note.java index 0c94b37..4d00e55 100644 --- a/src/main/java/cit/PureATN/KeyEvent_on_Note.java +++ b/src/main/java/cit/PureATN/KeyEvent_on_Note.java @@ -1,6 +1,8 @@ package cit.PureATN; import java.awt.event.KeyListener; +import java.text.SimpleDateFormat; +import java.util.Date; import org.piccolo2d.PCanvas; import org.piccolo2d.activities.PTransformActivity; @@ -42,6 +44,10 @@ if (e.getKeyCode() == KeyEvent.VK_S) { byte[] ba = PenUser.byteSerializeExport(); PenUser.saveToFile(null, ba); + + SimpleDateFormat sdfdate = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); + PenUser.saveToFile("output_"+sdfdate.format(new Date())+".patn", ba); + } if (e.getKeyCode() == KeyEvent.VK_Q) { System.exit(0); diff --git a/src/main/java/cit/PureATN/Note.java b/src/main/java/cit/PureATN/Note.java index a09c72a..9a907ad 100644 --- a/src/main/java/cit/PureATN/Note.java +++ b/src/main/java/cit/PureATN/Note.java @@ -1,17 +1,16 @@ package cit.PureATN; +import java.awt.dnd.DropTarget; +import java.awt.dnd.DropTargetDropEvent; + import java.awt.event.InputEvent; -import java.awt.geom.Point2D; +import java.util.TooManyListenersException; 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; @@ -74,6 +73,15 @@ 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 @@ -87,7 +95,7 @@ */ public void setMousePenID(int penidint) { mousePenID = penidint; - setTitle(currentTitle + " [PenID:0" + penidint + "]"); + setTitle(currentTitle + String.format(" [PenID:%02d]" , penidint )); } public int mousePenID = 1; // マウスで描くときのPenID @@ -96,4 +104,9 @@ return mousePenID; } + public void openFile(String absolutePath, DropTargetDropEvent dtde) { + byte[] ba = PenUser.loadFromFile(absolutePath); + PenUser.byteSerializeImport(ba); + } + } diff --git a/src/main/java/cit/PureATN/PathDropTargetListener.java b/src/main/java/cit/PureATN/PathDropTargetListener.java new file mode 100644 index 0000000..ce6f031 --- /dev/null +++ b/src/main/java/cit/PureATN/PathDropTargetListener.java @@ -0,0 +1,53 @@ +package cit.PureATN; + +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.awt.dnd.DnDConstants; +import java.awt.dnd.DropTargetDragEvent; +import java.awt.dnd.DropTargetDropEvent; +import java.awt.dnd.DropTargetEvent; +import java.awt.dnd.DropTargetListener; +import java.io.File; +import java.io.IOException; +import java.util.List; + +public class PathDropTargetListener implements DropTargetListener{ + Note parent; + PathDropTargetListener(Note parentd){ + parent = parentd; + } + @SuppressWarnings("unchecked") + public void drop(DropTargetDropEvent dtde) { +{ + DataFlavor[] dataFlavours = dtde.getCurrentDataFlavors(); + for(int i=0; i fileList = (List) dtde.getTransferable().getTransferData(dataFlavours[i]); + + for(File file: fileList) parent.openFile(file.getAbsolutePath(), dtde); + //Iterate the file list... + } catch (UnsupportedFlavorException e1) { + // handle the exception + } catch (IOException e1) { + // handle the exception + } + } + } + } + } + public void dragEnter(DropTargetDragEvent dtde) { + dtde.acceptDrag(DnDConstants.ACTION_MOVE); + // System.out.println("enter"); + } + public void dragOver(DropTargetDragEvent dtde) { + // System.out.println("over"); + } + public void dropActionChanged(DropTargetDragEvent dtde) { + // System.out.println("action changed"); + } + public void dragExit(DropTargetEvent dte) { + // System.out.println("exit"); + } +} diff --git a/src/main/java/cit/PureATN/SquiggleEventHandler.java b/src/main/java/cit/PureATN/SquiggleEventHandler.java index f209e60..260b71b 100644 --- a/src/main/java/cit/PureATN/SquiggleEventHandler.java +++ b/src/main/java/cit/PureATN/SquiggleEventHandler.java @@ -18,8 +18,7 @@ } public String getPenIDStr() { - String mousePenIDStr = "pen0" + note.getMousePenID(); - return mousePenIDStr; + return String.format("pen%02d" ,note.getMousePenID()); } public void startDrag(final PInputEvent e) {