diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index f2075592ff..f3d037bd0c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -329,7 +329,9 @@ public class Case { currentCase = newCase; Logger.setLogDirectory(currentCase.getLogDirectoryPath()); doCaseChange(currentCase); - RecentCases.getInstance().addRecentCase(currentCase.name, currentCase.configFilePath); // update the recent cases + SwingUtilities.invokeLater(() -> { + RecentCases.getInstance().addRecentCase(currentCase.name, currentCase.configFilePath); // update the recent cases + }); if (CaseType.MULTI_USER_CASE == newCase.getCaseType()) { try { /** @@ -793,6 +795,8 @@ public class Case { /** * Updates the case name. + * + * This should not be called from the EDT. * * @param oldCaseName the old case name that wants to be updated * @param oldPath the old path that wants to be updated @@ -803,10 +807,14 @@ public class Case { try { xmlcm.setCaseName(newCaseName); // set the case name = newCaseName; // change the local value - RecentCases.getInstance().updateRecentCase(oldCaseName, oldPath, newCaseName, newPath); // update the recent case eventPublisher.publish(new AutopsyEvent(Events.NAME.toString(), oldCaseName, newCaseName)); SwingUtilities.invokeLater(() -> { - updateMainWindowTitle(newCaseName); + try{ + RecentCases.getInstance().updateRecentCase(oldCaseName, oldPath, newCaseName, newPath); // update the recent case + updateMainWindowTitle(newCaseName); + } catch (Exception e) { + Logger.getLogger(CasePropertiesForm.class.getName()).log(Level.WARNING, "Error: problem updating case name.", e); //NON-NLS + } }); } catch (Exception e) { throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.updateCaseName.exception.msg"), e); @@ -815,6 +823,8 @@ public class Case { /** * Updates the case examiner + * + * This should not be called from the EDT. * * @param oldExaminer the old examiner * @param newExaminer the new examiner @@ -831,6 +841,8 @@ public class Case { /** * Updates the case number + * + * This should not be called from the EDT. * * @param oldCaseNumber the old case number * @param newCaseNumber the new case number @@ -1488,10 +1500,12 @@ public class Case { if (IngestManager.getInstance().isRunningInteractively()) { // enable these menus - CallableSystemAction.get(AddImageAction.class).setEnabled(true); - CallableSystemAction.get(CaseCloseAction.class).setEnabled(true); - CallableSystemAction.get(CasePropertiesAction.class).setEnabled(true); - CallableSystemAction.get(CaseDeleteAction.class).setEnabled(true); // Delete Case menu + SwingUtilities.invokeLater(() -> { + CallableSystemAction.get(AddImageAction.class).setEnabled(true); + CallableSystemAction.get(CaseCloseAction.class).setEnabled(true); + CallableSystemAction.get(CasePropertiesAction.class).setEnabled(true); + CallableSystemAction.get(CaseDeleteAction.class).setEnabled(true); // Delete Case menu + }); if (toChangeTo.hasData()) { // open all top components @@ -1519,20 +1533,23 @@ public class Case { } else { // case is closed if (IngestManager.getInstance().isRunningInteractively()) { - // close all top components first - SwingUtilities.invokeLater(() -> { - CoreComponentControl.closeCoreWindows(); - }); - // disable these menus - CallableSystemAction.get(AddImageAction.class).setEnabled(false); // Add Image menu - CallableSystemAction.get(CaseCloseAction.class).setEnabled(false); // Case Close menu - CallableSystemAction.get(CasePropertiesAction.class).setEnabled(false); // Case Properties menu - CallableSystemAction.get(CaseDeleteAction.class).setEnabled(false); // Delete Case menu + SwingUtilities.invokeLater(() -> { + // close all top components first + CoreComponentControl.closeCoreWindows(); + + // disable these menus + CallableSystemAction.get(AddImageAction.class).setEnabled(false); // Add Image menu + CallableSystemAction.get(CaseCloseAction.class).setEnabled(false); // Case Close menu + CallableSystemAction.get(CasePropertiesAction.class).setEnabled(false); // Case Properties menu + CallableSystemAction.get(CaseDeleteAction.class).setEnabled(false); // Delete Case menu + }); } //clear pending notifications - MessageNotifyUtil.Notify.clear(); + SwingUtilities.invokeLater(() -> { + MessageNotifyUtil.Notify.clear(); + }); SwingUtilities.invokeLater(() -> { Frame f = WindowManager.getDefault().getMainWindow(); diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java index 83eb3cbd8a..5bae094395 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/CaseOpenAction.java @@ -100,52 +100,26 @@ public final class CaseOpenAction implements ActionListener { logger.log(Level.WARNING, "Error closing startup window.", ex); //NON-NLS } - new SwingWorker() { + new Thread(() -> { + // Create case. + try{ + Case.open(path); + } catch (CaseActionException ex) { + SwingUtilities.invokeLater(() -> { + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "CaseOpenAction.msgDlg.cantOpenCase.msg", path, + ex.getMessage()), + NbBundle.getMessage(this.getClass(), + "CaseOpenAction.msgDlg.cantOpenCase.title"), + JOptionPane.ERROR_MESSAGE); - @Override - protected Void doInBackground() throws Exception { - // Create case. - try{ - Case.open(path); - } catch (CaseActionException ex) { - SwingUtilities.invokeLater(() -> { - JOptionPane.showMessageDialog(null, - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.msg", path, - ex.getMessage()), - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.title"), - JOptionPane.ERROR_MESSAGE); - - StartupWindowProvider.getInstance().open(); - }); - logger.log(Level.WARNING, "Error opening case in folder " + path, ex); //NON-NLS - } - return null; - } - - @Override - protected void done() { - try { - get(); - } catch (ExecutionException | InterruptedException ex) { - SwingUtilities.invokeLater(() -> { - JOptionPane.showMessageDialog(null, - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.msg", path, - ex.getMessage()), - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.title"), - JOptionPane.ERROR_MESSAGE); - - - StartupWindowProvider.getInstance().open(); - }); - logger.log(Level.WARNING, "Error opening case in folder " + path, ex); //NON-NLS - } - } - }.execute(); + StartupWindowProvider.getInstance().open(); + }); + logger.log(Level.WARNING, "Error opening case in folder " + path, ex); //NON-NLS + } + }).start(); } } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java index ebc5b2835f..aad75a51c0 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardAction.java @@ -105,17 +105,7 @@ import org.sleuthkit.datamodel.TskData.DbType; String createdDirectory = (String) wizardDescriptor.getProperty("createdDirectory"); //NON-NLS CaseType caseType = CaseType.values()[(int)wizardDescriptor.getProperty("caseType")]; //NON-NLS - try { - Case.create(createdDirectory, caseName, caseNumber, examiner, caseType); - } catch (Exception ex) { - SwingUtilities.invokeLater(() -> { - JOptionPane.showMessageDialog(null, NbBundle.getMessage(this.getClass(), - "CaseCreateAction.msgDlg.cantCreateCase.msg")+" "+caseName, - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.title"), - JOptionPane.ERROR_MESSAGE); - }); - } + Case.create(createdDirectory, caseName, caseNumber, examiner, caseType); return null; } @@ -137,7 +127,7 @@ import org.sleuthkit.datamodel.TskData.DbType; } - } catch (ExecutionException | InterruptedException ex) { + } catch (Exception ex) { final String caseName = (String) wizardDescriptor.getProperty("caseName"); //NON-NLS SwingUtilities.invokeLater(() -> { JOptionPane.showMessageDialog(null, NbBundle.getMessage(this.getClass(), @@ -161,14 +151,9 @@ import org.sleuthkit.datamodel.TskData.DbType; private void doFailedCaseCleanup(WizardDescriptor wizardDescriptor){ String createdDirectory = (String) wizardDescriptor.getProperty("createdDirectory"); //NON-NLS - // if there's case opened, close the case - if (Case.existsCurrentCase()) { - // close the previous case if there's any - CaseCloseAction closeCase = SystemAction.get(CaseCloseAction.class); - closeCase.actionPerformed(null); - } + if (createdDirectory != null) { - logger.log(Level.INFO, "Deleting a created case directory due to isCancelled set, dir: " + createdDirectory); //NON-NLS + logger.log(Level.INFO, "Deleting a created case directory due to an error, dir: " + createdDirectory); //NON-NLS Case.deleteCaseDirectory(new File(createdDirectory)); } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java index 8e29e4ea40..aafbdc31ef 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java @@ -217,46 +217,23 @@ class OpenRecentCasePanel extends javax.swing.JPanel { } } else { - new SwingWorker() { - - @Override - protected Void doInBackground() throws Exception { - // Create case. - try{ - Case.open(casePath); - } catch (CaseActionException ex) { - SwingUtilities.invokeLater(() -> { - JOptionPane.showMessageDialog(null, - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.msg", caseName, - ex.getMessage()), - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.title"), - JOptionPane.ERROR_MESSAGE); - }); - logger.log(Level.WARNING, "Error: couldn't open case: " + caseName, ex); //NON-NLS - } - return null; - } - - @Override - protected void done() { - try { - get(); - } catch (ExecutionException | InterruptedException ex) { - SwingUtilities.invokeLater(() -> { - JOptionPane.showMessageDialog(null, - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.msg", caseName, - ex.getMessage()), - NbBundle.getMessage(this.getClass(), - "CaseOpenAction.msgDlg.cantOpenCase.title"), - JOptionPane.ERROR_MESSAGE); - }); - logger.log(Level.WARNING, "Error: couldn't open case: " + caseName, ex); //NON-NLS - } - } - }.execute(); + new Thread(() -> { + // Create case. + try{ + Case.open(casePath); + } catch (CaseActionException ex) { + SwingUtilities.invokeLater(() -> { + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), + "CaseOpenAction.msgDlg.cantOpenCase.msg", caseName, + ex.getMessage()), + NbBundle.getMessage(this.getClass(), + "CaseOpenAction.msgDlg.cantOpenCase.title"), + JOptionPane.ERROR_MESSAGE); + }); + logger.log(Level.WARNING, "Error: couldn't open case: " + caseName, ex); //NON-NLS + } + }).start(); } } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java b/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java index fcee2450ec..763dfe59d2 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/RecentItems.java @@ -79,40 +79,20 @@ class RecentItems implements ActionListener { } } else { - new SwingWorker() { - - @Override - protected Void doInBackground() throws Exception { - // Create case. - try{ - Case.open(casePath); - } catch (CaseActionException ex) { - SwingUtilities.invokeLater(() -> { - JOptionPane.showMessageDialog(null, - NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.msg", casePath, - ex.getMessage()), NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), - JOptionPane.ERROR_MESSAGE); - }); - Logger.getLogger(RecentItems.class.getName()).log(Level.WARNING, "Error: Couldn't open recent case at " + casePath, ex); //NON-NLS - } - return null; - } - - @Override - protected void done() { - try { - get(); - } catch (ExecutionException | InterruptedException ex) { - SwingUtilities.invokeLater(() -> { - JOptionPane.showMessageDialog(null, - NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.msg", casePath, - ex.getMessage()), NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), - JOptionPane.ERROR_MESSAGE); - }); - Logger.getLogger(RecentItems.class.getName()).log(Level.WARNING, "Error opening recent case. ", ex); //NON-NLS - } - } - }.execute(); + new Thread(() -> { + // Create case. + try{ + Case.open(casePath); + } catch (CaseActionException ex) { + SwingUtilities.invokeLater(() -> { + JOptionPane.showMessageDialog(null, + NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.msg", casePath, + ex.getMessage()), NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), + JOptionPane.ERROR_MESSAGE); + }); + Logger.getLogger(RecentItems.class.getName()).log(Level.WARNING, "Error: Couldn't open recent case at " + casePath, ex); //NON-NLS + } + }).start(); } } } diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/Installer.java b/Core/src/org/sleuthkit/autopsy/corecomponents/Installer.java index 95c7422f28..14da528efc 100644 --- a/Core/src/org/sleuthkit/autopsy/corecomponents/Installer.java +++ b/Core/src/org/sleuthkit/autopsy/corecomponents/Installer.java @@ -79,28 +79,14 @@ public class Installer extends ModuleInstall { final String caseFile = argsProcessor.getDefaultArg(); if (caseFile != null && !caseFile.equals("") && caseFile.endsWith(".aut") && new File(caseFile).exists()) { //NON-NLS - new SwingWorker() { - - @Override - protected Void doInBackground() throws Exception { - // Create case. - try{ - Case.open(caseFile); - } catch(Exception ex){ - logger.log(Level.WARNING, "Error opening case. ", ex); //NON-NLS - } - return null; + new Thread(() -> { + // Create case. + try{ + Case.open(caseFile); + } catch(Exception ex){ + logger.log(Level.WARNING, "Error opening case. ", ex); //NON-NLS } - - @Override - protected void done() { - try { - get(); - } catch (ExecutionException | InterruptedException ex) { - logger.log(Level.WARNING, "Error opening case. ", ex); //NON-NLS - } - } - }.execute(); + }).start(); return; } }