void (@NotNull DataContext dataContext) { final Project project = CommonDataKeys.PROJECT.getData(dataContext); final IdeView ideView = LangDataKeys.IDE_VIEW.getData(dataContext); if (project == null || ideView == null) return; if (!FileCopyPasteUtil.isFileListFlavorAvailable()) return; final Transferable contents = CopyPasteManager.getInstance().getContents(); if (contents == null) return; final List<File> fileList = FileCopyPasteUtil.getFileList(contents); if (fileList == null) return; final List<PsiElement> elements = new ArrayList<>(); for (File file : fileList) { final VirtualFile vFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file); PsiFileSystemItem item = PsiUtilCore.findFileSystemItem(project, vFile); if (item != null) { elements.add(item); } } if (elements.isEmpty()) { return; } final PsiDirectory dir = ideView.getOrChooseDirectory(); if (dir != null) { final boolean move = LinuxDragAndDropSupport.isMoveOperation(contents); if (move) { if (DumbService.isDumb(project) && Messages.showYesNoDialog(project, RefactoringBundle.message("move.handler.is.dumb.during.indexing"), RefactoringBundle.message("move.title"), Messages.getQuestionIcon()) != Messages.YES) { return; } new MoveFilesOrDirectoriesHandler().doMove(PsiUtilCore.toPsiElementArray(elements), dir); } else { new CopyFilesOrDirectoriesHandler().doCopy(PsiUtilCore.toPsiElementArray(elements), dir); } } }