package open.dolphin.impl.scheam.schemastate;
import java.awt.Point;
import open.dolphin.impl.scheam.SchemaEditorImpl;
import open.dolphin.impl.scheam.holder.DrawingHolder;
/**
*
* @author pns
*/
public class SelectState extends AbstractState {
private DrawingHolder moving;
private Point temp; // ドラッグ途中で使う
public SelectState(SchemaEditorImpl context) {
super(context);
}
@Override
public void mouseDown(Point p) {
moving = findDrawing(p);
if (moving != null) {
start = p;
temp = p;
end = null;
}
}
@Override
public void mouseDragged(Point p) {
if (moving != null) {
end = p;
moving.translate(end.getX() - temp.getX(), end.getY() - temp.getY());
canvas.repaint();
temp = end;
}
}
@Override
public void mouseUp(Point p) {
if (moving != null) {
undoMgr.storeMove(moving, end.getX() - start.getX(), end.getY() - start.getY());
}
}
/**
* マウス位置の DrawingHolder を返す
* @param p
* @return
*/
public DrawingHolder findDrawing(Point p) {
DrawingHolder found = null;
int cnt = drawingList.size();
if (cnt > 0) {
for (int i = cnt; i > 0; i--) {
DrawingHolder d = drawingList.get(i-1);
if (d.contains(p)) {
found = d;
break;
}
}
}
return found;
}
}