diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java index 3ef40844f14..f3201f2d4ab 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java @@ -192,6 +192,35 @@ public void openFolder() { } } + public boolean performNameConflictCheck() { + /* + Get the filepath for current linkedFile and truncate it to only have the filename and + not the filepath. Compare to new suggested filename and return boolean result. + */ + Path file = Paths.get(this.linkedFile.getLink()); + String currentFileName = file.getFileName().toString(); + String suggestedFileName = this.linkedFileHandler.getSuggestedFileName(); + + return currentFileName.equals(suggestedFileName); + } + + public boolean performDirectoryConflictCheck() { + /* + Get the suggested filepath for current linkedFile and compare it to the existing filepath. + Return boolean result. + */ + //Get the new path for the file + Optional newDir = databaseContext.getFirstExistingFileDir(filePreferences); + Path newDirectory = newDir.get(); + + //Get the current path for the file + Optional currentDir = linkedFile.findIn(databaseContext, filePreferences); + Path currentDirectory = currentDir.get(); + + //Compare the two paths + return newDirectory.toString().equals(currentDirectory.getParent().toString()); + } + public void rename() { if (linkedFile.isOnlineLink()) { // Cannot rename remote links diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java index 8c4a94d3517..94731f0a06a 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java @@ -254,15 +254,15 @@ private ContextMenu createContextMenuForFile(LinkedFileViewModel linkedFile) { MenuItem renameFile = new MenuItem(Localization.lang("Rename file")); renameFile.setOnAction(event -> linkedFile.rename()); - renameFile.setDisable(linkedFile.getFile().isOnlineLink()); + renameFile.setDisable(linkedFile.getFile().isOnlineLink() || linkedFile.performNameConflictCheck()); MenuItem moveFile = new MenuItem(Localization.lang("Move file to file directory")); moveFile.setOnAction(event -> linkedFile.moveToDefaultDirectory()); - moveFile.setDisable(linkedFile.getFile().isOnlineLink()); + moveFile.setDisable(linkedFile.getFile().isOnlineLink() || linkedFile.performDirectoryConflictCheck()); MenuItem renameAndMoveFile = new MenuItem(Localization.lang("Move file to file directory and rename file")); renameAndMoveFile.setOnAction(event -> linkedFile.moveToDefaultDirectoryAndRename()); - renameAndMoveFile.setDisable(linkedFile.getFile().isOnlineLink()); + renameAndMoveFile.setDisable(linkedFile.getFile().isOnlineLink() || linkedFile.performDirectoryConflictCheck()); MenuItem deleteFile = new MenuItem(Localization.lang("Permanently delete local file")); deleteFile.setOnAction(event -> viewModel.deleteFile(linkedFile));