diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java index 5b3ca02ac319ca487442a8e6ca43e06ec247848e..415238049129cd6b2a61b3b724f41d5ebed5e3ba 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/OpenRecentCasePanel.java @@ -18,9 +18,6 @@ */ package org.sleuthkit.autopsy.casemodule; -import java.awt.Dimension; -import java.awt.Event; -import java.awt.EventQueue; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.io.File; @@ -201,10 +198,10 @@ private void openCase() { try { if (caseName.equals("") || casePath.equals("") || (!new File(casePath).exists())) { JOptionPane.showMessageDialog(null, - NbBundle.getMessage(this.getClass(), + NbBundle.getMessage(OpenRecentCasePanel.class, "OpenRecentCasePanel.openCase.msgDlg.caseDoesntExist.msg", caseName), - NbBundle.getMessage(this.getClass(), + NbBundle.getMessage(OpenRecentCasePanel.class, "OpenRecentCasePanel.openCase.msgDlg.err"), JOptionPane.ERROR_MESSAGE); RecentCases.getInstance().removeRecentCase(caseName, casePath); // remove the recent case if it doesn't exist anymore @@ -266,10 +263,10 @@ public String getColumnName(int column) { switch (column) { case 0: - colName = NbBundle.getMessage(this.getClass(), "OpenRecentCasePanel.colName.caseName"); + colName = NbBundle.getMessage(OpenRecentCasePanel.class, "OpenRecentCasePanel.colName.caseName"); break; case 1: - colName = NbBundle.getMessage(this.getClass(), "OpenRecentCasePanel.colName.path"); + colName = NbBundle.getMessage(OpenRecentCasePanel.class, "OpenRecentCasePanel.colName.path"); break; default: ; diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/RecentCases.java b/Core/src/org/sleuthkit/autopsy/casemodule/RecentCases.java index b581e8a8f0387d8885a3fe3ad15247fce6ab0b2d..2baaf28590bf87eb45cd020393532d90147f3d54 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/RecentCases.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/RecentCases.java @@ -29,6 +29,7 @@ import java.util.List; import java.util.logging.Level; import javax.swing.JMenuItem; +import org.apache.commons.lang.ArrayUtils; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import org.openide.util.actions.CallableSystemAction; @@ -44,7 +45,7 @@ */ final class RecentCases extends CallableSystemAction implements Presenter.Menu { - static final int LENGTH = 5; + static final int LENGTH = 6; static final String NAME_PROP_KEY = "LBL_RecentCase_Name"; //NON-NLS static final String PATH_PROP_KEY = "LBL_RecentCase_Path"; //NON-NLS static final RecentCase BLANK_RECENTCASE = new RecentCase("", ""); @@ -364,17 +365,28 @@ public void removeRecentCase(String name, String path) { /** * Gets the recent case names. * - * @return caseNames An array String[LENGTH], newest case first, with any - * extra spots filled with "" + * @return caseNames An array String[LENGTH - 1], newest case first, with any + * extra spots filled with "" */ public String[] getRecentCaseNames() { String[] caseNames = new String[LENGTH]; Iterator<RecentCase> mostRecentFirst = recentCases.descendingIterator(); int i = 0; + String currentCaseName = null; + try { + currentCaseName = Case.getCurrentCase().getName(); + } catch (IllegalStateException ex) { + // in case there is no current case. + } + while (mostRecentFirst.hasNext()) { - caseNames[i] = mostRecentFirst.next().name; - i++; + String name = mostRecentFirst.next().name; + if ((currentCaseName != null && !name.equals(currentCaseName)) || currentCaseName == null) { + // exclude currentCaseName from the caseNames[] + caseNames[i] = name; + i++; + } } while (i < caseNames.length) { @@ -382,23 +394,34 @@ public String[] getRecentCaseNames() { i++; } - return caseNames; + // return last 5 case names + return (String[]) ArrayUtils.subarray(caseNames, 0, LENGTH - 1); } /** * Gets the recent case paths. * - * @return casePaths An array String[LENGTH], newest case first, with any - * extra spots filled with "" + * @return casePaths An array String[LENGTH - 1], newest case first, with any + * extra spots filled with "" */ public String[] getRecentCasePaths() { String[] casePaths = new String[LENGTH]; + String currentCasePath = null; + try { + currentCasePath = Case.getCurrentCase().getConfigFilePath(); + } catch (IllegalStateException ex) { + // in case there is no current case. + } Iterator<RecentCase> mostRecentFirst = recentCases.descendingIterator(); int i = 0; while (mostRecentFirst.hasNext()) { - casePaths[i] = mostRecentFirst.next().path; - i++; + String path = mostRecentFirst.next().path; + if ((currentCasePath != null && !path.equals(currentCasePath)) || currentCasePath == null) { + // exclude currentCasePath from the casePaths[] + casePaths[i] = path; + i++; + } } while (i < casePaths.length) { @@ -406,7 +429,8 @@ public String[] getRecentCasePaths() { i++; } - return casePaths; + // return last 5 case paths + return (String[]) ArrayUtils.subarray(casePaths, 0, LENGTH - 1); } /** @@ -424,7 +448,7 @@ public void performAction() { @Override public String getName() { //return NbBundle.getMessage(RecentCases.class, "CTL_RecentCases"); - return NbBundle.getMessage(this.getClass(), "RecentCases.getName.text"); + return NbBundle.getMessage(RecentCases.class, "RecentCases.getName.text"); } /** diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/UpdateRecentCases.java b/Core/src/org/sleuthkit/autopsy/casemodule/UpdateRecentCases.java index ebc250ea696f9766ce724e64ef03c4385aebb313..147337965b04ddf34fbced56459ffad1236153e7 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/UpdateRecentCases.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/UpdateRecentCases.java @@ -33,11 +33,10 @@ class UpdateRecentCases extends JMenuItem implements DynamicMenuContent { int length; static boolean hasRecentCase = false; - /** - * the constructor - */ - UpdateRecentCases() { - length = RecentCases.LENGTH; + /** the constructor */ + UpdateRecentCases(){ + // display last 5 cases. + length = RecentCases.LENGTH - 1; } /** @@ -69,13 +68,13 @@ public JComponent[] getMenuPresenters() { if (hasRecentCase) { comps[length] = new JSeparator(); JMenuItem clearMenu = new JMenuItem( - NbBundle.getMessage(this.getClass(), "UpdateRecentCases.menuItem.clearRecentCases.text")); + NbBundle.getMessage(UpdateRecentCases.class, "UpdateRecentCases.menuItem.clearRecentCases.text")); clearMenu.addActionListener(SystemAction.get(RecentCases.class)); comps[length + 1] = clearMenu; } // otherwise, just create a disabled empty menu else { comps = new JComponent[1]; - JMenuItem emptyMenu = new JMenuItem(NbBundle.getMessage(this.getClass(), "UpdateRecentCases.menuItem.empty")); + JMenuItem emptyMenu = new JMenuItem(NbBundle.getMessage(UpdateRecentCases.class, "UpdateRecentCases.menuItem.empty")); emptyMenu.addActionListener(new RecentItems("", "")); comps[0] = emptyMenu; comps[0].setEnabled(false);