diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java index 8e468cc6b41..ed8e83c5611 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java @@ -29,7 +29,7 @@ import org.jabref.gui.icon.JabRefIcon; import org.jabref.gui.linkedfile.DeleteFileAction; import org.jabref.gui.linkedfile.DownloadLinkedFileAction; -import org.jabref.gui.linkedfile.LinkedFileEditDialogView; +import org.jabref.gui.linkedfile.LinkedFileDialogController; import org.jabref.gui.mergeentries.MultiMergeEntriesView; import org.jabref.gui.util.ControlHelper; import org.jabref.gui.util.TaskExecutor; @@ -375,7 +375,7 @@ public boolean delete() { } public void edit() { - Optional editedFile = dialogService.showCustomDialogAndWait(new LinkedFileEditDialogView(this.linkedFile)); + Optional editedFile = dialogService.showCustomDialogAndWait(new LinkedFileDialogController(this.linkedFile, true)); editedFile.ifPresent(file -> { this.linkedFile.setLink(file.getLink()); this.linkedFile.setDescription(file.getDescription()); diff --git a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java index 05ea2a27c71..3e4fbeeb467 100644 --- a/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java +++ b/src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java @@ -1,7 +1,5 @@ package org.jabref.gui.fieldeditors; -import java.io.IOException; -import java.net.URL; import java.util.Optional; import javax.swing.undo.UndoManager; @@ -11,10 +9,8 @@ import javafx.collections.ObservableList; import javafx.css.PseudoClass; import javafx.fxml.FXML; -import javafx.fxml.FXMLLoader; import javafx.scene.Node; import javafx.scene.Parent; -import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.ContextMenu; import javafx.scene.control.Label; @@ -35,8 +31,6 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.text.Text; -import javafx.stage.Modality; -import javafx.stage.Stage; import org.jabref.gui.DialogService; import org.jabref.gui.DragAndDropDataFormats; @@ -51,7 +45,7 @@ import org.jabref.gui.keyboard.KeyBinding; import org.jabref.gui.linkedfile.DeleteFileAction; -import org.jabref.gui.linkedfile.LinkedFileAddDialogController; +import org.jabref.gui.linkedfile.LinkedFileDialogController; import org.jabref.gui.util.BindingsHelper; import org.jabref.gui.util.TaskExecutor; import org.jabref.gui.util.ViewModelListCellFactory; @@ -293,8 +287,9 @@ public Parent getNode() { @FXML private void addNewFile() { - LinkedFileAddDialogController dialog = new LinkedFileAddDialogController(); - dialog.showAndWait().ifPresent(result -> { + LinkedFileDialogController controller = new LinkedFileDialogController(null, false); + + controller.showAndWait().ifPresent(result -> { // Handle adding the new file viewModel.addNewManualFile(result); }); diff --git a/src/main/java/org/jabref/gui/linkedfile/AttachFileAction.java b/src/main/java/org/jabref/gui/linkedfile/AttachFileAction.java index 8e9180da2e0..b82298e7cd4 100644 --- a/src/main/java/org/jabref/gui/linkedfile/AttachFileAction.java +++ b/src/main/java/org/jabref/gui/linkedfile/AttachFileAction.java @@ -66,7 +66,7 @@ public void execute() { databaseContext.getFileDirectories(filePreferences), filePreferences); - LinkedFileEditDialogView dialog = new LinkedFileEditDialogView(linkedFile); + LinkedFileDialogController dialog = new LinkedFileDialogController(linkedFile, true); dialogService.showCustomDialogAndWait(dialog) .ifPresent(editedLinkedFile -> { diff --git a/src/main/java/org/jabref/gui/linkedfile/LinkedFileAddDialogController.fxml b/src/main/java/org/jabref/gui/linkedfile/LinkedFileDialogController.fxml similarity index 95% rename from src/main/java/org/jabref/gui/linkedfile/LinkedFileAddDialogController.fxml rename to src/main/java/org/jabref/gui/linkedfile/LinkedFileDialogController.fxml index fe34cb0d871..1306d64cdff 100644 --- a/src/main/java/org/jabref/gui/linkedfile/LinkedFileAddDialogController.fxml +++ b/src/main/java/org/jabref/gui/linkedfile/LinkedFileDialogController.fxml @@ -1,4 +1,5 @@ + @@ -11,7 +12,7 @@ + fx:controller="org.jabref.gui.linkedfile.LinkedFileDialogController"> @@ -23,6 +24,7 @@ + - diff --git a/src/main/java/org/jabref/gui/linkedfile/LinkedFileAddDialogController.java b/src/main/java/org/jabref/gui/linkedfile/LinkedFileDialogController.java similarity index 76% rename from src/main/java/org/jabref/gui/linkedfile/LinkedFileAddDialogController.java rename to src/main/java/org/jabref/gui/linkedfile/LinkedFileDialogController.java index 482134262e7..5c0ef69ef2d 100644 --- a/src/main/java/org/jabref/gui/linkedfile/LinkedFileAddDialogController.java +++ b/src/main/java/org/jabref/gui/linkedfile/LinkedFileDialogController.java @@ -18,7 +18,7 @@ import com.airhacks.afterburner.views.ViewLoader; import jakarta.inject.Inject; -public class LinkedFileAddDialogController extends BaseDialog { +public class LinkedFileDialogController extends BaseDialog { @FXML private TextField link; @FXML private TextField description; @@ -31,21 +31,23 @@ public class LinkedFileAddDialogController extends BaseDialog { private LinkedFilesEditDialogViewModel viewModel; private final LinkedFile linkedFile; + private final boolean isEditMode; - public LinkedFileAddDialogController() { - this.linkedFile = new LinkedFile("", "", ""); + public LinkedFileDialogController(LinkedFile linkedFile, boolean isEditMode) { + this.linkedFile = linkedFile != null ? linkedFile : new LinkedFile("", "", ""); + this.isEditMode = isEditMode; ViewLoader.view(this) .load() .setAsContent(this.getDialogPane()); - ButtonType addButtonType = new ButtonType(Localization.lang("Add"), ButtonType.OK.getButtonData()); - this.getDialogPane().getButtonTypes().addAll(addButtonType, ButtonType.CANCEL); + ButtonType primaryButtonType = isEditMode ? ButtonType.APPLY : new ButtonType(Localization.lang("Add"), ButtonType.OK.getButtonData()); + this.getDialogPane().getButtonTypes().addAll(primaryButtonType, ButtonType.CANCEL); this.setResizable(false); - this.setTitle(Localization.lang("Add file link")); + this.setTitle(isEditMode ? Localization.lang("Edit file link") : Localization.lang("Add file link")); this.setResultConverter(button -> { - if (button == addButtonType) { + if (button == primaryButtonType) { return viewModel.getNewLinkedFile(); } else { return null; diff --git a/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialog.fxml b/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialog.fxml deleted file mode 100644 index d644991f741..00000000000 --- a/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialog.fxml +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialogView.java b/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialogView.java deleted file mode 100644 index 0ef81305267..00000000000 --- a/src/main/java/org/jabref/gui/linkedfile/LinkedFileEditDialogView.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.jabref.gui.linkedfile; - -import javafx.event.ActionEvent; -import javafx.fxml.FXML; -import javafx.scene.control.ButtonType; -import javafx.scene.control.ComboBox; -import javafx.scene.control.TextField; - -import org.jabref.gui.DialogService; -import org.jabref.gui.StateManager; -import org.jabref.gui.externalfiletype.ExternalFileType; -import org.jabref.gui.util.BaseDialog; -import org.jabref.gui.util.ViewModelListCellFactory; -import org.jabref.logic.l10n.Localization; -import org.jabref.model.entry.LinkedFile; -import org.jabref.preferences.PreferencesService; - -import com.airhacks.afterburner.views.ViewLoader; -import jakarta.inject.Inject; - -public class LinkedFileEditDialogView extends BaseDialog { - - @FXML private TextField link; - @FXML private TextField description; - @FXML private ComboBox fileType; - @FXML private TextField sourceUrl; - - @Inject private DialogService dialogService; - @Inject private StateManager stateManager; - - @Inject private PreferencesService preferences; - - private LinkedFilesEditDialogViewModel viewModel; - - private final LinkedFile linkedFile; - - public LinkedFileEditDialogView(LinkedFile linkedFile) { - this.linkedFile = linkedFile; - - ViewLoader.view(this) - .load() - .setAsContent(this.getDialogPane()); - - this.getDialogPane().getButtonTypes().addAll(ButtonType.APPLY, ButtonType.CANCEL); - this.setResizable(false); - this.setTitle(Localization.lang("Edit file link")); - - this.setResultConverter(button -> { - if (button == ButtonType.APPLY) { - return viewModel.getNewLinkedFile(); - } else { - return null; - } - }); - } - - @FXML - private void initialize() { - viewModel = new LinkedFilesEditDialogViewModel(linkedFile, stateManager.getActiveDatabase().get(), dialogService, preferences.getFilePreferences()); - fileType.itemsProperty().bindBidirectional(viewModel.externalFileTypeProperty()); - new ViewModelListCellFactory() - .withIcon(ExternalFileType::getIcon) - .withText(ExternalFileType::getName) - .install(fileType); - - description.textProperty().bindBidirectional(viewModel.descriptionProperty()); - link.textProperty().bindBidirectional(viewModel.linkProperty()); - fileType.valueProperty().bindBidirectional(viewModel.selectedExternalFileTypeProperty()); - sourceUrl.textProperty().bindBidirectional(viewModel.sourceUrlProperty()); - } - - @FXML - private void openBrowseDialog(ActionEvent event) { - viewModel.openBrowseDialog(); - link.requestFocus(); - } -}