package oripa.paint.copypaste;
import java.awt.geom.Point2D.Double;
import javax.vecmath.Vector2d;
import oripa.ORIPA;
import oripa.doc.Doc;
import oripa.paint.core.PaintContext;
import oripa.paint.core.PickingVertex;
import oripa.paint.creasepattern.CreasePattern;
import oripa.paint.creasepattern.Painter;
import oripa.paint.geometry.GeometricOperation;
public class PastingOnVertex extends PickingVertex {
private FilledOriLineArrayList shiftedLines;
@Override
protected void initialize() {
}
@Override
protected void undoAction(PaintContext context) {
context.setMissionCompleted(false);
ORIPA.doc.loadUndoInfo();
}
@Override
protected boolean onAct(PaintContext context, Double currentPoint,
boolean freeSelection) {
if(context.pickCandidateV == null){
return false;
}
context.pushVertex(context.pickCandidateV);
return true;
}
@Override
protected void onResult(PaintContext context) {
Vector2d v = context.popVertex();
if (context.getLineCount() > 0) {
Doc document = ORIPA.doc;
CreasePattern creasePattern = document.getCreasePattern();
document.pushUndoInfo();
Vector2d origin = OriginHolder.getInstance().getOrigin(context);
double ox = origin.x;
double oy = origin.y;
shiftedLines = new FilledOriLineArrayList(context.getLineCount());
GeometricOperation.shiftLines(context.getLines(), shiftedLines, v.x - ox, v.y -oy);
// for(int i = 0; i < context.getLineCount(); i++){
// ORIPA.doc.addLine(shiftedLines.get(i));
// }
Painter painter = new Painter();
painter.pasteLines(shiftedLines, creasePattern);
context.setMissionCompleted(true);
}
}
}