public static void dispatchFileDropping( FileDragNDropEvent event ) { //------------------------------------------------------ // // ( ). boolean A = isTargetPlaceIsDirectoryWindow(event); boolean B = isTargetDirEqualsSourceDir(event); boolean C = isTargetVolumeEqualsSourceVolume(event); boolean D = isMouseRightButtonUsed(event); boolean E = isSystemFileDroped(event); boolean F = isTargetVolumeHasFreeSpace(event); boolean G = isTargetDirWritable(event); boolean H = isSourceDirCleanable(event); boolean I = isFileNameOkForTarget(event); boolean J = isNewFileFullPathOkForTargetLimit(event); boolean K = isTargetDirHasSameNamedFile(event); boolean L = isTargetDirSameNamedFileIsWritable(event); Actions userChoise = (A & D) ? askUserForAction(event) : null; if (userChoise == Actions.CANCEL) return; boolean M = (userChoise == Actions.COPY); boolean N = (userChoise == Actions.CLONE); boolean O = (userChoise == Actions.MOVE); boolean P = (userChoise == Actions.LINK); //------------------------------------------------------ // . boolean copyCase = (M & !K) | (A & !B & !C & !D & !K); boolean copyRewriteCase = (M & K) | (A & !B & !C & !D & K); boolean cloneCase = N | (A & B & !D); boolean moveCase = (O & !K) | (A & !B & C & !D & !K); boolean moveRewriteCase = (O & K) | (A & !B & C & !D & K); boolean createLinkCase = P; //------------------------------------------------------ // // . if (copyRewriteCase | moveRewriteCase) { if (askUserWantToRewrite() == Answers.NO) return; } //------------------------------------------------------ // . boolean isPossibleToCopy = F & G & I & J; boolean isPossibleToCopyRewrite = isPossibleToCopy & L; boolean isPossibleToClone = isPossibleToCopy; boolean isPossibleToMove = isPossibleToCopy & !E & H; boolean isPossibleToMoveRewrite = isPossibleToMove & L; boolean isPossibleToLink = isPossibleToCopy & !K; //------------------------------------------------------ // , , // . String errorMessage = ""; if (copyCase & !isPossibleToCopy) { errorMessage = " ."; } else if (copyRewriteCase & !isPossibleToCopyRewrite) { errorMessage = " ."; } else if (cloneCase & !isPossibleToClone) { errorMessage = " ."; } else if (moveCase & !isPossibleToMove) { errorMessage = " ."; } else if (moveRewriteCase & !isPossibleToMoveRewrite) { errorMessage = " ."; } else if (createLinkCase & !isPossibleToLink) { errorMessage = " ."; } String reasons = " : \n"; if (!F) { reasons += "-- \n"; } if (!G) { reasons += "-- \n"; } if (!I) { reasons += "-- \n"; } if (!J) { reasons += "-- \n"; } if (moveCase | moveRewriteCase) { if (E) { reasons += "-- \n"; } if (!H) { reasons += "-- \n"; } } else if (copyRewriteCase | moveRewriteCase) { if (!L) { reasons += "-- \n"; } } else if (createLinkCase) { if (K) { reasons += "-- \n"; } } if (errorMessage.isEmpty()) { if (copyCase) copy(event); if (copyRewriteCase) copyRewrite(event); if (cloneCase) clone(event); if (moveCase) move(event); if (moveRewriteCase) moveRewrite(event); if (createLinkCase) createLink(event); } else { showMessage(errorMessage + reasons); } }
Source: https://habr.com/ru/post/417903/