import com.google.gwt.event.dom.client.MouseMoveEvent; //导入方法依赖的package包/类
public void mouseDragged(MouseMoveEvent e) {
// ignore right mouse button with no modifiers (needed on PC)
if (e.getNativeButton()==NativeEvent.BUTTON_RIGHT) {
if (!(e.isMetaKeyDown() ||
e.isShiftKeyDown() ||
e.isControlKeyDown() ||
e.isAltKeyDown()))
return;
}
if (tempMouseMode==MODE_DRAG_SPLITTER) {
dragSplitter(e.getX(), e.getY());
return;
}
int gx = inverseTransformX(e.getX());
int gy = inverseTransformY(e.getY());
if (!circuitArea.contains(e.getX(), e.getY()))
return;
if (dragElm != null)
dragElm.drag(gx, gy);
boolean success = true;
switch (tempMouseMode) {
case MODE_DRAG_ALL:
dragAll(e.getX(), e.getY());
break;
case MODE_DRAG_ROW:
dragRow(snapGrid(gx), snapGrid(gy));
break;
case MODE_DRAG_COLUMN:
dragColumn(snapGrid(gx), snapGrid(gy));
break;
case MODE_DRAG_POST:
if (mouseElm != null)
dragPost(snapGrid(gx), snapGrid(gy));
break;
case MODE_SELECT:
if (mouseElm == null)
selectArea(gx, gy);
else {
// wait short delay before dragging. This is to fix problem where switches were accidentally getting
// dragged when tapped on mobile devices
if (System.currentTimeMillis()-mouseDownTime < 150)
return;
tempMouseMode = MODE_DRAG_SELECTED;
success = dragSelected(gx, gy);
}
break;
case MODE_DRAG_SELECTED:
success = dragSelected(gx, gy);
break;
}
dragging = true;
if (success) {
dragScreenX = e.getX();
dragScreenY = e.getY();
// console("setting dragGridx in mousedragged");
dragGridX = inverseTransformX(dragScreenX);
dragGridY = inverseTransformY(dragScreenY);
if (!(tempMouseMode == MODE_DRAG_SELECTED && onlyGraphicsElmsSelected())) {
dragGridX = snapGrid(dragGridX);
dragGridY = snapGrid(dragGridY);
}
}
}