mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-08 14:19:32 +00:00
Merge pull request #3510 from zhhl/2229-Part19UsegetOpenCaseInsteadOfgetCurrentCase
2229 Part 19 use getOpenCase() instead of getCurrentCase()
This commit is contained in:
commit
528689f8cf
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2011-2017 Basis Technology Corp.
|
* Copyright 2011-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -19,7 +19,6 @@
|
|||||||
package org.sleuthkit.autopsy.experimental.autoingest;
|
package org.sleuthkit.autopsy.experimental.autoingest;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -101,7 +100,7 @@ class AddArchiveTask implements Runnable {
|
|||||||
|
|
||||||
// extract the archive and pass the extracted folder as input
|
// extract the archive and pass the extracted folder as input
|
||||||
try {
|
try {
|
||||||
Case currentCase = Case.getCurrentCase();
|
Case currentCase = Case.getOpenCase();
|
||||||
|
|
||||||
// create folder to extract archive to
|
// create folder to extract archive to
|
||||||
Path destinationFolder = createDirectoryForFile(archivePath, currentCase.getModuleDirectory());
|
Path destinationFolder = createDirectoryForFile(archivePath, currentCase.getModuleDirectory());
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2011-2017 Basis Technology Corp.
|
* Copyright 2011-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -29,6 +29,7 @@ import javax.swing.filechooser.FileFilter;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
import static org.sleuthkit.autopsy.experimental.autoingest.Bundle.*;
|
import static org.sleuthkit.autopsy.experimental.autoingest.Bundle.*;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor;
|
||||||
import org.sleuthkit.autopsy.coreutils.DriveUtils;
|
import org.sleuthkit.autopsy.coreutils.DriveUtils;
|
||||||
@ -204,7 +205,9 @@ class ArchiveFilePanel extends JPanel implements DocumentListener {
|
|||||||
*
|
*
|
||||||
* @return true if a proper archive has been selected, false otherwise
|
* @return true if a proper archive has been selected, false otherwise
|
||||||
*/
|
*/
|
||||||
@NbBundle.Messages("DataSourceOnCDriveError.text=Warning: Path to multi-user data source is on \"C:\" drive")
|
@NbBundle.Messages({"DataSourceOnCDriveError.text=Warning: Path to multi-user data source is on \"C:\" drive",
|
||||||
|
"DataSourceOnCDriveError.noOpenCase.errMsg=Warning: Exception while getting open case."
|
||||||
|
})
|
||||||
public boolean validatePanel() {
|
public boolean validatePanel() {
|
||||||
errorLabel.setVisible(false);
|
errorLabel.setVisible(false);
|
||||||
String path = getContentPaths();
|
String path = getContentPaths();
|
||||||
@ -213,9 +216,14 @@ class ArchiveFilePanel extends JPanel implements DocumentListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// display warning if there is one (but don't disable "next" button)
|
// display warning if there is one (but don't disable "next" button)
|
||||||
if (false == PathValidator.isValid(path, Case.getCurrentCase().getCaseType())) {
|
try {
|
||||||
|
if (false == PathValidator.isValid(path, Case.getOpenCase().getCaseType())) {
|
||||||
|
errorLabel.setVisible(true);
|
||||||
|
errorLabel.setText(Bundle.DataSourceOnCDriveError_text());
|
||||||
|
}
|
||||||
|
} catch (NoCurrentCaseException ex) {
|
||||||
errorLabel.setVisible(true);
|
errorLabel.setVisible(true);
|
||||||
errorLabel.setText(Bundle.DataSourceOnCDriveError_text());
|
errorLabel.setText(Bundle.DataSourceOnCDriveError_noOpenCase_errMsg());
|
||||||
}
|
}
|
||||||
|
|
||||||
return new File(path).isFile()
|
return new File(path).isFile()
|
||||||
|
@ -63,6 +63,7 @@ import org.sleuthkit.autopsy.casemodule.Case.CaseType;
|
|||||||
import org.sleuthkit.autopsy.casemodule.CaseActionException;
|
import org.sleuthkit.autopsy.casemodule.CaseActionException;
|
||||||
import org.sleuthkit.autopsy.casemodule.CaseDetails;
|
import org.sleuthkit.autopsy.casemodule.CaseDetails;
|
||||||
import org.sleuthkit.autopsy.casemodule.CaseMetadata;
|
import org.sleuthkit.autopsy.casemodule.CaseMetadata;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
import org.sleuthkit.autopsy.coordinationservice.CaseNodeData;
|
import org.sleuthkit.autopsy.coordinationservice.CaseNodeData;
|
||||||
import org.sleuthkit.autopsy.coordinationservice.CoordinationService;
|
import org.sleuthkit.autopsy.coordinationservice.CoordinationService;
|
||||||
import org.sleuthkit.autopsy.coordinationservice.CoordinationService.CoordinationServiceException;
|
import org.sleuthkit.autopsy.coordinationservice.CoordinationService.CoordinationServiceException;
|
||||||
@ -2269,7 +2270,7 @@ final class AutoIngestManager extends Observable implements PropertyChangeListen
|
|||||||
Thread.sleep(AutoIngestUserPreferences.getSecondsToSleepBetweenCases() * 1000);
|
Thread.sleep(AutoIngestUserPreferences.getSecondsToSleepBetweenCases() * 1000);
|
||||||
}
|
}
|
||||||
currentJob.setCaseDirectoryPath(caseDirectoryPath);
|
currentJob.setCaseDirectoryPath(caseDirectoryPath);
|
||||||
Case caseForJob = Case.getCurrentCase();
|
Case caseForJob = Case.getOpenCase();
|
||||||
SYS_LOGGER.log(Level.INFO, "Opened case {0} for {1}", new Object[]{caseForJob.getName(), manifest.getFilePath()});
|
SYS_LOGGER.log(Level.INFO, "Opened case {0} for {1}", new Object[]{caseForJob.getName(), manifest.getFilePath()});
|
||||||
return caseForJob;
|
return caseForJob;
|
||||||
|
|
||||||
@ -2277,10 +2278,10 @@ final class AutoIngestManager extends Observable implements PropertyChangeListen
|
|||||||
throw new CaseManagementException(String.format("Error creating solr settings file for case %s for %s", caseName, manifest.getFilePath()), ex);
|
throw new CaseManagementException(String.format("Error creating solr settings file for case %s for %s", caseName, manifest.getFilePath()), ex);
|
||||||
} catch (CaseActionException ex) {
|
} catch (CaseActionException ex) {
|
||||||
throw new CaseManagementException(String.format("Error creating or opening case %s for %s", caseName, manifest.getFilePath()), ex);
|
throw new CaseManagementException(String.format("Error creating or opening case %s for %s", caseName, manifest.getFilePath()), ex);
|
||||||
} catch (IllegalStateException ex) {
|
} catch (NoCurrentCaseException ex) {
|
||||||
/*
|
/*
|
||||||
* Deal with the unfortunate fact that
|
* Deal with the unfortunate fact that
|
||||||
* Case.getCurrentCase throws IllegalStateException.
|
* Case.getOpenCase throws NoCurrentCaseException.
|
||||||
*/
|
*/
|
||||||
throw new CaseManagementException(String.format("Error getting current case %s for %s", caseName, manifest.getFilePath()), ex);
|
throw new CaseManagementException(String.format("Error getting current case %s for %s", caseName, manifest.getFilePath()), ex);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2015 Basis Technology Corp.
|
* Copyright 2015-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -39,6 +39,7 @@ import org.sleuthkit.datamodel.BlackboardAttribute;
|
|||||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
import org.apache.commons.codec.binary.Hex;
|
import org.apache.commons.codec.binary.Hex;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Uniquely named file export rules organized into uniquely named rule sets.
|
* Uniquely named file export rules organized into uniquely named rule sets.
|
||||||
@ -374,7 +375,7 @@ final class FileExportRuleSet implements Serializable, Comparable<FileExportRule
|
|||||||
*/
|
*/
|
||||||
List<Long> evaluate(long dataSourceId) throws ExportRulesException {
|
List<Long> evaluate(long dataSourceId) throws ExportRulesException {
|
||||||
try {
|
try {
|
||||||
SleuthkitCase db = Case.getCurrentCase().getSleuthkitCase();
|
SleuthkitCase db = Case.getOpenCase().getSleuthkitCase();
|
||||||
try (SleuthkitCase.CaseDbQuery queryResult = db.executeQuery(getQuery(dataSourceId))) {
|
try (SleuthkitCase.CaseDbQuery queryResult = db.executeQuery(getQuery(dataSourceId))) {
|
||||||
ResultSet resultSet = queryResult.getResultSet();
|
ResultSet resultSet = queryResult.getResultSet();
|
||||||
List<Long> fileIds = new ArrayList<>();
|
List<Long> fileIds = new ArrayList<>();
|
||||||
@ -383,7 +384,7 @@ final class FileExportRuleSet implements Serializable, Comparable<FileExportRule
|
|||||||
}
|
}
|
||||||
return fileIds;
|
return fileIds;
|
||||||
}
|
}
|
||||||
} catch (IllegalStateException ex) {
|
} catch (NoCurrentCaseException ex) {
|
||||||
throw new ExportRulesException("No current case", ex);
|
throw new ExportRulesException("No current case", ex);
|
||||||
} catch (TskCoreException ex) {
|
} catch (TskCoreException ex) {
|
||||||
throw new ExportRulesException("Error querying case database", ex);
|
throw new ExportRulesException("Error querying case database", ex);
|
||||||
@ -1060,7 +1061,12 @@ final class FileExportRuleSet implements Serializable, Comparable<FileExportRule
|
|||||||
* exist.
|
* exist.
|
||||||
*/
|
*/
|
||||||
private String getConditionClause(int index) throws ExportRulesException {
|
private String getConditionClause(int index) throws ExportRulesException {
|
||||||
Case currentCase = Case.getCurrentCase();
|
Case currentCase;
|
||||||
|
try {
|
||||||
|
currentCase = Case.getOpenCase();
|
||||||
|
} catch (NoCurrentCaseException ex) {
|
||||||
|
throw new ExportRulesException("Exception while getting open case.", ex);
|
||||||
|
}
|
||||||
SleuthkitCase caseDb = currentCase.getSleuthkitCase();
|
SleuthkitCase caseDb = currentCase.getSleuthkitCase();
|
||||||
BlackboardArtifact.Type artifactType;
|
BlackboardArtifact.Type artifactType;
|
||||||
BlackboardAttribute.Type attributeType;
|
BlackboardAttribute.Type attributeType;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2015 Basis Technology Corp.
|
* Copyright 2015-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -34,6 +34,7 @@ import java.util.Map;
|
|||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
import org.sleuthkit.autopsy.coreutils.FileUtil;
|
import org.sleuthkit.autopsy.coreutils.FileUtil;
|
||||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
@ -111,7 +112,7 @@ final class FileExporter {
|
|||||||
}
|
}
|
||||||
closeCatalogs();
|
closeCatalogs();
|
||||||
writeFlagFiles();
|
writeFlagFiles();
|
||||||
} catch (FileExportSettings.PersistenceException | FileExportRuleSet.ExportRulesException | TskCoreException | IOException ex) {
|
} catch (FileExportSettings.PersistenceException | FileExportRuleSet.ExportRulesException | TskCoreException | IOException | NoCurrentCaseException ex) {
|
||||||
throw new FileExportException("Error occurred during file export", ex);
|
throw new FileExportException("Error occurred during file export", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -128,7 +129,12 @@ final class FileExporter {
|
|||||||
* @throws org.sleuthkit.autopsy.autoingest.FileExporter.FileExportException
|
* @throws org.sleuthkit.autopsy.autoingest.FileExporter.FileExportException
|
||||||
*/
|
*/
|
||||||
private boolean verifyPrerequisites(List<Content> dataSources) throws FileExportException {
|
private boolean verifyPrerequisites(List<Content> dataSources) throws FileExportException {
|
||||||
SleuthkitCase skCase = Case.getCurrentCase().getSleuthkitCase();
|
SleuthkitCase skCase;
|
||||||
|
try {
|
||||||
|
skCase = Case.getOpenCase().getSleuthkitCase();
|
||||||
|
} catch (NoCurrentCaseException ex) {
|
||||||
|
throw new FileExportException("Exception while getting open case.", ex);
|
||||||
|
}
|
||||||
List<IngestJobInfo> ingestJobs = new ArrayList<>();
|
List<IngestJobInfo> ingestJobs = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
// all ingest jobs that were processed as part of this case
|
// all ingest jobs that were processed as part of this case
|
||||||
@ -310,7 +316,7 @@ final class FileExporter {
|
|||||||
* @throws IOException If there is a problem writing a file to
|
* @throws IOException If there is a problem writing a file to
|
||||||
* secondary storage.
|
* secondary storage.
|
||||||
*/
|
*/
|
||||||
private void exportFiles(Map<Long, List<String>> fileIdsToRuleNames, Supplier<Boolean> cancelCheck) throws TskCoreException, IOException {
|
private void exportFiles(Map<Long, List<String>> fileIdsToRuleNames, Supplier<Boolean> cancelCheck) throws TskCoreException, IOException, NoCurrentCaseException {
|
||||||
for (Map.Entry<Long, List<String>> entry : fileIdsToRuleNames.entrySet()) {
|
for (Map.Entry<Long, List<String>> entry : fileIdsToRuleNames.entrySet()) {
|
||||||
if (cancelCheck.get()) {
|
if (cancelCheck.get()) {
|
||||||
return;
|
return;
|
||||||
@ -334,8 +340,8 @@ final class FileExporter {
|
|||||||
* @throws IOException If there is a problem writing the file to
|
* @throws IOException If there is a problem writing the file to
|
||||||
* storage.
|
* storage.
|
||||||
*/
|
*/
|
||||||
private void exportFile(Long fileId, List<String> ruleNames, Supplier<Boolean> cancelCheck) throws TskCoreException, IOException {
|
private void exportFile(Long fileId, List<String> ruleNames, Supplier<Boolean> cancelCheck) throws TskCoreException, IOException, NoCurrentCaseException {
|
||||||
AbstractFile file = Case.getCurrentCase().getSleuthkitCase().getAbstractFileById(fileId);
|
AbstractFile file = Case.getOpenCase().getSleuthkitCase().getAbstractFileById(fileId);
|
||||||
if (!shouldExportFile(file)) {
|
if (!shouldExportFile(file)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -82,6 +82,7 @@ import java.time.ZoneId;
|
|||||||
import javax.swing.DefaultListModel;
|
import javax.swing.DefaultListModel;
|
||||||
import org.apache.commons.codec.DecoderException;
|
import org.apache.commons.codec.DecoderException;
|
||||||
import org.apache.commons.codec.binary.Hex;
|
import org.apache.commons.codec.binary.Hex;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Global settings panel for data-source-level ingest modules that export and
|
* Global settings panel for data-source-level ingest modules that export and
|
||||||
@ -528,11 +529,11 @@ public final class FileExporterSettingsPanel extends JPanel {
|
|||||||
void populateArtifacts() {
|
void populateArtifacts() {
|
||||||
Set<String> artifactTypes = scanRulesForArtifacts();
|
Set<String> artifactTypes = scanRulesForArtifacts();
|
||||||
try {
|
try {
|
||||||
SleuthkitCase currentCase = Case.getCurrentCase().getSleuthkitCase();
|
SleuthkitCase currentCase = Case.getOpenCase().getSleuthkitCase();
|
||||||
for (BlackboardArtifact.Type type : currentCase.getArtifactTypes()) {
|
for (BlackboardArtifact.Type type : currentCase.getArtifactTypes()) {
|
||||||
artifactTypes.add(type.getTypeName());
|
artifactTypes.add(type.getTypeName());
|
||||||
}
|
}
|
||||||
} catch (IllegalStateException | TskCoreException ex) {
|
} catch (NoCurrentCaseException | TskCoreException ex) {
|
||||||
// Unable to find and open case or cannot read the database. Use enum.
|
// Unable to find and open case or cannot read the database. Use enum.
|
||||||
for (BlackboardArtifact.ARTIFACT_TYPE artifact : BlackboardArtifact.ARTIFACT_TYPE.values()) {
|
for (BlackboardArtifact.ARTIFACT_TYPE artifact : BlackboardArtifact.ARTIFACT_TYPE.values()) {
|
||||||
artifactTypes.add(artifact.toString());
|
artifactTypes.add(artifact.toString());
|
||||||
@ -602,12 +603,12 @@ public final class FileExporterSettingsPanel extends JPanel {
|
|||||||
Set<String> attributeTypes = scanRulesForAttributes();
|
Set<String> attributeTypes = scanRulesForAttributes();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
SleuthkitCase currentCase = Case.getCurrentCase().getSleuthkitCase();
|
SleuthkitCase currentCase = Case.getOpenCase().getSleuthkitCase();
|
||||||
for (BlackboardAttribute.Type type : currentCase.getAttributeTypes()) {
|
for (BlackboardAttribute.Type type : currentCase.getAttributeTypes()) {
|
||||||
attributeTypes.add(type.getTypeName());
|
attributeTypes.add(type.getTypeName());
|
||||||
attributeTypeMap.put(type.getTypeName(), type.getValueType());
|
attributeTypeMap.put(type.getTypeName(), type.getValueType());
|
||||||
}
|
}
|
||||||
} catch (IllegalStateException | TskCoreException ex) {
|
} catch (NoCurrentCaseException | TskCoreException ex) {
|
||||||
// Unable to find and open case or cannot read the database. Use enum.
|
// Unable to find and open case or cannot read the database. Use enum.
|
||||||
for (BlackboardAttribute.ATTRIBUTE_TYPE type : BlackboardAttribute.ATTRIBUTE_TYPE.values()) {
|
for (BlackboardAttribute.ATTRIBUTE_TYPE type : BlackboardAttribute.ATTRIBUTE_TYPE.values()) {
|
||||||
attributeTypes.add(type.getLabel());
|
attributeTypes.add(type.getLabel());
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2015-17 Basis Technology Corp.
|
* Copyright 2015-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -45,6 +45,7 @@ import org.openide.util.NbBundle.Messages;
|
|||||||
import org.openide.util.actions.CallableSystemAction;
|
import org.openide.util.actions.CallableSystemAction;
|
||||||
import org.openide.windows.WindowManager;
|
import org.openide.windows.WindowManager;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||||
import org.sleuthkit.autopsy.core.Installer;
|
import org.sleuthkit.autopsy.core.Installer;
|
||||||
import org.sleuthkit.autopsy.core.RuntimeProperties;
|
import org.sleuthkit.autopsy.core.RuntimeProperties;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
@ -106,7 +107,13 @@ public final class OpenAction extends CallableSystemAction {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isEnabled() {
|
public boolean isEnabled() {
|
||||||
return super.isEnabled() && Case.isCaseOpen() && Installer.isJavaFxInited() && Case.getCurrentCase().hasData();
|
Case openCase;
|
||||||
|
try {
|
||||||
|
openCase = Case.getOpenCase();
|
||||||
|
} catch (NoCurrentCaseException ex) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return super.isEnabled() && Installer.isJavaFxInited() && openCase.hasData();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user