package oripa.paint.copypaste;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D.Double;
import java.util.Collection;
import javax.vecmath.Vector2d;
import oripa.paint.GraphicMouseActionInterface;
import oripa.paint.core.GraphicMouseAction;
import oripa.paint.core.PaintContext;
import oripa.paint.geometry.GeometricOperation;
import oripa.value.OriLine;
public class ChangeOriginAction extends GraphicMouseAction{
@Override
public GraphicMouseActionInterface onLeftClick(PaintContext context,
AffineTransform affine, boolean keepDoing) {
return this;
}
@Override
public void doAction(PaintContext context, Double point,
boolean differntAction) {
}
@Override
public void undo(PaintContext context) {
}
@Override
public void onPress(PaintContext context, AffineTransform affine,
boolean differentAction) {
}
@Override
public void onDrag(PaintContext context, AffineTransform affine,
boolean differentAction) {
}
@Override
public void onRelease(PaintContext context, AffineTransform affine,
boolean differentAction) {
}
@Override
public Vector2d onMove(PaintContext context, AffineTransform affine,
boolean differentAction) {
Vector2d closeVertex = GeometricOperation.pickVertexFromPickedLines(context);
context.pickCandidateV = closeVertex;
if(closeVertex != null){
OriginHolder holder = OriginHolder.getInstance();
holder.setOrigin(closeVertex);
}
return closeVertex;
}
@Override
public void onDraw(Graphics2D g2d, PaintContext context) {
super.onDraw(g2d, context);
Collection<OriLine> lines = context.getLines();
g2d.setColor(Color.MAGENTA);
for(OriLine line : lines){
this.drawVertex(g2d, context, line.p0.x, line.p0.y);
this.drawVertex(g2d, context, line.p1.x, line.p1.y);
}
this.drawPickCandidateVertex(g2d, context);
}
}