package jaist.css.covis;
import java.util.ArrayList;
import org.piccolo2d.PNode;
import org.piccolo2d.event.PDragSequenceEventHandler;
import org.piccolo2d.event.PInputEvent;
import org.piccolo2d.util.PDimension;
/**
* ATNWindow右上メニューの[pick]
* @author miuramo
*
*/
public class PPickEventHandler extends PDragSequenceEventHandler {
AnchorGarden window;
long lastRelease; //ダブルクリック判定用
public PPickEventHandler(AnchorGarden _window){
window = _window;
}
PNode targetPN; // ターゲット
// public void mousePressed(PInputEvent e){
// super.mousePressed(e);
// if (e.getPickedNode().getAttribute("info")!=null){
// System.out.println(e.getPickedNode().getAttribute("info"));
// }
// }
public void startDrag(PInputEvent e){
super.startDrag(e);
if (e.getPickedNode() instanceof PNode && (e.getPickedNode().getAttribute("moveTarget")!=null)){
targetPN = (PNode) e.getPickedNode().getAttribute("moveTarget");
} else {
targetPN = null;
}
}
public void drag(PInputEvent e){
super.drag(e);
if (targetPN != null){
PDimension d = e.getDeltaRelativeTo(window.canvas.getLayer());
targetPN.translate(d.getWidth(), d.getHeight());
targetPN.raiseToTop();//TODO: moveToFront();
if (targetPN instanceof Selectable){
Selectable sel = (Selectable)targetPN;
if (sel.isSelected()){
//選択されたほかのSelectableも一緒に動かしてあげたい.ただし,子ラベルは既に動かしているので除く
ArrayList<Selectable> synchroMoveNodes = new ArrayList<Selectable>();
synchroMoveNodes.addAll(window.flowmenuEventHandler.selectionHandler.tempSelect);
synchroMoveNodes.remove(sel);
for(Selectable s: sel.getAllChildren()){
synchroMoveNodes.remove(s);
}
// for(Selectable s: synchroMoveNodes){
// ((Historical)s).moveWithHist(d.getWidth(), d.getHeight());
// }
}
}
} else {
PDimension d = e.getDelta();
window.canvas.getCamera().translateView(d.getWidth(), d.getHeight());
}
}
public void endDrag(PInputEvent e){
super.endDrag(e);
// if (System.currentTimeMillis() - lastRelease < 350){ //ダブルクリック判定 dbl
// if (targetPN != null){
// PBounds pb = targetPN.getGlobalFullBounds();
// pb = BUtil.zoomBounds(pb, 1.05);
// window.canvas.getCamera().animateViewToCenterBounds(pb, true, 500);
//
//// if (targetPN instanceof Student){
//// ((Student)targetPN).createNewLabel();
//// }
// }
// }
targetPN = null;
lastRelease = System.currentTimeMillis();
}
}