19 package org.sleuthkit.autopsy.casemodule;
21 import java.awt.EventQueue;
22 import java.awt.event.ActionEvent;
23 import java.awt.event.ActionListener;
25 import javax.swing.JOptionPane;
26 import javax.swing.SwingUtilities;
27 import org.openide.util.NbBundle;
28 import org.openide.windows.WindowManager;
29 import java.awt.Cursor;
30 import java.util.logging.Level;
31 import org.openide.DialogDescriptor;
32 import org.openide.DialogDisplayer;
33 import org.openide.NotifyDescriptor;
40 class RecentItems
implements ActionListener {
42 private static final Logger logger = Logger.getLogger(RecentItems.class.getName());
43 private final String caseName;
44 private final String caseMetaDataFilePath;
52 public RecentItems(String caseName, String caseMetaDataFilePath) {
53 this.caseName = caseName;
54 this.caseMetaDataFilePath = caseMetaDataFilePath;
63 public void actionPerformed(ActionEvent e) {
69 if (IngestManager.getInstance().isIngestRunning()) {
70 NotifyDescriptor descriptor =
new NotifyDescriptor.Confirmation(
71 NbBundle.getMessage(
this.getClass(),
"CloseCaseWhileIngesting.Warning"),
72 NbBundle.getMessage(
this.getClass(),
"CloseCaseWhileIngesting.Warning.title"),
73 NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
74 descriptor.setValue(NotifyDescriptor.NO_OPTION);
75 Object res = DialogDisplayer.getDefault().notify(descriptor);
76 if (res != null && res == DialogDescriptor.YES_OPTION) {
77 Case currentCase = null;
79 currentCase = Case.getCurrentCase();
80 currentCase.closeCase();
81 }
catch (IllegalStateException ignored) {
85 }
catch (CaseActionException ex) {
86 logger.log(Level.SEVERE, String.format(
"Error closing case at %s while ingest was running", (null!= currentCase ? currentCase.getCaseDirectory() :
"?")),ex);
96 if (caseName.equals(
"") || caseMetaDataFilePath.equals(
"") || (!
new File(caseMetaDataFilePath).exists())) {
97 JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(),
98 NbBundle.getMessage(this.getClass(),
"RecentItems.openRecentCase.msgDlg.text", caseName),
99 NbBundle.getMessage(this.getClass(),
"CaseOpenAction.msgDlg.cantOpenCase.title"),
100 JOptionPane.ERROR_MESSAGE);
101 RecentCases.
getInstance().removeRecentCase(caseName, caseMetaDataFilePath);
102 if (Case.isCaseOpen() ==
false) {
103 EventQueue.invokeLater(() -> {
104 StartupWindowProvider.getInstance().open();
108 SwingUtilities.invokeLater(() -> {
109 WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
113 Case.open(caseMetaDataFilePath);
114 }
catch (CaseActionException ex) {
115 SwingUtilities.invokeLater(() -> {
116 logger.log(Level.SEVERE, String.format(
"Error opening case with metadata file path %s", caseMetaDataFilePath), ex);
117 WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
118 JOptionPane.showMessageDialog(
119 WindowManager.getDefault().getMainWindow(),
121 NbBundle.getMessage(RecentItems.this.getClass(),
"CaseOpenAction.msgDlg.cantOpenCase.title"),
122 JOptionPane.ERROR_MESSAGE);
123 if (!Case.isCaseOpen()) {
124 StartupWindowProvider.getInstance().open();
static synchronized IngestManager getInstance()