From 5457cebe39f362e5f62d9712c218b354879726ca Mon Sep 17 00:00:00 2001 From: Borewit Date: Sun, 17 Sep 2023 13:09:37 +0200 Subject: [PATCH] Prevent sequential jobs from being executed when user cancels the list repair dialog --- src/main/java/listfix/view/GUIScreen.java | 10 ++++----- .../view/controls/PlaylistEditCtrl.java | 21 ++++++++++++++----- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/main/java/listfix/view/GUIScreen.java b/src/main/java/listfix/view/GUIScreen.java index e08395a8..2a7c2ae0 100644 --- a/src/main/java/listfix/view/GUIScreen.java +++ b/src/main/java/listfix/view/GUIScreen.java @@ -1700,12 +1700,12 @@ private void updateTabTitleForPlaylist(Playlist list, JDocumentComponent { + for (PlaylistEditCtrl ctrl : this._playlistTabbedPane.getAllEmbeddedMainComponent()) { this._playlistTabbedPane.setActiveDocument(ctrl.getPlaylist().getPath()); - ctrl.locateMissingFiles(); - ctrl.bulkFindClosestMatches(); - }); - + if (!ctrl.locateMissingFiles() || !ctrl.bulkFindClosestMatches()) { + break; + } + } } private void reloadAllTabs() diff --git a/src/main/java/listfix/view/controls/PlaylistEditCtrl.java b/src/main/java/listfix/view/controls/PlaylistEditCtrl.java index 3d42df6c..6f98e07f 100644 --- a/src/main/java/listfix/view/controls/PlaylistEditCtrl.java +++ b/src/main/java/listfix/view/controls/PlaylistEditCtrl.java @@ -221,7 +221,11 @@ private void moveSelectedRowsDown() } } - public void locateMissingFiles() + /** + * Locate missing files + * @return false if cancelled, otherwise true + */ + public boolean locateMissingFiles() { _logger.debug(markerRepair, "Start locateMissingFiles()"); ProgressWorker, String> worker = new ProgressWorker<>() @@ -261,8 +265,10 @@ protected void done() } } }; + ProgressDialog pd = new ProgressDialog(getParentFrame(), true, worker, "Repairing..."); - pd.setVisible(true); + pd.setVisible(true); // Wait until the worker completed + return !worker.isCancelled(); } private void reorderList() @@ -386,7 +392,10 @@ protected List doInBackground() this.findClosestMatches(worker); } - public void bulkFindClosestMatches() + /** + * @return false if cancelled otherwise true + */ + public boolean bulkFindClosestMatches() { final Collection libraryFiles = listFixGui.getApplicationConfiguration().getMediaLibrary().getNestedMediaFiles(); ProgressWorker, String> worker = new ProgressWorker<>() @@ -398,6 +407,7 @@ protected List doInBackground() } }; this.findClosestMatches(worker); + return !worker.isCancelled(); } private void findClosestMatches(ProgressWorker, String> worker) @@ -730,8 +740,9 @@ public void mouseClicked(MouseEvent evt) _btnMagicFix.setToolTipText("Repair playlist"); _btnMagicFix.setEnabled(_playlist != null && _playlist.getFile().exists()); _btnMagicFix.addActionListener(evt -> { - locateMissingFiles(); - bulkFindClosestMatches(); + if (locateMissingFiles()) { + bulkFindClosestMatches(); + } }); _uiToolbar.add(_btnMagicFix);