package oripa.paint.copypaste; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Point2D.Double; import javax.vecmath.Vector2d; import oripa.ORIPA; import oripa.paint.EditMode; import oripa.paint.GraphicMouseActionInterface; import oripa.paint.core.GraphicMouseAction; import oripa.paint.core.PaintContext; public class CopyAndPasteAction extends GraphicMouseAction { private ChangeOriginAction originAction = new ChangeOriginAction(); private PasteAction pasteAction = new PasteAction(); private GraphicMouseActionInterface action = pasteAction; public CopyAndPasteAction() { setEditMode(EditMode.COPY); setNeedSelect(true); } private OriginHolder originHolder = OriginHolder.getInstance(); @Override public void recover(PaintContext context) { originHolder.resetOrigin(context); action = pasteAction; action.recover(context); } @Override public void destroy(PaintContext context) { originHolder.setOrigin(null); action.destroy(context); } @Override public void undo(PaintContext context) { ORIPA.doc.loadUndoInfo(); } @Override public GraphicMouseActionInterface onLeftClick(PaintContext context, AffineTransform affine, boolean differentAction) { action.onLeftClick(context, affine, differentAction); return this; } // @Override // public void onRightClick(PaintContext context, AffineTransform affine, // boolean differentAction) { // // TODO Auto-generated method stub // super.onRightClick(context, affine, differentAction); // } @Override public void doAction(PaintContext context, Double point, boolean differntAction) { action.doAction(context, point, differntAction); } @Override public void onPress(PaintContext context, AffineTransform affine, boolean differentAction) { action.onPress(context, affine, differentAction); } @Override public void onDrag(PaintContext context, AffineTransform affine, boolean differentAction) { action.onDrag(context, affine, differentAction); } @Override public void onRelease(PaintContext context, AffineTransform affine, boolean differentAction) { action.onRelease(context, affine, differentAction); } /** * * @param changingOrigin {@code true} for selecting origin, {@code false} for pasting. */ public void changeAction(boolean changingOrigin){ if(changingOrigin){ action = originAction; } else { action = pasteAction; } } @Override public Vector2d onMove(PaintContext context, AffineTransform affine, boolean changingOrigin) { changeAction(changingOrigin); return action.onMove(context, affine, changingOrigin); } @Override public void onDraw(Graphics2D g2d, PaintContext context) { // TODO Auto-generated method stub action.onDraw(g2d, context); } }