setOnMouseDragged(event ->{//设定鼠标长按0.3秒后才可拖拽 防止误操作
isCanDrag =true; //(System.currentTimeMillis() - mousedownMills) > 300;
});
setOnDragDetected(event->{if (this.getTestAction() == null && !this.isScreenshotStep || !isCanDrag) {return;
}
scriptShowController.listView.getSelectionModel().clearSelection();
scriptShowController.listView.getSelectionModel().select(items.indexOf(this));//开始拖拽
Dragboard dragboard =startDragAndDrop(TransferMode.MOVE);//当前步骤截图
WritableImage snapshot = this.getParent().snapshot(new SnapshotParameters(), null);
ImageView ig= newImageView(snapshot);//ig.setOnScroll(e->{//double deltaY = e.getDeltaY();//log.info("item:"+deltaY);//});//javafx.scene.Node s= ((javafx.scene.Node)event.getSource());//javafx.scene.Node t= (javafx.scene.Node)event.getTarget();//if(s!=null) {//s.setOnScroll(e -> {//double deltaY = e.getDeltaY();//log.info("S:" + deltaY);//});//}//if(t!=null) {//t.setOnScroll(e -> {//double deltaY = e.getDeltaY();//log.info("T:" + deltaY);//});//}
dragboard.setDragView(ig.getImage());
ClipboardContent content= newClipboardContent();
content.putString(String.valueOf(items.indexOf(this)));
dragboard.setContent(content);
event.consume();
});//拖拽经过的item设置TransferMode
setOnDragOver(event ->{if (this.getTestAction() == null && !this.isScreenshotStep) {return;
}if (!event.getDragboard().getString().equals(String.valueOf(items.indexOf(this))) &&event.getDragboard().hasString()) {
event.acceptTransferModes(TransferMode.MOVE);
}
event.consume();
});//拖拽进入Item时设置透明度0.3
setOnDragEntered(event ->{if (!event.getDragboard().getString().equals(String.valueOf(items.indexOf(this))) &&event.getDragboard().hasString()) {
setOpacity(0.3);
log.info("setOnDragEntered");
}
});//拖拽离开Item时设置为不透明
setOnDragExited(event ->{if (!event.getDragboard().getString().equals(String.valueOf(items.indexOf(this))) &&event.getDragboard().hasString()) {
setOpacity(1);
log.info("setOnDragExited");
}
});//拖拽放下时的相关逻辑
setOnDragDropped(event ->{if (this.getTestAction() == null && !this.isScreenshotStep) {return;
}
Dragboard db=event.getDragboard();boolean success = false;if(db.hasString()) {//调整Item的位置
StepItemController dragItem =(StepItemController) event.getGestureSource();int draggedIdx =items.indexOf(dragItem);int thisIdx = items.indexOf(this);if (draggedIdx !=thisIdx) {
items.remove(draggedIdx);
items.add(thisIdx, dragItem);//更新角标
this.scriptShowController.getLogic().updateStepIndexs();//更新TestAction顺序
SingleTestCase.getInstance().dragActions(draggedIdx, thisIdx);if (UIController.getScriptShowController() != null) {
UIController.getScriptShowController().setSaveScript(true);
}
UndoRedoUtil.addDragUndo(draggedIdx, thisIdx);
}
scriptShowController.listView.getSelectionModel().clearSelection();
scriptShowController.listView.getSelectionModel().select(thisIdx);
success= true;
}
setOpacity(1);
isCanDrag= false;
event.setDropCompleted(success);
event.consume();
log.info("setOnDragDropped");
});
setOnDragDone(DragEvent::consume);