Merge branch 'develop' of https://github.com/sleuthkit/autopsy into multi-sig-mime-type
@ -192,10 +192,7 @@ MissingImageDialog.ErrorSettingImage=Error setting image path. Please try again.
|
|||||||
NewCaseVisualPanel1.getName.text=Case Info
|
NewCaseVisualPanel1.getName.text=Case Info
|
||||||
NewCaseVisualPanel1.caseDirBrowse.selectButton.text=Select
|
NewCaseVisualPanel1.caseDirBrowse.selectButton.text=Select
|
||||||
NewCaseVisualPanel1.badCredentials.text=Bad multi-user settings (see Tools, Options, Multi-user) or services are down.
|
NewCaseVisualPanel1.badCredentials.text=Bad multi-user settings (see Tools, Options, Multi-user) or services are down.
|
||||||
NewCaseVisualPanel1.MultiUserDisabled.text=Multi-user cases not enabled. See Tools, Options, Multi-user.
|
|
||||||
NewCaseVisualPanel2.getName.text=Additional Information
|
NewCaseVisualPanel2.getName.text=Additional Information
|
||||||
NewCaseWizardAction.closeCurCase.confMsg.msg=Do you want to save and close this case and proceed with the new case creation?
|
|
||||||
NewCaseWizardAction.closeCurCase.confMsg.title=Warning\: Closing the Current Case
|
|
||||||
NewCaseWizardAction.newCase.windowTitle.text=New Case Information
|
NewCaseWizardAction.newCase.windowTitle.text=New Case Information
|
||||||
NewCaseWizardAction.getName.text=New Case Wizard
|
NewCaseWizardAction.getName.text=New Case Wizard
|
||||||
NewCaseWizardAction.databaseProblem1.text=Cannot open database. Cancelling case creation.
|
NewCaseWizardAction.databaseProblem1.text=Cannot open database. Cancelling case creation.
|
||||||
@ -239,25 +236,21 @@ CollaborationMonitor.addingDataSourceStatus.msg={0} adding data source
|
|||||||
CollaborationMonitor.analyzingDataSourceStatus.msg={0} analyzing {1}
|
CollaborationMonitor.analyzingDataSourceStatus.msg={0} analyzing {1}
|
||||||
MissingImageDialog.lbWarning.text=
|
MissingImageDialog.lbWarning.text=
|
||||||
MissingImageDialog.lbWarning.toolTipText=
|
MissingImageDialog.lbWarning.toolTipText=
|
||||||
SingleUserCaseImporter.AlreadyMultiUser=Case is already multi-user!
|
NewCaseVisualPanel1.caseParentDirWarningLabel.text=
|
||||||
SingleUserCaseImporter.BadCaseSourceFolder=Case source folder does not exist!
|
|
||||||
SingleUserCaseImporter.BadImageSourceFolder=Image source folder does not exist!
|
|
||||||
SingleUserCaseImporter.BadDatabaseFileName=Database file does not exist!
|
|
||||||
SingleUserCaseImporter.NonUniqueOutputFolder=Output folder not unique. Skipping
|
|
||||||
SingleUserCaseImporter.NonUniqueDatabaseName=Database name not unique. Skipping.
|
|
||||||
SingleUserCaseImporter.PotentiallyNonUniqueDatabaseName=Unclear if database name unique. Moving ahead.
|
|
||||||
SingleUserCaseImporter.ImportedAsMultiUser=\nThis case was imported as a multi-user collaborative case on
|
|
||||||
SingleUserCaseImporter.UnableToCopySourceImages=Unable to copy source images
|
|
||||||
SingleUserCaseImporter.DeletingCase=Deleting original case folder
|
|
||||||
SingleUserCaseImporter.CanNotOpenDatabase=Unable to open database
|
|
||||||
SingleUserCaseImporter.WillImport=Will import:
|
|
||||||
SingleUserCaseImporter.WillNotImport=Will not import:
|
|
||||||
SingleUserCaseImporter.None=None
|
|
||||||
SingleUserCaseImporter.ContinueWithImport=Continue with import?
|
|
||||||
SingleUserCaseImporter.Cancelled=Cancelled
|
|
||||||
NewCaseVisualPanel1.caseParentDirWarningLabel.text=Case directory warning label
|
|
||||||
NewCaseVisualPanel1.multiUserCaseRadioButton.text=Multi-user
|
NewCaseVisualPanel1.multiUserCaseRadioButton.text=Multi-user
|
||||||
NewCaseVisualPanel1.singleUserCaseRadioButton.text=Single-user
|
NewCaseVisualPanel1.singleUserCaseRadioButton.text=Single-user
|
||||||
NewCaseVisualPanel1.multiUserSettingsWarningLabel.text=Multi-user settings warning label
|
NewCaseVisualPanel1.caseTypeLabel.text=Case Type:
|
||||||
Case.deleteReports.deleteFromDiskException.log.msg=Unable to delete the report from the disk.
|
Case.deleteReports.deleteFromDiskException.log.msg=Unable to delete the report from the disk.
|
||||||
Case.deleteReports.deleteFromDiskException.msg=Unable to delete the report {0} from the disk.\nYou may manually delete it from {1}
|
Case.deleteReports.deleteFromDiskException.msg=Unable to delete the report {0} from the disk.\nYou may manually delete it from {1}
|
||||||
|
CasePropertiesForm.lbDbType.text=Case Type:
|
||||||
|
CasePropertiesForm.tbDbType.text=
|
||||||
|
CasePropertiesForm.lbDbName.text=Database Name:
|
||||||
|
CasePropertiesForm.tbDbName.text=
|
||||||
|
CaseExceptionWarning.CheckMultiUserOptions=Check Multi-user options.
|
||||||
|
SingleUserCaseConverter.BadDatabaseFileName=Database file does not exist!
|
||||||
|
SingleUserCaseConverter.AlreadyMultiUser=Case is already multi-user!
|
||||||
|
SingleUserCaseConverter.NonUniqueDatabaseName=Database name not unique.
|
||||||
|
SingleUserCaseConverter.UnableToCopySourceImages=Unable to copy source images
|
||||||
|
SingleUserCaseConverter.CanNotOpenDatabase=Unable to open database
|
||||||
|
CloseCaseWhileIngesting.Warning=Ingest is running. Are you sure you want to close the case?
|
||||||
|
CloseCaseWhileIngesting.Warning.title=Warning\: This will close the current case
|
||||||
|
@ -218,3 +218,4 @@ AddImageWizardIngestConfigPanel.CANCEL_BUTTON.text=\u30ad\u30e3\u30f3\u30bb\u30e
|
|||||||
ImageFilePanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb
|
ImageFilePanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb
|
||||||
LocalFilesPanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb
|
LocalFilesPanel.errorLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb
|
||||||
NewCaseVisualPanel1.caseParentDirWarningLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb
|
NewCaseVisualPanel1.caseParentDirWarningLabel.text=\u30a8\u30e9\u30fc\u30e9\u30d9\u30eb
|
||||||
|
NewCaseVisualPanel1.caseTypeLabel.text=\u30d9\u30fc\u30b9\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\uff1a
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.casemodule;
|
package org.sleuthkit.autopsy.casemodule;
|
||||||
|
|
||||||
|
import java.awt.Cursor;
|
||||||
import java.awt.Frame;
|
import java.awt.Frame;
|
||||||
import java.beans.PropertyChangeListener;
|
import java.beans.PropertyChangeListener;
|
||||||
import java.beans.PropertyChangeSupport;
|
import java.beans.PropertyChangeSupport;
|
||||||
@ -322,6 +323,9 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
Case oldCase = Case.currentCase;
|
Case oldCase = Case.currentCase;
|
||||||
Case.currentCase = null;
|
Case.currentCase = null;
|
||||||
if (oldCase != null) {
|
if (oldCase != null) {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
|
});
|
||||||
doCaseChange(null); //closes windows, etc
|
doCaseChange(null); //closes windows, etc
|
||||||
if (null != oldCase.tskErrorReporter) {
|
if (null != oldCase.tskErrorReporter) {
|
||||||
oldCase.tskErrorReporter.shutdown(); // stop listening for TSK errors for the old case
|
oldCase.tskErrorReporter.shutdown(); // stop listening for TSK errors for the old case
|
||||||
@ -345,7 +349,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
}
|
}
|
||||||
// start listening for TSK errors for the new case
|
// start listening for TSK errors for the new case
|
||||||
currentCase.tskErrorReporter = new IntervalErrorReportData(currentCase, MIN_SECONDS_BETWEEN_ERROR_REPORTS,
|
currentCase.tskErrorReporter = new IntervalErrorReportData(currentCase, MIN_SECONDS_BETWEEN_ERROR_REPORTS,
|
||||||
NbBundle.getMessage(Case.class, "IntervalErrorReport.ErrorText"));
|
NbBundle.getMessage(Case.class, "IntervalErrorReport.ErrorText"));
|
||||||
doCaseChange(currentCase);
|
doCaseChange(currentCase);
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
RecentCases.getInstance().addRecentCase(currentCase.name, currentCase.configFilePath); // update the recent cases
|
RecentCases.getInstance().addRecentCase(currentCase.name, currentCase.configFilePath); // update the recent cases
|
||||||
@ -370,8 +374,11 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
} else {
|
} else {
|
||||||
Logger.setLogDirectory(PlatformUtil.getLogDirectory());
|
Logger.setLogDirectory(PlatformUtil.getLogDirectory());
|
||||||
}
|
}
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void receiveError(String context, String errorMessage) {
|
public void receiveError(String context, String errorMessage) {
|
||||||
/* NOTE: We are accessing tskErrorReporter from two different threads.
|
/* NOTE: We are accessing tskErrorReporter from two different threads.
|
||||||
@ -453,9 +460,11 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
db = SleuthkitCase.newCase(dbName, UserPreferences.getDatabaseConnectionInfo(), caseDir);
|
db = SleuthkitCase.newCase(dbName, UserPreferences.getDatabaseConnectionInfo(), caseDir);
|
||||||
}
|
}
|
||||||
} catch (TskCoreException ex) {
|
} catch (TskCoreException ex) {
|
||||||
logger.log(Level.SEVERE, "Error creating a case: " + caseName + " in dir " + caseDir, ex); //NON-NLS
|
logger.log(Level.SEVERE, "Error creating a case: " + caseName + " in dir " + caseDir + " " + ex.getMessage(), ex); //NON-NLS
|
||||||
throw new CaseActionException(
|
SwingUtilities.invokeLater(() -> {
|
||||||
NbBundle.getMessage(Case.class, "Case.create.exception.msg", caseName, caseDir), ex);
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
});
|
||||||
|
throw new CaseActionException(ex.getMessage(), ex); //NON-NLS
|
||||||
} catch (UserPreferencesException ex) {
|
} catch (UserPreferencesException ex) {
|
||||||
logger.log(Level.SEVERE, "Error accessing case database connection info", ex); //NON-NLS
|
logger.log(Level.SEVERE, "Error accessing case database connection info", ex); //NON-NLS
|
||||||
throw new CaseActionException(
|
throw new CaseActionException(
|
||||||
@ -498,7 +507,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
*
|
*
|
||||||
* @return the sanitized case name to use for Database, Solr, and ActiveMQ
|
* @return the sanitized case name to use for Database, Solr, and ActiveMQ
|
||||||
*/
|
*/
|
||||||
public static String sanitizeCaseName(String caseName) {
|
static String sanitizeCaseName(String caseName) {
|
||||||
|
|
||||||
String result;
|
String result;
|
||||||
|
|
||||||
@ -615,19 +624,29 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
Case openedCase = new Case(caseName, caseNumber, examiner, caseMetadataFilePath, xmlcm, db, caseType);
|
Case openedCase = new Case(caseName, caseNumber, examiner, caseMetadataFilePath, xmlcm, db, caseType);
|
||||||
changeCase(openedCase);
|
changeCase(openedCase);
|
||||||
|
|
||||||
} catch (CaseMetadataException | TskCoreException ex) {
|
} catch (CaseMetadataException ex) {
|
||||||
/**
|
/**
|
||||||
* Clean-up the case if it was actually opened. TODO: Do this
|
* Clean-up the case if it was actually opened. TODO: Do this
|
||||||
* better.
|
* better.
|
||||||
*/
|
*/
|
||||||
|
try {
|
||||||
|
Case badCase = Case.getCurrentCase();
|
||||||
|
badCase.closeCase();
|
||||||
|
} catch (IllegalStateException unused) {
|
||||||
|
// Already logged.
|
||||||
|
}
|
||||||
|
throw new CaseActionException(NbBundle.getMessage(Case.class, "Case.open.exception.gen.msg") + ": " + ex.getMessage(), ex); //NON-NLS
|
||||||
|
} catch (TskCoreException ex) {
|
||||||
try {
|
try {
|
||||||
Case badCase = Case.getCurrentCase();
|
Case badCase = Case.getCurrentCase();
|
||||||
badCase.closeCase();
|
badCase.closeCase();
|
||||||
} catch (CaseActionException | IllegalStateException unused) {
|
} catch (CaseActionException | IllegalStateException unused) {
|
||||||
// Already logged.
|
// Already logged.
|
||||||
}
|
}
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
throw new CaseActionException(NbBundle.getMessage(Case.class, "Case.open.exception.gen.msg") + ". " + ex.getMessage(), ex);
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
});
|
||||||
|
throw new CaseActionException(ex.getMessage(), ex); //NON-NLS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -654,8 +673,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
for (Map.Entry<Long, String> entry : imgPaths.entrySet()) {
|
for (Map.Entry<Long, String> entry : imgPaths.entrySet()) {
|
||||||
long obj_id = entry.getKey();
|
long obj_id = entry.getKey();
|
||||||
String path = entry.getValue();
|
String path = entry.getValue();
|
||||||
boolean fileExists = (pathExists(path)
|
boolean fileExists = (pathExists(path) || driveExists(path));
|
||||||
|| driveExists(path));
|
|
||||||
if (!fileExists) {
|
if (!fileExists) {
|
||||||
int ret = JOptionPane.showConfirmDialog(null,
|
int ret = JOptionPane.showConfirmDialog(null,
|
||||||
NbBundle.getMessage(Case.class,
|
NbBundle.getMessage(Case.class,
|
||||||
@ -686,7 +704,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
*
|
*
|
||||||
* @deprecated As of release 4.0, replaced by {@link #notifyAddingDataSource(java.util.UUID) and
|
* @deprecated As of release 4.0, replaced by {@link #notifyAddingDataSource(java.util.UUID) and
|
||||||
* {@link #notifyDataSourceAdded(org.sleuthkit.datamodel.Content, java.util.UUID) and
|
* {@link #notifyDataSourceAdded(org.sleuthkit.datamodel.Content, java.util.UUID) and
|
||||||
* {@link #notifyFailedAddingDataSource(java.util.UUID)}
|
* {@link #notifyFailedAddingDataSource(java.util.UUID)}
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public Image addImage(String imgPath, long imgId, String timeZone) throws CaseActionException {
|
public Image addImage(String imgPath, long imgId, String timeZone) throws CaseActionException {
|
||||||
@ -701,13 +719,13 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Finishes adding new local data source to the case. Sends out event and
|
* Finishes adding new local data source to the case. Sends out event and
|
||||||
* reopens windows if needed.
|
* reopens windows if needed.
|
||||||
*
|
*
|
||||||
* @param newDataSource new data source added
|
* @param newDataSource new data source added
|
||||||
*
|
*
|
||||||
* @deprecated As of release 4.0, replaced by {@link #notifyAddingDataSource(java.util.UUID) and
|
* @deprecated As of release 4.0, replaced by {@link #notifyAddingDataSource(java.util.UUID) and
|
||||||
* {@link #notifyDataSourceAdded(org.sleuthkit.datamodel.Content, java.util.UUID) and
|
* {@link #notifyDataSourceAdded(org.sleuthkit.datamodel.Content, java.util.UUID) and
|
||||||
* {@link #notifyFailedAddingDataSource(java.util.UUID)}
|
* {@link #notifyFailedAddingDataSource(java.util.UUID)}
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
void addLocalDataSource(Content newDataSource) {
|
void addLocalDataSource(Content newDataSource) {
|
||||||
@ -879,7 +897,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
RecentCases.getInstance().updateRecentCase(oldCaseName, oldPath, newCaseName, newPath); // update the recent case
|
RecentCases.getInstance().updateRecentCase(oldCaseName, oldPath, newCaseName, newPath); // update the recent case
|
||||||
updateMainWindowTitle(newCaseName);
|
updateMainWindowTitle(newCaseName);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Logger.getLogger(CasePropertiesForm.class.getName()).log(Level.WARNING, "Error: problem updating case name.", e); //NON-NLS
|
Logger.getLogger(Case.class.getName()).log(Level.WARNING, "Error: problem updating case name.", e); //NON-NLS
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -28,6 +28,14 @@ import org.openide.util.HelpCtx;
|
|||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.util.actions.CallableSystemAction;
|
import org.openide.util.actions.CallableSystemAction;
|
||||||
import org.openide.util.actions.Presenter;
|
import org.openide.util.actions.Presenter;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import org.openide.DialogDescriptor;
|
||||||
|
import org.openide.DialogDisplayer;
|
||||||
|
import org.openide.NotifyDescriptor;
|
||||||
|
import org.openide.windows.WindowManager;
|
||||||
|
import java.awt.Cursor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The action to close the current Case. This class should be disabled on
|
* The action to close the current Case. This class should be disabled on
|
||||||
@ -57,10 +65,32 @@ public final class CaseCloseAction extends CallableSystemAction implements Prese
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
// if ingest is ongoing, warn and get confirmaion before opening a different case
|
||||||
|
if (IngestManager.getInstance().isIngestRunning()) {
|
||||||
|
// show the confirmation first to close the current case and open the "New Case" wizard panel
|
||||||
|
String closeCurrentCase = NbBundle.getMessage(this.getClass(), "CloseCaseWhileIngesting.Warning");
|
||||||
|
NotifyDescriptor descriptor = new NotifyDescriptor.Confirmation(closeCurrentCase,
|
||||||
|
NbBundle.getMessage(this.getClass(), "CloseCaseWhileIngesting.Warning.title"),
|
||||||
|
NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
|
||||||
|
descriptor.setValue(NotifyDescriptor.NO_OPTION);
|
||||||
|
|
||||||
|
Object res = DialogDisplayer.getDefault().notify(descriptor);
|
||||||
|
if (res != null && res == DialogDescriptor.YES_OPTION) {
|
||||||
|
try {
|
||||||
|
Case.getCurrentCase().closeCase(); // close the current case
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(NewCaseWizardAction.class.getName()).log(Level.WARNING, "Error closing case.", ex); //NON-NLS
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Case.existsCurrentCase() == false) {
|
if (Case.existsCurrentCase() == false) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
new SwingWorker<Void, Void>() {
|
new SwingWorker<Void, Void>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -76,6 +106,7 @@ public final class CaseCloseAction extends CallableSystemAction implements Prese
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void done() {
|
protected void done() {
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
StartupWindowProvider.getInstance().open();
|
StartupWindowProvider.getInstance().open();
|
||||||
}
|
}
|
||||||
}.execute();
|
}.execute();
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.casemodule;
|
package org.sleuthkit.autopsy.casemodule;
|
||||||
|
|
||||||
|
import java.awt.Cursor;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@ -31,6 +32,12 @@ import org.openide.util.lookup.ServiceProvider;
|
|||||||
import org.openide.windows.WindowManager;
|
import org.openide.windows.WindowManager;
|
||||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||||
import org.sleuthkit.autopsy.coreutils.Version;
|
import org.sleuthkit.autopsy.coreutils.Version;
|
||||||
|
import org.openide.DialogDescriptor;
|
||||||
|
import org.openide.DialogDisplayer;
|
||||||
|
import org.openide.NotifyDescriptor;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An action that opens an existing case.
|
* An action that opens an existing case.
|
||||||
@ -64,6 +71,28 @@ public final class CaseOpenAction implements ActionListener {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
// if ingest is ongoing, warn and get confirmaion before opening a different case
|
||||||
|
if (IngestManager.getInstance().isIngestRunning()) {
|
||||||
|
// show the confirmation first to close the current case and open the "New Case" wizard panel
|
||||||
|
String closeCurrentCase = NbBundle.getMessage(this.getClass(), "CloseCaseWhileIngesting.Warning");
|
||||||
|
NotifyDescriptor descriptor = new NotifyDescriptor.Confirmation(closeCurrentCase,
|
||||||
|
NbBundle.getMessage(this.getClass(), "CloseCaseWhileIngesting.Warning.title"),
|
||||||
|
NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
|
||||||
|
descriptor.setValue(NotifyDescriptor.NO_OPTION);
|
||||||
|
|
||||||
|
Object res = DialogDisplayer.getDefault().notify(descriptor);
|
||||||
|
if (res != null && res == DialogDescriptor.YES_OPTION) {
|
||||||
|
try {
|
||||||
|
Case.getCurrentCase().closeCase(); // close the current case
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(NewCaseWizardAction.class.getName()).log(Level.WARNING, "Error closing case.", ex); //NON-NLS
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pop up a file chooser to allow the user to select a case meta data
|
* Pop up a file chooser to allow the user to select a case meta data
|
||||||
* file (.aut file)
|
* file (.aut file)
|
||||||
@ -80,18 +109,22 @@ public final class CaseOpenAction implements ActionListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to open the caswe associated with the case meta data file the
|
* Try to open the case associated with the case meta data file the
|
||||||
* user selected.
|
* user selected.
|
||||||
*/
|
*/
|
||||||
final String path = fileChooser.getSelectedFile().getPath();
|
final String path = fileChooser.getSelectedFile().getPath();
|
||||||
String dirPath = fileChooser.getSelectedFile().getParent();
|
String dirPath = fileChooser.getSelectedFile().getParent();
|
||||||
ModuleSettings.setConfigSetting(ModuleSettings.MAIN_SETTINGS, PROP_BASECASE, dirPath.substring(0, dirPath.lastIndexOf(File.separator)));
|
ModuleSettings.setConfigSetting(ModuleSettings.MAIN_SETTINGS, PROP_BASECASE, dirPath.substring(0, dirPath.lastIndexOf(File.separator)));
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
try {
|
try {
|
||||||
Case.open(path);
|
Case.open(path);
|
||||||
} catch (CaseActionException ex) {
|
} catch (CaseActionException ex) {
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
JOptionPane.showMessageDialog(null, ex.getMessage(), NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), JOptionPane.ERROR_MESSAGE);
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), ex.getMessage() + " "
|
||||||
|
+ NbBundle.getMessage(this.getClass(), "CaseExceptionWarning.CheckMultiUserOptions"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), JOptionPane.ERROR_MESSAGE); //NON-NLS
|
||||||
if (!Case.isCaseOpen()) {
|
if (!Case.isCaseOpen()) {
|
||||||
StartupWindowProvider.getInstance().open();
|
StartupWindowProvider.getInstance().open();
|
||||||
}
|
}
|
||||||
@ -100,5 +133,4 @@ public final class CaseOpenAction implements ActionListener {
|
|||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.1" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
|
||||||
<NonVisualComponents>
|
<NonVisualComponents>
|
||||||
@ -37,49 +37,44 @@
|
|||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="casePropLabel" pref="440" max="32767" attributes="0"/>
|
<Component id="casePropLabel" pref="440" max="32767" attributes="0"/>
|
||||||
<Component id="genInfoLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="imgInfoLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="imagesTableScrollPane" alignment="0" pref="440" max="32767" attributes="0"/>
|
<Component id="imagesTableScrollPane" alignment="0" pref="440" max="32767" attributes="0"/>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<EmptySpace min="-2" pref="181" max="-2" attributes="0"/>
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="OKButton" min="-2" pref="78" max="-2" attributes="0"/>
|
<Component id="caseNameLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
<Component id="caseNumberLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Component id="examinerLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="1" attributes="0">
|
<Component id="caseDirLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="102" alignment="1" attributes="0">
|
<Component id="crDateLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Component id="lbDbType" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="caseNameLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
</Group>
|
||||||
<Component id="caseNumberLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
</Group>
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<EmptySpace min="-2" pref="25" max="-2" attributes="0"/>
|
<Component id="caseNameTextField" alignment="0" pref="245" max="32767" attributes="1"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Component id="caseNumberTextField" alignment="0" pref="245" max="32767" attributes="1"/>
|
||||||
<Component id="caseNameTextField" pref="246" max="32767" attributes="1"/>
|
<Component id="examinerTextField" alignment="0" pref="245" max="32767" attributes="1"/>
|
||||||
<Component id="caseNumberTextField" alignment="0" pref="246" max="32767" attributes="1"/>
|
<Component id="crDateTextField" alignment="0" max="32767" attributes="1"/>
|
||||||
</Group>
|
<Component id="jScrollPane2" alignment="0" max="32767" attributes="0"/>
|
||||||
</Group>
|
<Component id="tbDbType" alignment="0" max="32767" attributes="0"/>
|
||||||
<Group type="102" attributes="0">
|
<Component id="tbDbName" alignment="0" max="32767" attributes="0"/>
|
||||||
<Component id="examinerLabel" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace min="-2" pref="45" max="-2" attributes="0"/>
|
|
||||||
<Component id="examinerTextField" pref="246" max="32767" attributes="1"/>
|
|
||||||
</Group>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Component id="caseDirLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="crDateLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Component id="jScrollPane2" pref="246" max="32767" attributes="0"/>
|
|
||||||
<Component id="crDateTextField" alignment="0" pref="246" max="32767" attributes="1"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="updateCaseNameButton" min="-2" max="-2" attributes="1"/>
|
<Component id="deleteCaseButton" max="32767" attributes="1"/>
|
||||||
<Component id="deleteCaseButton" alignment="0" max="32767" attributes="1"/>
|
<Component id="updateCaseNameButton" max="32767" attributes="1"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="genInfoLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="imgInfoLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="181" max="-2" attributes="0"/>
|
||||||
|
<Component id="OKButton" min="-2" pref="78" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Component id="lbDbName" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
@ -92,38 +87,51 @@
|
|||||||
<Component id="casePropLabel" min="-2" pref="33" max="-2" attributes="0"/>
|
<Component id="casePropLabel" min="-2" pref="33" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
<Component id="genInfoLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="genInfoLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="caseNameLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="caseNameLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="caseNameTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="caseNameTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="updateCaseNameButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="updateCaseNameButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="caseNumberLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="caseNumberLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="caseNumberTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="caseNumberTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="examinerLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="examinerLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="examinerTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="examinerTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace pref="19" max="32767" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="crDateLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="crDateLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="crDateTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="crDateTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="caseDirLabel" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="jScrollPane2" min="-2" pref="40" max="-2" attributes="0"/>
|
<Component id="jScrollPane2" min="-2" pref="40" max="-2" attributes="0"/>
|
||||||
|
<Component id="caseDirLabel" min="-2" pref="14" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace min="-2" pref="39" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="tbDbType" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="lbDbType" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="lbDbName" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="tbDbName" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
<Component id="imgInfoLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="imgInfoLabel" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="deleteCaseButton" min="-2" max="-2" attributes="0"/>
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="9" max="-2" attributes="0"/>
|
||||||
|
<Component id="deleteCaseButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
<Component id="imagesTableScrollPane" min="-2" pref="170" max="-2" attributes="0"/>
|
<Component id="imagesTableScrollPane" min="-2" pref="170" max="-2" attributes="0"/>
|
||||||
@ -253,11 +261,11 @@
|
|||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Component class="javax.swing.JTextArea" name="caseDirTextArea">
|
<Component class="javax.swing.JTextArea" name="caseDirTextArea">
|
||||||
<Properties>
|
<Properties>
|
||||||
|
<Property name="editable" type="boolean" value="false"/>
|
||||||
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||||
<Color blue="f0" green="f0" red="f0" type="rgb"/>
|
<Color blue="f0" green="f0" red="f0" type="rgb"/>
|
||||||
</Property>
|
</Property>
|
||||||
<Property name="columns" type="int" value="20"/>
|
<Property name="columns" type="int" value="20"/>
|
||||||
<Property name="editable" type="boolean" value="false"/>
|
|
||||||
<Property name="rows" type="int" value="1"/>
|
<Property name="rows" type="int" value="1"/>
|
||||||
<Property name="requestFocusEnabled" type="boolean" value="false"/>
|
<Property name="requestFocusEnabled" type="boolean" value="false"/>
|
||||||
</Properties>
|
</Properties>
|
||||||
@ -304,5 +312,35 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbDbType">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CasePropertiesForm.lbDbType.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbDbType">
|
||||||
|
<Properties>
|
||||||
|
<Property name="editable" type="boolean" value="false"/>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CasePropertiesForm.tbDbType.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbDbName">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CasePropertiesForm.lbDbName.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbDbName">
|
||||||
|
<Properties>
|
||||||
|
<Property name="editable" type="boolean" value="false"/>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CasePropertiesForm.tbDbName.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -24,12 +24,11 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.casemodule;
|
package org.sleuthkit.autopsy.casemodule;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.nio.file.Paths;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
@ -47,7 +46,9 @@ import org.openide.util.actions.CallableSystemAction;
|
|||||||
*/
|
*/
|
||||||
class CasePropertiesForm extends javax.swing.JPanel {
|
class CasePropertiesForm extends javax.swing.JPanel {
|
||||||
|
|
||||||
Case current = null;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private Case current = null;
|
||||||
private static JPanel caller; // panel for error
|
private static JPanel caller; // panel for error
|
||||||
|
|
||||||
// Shrink a path to fit in targetLength (if necessary), by replaceing part
|
// Shrink a path to fit in targetLength (if necessary), by replaceing part
|
||||||
@ -78,16 +79,25 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
/**
|
/**
|
||||||
* Creates new form CasePropertiesForm
|
* Creates new form CasePropertiesForm
|
||||||
*/
|
*/
|
||||||
CasePropertiesForm(Case currentCase, String crDate, String caseDir, Map<Long, String> imgPaths) {
|
CasePropertiesForm(Case currentCase, String crDate, String caseDir, Map<Long, String> imgPaths) throws CaseMetadata.CaseMetadataException {
|
||||||
initComponents();
|
initComponents();
|
||||||
caseNameTextField.setText(currentCase.getName());
|
caseNameTextField.setText(currentCase.getName());
|
||||||
caseNumberTextField.setText(currentCase.getNumber());
|
caseNumberTextField.setText(currentCase.getNumber());
|
||||||
examinerTextField.setText(currentCase.getExaminer());
|
examinerTextField.setText(currentCase.getExaminer());
|
||||||
crDateTextField.setText(crDate);
|
crDateTextField.setText(crDate);
|
||||||
caseDirTextArea.setText(caseDir);
|
caseDirTextArea.setText(caseDir);
|
||||||
|
|
||||||
current = currentCase;
|
current = currentCase;
|
||||||
|
|
||||||
|
CaseMetadata caseMetadata = new CaseMetadata(Paths.get(currentCase.getConfigFilePath()));
|
||||||
|
tbDbName.setText(caseMetadata.getCaseDatabaseName());
|
||||||
|
Case.CaseType caseType = caseMetadata.getCaseType();
|
||||||
|
tbDbType.setText(caseType.toString());
|
||||||
|
if (caseType == Case.CaseType.SINGLE_USER_CASE) {
|
||||||
|
deleteCaseButton.setEnabled(true);
|
||||||
|
} else {
|
||||||
|
deleteCaseButton.setEnabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
int totalImages = imgPaths.size();
|
int totalImages = imgPaths.size();
|
||||||
|
|
||||||
// create the headers and add all the rows
|
// create the headers and add all the rows
|
||||||
@ -186,12 +196,16 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
examinerLabel = new javax.swing.JLabel();
|
examinerLabel = new javax.swing.JLabel();
|
||||||
caseNumberTextField = new javax.swing.JTextField();
|
caseNumberTextField = new javax.swing.JTextField();
|
||||||
examinerTextField = new javax.swing.JTextField();
|
examinerTextField = new javax.swing.JTextField();
|
||||||
|
lbDbType = new javax.swing.JLabel();
|
||||||
|
tbDbType = new javax.swing.JTextField();
|
||||||
|
lbDbName = new javax.swing.JLabel();
|
||||||
|
tbDbName = new javax.swing.JTextField();
|
||||||
|
|
||||||
jTextArea1.setColumns(20);
|
jTextArea1.setColumns(20);
|
||||||
jTextArea1.setRows(5);
|
jTextArea1.setRows(5);
|
||||||
jScrollPane1.setViewportView(jTextArea1);
|
jScrollPane1.setViewportView(jTextArea1);
|
||||||
|
|
||||||
casePropLabel.setFont(casePropLabel.getFont().deriveFont(Font.BOLD, 24));
|
casePropLabel.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
|
||||||
casePropLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
casePropLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
|
||||||
casePropLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.casePropLabel.text")); // NOI18N
|
casePropLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.casePropLabel.text")); // NOI18N
|
||||||
|
|
||||||
@ -213,11 +227,10 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
genInfoLabel.setFont(genInfoLabel.getFont().deriveFont(Font.BOLD, 14));
|
genInfoLabel.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
|
||||||
genInfoLabel.setText(
|
genInfoLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.genInfoLabel.text")); // NOI18N
|
||||||
org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.genInfoLabel.text")); // NOI18N
|
|
||||||
|
|
||||||
imgInfoLabel.setFont(imgInfoLabel.getFont().deriveFont(Font.BOLD, 14));
|
imgInfoLabel.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
|
||||||
imgInfoLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.imgInfoLabel.text")); // NOI18N
|
imgInfoLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.imgInfoLabel.text")); // NOI18N
|
||||||
|
|
||||||
OKButton.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.OKButton.text")); // NOI18N
|
OKButton.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.OKButton.text")); // NOI18N
|
||||||
@ -227,7 +240,7 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
|
|
||||||
},
|
},
|
||||||
new String [] {
|
new String [] {
|
||||||
"Path", "Remove" //NON-NLS
|
"Path", "Remove"
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
boolean[] canEdit = new boolean [] {
|
boolean[] canEdit = new boolean [] {
|
||||||
@ -244,9 +257,9 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
imagesTable.setUpdateSelectionOnSort(false);
|
imagesTable.setUpdateSelectionOnSort(false);
|
||||||
imagesTableScrollPane.setViewportView(imagesTable);
|
imagesTableScrollPane.setViewportView(imagesTable);
|
||||||
|
|
||||||
|
caseDirTextArea.setEditable(false);
|
||||||
caseDirTextArea.setBackground(new java.awt.Color(240, 240, 240));
|
caseDirTextArea.setBackground(new java.awt.Color(240, 240, 240));
|
||||||
caseDirTextArea.setColumns(20);
|
caseDirTextArea.setColumns(20);
|
||||||
caseDirTextArea.setEditable(false);
|
|
||||||
caseDirTextArea.setRows(1);
|
caseDirTextArea.setRows(1);
|
||||||
caseDirTextArea.setRequestFocusEnabled(false);
|
caseDirTextArea.setRequestFocusEnabled(false);
|
||||||
jScrollPane2.setViewportView(caseDirTextArea);
|
jScrollPane2.setViewportView(caseDirTextArea);
|
||||||
@ -268,6 +281,16 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
examinerTextField.setEditable(false);
|
examinerTextField.setEditable(false);
|
||||||
examinerTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.examinerTextField.text")); // NOI18N
|
examinerTextField.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.examinerTextField.text")); // NOI18N
|
||||||
|
|
||||||
|
lbDbType.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.lbDbType.text")); // NOI18N
|
||||||
|
|
||||||
|
tbDbType.setEditable(false);
|
||||||
|
tbDbType.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.tbDbType.text")); // NOI18N
|
||||||
|
|
||||||
|
lbDbName.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.lbDbName.text")); // NOI18N
|
||||||
|
|
||||||
|
tbDbName.setEditable(false);
|
||||||
|
tbDbName.setText(org.openide.util.NbBundle.getMessage(CasePropertiesForm.class, "CasePropertiesForm.tbDbName.text")); // NOI18N
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
this.setLayout(layout);
|
this.setLayout(layout);
|
||||||
layout.setHorizontalGroup(
|
layout.setHorizontalGroup(
|
||||||
@ -276,38 +299,37 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(casePropLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
|
.addComponent(casePropLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
|
||||||
.addComponent(genInfoLabel)
|
|
||||||
.addComponent(imgInfoLabel)
|
|
||||||
.addComponent(imagesTableScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
|
.addComponent(imagesTableScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 440, Short.MAX_VALUE)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addGap(181, 181, 181)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(OKButton, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(caseNameLabel)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addComponent(caseNumberLabel)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
.addComponent(examinerLabel)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addComponent(caseDirLabel)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addComponent(crDateLabel)
|
||||||
.addComponent(caseNameLabel)
|
.addComponent(lbDbType))
|
||||||
.addComponent(caseNumberLabel))
|
.addGap(18, 18, 18)
|
||||||
.addGap(25, 25, 25)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addComponent(caseNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)
|
||||||
.addComponent(caseNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE)
|
.addComponent(caseNumberTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)
|
||||||
.addComponent(caseNumberTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE)))
|
.addComponent(examinerTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addComponent(crDateTextField)
|
||||||
.addComponent(examinerLabel)
|
.addComponent(jScrollPane2)
|
||||||
.addGap(45, 45, 45)
|
.addComponent(tbDbType)
|
||||||
.addComponent(examinerTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE))
|
.addComponent(tbDbName))
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addComponent(caseDirLabel)
|
|
||||||
.addComponent(crDateLabel))
|
|
||||||
.addGap(18, 18, 18)
|
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE)
|
|
||||||
.addComponent(crDateTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE))))
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(updateCaseNameButton)
|
.addComponent(deleteCaseButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addComponent(deleteCaseButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
|
.addComponent(updateCaseNameButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(genInfoLabel)
|
||||||
|
.addComponent(imgInfoLabel)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(181, 181, 181)
|
||||||
|
.addComponent(OKButton, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addComponent(lbDbName))
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE)))
|
||||||
.addContainerGap())
|
.addContainerGap())
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
@ -317,32 +339,42 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
.addComponent(casePropLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(casePropLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGap(18, 18, 18)
|
.addGap(18, 18, 18)
|
||||||
.addComponent(genInfoLabel)
|
.addComponent(genInfoLabel)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(caseNameLabel)
|
.addComponent(caseNameLabel)
|
||||||
.addComponent(caseNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(caseNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(updateCaseNameButton))
|
.addComponent(updateCaseNameButton))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(caseNumberLabel)
|
.addComponent(caseNumberLabel)
|
||||||
.addComponent(caseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(caseNumberTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addGap(18, 18, 18)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(examinerLabel)
|
.addComponent(examinerLabel)
|
||||||
.addComponent(examinerTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(examinerTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 19, Short.MAX_VALUE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(crDateLabel)
|
.addComponent(crDateLabel)
|
||||||
.addComponent(crDateTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(crDateTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(caseDirLabel)
|
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(caseDirLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addGap(39, 39, 39)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(tbDbType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(lbDbType))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(lbDbName)
|
||||||
|
.addComponent(tbDbName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addGap(18, 18, 18)
|
||||||
.addComponent(imgInfoLabel))
|
.addComponent(imgInfoLabel))
|
||||||
.addComponent(deleteCaseButton))
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(9, 9, 9)
|
||||||
|
.addComponent(deleteCaseButton)))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addComponent(imagesTableScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(imagesTableScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
@ -445,6 +477,10 @@ class CasePropertiesForm extends javax.swing.JPanel {
|
|||||||
private javax.swing.JScrollPane jScrollPane1;
|
private javax.swing.JScrollPane jScrollPane1;
|
||||||
private javax.swing.JScrollPane jScrollPane2;
|
private javax.swing.JScrollPane jScrollPane2;
|
||||||
private javax.swing.JTextArea jTextArea1;
|
private javax.swing.JTextArea jTextArea1;
|
||||||
|
private javax.swing.JLabel lbDbName;
|
||||||
|
private javax.swing.JLabel lbDbType;
|
||||||
|
private javax.swing.JTextField tbDbName;
|
||||||
|
private javax.swing.JTextField tbDbType;
|
||||||
private javax.swing.JButton updateCaseNameButton;
|
private javax.swing.JButton updateCaseNameButton;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
package org.sleuthkit.autopsy.casemodule;
|
|
||||||
|
|
||||||
public interface ImportDoneCallback {
|
|
||||||
|
|
||||||
void importDoneCallback(boolean result, String resultString);
|
|
||||||
}
|
|
@ -33,17 +33,27 @@
|
|||||||
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="0" pref="227" max="32767" attributes="0"/>
|
<EmptySpace min="0" pref="227" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<Component id="caseDirLabel" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
|
||||||
<Component id="caseParentDirTextField" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="caseNameLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="caseNameLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="26" max="-2" attributes="0"/>
|
<EmptySpace min="-2" pref="26" max="-2" attributes="0"/>
|
||||||
<Component id="caseNameTextField" max="32767" attributes="0"/>
|
<Component id="caseNameTextField" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="multiUserSettingsWarningLabel" alignment="1" max="32767" attributes="0"/>
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="caseDirLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="caseTypeLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Component id="singleUserCaseRadioButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
|
<Component id="multiUserCaseRadioButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Component id="caseParentDirTextField" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
<Component id="caseDirBrowseButton" min="-2" max="-2" attributes="0"/>
|
<Component id="caseDirBrowseButton" min="-2" max="-2" attributes="0"/>
|
||||||
@ -52,14 +62,7 @@
|
|||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Component id="caseParentDirWarningLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Component id="singleUserCaseRadioButton" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
|
||||||
<Component id="multiUserCaseRadioButton" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Component id="caseParentDirWarningLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
@ -82,20 +85,19 @@
|
|||||||
<Component id="caseParentDirTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="caseParentDirTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="caseDirBrowseButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="caseDirBrowseButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
|
||||||
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="caseDirTextField" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="3" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="singleUserCaseRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="singleUserCaseRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="multiUserCaseRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
<Component id="multiUserCaseRadioButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="caseTypeLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
|
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="caseDirTextField" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" pref="27" max="-2" attributes="0"/>
|
||||||
<Component id="caseParentDirWarningLabel" min="-2" max="-2" attributes="0"/>
|
<Component id="caseParentDirWarningLabel" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="1" max="-2" attributes="0"/>
|
<EmptySpace pref="21" max="32767" attributes="0"/>
|
||||||
<Component id="multiUserSettingsWarningLabel" min="-2" pref="23" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -190,16 +192,6 @@
|
|||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multiUserCaseRadioButtonActionPerformed"/>
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="multiUserCaseRadioButtonActionPerformed"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JLabel" name="multiUserSettingsWarningLabel">
|
|
||||||
<Properties>
|
|
||||||
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
|
||||||
<Color blue="0" green="0" red="ff" type="rgb"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="NewCaseVisualPanel1.multiUserSettingsWarningLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="caseParentDirWarningLabel">
|
<Component class="javax.swing.JLabel" name="caseParentDirWarningLabel">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||||
@ -210,5 +202,12 @@
|
|||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="caseTypeLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="NewCaseVisualPanel1.caseTypeLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Form>
|
</Form>
|
||||||
|
@ -62,11 +62,9 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener {
|
|||||||
if (UserPreferences.getIsMultiUserModeEnabled()) {
|
if (UserPreferences.getIsMultiUserModeEnabled()) {
|
||||||
multiUserCaseRadioButton.setEnabled(true);
|
multiUserCaseRadioButton.setEnabled(true);
|
||||||
multiUserCaseRadioButton.setSelected(true);
|
multiUserCaseRadioButton.setSelected(true);
|
||||||
multiUserSettingsWarningLabel.setVisible(false);
|
|
||||||
} else {
|
} else {
|
||||||
multiUserCaseRadioButton.setEnabled(false);
|
multiUserCaseRadioButton.setEnabled(false);
|
||||||
singleUserCaseRadioButton.setSelected(true);
|
singleUserCaseRadioButton.setSelected(true);
|
||||||
multiUserSettingsWarningLabel.setText(NbBundle.getMessage(this.getClass(), "NewCaseVisualPanel1.MultiUserDisabled.text"));
|
|
||||||
}
|
}
|
||||||
validateSettings();
|
validateSettings();
|
||||||
}
|
}
|
||||||
@ -214,8 +212,8 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener {
|
|||||||
caseDirTextField = new javax.swing.JTextField();
|
caseDirTextField = new javax.swing.JTextField();
|
||||||
singleUserCaseRadioButton = new javax.swing.JRadioButton();
|
singleUserCaseRadioButton = new javax.swing.JRadioButton();
|
||||||
multiUserCaseRadioButton = new javax.swing.JRadioButton();
|
multiUserCaseRadioButton = new javax.swing.JRadioButton();
|
||||||
multiUserSettingsWarningLabel = new javax.swing.JLabel();
|
|
||||||
caseParentDirWarningLabel = new javax.swing.JLabel();
|
caseParentDirWarningLabel = new javax.swing.JLabel();
|
||||||
|
caseTypeLabel = new javax.swing.JLabel();
|
||||||
|
|
||||||
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
|
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class, "NewCaseVisualPanel1.jLabel1.text_1")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class, "NewCaseVisualPanel1.jLabel1.text_1")); // NOI18N
|
||||||
@ -256,12 +254,11 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
multiUserSettingsWarningLabel.setForeground(new java.awt.Color(255, 0, 0));
|
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(multiUserSettingsWarningLabel, org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class, "NewCaseVisualPanel1.multiUserSettingsWarningLabel.text")); // NOI18N
|
|
||||||
|
|
||||||
caseParentDirWarningLabel.setForeground(new java.awt.Color(255, 0, 0));
|
caseParentDirWarningLabel.setForeground(new java.awt.Color(255, 0, 0));
|
||||||
org.openide.awt.Mnemonics.setLocalizedText(caseParentDirWarningLabel, org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class, "NewCaseVisualPanel1.caseParentDirWarningLabel.text")); // NOI18N
|
org.openide.awt.Mnemonics.setLocalizedText(caseParentDirWarningLabel, org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class, "NewCaseVisualPanel1.caseParentDirWarningLabel.text")); // NOI18N
|
||||||
|
|
||||||
|
org.openide.awt.Mnemonics.setLocalizedText(caseTypeLabel, org.openide.util.NbBundle.getMessage(NewCaseVisualPanel1.class, "NewCaseVisualPanel1.caseTypeLabel.text")); // NOI18N
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
this.setLayout(layout);
|
this.setLayout(layout);
|
||||||
layout.setHorizontalGroup(
|
layout.setHorizontalGroup(
|
||||||
@ -278,25 +275,27 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener {
|
|||||||
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
||||||
.addComponent(jLabel1)
|
.addComponent(jLabel1)
|
||||||
.addGap(0, 227, Short.MAX_VALUE))
|
.addGap(0, 227, Short.MAX_VALUE))
|
||||||
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
|
||||||
.addComponent(caseDirLabel)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
|
||||||
.addComponent(caseParentDirTextField))
|
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addComponent(caseNameLabel)
|
.addComponent(caseNameLabel)
|
||||||
.addGap(26, 26, 26)
|
.addGap(26, 26, 26)
|
||||||
.addComponent(caseNameTextField))
|
.addComponent(caseNameTextField))
|
||||||
.addComponent(multiUserSettingsWarningLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(caseDirLabel)
|
||||||
|
.addComponent(caseTypeLabel))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addComponent(singleUserCaseRadioButton)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addComponent(multiUserCaseRadioButton)
|
||||||
|
.addGap(0, 0, Short.MAX_VALUE))
|
||||||
|
.addComponent(caseParentDirTextField))))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addComponent(caseDirBrowseButton)))
|
.addComponent(caseDirBrowseButton)))
|
||||||
.addContainerGap())
|
.addContainerGap())
|
||||||
.addGroup(layout.createSequentialGroup()
|
.addGroup(layout.createSequentialGroup()
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addComponent(caseParentDirWarningLabel)
|
||||||
.addGroup(layout.createSequentialGroup()
|
|
||||||
.addComponent(singleUserCaseRadioButton)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
|
||||||
.addComponent(multiUserCaseRadioButton))
|
|
||||||
.addComponent(caseParentDirWarningLabel))
|
|
||||||
.addGap(0, 0, Short.MAX_VALUE))))
|
.addGap(0, 0, Short.MAX_VALUE))))
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
@ -313,19 +312,18 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener {
|
|||||||
.addComponent(caseDirLabel)
|
.addComponent(caseDirLabel)
|
||||||
.addComponent(caseParentDirTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(caseParentDirTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(caseDirBrowseButton))
|
.addComponent(caseDirBrowseButton))
|
||||||
.addGap(18, 18, 18)
|
|
||||||
.addComponent(jLabel2)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
|
||||||
.addComponent(caseDirTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(singleUserCaseRadioButton)
|
.addComponent(singleUserCaseRadioButton)
|
||||||
.addComponent(multiUserCaseRadioButton))
|
.addComponent(multiUserCaseRadioButton)
|
||||||
|
.addComponent(caseTypeLabel))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addComponent(jLabel2)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(caseDirTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addGap(27, 27, 27)
|
||||||
.addComponent(caseParentDirWarningLabel)
|
.addComponent(caseParentDirWarningLabel)
|
||||||
.addGap(1, 1, 1)
|
.addContainerGap(21, Short.MAX_VALUE))
|
||||||
.addComponent(multiUserSettingsWarningLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
|
||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
@ -367,10 +365,10 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener {
|
|||||||
private javax.swing.JTextField caseParentDirTextField;
|
private javax.swing.JTextField caseParentDirTextField;
|
||||||
private javax.swing.JLabel caseParentDirWarningLabel;
|
private javax.swing.JLabel caseParentDirWarningLabel;
|
||||||
private javax.swing.ButtonGroup caseTypeButtonGroup;
|
private javax.swing.ButtonGroup caseTypeButtonGroup;
|
||||||
|
private javax.swing.JLabel caseTypeLabel;
|
||||||
private javax.swing.JLabel jLabel1;
|
private javax.swing.JLabel jLabel1;
|
||||||
private javax.swing.JLabel jLabel2;
|
private javax.swing.JLabel jLabel2;
|
||||||
private javax.swing.JRadioButton multiUserCaseRadioButton;
|
private javax.swing.JRadioButton multiUserCaseRadioButton;
|
||||||
private javax.swing.JLabel multiUserSettingsWarningLabel;
|
|
||||||
private javax.swing.JRadioButton singleUserCaseRadioButton;
|
private javax.swing.JRadioButton singleUserCaseRadioButton;
|
||||||
// End of variables declaration//GEN-END:variables
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
@ -39,43 +39,47 @@ import javax.swing.JOptionPane;
|
|||||||
import org.sleuthkit.autopsy.casemodule.Case.CaseType;
|
import org.sleuthkit.autopsy.casemodule.Case.CaseType;
|
||||||
import org.sleuthkit.autopsy.core.UserPreferences;
|
import org.sleuthkit.autopsy.core.UserPreferences;
|
||||||
import org.sleuthkit.datamodel.CaseDbConnectionInfo;
|
import org.sleuthkit.datamodel.CaseDbConnectionInfo;
|
||||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
import org.openide.windows.WindowManager;
|
||||||
import org.sleuthkit.datamodel.TskData.DbType;
|
import java.awt.Cursor;
|
||||||
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Action to open the New Case wizard.
|
* Action to open the New Case wizard.
|
||||||
*/
|
*/
|
||||||
final class NewCaseWizardAction extends CallableSystemAction {
|
final class NewCaseWizardAction extends CallableSystemAction {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
private WizardDescriptor.Panel<WizardDescriptor>[] panels;
|
private WizardDescriptor.Panel<WizardDescriptor>[] panels;
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(NewCaseWizardAction.class.getName());
|
private static final Logger logger = Logger.getLogger(NewCaseWizardAction.class.getName());
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void performAction() {
|
public void performAction() {
|
||||||
// there's a case open
|
|
||||||
if (Case.existsCurrentCase()) {
|
|
||||||
// show the confirmation first to close the current case and open the "New Case" wizard panel
|
|
||||||
String closeCurrentCase = NbBundle
|
|
||||||
.getMessage(this.getClass(), "NewCaseWizardAction.closeCurCase.confMsg.msg");
|
|
||||||
NotifyDescriptor d = new NotifyDescriptor.Confirmation(closeCurrentCase,
|
|
||||||
NbBundle.getMessage(this.getClass(),
|
|
||||||
"NewCaseWizardAction.closeCurCase.confMsg.title"),
|
|
||||||
NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
|
|
||||||
d.setValue(NotifyDescriptor.NO_OPTION);
|
|
||||||
|
|
||||||
Object res = DialogDisplayer.getDefault().notify(d);
|
// if ingest is ongoing, warn and get confirmaion before opening a different case
|
||||||
|
if (IngestManager.getInstance().isIngestRunning()) {
|
||||||
|
// show the confirmation first to close the current case and open the "New Case" wizard panel
|
||||||
|
String closeCurrentCase = NbBundle.getMessage(this.getClass(), "CloseCaseWhileIngesting.Warning");
|
||||||
|
NotifyDescriptor descriptor = new NotifyDescriptor.Confirmation(closeCurrentCase,
|
||||||
|
NbBundle.getMessage(this.getClass(), "CloseCaseWhileIngesting.Warning.title"),
|
||||||
|
NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
|
||||||
|
descriptor.setValue(NotifyDescriptor.NO_OPTION);
|
||||||
|
|
||||||
|
Object res = DialogDisplayer.getDefault().notify(descriptor);
|
||||||
if (res != null && res == DialogDescriptor.YES_OPTION) {
|
if (res != null && res == DialogDescriptor.YES_OPTION) {
|
||||||
try {
|
try {
|
||||||
Case.getCurrentCase().closeCase(); // close the current case
|
Case.getCurrentCase().closeCase(); // close the current case
|
||||||
newCaseAction(); // start the new case creation process
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Logger.getLogger(NewCaseWizardAction.class.getName()).log(Level.WARNING, "Error closing case.", ex); //NON-NLS
|
Logger.getLogger(NewCaseWizardAction.class.getName()).log(Level.WARNING, "Error closing case.", ex); //NON-NLS
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
newCaseAction();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
|
newCaseAction(); // start the new case creation process
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -102,39 +106,34 @@ final class NewCaseWizardAction extends CallableSystemAction {
|
|||||||
final String caseName = (String) wizardDescriptor.getProperty("caseName"); //NON-NLS
|
final String caseName = (String) wizardDescriptor.getProperty("caseName"); //NON-NLS
|
||||||
String createdDirectory = (String) wizardDescriptor.getProperty("createdDirectory"); //NON-NLS
|
String createdDirectory = (String) wizardDescriptor.getProperty("createdDirectory"); //NON-NLS
|
||||||
CaseType caseType = CaseType.values()[(int) wizardDescriptor.getProperty("caseType")]; //NON-NLS
|
CaseType caseType = CaseType.values()[(int) wizardDescriptor.getProperty("caseType")]; //NON-NLS
|
||||||
|
|
||||||
Case.create(createdDirectory, caseName, caseNumber, examiner, caseType);
|
Case.create(createdDirectory, caseName, caseNumber, examiner, caseType);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void done() {
|
protected void done() {
|
||||||
|
final String caseName = (String) wizardDescriptor.getProperty("caseName"); //NON-NLS
|
||||||
try {
|
try {
|
||||||
get();
|
get();
|
||||||
CaseType currentCaseType = CaseType.values()[(int) wizardDescriptor.getProperty("caseType")]; //NON-NLS
|
CaseType currentCaseType = CaseType.values()[(int) wizardDescriptor.getProperty("caseType")]; //NON-NLS
|
||||||
CaseDbConnectionInfo info = UserPreferences.getDatabaseConnectionInfo();
|
CaseDbConnectionInfo info = UserPreferences.getDatabaseConnectionInfo();
|
||||||
if ((currentCaseType == CaseType.SINGLE_USER_CASE) || ((info.getDbType() != DbType.SQLITE) && SleuthkitCase.tryConnectOld(info.getHost(), info.getPort(), info.getUserName(), info.getPassword(), info.getDbType()))) {
|
AddImageAction addImageAction = SystemAction.get(AddImageAction.class);
|
||||||
AddImageAction addImageAction = SystemAction.get(AddImageAction.class);
|
addImageAction.actionPerformed(null);
|
||||||
addImageAction.actionPerformed(null);
|
|
||||||
} else {
|
|
||||||
// @@@ Should we log here?
|
|
||||||
JOptionPane.showMessageDialog(null,
|
|
||||||
NbBundle.getMessage(this.getClass(), "NewCaseWizardAction.databaseProblem1.text"),
|
|
||||||
NbBundle.getMessage(this.getClass(), "NewCaseWizardAction.databaseProblem2.text"),
|
|
||||||
JOptionPane.ERROR_MESSAGE);
|
|
||||||
doFailedCaseCleanup(wizardDescriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
logger.log(Level.SEVERE, "Error creating case", ex); //NON-NLS
|
logger.log(Level.SEVERE, "Error creating case", ex); //NON-NLS
|
||||||
|
|
||||||
final String caseName = (String) wizardDescriptor.getProperty("caseName"); //NON-NLS
|
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
JOptionPane.showMessageDialog(null, NbBundle.getMessage(this.getClass(),
|
JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), ex.getCause().getMessage() + " "
|
||||||
"CaseCreateAction.msgDlg.cantCreateCase.msg") + " " + caseName,
|
+ NbBundle.getMessage(this.getClass(), "CaseExceptionWarning.CheckMultiUserOptions"),
|
||||||
NbBundle.getMessage(this.getClass(),
|
NbBundle.getMessage(this.getClass(), "CaseCreateAction.msgDlg.cantCreateCase.msg"),
|
||||||
"CaseOpenAction.msgDlg.cantOpenCase.title"),
|
JOptionPane.ERROR_MESSAGE); //NON-NLS
|
||||||
JOptionPane.ERROR_MESSAGE);
|
|
||||||
|
try {
|
||||||
|
StartupWindowProvider.getInstance().close();
|
||||||
|
} catch (Exception unused) {
|
||||||
|
}
|
||||||
|
if (!Case.isCaseOpen()) {
|
||||||
|
StartupWindowProvider.getInstance().open();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
doFailedCaseCleanup(wizardDescriptor);
|
doFailedCaseCleanup(wizardDescriptor);
|
||||||
}
|
}
|
||||||
@ -154,6 +153,9 @@ final class NewCaseWizardAction extends CallableSystemAction {
|
|||||||
logger.log(Level.INFO, "Deleting a created case directory due to an error, dir: {0}", createdDirectory); //NON-NLS
|
logger.log(Level.INFO, "Deleting a created case directory due to an error, dir: {0}", createdDirectory); //NON-NLS
|
||||||
Case.deleteCaseDirectory(new File(createdDirectory));
|
Case.deleteCaseDirectory(new File(createdDirectory));
|
||||||
}
|
}
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,6 +28,8 @@ import javax.swing.SwingUtilities;
|
|||||||
import javax.swing.table.AbstractTableModel;
|
import javax.swing.table.AbstractTableModel;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
import org.openide.windows.WindowManager;
|
||||||
|
import java.awt.Cursor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Panel show from the splash dialog that shows recent cases and allows them to
|
* Panel show from the splash dialog that shows recent cases and allows them to
|
||||||
@ -196,7 +198,7 @@ class OpenRecentCasePanel extends javax.swing.JPanel {
|
|||||||
}
|
}
|
||||||
// Open the recent cases
|
// Open the recent cases
|
||||||
if (caseName.equals("") || casePath.equals("") || (!new File(casePath).exists())) {
|
if (caseName.equals("") || casePath.equals("") || (!new File(casePath).exists())) {
|
||||||
JOptionPane.showMessageDialog(null,
|
JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(),
|
||||||
NbBundle.getMessage(this.getClass(),
|
NbBundle.getMessage(this.getClass(),
|
||||||
"OpenRecentCasePanel.openCase.msgDlg.caseDoesntExist.msg",
|
"OpenRecentCasePanel.openCase.msgDlg.caseDoesntExist.msg",
|
||||||
caseName),
|
caseName),
|
||||||
@ -211,12 +213,17 @@ class OpenRecentCasePanel extends javax.swing.JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
|
});
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
try {
|
try {
|
||||||
Case.open(casePath);
|
Case.open(casePath);
|
||||||
} catch (CaseActionException ex) {
|
} catch (CaseActionException ex) {
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
JOptionPane.showMessageDialog(null, ex.getMessage(), NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), JOptionPane.ERROR_MESSAGE);
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), ex.getMessage(),
|
||||||
|
NbBundle.getMessage(this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), JOptionPane.ERROR_MESSAGE); //NON-NLS
|
||||||
if (!Case.isCaseOpen()) {
|
if (!Case.isCaseOpen()) {
|
||||||
StartupWindowProvider.getInstance().open();
|
StartupWindowProvider.getInstance().open();
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,14 @@ import javax.swing.JOptionPane;
|
|||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
|
import org.openide.windows.WindowManager;
|
||||||
|
import java.awt.Cursor;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import org.openide.DialogDescriptor;
|
||||||
|
import org.openide.DialogDisplayer;
|
||||||
|
import org.openide.NotifyDescriptor;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is used to add the action to the recent case menu item. When the
|
* This class is used to add the action to the recent case menu item. When the
|
||||||
@ -52,6 +60,28 @@ class RecentItems implements ActionListener {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
|
|
||||||
|
// if ingest is ongoing, warn and get confirmaion before opening a different case
|
||||||
|
if (IngestManager.getInstance().isIngestRunning()) {
|
||||||
|
// show the confirmation first to close the current case and open the "New Case" wizard panel
|
||||||
|
String closeCurrentCase = NbBundle.getMessage(this.getClass(), "CloseCaseWhileIngesting.Warning");
|
||||||
|
NotifyDescriptor descriptor = new NotifyDescriptor.Confirmation(closeCurrentCase,
|
||||||
|
NbBundle.getMessage(this.getClass(), "CloseCaseWhileIngesting.Warning.title"),
|
||||||
|
NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
|
||||||
|
descriptor.setValue(NotifyDescriptor.NO_OPTION);
|
||||||
|
|
||||||
|
Object res = DialogDisplayer.getDefault().notify(descriptor);
|
||||||
|
if (res != null && res == DialogDescriptor.YES_OPTION) {
|
||||||
|
try {
|
||||||
|
Case.getCurrentCase().closeCase(); // close the current case
|
||||||
|
} catch (Exception ex) {
|
||||||
|
Logger.getLogger(NewCaseWizardAction.class.getName()).log(Level.WARNING, "Error closing case.", ex); //NON-NLS
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// check if the file exists
|
// check if the file exists
|
||||||
if (caseName.equals("") || casePath.equals("") || (!new File(casePath).exists())) {
|
if (caseName.equals("") || casePath.equals("") || (!new File(casePath).exists())) {
|
||||||
// throw an error here
|
// throw an error here
|
||||||
@ -70,13 +100,18 @@ class RecentItems implements ActionListener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
|
});
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
// Create case.
|
// Create case.
|
||||||
try {
|
try {
|
||||||
Case.open(casePath);
|
Case.open(casePath);
|
||||||
} catch (CaseActionException ex) {
|
} catch (CaseActionException ex) {
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
JOptionPane.showMessageDialog(null, ex.getMessage(), NbBundle.getMessage(RecentItems.this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), JOptionPane.ERROR_MESSAGE);
|
WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
|
JOptionPane.showMessageDialog(WindowManager.getDefault().getMainWindow(), ex.getMessage(),
|
||||||
|
NbBundle.getMessage(RecentItems.this.getClass(), "CaseOpenAction.msgDlg.cantOpenCase.title"), JOptionPane.ERROR_MESSAGE); //NON-NLS
|
||||||
if (!Case.isCaseOpen()) {
|
if (!Case.isCaseOpen()) {
|
||||||
StartupWindowProvider.getInstance().open();
|
StartupWindowProvider.getInstance().open();
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,7 @@ import javax.crypto.spec.PBEKeySpec;
|
|||||||
import javax.crypto.spec.PBEParameterSpec;
|
import javax.crypto.spec.PBEParameterSpec;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.util.NbPreferences;
|
import org.openide.util.NbPreferences;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||||
import org.sleuthkit.datamodel.CaseDbConnectionInfo;
|
import org.sleuthkit.datamodel.CaseDbConnectionInfo;
|
||||||
import org.sleuthkit.datamodel.TskData.DbType;
|
import org.sleuthkit.datamodel.TskData.DbType;
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ import org.sleuthkit.datamodel.TskData.DbType;
|
|||||||
*/
|
*/
|
||||||
public final class UserPreferences {
|
public final class UserPreferences {
|
||||||
|
|
||||||
|
private static final boolean isWindowsOS = PlatformUtil.isWindowsOS();
|
||||||
private static final Preferences preferences = NbPreferences.forModule(UserPreferences.class);
|
private static final Preferences preferences = NbPreferences.forModule(UserPreferences.class);
|
||||||
public static final String KEEP_PREFERRED_VIEWER = "KeepPreferredViewer"; // NON-NLS
|
public static final String KEEP_PREFERRED_VIEWER = "KeepPreferredViewer"; // NON-NLS
|
||||||
public static final String HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE = "HideKnownFilesInDataSourcesTree"; //NON-NLS
|
public static final String HIDE_KNOWN_FILES_IN_DATA_SOURCES_TREE = "HideKnownFilesInDataSourcesTree"; //NON-NLS
|
||||||
@ -177,6 +179,9 @@ public final class UserPreferences {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean getIsMultiUserModeEnabled() {
|
public static boolean getIsMultiUserModeEnabled() {
|
||||||
|
if (!isWindowsOS) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return preferences.getBoolean(IS_MULTI_USER_MODE_ENABLED, false);
|
return preferences.getBoolean(IS_MULTI_USER_MODE_ENABLED, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
<folder name="OptionsDialog">
|
<folder name="OptionsDialog">
|
||||||
<!--<folder name="General.instance_hidden"/>-->
|
<!--<folder name="General.instance_hidden"/>-->
|
||||||
|
<file name="Appearance.instance_hidden"/>
|
||||||
<file name="General.instance"/>
|
<file name="General.instance"/>
|
||||||
<folder name="Keymaps.instance_hidden"/> <!-- Keymap -->
|
<folder name="Keymaps.instance_hidden"/> <!-- Keymap -->
|
||||||
<folder name="Java.instance_hidden"/>
|
<folder name="Java.instance_hidden"/>
|
||||||
|
@ -27,7 +27,7 @@ Format_OperatingSystem_Value={0} version {1} running on {2}
|
|||||||
LBL_Copyright=<div style\="font-size\: 12pt; font-family\: Verdana, 'Verdana CE', Arial, 'Arial CE', 'Lucida Grande CE', lucida, 'Helvetica CE', sans-serif; ">Autopsy™ is a digital forensics platform based on The Sleuth Kit™ and other tools. <br><ul><li>General Information: <a style\="color\: \#1E2A60;" href\="http\://www.sleuthkit.org">http\://www.sleuthkit.org</a>.</li><li>Training: <a style\="color\: \#1E2A60;" href\="http://www.basistech.com/autopsy-training">http://www.basistech.com/autopsy-training</a></li><li>Commercial Support: <a style\="color\: \#1E2A60;" href\="http://www.basistech.com/digital-forensics/autopsy/support/">http://www.basistech.com/digital-forensics/autopsy/support/</a></li></ul>Copyright © 2003-2014. </div>
|
LBL_Copyright=<div style\="font-size\: 12pt; font-family\: Verdana, 'Verdana CE', Arial, 'Arial CE', 'Lucida Grande CE', lucida, 'Helvetica CE', sans-serif; ">Autopsy™ is a digital forensics platform based on The Sleuth Kit™ and other tools. <br><ul><li>General Information: <a style\="color\: \#1E2A60;" href\="http\://www.sleuthkit.org">http\://www.sleuthkit.org</a>.</li><li>Training: <a style\="color\: \#1E2A60;" href\="http://www.basistech.com/autopsy-training">http://www.basistech.com/autopsy-training</a></li><li>Commercial Support: <a style\="color\: \#1E2A60;" href\="http://www.basistech.com/digital-forensics/autopsy/support/">http://www.basistech.com/digital-forensics/autopsy/support/</a></li></ul>Copyright © 2003-2014. </div>
|
||||||
URL_ON_IMG=http://www.sleuthkit.org/
|
URL_ON_IMG=http://www.sleuthkit.org/
|
||||||
|
|
||||||
URL_ON_HELP=http://sleuthkit.org/autopsy/docs/user-docs/3.1/
|
URL_ON_HELP=http://sleuthkit.org/autopsy/docs/user-docs/4.0/
|
||||||
|
|
||||||
FILE_FOR_LOCAL_HELP=file:///
|
FILE_FOR_LOCAL_HELP=file:///
|
||||||
INDEX_FOR_LOCAL_HELP=/docs/index.html
|
INDEX_FOR_LOCAL_HELP=/docs/index.html
|
||||||
@ -153,6 +153,7 @@ MultiUserSettingsPanel.lbSolrSettings.text=Solr Settings
|
|||||||
MultiUserSettingsPanel.cbEnableMultiUser.text=Enable Multi-user cases
|
MultiUserSettingsPanel.cbEnableMultiUser.text=Enable Multi-user cases
|
||||||
MultiUserSettingsPanel.lbDatabaseSettings.text=Database Settings
|
MultiUserSettingsPanel.lbDatabaseSettings.text=Database Settings
|
||||||
MultiUserSettingsPanel.validationErrMsg.incomplete=Fill in all values
|
MultiUserSettingsPanel.validationErrMsg.incomplete=Fill in all values
|
||||||
|
MultiUserSettingsPanel.nonWindowsOs.msg=Multi-user cases are only available on Windows platforms
|
||||||
MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort=Invalid database port number
|
MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort=Invalid database port number
|
||||||
MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort=Invalid message service port number
|
MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort=Invalid message service port number
|
||||||
MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort=Invalid Solr server port number
|
MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort=Invalid Solr server port number
|
||||||
@ -185,9 +186,9 @@ MultiUserSettingsPanel.bnTestMessageService.text=Test
|
|||||||
MultiUserSettingsPanel.lbMessageServiceSettings.text=ActiveMQ Message Service Settings
|
MultiUserSettingsPanel.lbMessageServiceSettings.text=ActiveMQ Message Service Settings
|
||||||
MultiUserSettingsPanel.tbMsgPort.toolTipText=Port Number
|
MultiUserSettingsPanel.tbMsgPort.toolTipText=Port Number
|
||||||
MultiUserSettingsPanel.tbMsgPort.text=
|
MultiUserSettingsPanel.tbMsgPort.text=
|
||||||
MultiUserSettingsPanel.tbMsgUsername.toolTipText=User Name
|
MultiUserSettingsPanel.tbMsgUsername.toolTipText=User Name (optional)
|
||||||
MultiUserSettingsPanel.tbMsgUsername.text=
|
MultiUserSettingsPanel.tbMsgUsername.text=
|
||||||
MultiUserSettingsPanel.tbMsgPassword.toolTipText=Password
|
MultiUserSettingsPanel.tbMsgPassword.toolTipText=Password (optional)
|
||||||
MultiUserSettingsPanel.tbMsgPassword.text=
|
MultiUserSettingsPanel.tbMsgPassword.text=
|
||||||
MultiUserSettingsPanel.tbMsgHostname.toolTipText=Hostname or IP Address
|
MultiUserSettingsPanel.tbMsgHostname.toolTipText=Hostname or IP Address
|
||||||
MultiUserSettingsPanel.tbMsgHostname.text=
|
MultiUserSettingsPanel.tbMsgHostname.text=
|
||||||
|
@ -16,86 +16,36 @@
|
|||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="pnOverallPanel" min="-2" pref="555" max="-2" attributes="0"/>
|
<Component id="jScrollPane" alignment="0" pref="555" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="pnOverallPanel" alignment="0" min="-2" pref="559" max="-2" attributes="0"/>
|
<Component id="jScrollPane" alignment="0" pref="559" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
</Layout>
|
</Layout>
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Container class="javax.swing.JPanel" name="pnOverallPanel">
|
<Container class="javax.swing.JScrollPane" name="jScrollPane">
|
||||||
|
|
||||||
<Layout>
|
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||||
<DimensionLayout dim="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="1" attributes="0">
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="0" max="-2" attributes="0">
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<Component id="cbEnableMultiUser" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="tbOops" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Component id="pnSolrSettings" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="pnDatabaseSettings" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="pnMessagingSettings" alignment="0" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
<DimensionLayout dim="1">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="1" attributes="0">
|
|
||||||
<Group type="103" groupAlignment="2" attributes="0">
|
|
||||||
<Component id="tbOops" alignment="2" min="-2" max="-2" attributes="0"/>
|
|
||||||
<Component id="cbEnableMultiUser" alignment="2" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="pnDatabaseSettings" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="pnSolrSettings" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="pnMessagingSettings" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace pref="39" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
</Layout>
|
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Container class="javax.swing.JPanel" name="pnDatabaseSettings">
|
<Container class="javax.swing.JPanel" name="pnOverallPanel">
|
||||||
<Properties>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
|
||||||
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
|
|
||||||
<EtchetBorder/>
|
|
||||||
</Border>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" alignment="1" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" max="-2" attributes="0">
|
||||||
<Component id="tbDbHostname" max="32767" attributes="0"/>
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Component id="lbDatabaseSettings" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
|
||||||
<Component id="bnTestDatabase" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
|
||||||
<Component id="lbTestDatabase" min="-2" pref="16" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Component id="tbDbPort" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="tbDbUsername" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="tbDbPassword" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Component id="lbTestDbWarning" min="-2" max="-2" attributes="0"/>
|
<Component id="cbEnableMultiUser" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="tbOops" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
|
<Component id="pnSolrSettings" alignment="0" max="32767" attributes="0"/>
|
||||||
|
<Component id="pnDatabaseSettings" alignment="0" max="32767" attributes="0"/>
|
||||||
|
<Component id="pnMessagingSettings" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
@ -104,416 +54,472 @@
|
|||||||
<DimensionLayout dim="1">
|
<DimensionLayout dim="1">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="1" attributes="0">
|
<Group type="102" alignment="1" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<Group type="103" groupAlignment="2" attributes="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Component id="tbOops" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="bnTestDatabase" alignment="0" min="-2" max="-2" attributes="0"/>
|
<Component id="cbEnableMultiUser" alignment="2" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="lbTestDatabase" alignment="0" min="-2" pref="23" max="-2" attributes="0"/>
|
|
||||||
<Component id="lbDatabaseSettings" min="-2" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
|
||||||
<Component id="tbDbHostname" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="tbDbPort" min="-2" max="-2" attributes="0"/>
|
<Component id="pnDatabaseSettings" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="tbDbUsername" min="-2" max="-2" attributes="0"/>
|
<Component id="pnSolrSettings" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="tbDbPassword" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="lbTestDbWarning" min="-2" pref="16" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="pnMessagingSettings" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace pref="39" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
</Layout>
|
</Layout>
|
||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Component class="javax.swing.JTextField" name="tbDbHostname">
|
<Container class="javax.swing.JPanel" name="pnDatabaseSettings">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
|
||||||
</Property>
|
<EtchetBorder/>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
</Border>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbHostname.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbHostname.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JTextField" name="tbDbPort">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbPort.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbPort.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JTextField" name="tbDbUsername">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbUsername.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbUsername.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JPasswordField" name="tbDbPassword">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbPassword.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbPassword.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="lbDatabaseSettings">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbDatabaseSettings.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="verticalAlignment" type="int" value="1"/>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JButton" name="bnTestDatabase">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.bnTestDatabase.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="bnTestDatabaseActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="lbTestDatabase">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestDatabase.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="autoscrolls" type="boolean" value="true"/>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="lbTestDbWarning">
|
|
||||||
<Properties>
|
|
||||||
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
|
||||||
<Color blue="0" green="0" red="ff" type="rgb"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestDbWarning.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
|
||||||
</Container>
|
|
||||||
<Container class="javax.swing.JPanel" name="pnSolrSettings">
|
|
||||||
<Properties>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
|
||||||
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
|
|
||||||
<EtchetBorder/>
|
|
||||||
</Border>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Component id="tbSolrHostname" max="32767" attributes="0"/>
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Component id="lbSolrSettings" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
|
||||||
<Component id="bnTestSolr" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
|
||||||
<Component id="lbTestSolr" min="-2" pref="16" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Component id="tbSolrPort" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<Component id="lbTestSolrWarning" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
<DimensionLayout dim="1">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="bnTestSolr" alignment="1" min="-2" max="-2" attributes="0"/>
|
<Component id="tbDbHostname" max="32767" attributes="0"/>
|
||||||
<Component id="lbSolrSettings" min="-2" max="-2" attributes="0"/>
|
<Group type="102" attributes="0">
|
||||||
|
<Component id="lbDatabaseSettings" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Component id="bnTestDatabase" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Component id="lbTestDatabase" min="-2" pref="16" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Component id="tbDbPort" alignment="0" max="32767" attributes="0"/>
|
||||||
|
<Component id="tbDbUsername" alignment="0" max="32767" attributes="0"/>
|
||||||
|
<Component id="tbDbPassword" alignment="0" max="32767" attributes="0"/>
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<Component id="lbTestDbWarning" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="lbTestSolr" alignment="1" min="-2" pref="23" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="tbSolrHostname" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
|
||||||
<Component id="tbSolrPort" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="lbTestSolrWarning" min="-2" pref="16" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</DimensionLayout>
|
||||||
</DimensionLayout>
|
<DimensionLayout dim="1">
|
||||||
</Layout>
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<SubComponents>
|
<Group type="102" alignment="1" attributes="0">
|
||||||
<Component class="javax.swing.JLabel" name="lbSolrSettings">
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="bnTestDatabase" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="lbTestDatabase" alignment="0" min="-2" pref="23" max="-2" attributes="0"/>
|
||||||
|
<Component id="lbDatabaseSettings" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Component id="tbDbHostname" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="tbDbPort" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="tbDbUsername" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="tbDbPassword" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="lbTestDbWarning" min="-2" pref="16" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbDbHostname">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbHostname.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbHostname.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbDbPort">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbPort.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbPort.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbDbUsername">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbUsername.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbUsername.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JPasswordField" name="tbDbPassword">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbPassword.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbDbPassword.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbDatabaseSettings">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbDatabaseSettings.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="verticalAlignment" type="int" value="1"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="bnTestDatabase">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.bnTestDatabase.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="bnTestDatabaseActionPerformed"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbTestDatabase">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestDatabase.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="autoscrolls" type="boolean" value="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbTestDbWarning">
|
||||||
|
<Properties>
|
||||||
|
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||||
|
<Color blue="0" green="0" red="ff" type="rgb"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestDbWarning.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
<Container class="javax.swing.JPanel" name="pnSolrSettings">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
|
||||||
</Property>
|
<EtchetBorder/>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
</Border>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbSolrSettings.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JTextField" name="tbSolrHostname">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbSolrHostname.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JTextField" name="tbSolrPort">
|
|
||||||
<Properties>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbSolrPort.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JButton" name="bnTestSolr">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.bnTestSolr.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="bnTestSolrActionPerformed"/>
|
|
||||||
</Events>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="lbTestSolr">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestSolr.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="lbTestSolrWarning">
|
|
||||||
<Properties>
|
|
||||||
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
|
||||||
<Color blue="0" green="0" red="ff" type="rgb"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestSolrWarning.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
|
||||||
</Container>
|
|
||||||
<Container class="javax.swing.JPanel" name="pnMessagingSettings">
|
|
||||||
<Properties>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
|
||||||
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
|
|
||||||
<EtchetBorder/>
|
|
||||||
</Border>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
|
|
||||||
<Layout>
|
<Layout>
|
||||||
<DimensionLayout dim="0">
|
<DimensionLayout dim="0">
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Component id="tbMsgHostname" max="32767" attributes="0"/>
|
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Component id="lbMessageServiceSettings" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace pref="229" max="32767" attributes="0"/>
|
|
||||||
<Component id="bnTestMessageService" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace type="separate" max="-2" attributes="0"/>
|
|
||||||
<Component id="lbTestMessageService" min="-2" pref="16" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Component id="tbMsgPort" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="tbMsgUsername" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="tbMsgPassword" alignment="0" max="32767" attributes="0"/>
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<Component id="lbTestMessageWarning" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
|
||||||
</DimensionLayout>
|
|
||||||
<DimensionLayout dim="1">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Group type="103" groupAlignment="1" attributes="0">
|
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Component id="bnTestMessageService" alignment="1" min="-2" max="-2" attributes="0"/>
|
<Component id="tbSolrHostname" max="32767" attributes="0"/>
|
||||||
<Component id="lbMessageServiceSettings" min="-2" max="-2" attributes="0"/>
|
<Group type="102" attributes="0">
|
||||||
|
<Component id="lbSolrSettings" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Component id="bnTestSolr" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Component id="lbTestSolr" min="-2" pref="16" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Component id="tbSolrPort" alignment="0" max="32767" attributes="0"/>
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<Component id="lbTestSolrWarning" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<Component id="lbTestMessageService" min="-2" pref="23" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="tbMsgHostname" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="tbMsgPort" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="tbMsgUsername" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="tbMsgPassword" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="lbTestMessageWarning" min="-2" pref="16" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="32767" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</DimensionLayout>
|
||||||
</DimensionLayout>
|
<DimensionLayout dim="1">
|
||||||
</Layout>
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<SubComponents>
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Component class="javax.swing.JLabel" name="lbMessageServiceSettings">
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="bnTestSolr" alignment="1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="lbSolrSettings" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Component id="lbTestSolr" alignment="1" min="-2" pref="23" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="tbSolrHostname" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Component id="tbSolrPort" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="lbTestSolrWarning" min="-2" pref="16" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbSolrSettings">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbSolrSettings.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbSolrHostname">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbSolrHostname.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbSolrPort">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbSolrPort.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="bnTestSolr">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.bnTestSolr.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="bnTestSolrActionPerformed"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbTestSolr">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestSolr.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbTestSolrWarning">
|
||||||
|
<Properties>
|
||||||
|
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||||
|
<Color blue="0" green="0" red="ff" type="rgb"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestSolrWarning.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
<Container class="javax.swing.JPanel" name="pnMessagingSettings">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
|
||||||
</Property>
|
<EtchetBorder/>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
</Border>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbMessageServiceSettings.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JTextField" name="tbMsgHostname">
|
<Layout>
|
||||||
<Properties>
|
<DimensionLayout dim="0">
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
<Group type="102" attributes="0">
|
||||||
</Property>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgHostname.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<Component id="tbMsgHostname" max="32767" attributes="0"/>
|
||||||
</Property>
|
<Group type="102" attributes="0">
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Component id="lbMessageServiceSettings" min="-2" max="-2" attributes="0"/>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgHostname.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<EmptySpace pref="229" max="32767" attributes="0"/>
|
||||||
</Property>
|
<Component id="bnTestMessageService" min="-2" max="-2" attributes="0"/>
|
||||||
</Properties>
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
</Component>
|
<Component id="lbTestMessageService" min="-2" pref="16" max="-2" attributes="0"/>
|
||||||
<Component class="javax.swing.JTextField" name="tbMsgUsername">
|
</Group>
|
||||||
<Properties>
|
<Component id="tbMsgPort" alignment="0" max="32767" attributes="0"/>
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Component id="tbMsgUsername" alignment="0" max="32767" attributes="0"/>
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
<Component id="tbMsgPassword" alignment="0" max="32767" attributes="0"/>
|
||||||
</Property>
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Component id="lbTestMessageWarning" min="-2" max="-2" attributes="0"/>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgUsername.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||||
</Property>
|
</Group>
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
</Group>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgUsername.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Property>
|
</Group>
|
||||||
</Properties>
|
</Group>
|
||||||
</Component>
|
</DimensionLayout>
|
||||||
<Component class="javax.swing.JTextField" name="tbMsgPort">
|
<DimensionLayout dim="1">
|
||||||
<Properties>
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Property>
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgPort.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<Component id="bnTestMessageService" alignment="1" min="-2" max="-2" attributes="0"/>
|
||||||
</Property>
|
<Component id="lbMessageServiceSettings" min="-2" max="-2" attributes="0"/>
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
</Group>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgPort.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<Component id="lbTestMessageService" min="-2" pref="23" max="-2" attributes="0"/>
|
||||||
</Property>
|
</Group>
|
||||||
</Properties>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Component>
|
<Component id="tbMsgHostname" min="-2" max="-2" attributes="0"/>
|
||||||
<Component class="javax.swing.JPasswordField" name="tbMsgPassword">
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Properties>
|
<Component id="tbMsgPort" min="-2" max="-2" attributes="0"/>
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Font name="Tahoma" size="12" style="0"/>
|
<Component id="tbMsgUsername" min="-2" max="-2" attributes="0"/>
|
||||||
</Property>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Component id="tbMsgPassword" min="-2" max="-2" attributes="0"/>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgPassword.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Property>
|
<Component id="lbTestMessageWarning" min="-2" pref="16" max="-2" attributes="0"/>
|
||||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgPassword.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
</Group>
|
||||||
</Property>
|
</Group>
|
||||||
</Properties>
|
</DimensionLayout>
|
||||||
</Component>
|
</Layout>
|
||||||
<Component class="javax.swing.JButton" name="bnTestMessageService">
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbMessageServiceSettings">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbMessageServiceSettings.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbMsgHostname">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgHostname.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgHostname.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbMsgUsername">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgUsername.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgUsername.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="tbMsgPort">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgPort.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgPort.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JPasswordField" name="tbMsgPassword">
|
||||||
|
<Properties>
|
||||||
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="0"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgPassword.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbMsgPassword.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="bnTestMessageService">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.bnTestMessageService.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="bnTestMessageServiceActionPerformed"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbTestMessageService">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestMessageService.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="lbTestMessageWarning">
|
||||||
|
<Properties>
|
||||||
|
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||||
|
<Color blue="0" green="0" red="ff" type="rgb"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestMessageWarning.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Container>
|
||||||
|
<Component class="javax.swing.JCheckBox" name="cbEnableMultiUser">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.bnTestMessageService.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.cbEnableMultiUser.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
<Events>
|
<Events>
|
||||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="bnTestMessageServiceActionPerformed"/>
|
<EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="cbEnableMultiUserItemStateChanged"/>
|
||||||
</Events>
|
</Events>
|
||||||
</Component>
|
</Component>
|
||||||
<Component class="javax.swing.JLabel" name="lbTestMessageService">
|
<Component class="javax.swing.JTextField" name="tbOops">
|
||||||
<Properties>
|
<Properties>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="editable" type="boolean" value="false"/>
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestMessageService.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||||
|
<Font name="Tahoma" size="12" style="1"/>
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JLabel" name="lbTestMessageWarning">
|
|
||||||
<Properties>
|
|
||||||
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||||
<Color blue="0" green="0" red="ff" type="rgb"/>
|
<Color blue="0" green="0" red="ff" type="rgb"/>
|
||||||
</Property>
|
</Property>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.lbTestMessageWarning.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbOops.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||||
|
<Border info="null"/>
|
||||||
</Property>
|
</Property>
|
||||||
</Properties>
|
</Properties>
|
||||||
</Component>
|
</Component>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
<Component class="javax.swing.JCheckBox" name="cbEnableMultiUser">
|
|
||||||
<Properties>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.cbEnableMultiUser.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
<Events>
|
|
||||||
<EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="cbEnableMultiUserItemStateChanged"/>
|
|
||||||
</Events>
|
|
||||||
</Component>
|
|
||||||
<Component class="javax.swing.JTextField" name="tbOops">
|
|
||||||
<Properties>
|
|
||||||
<Property name="editable" type="boolean" value="false"/>
|
|
||||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
|
||||||
<Font name="Tahoma" size="12" style="1"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
|
||||||
<Color blue="0" green="0" red="ff" type="rgb"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="MultiUserSettingsPanel.tbOops.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
|
||||||
</Property>
|
|
||||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
|
||||||
<Border info="null"/>
|
|
||||||
</Property>
|
|
||||||
</Properties>
|
|
||||||
</Component>
|
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
</Container>
|
</Container>
|
||||||
</SubComponents>
|
</SubComponents>
|
||||||
|
@ -23,6 +23,7 @@ import javax.swing.ImageIcon;
|
|||||||
import org.openide.util.ImageUtilities;
|
import org.openide.util.ImageUtilities;
|
||||||
import org.openide.util.Lookup;
|
import org.openide.util.Lookup;
|
||||||
import org.sleuthkit.autopsy.core.UserPreferencesException;
|
import org.sleuthkit.autopsy.core.UserPreferencesException;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||||
import org.sleuthkit.autopsy.events.MessageServiceException;
|
import org.sleuthkit.autopsy.events.MessageServiceException;
|
||||||
import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService;
|
import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService;
|
||||||
import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchServiceException;
|
import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchServiceException;
|
||||||
@ -35,11 +36,13 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
private static final String PORT_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPort.toolTipText");
|
private static final String PORT_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPort.toolTipText");
|
||||||
private static final String USER_NAME_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbUsername.toolTipText");
|
private static final String USER_NAME_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbUsername.toolTipText");
|
||||||
private static final String PASSWORD_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPassword.toolTipText");
|
private static final String PASSWORD_PROMPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbDbPassword.toolTipText");
|
||||||
|
private static final String USER_NAME_PROMPT_OPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgUsername.toolTipText");
|
||||||
|
private static final String PASSWORD_PROMPT_OPT = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.tbMsgPassword.toolTipText");
|
||||||
private static final String INCOMPLETE_SETTINGS_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.incomplete");
|
private static final String INCOMPLETE_SETTINGS_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.incomplete");
|
||||||
private static final String INVALID_DB_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort");
|
private static final String INVALID_DB_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidDatabasePort");
|
||||||
private static final String INVALID_MESSAGE_SERVICE_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort");
|
private static final String INVALID_MESSAGE_SERVICE_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidMessageServicePort");
|
||||||
private static final String INVALID_INDEXING_SERVER_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort");
|
private static final String INVALID_INDEXING_SERVER_PORT_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.invalidIndexingServerPort");
|
||||||
private static final int DEFAULT_MESSAGE_SERVICE_PORT = 61616;
|
private static final String NON_WINDOWS_OS_MSG = NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.nonWindowsOs.msg");
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
private final MultiUserSettingsPanelController controller;
|
private final MultiUserSettingsPanelController controller;
|
||||||
private final Collection<JTextField> textBoxes = new ArrayList<>();
|
private final Collection<JTextField> textBoxes = new ArrayList<>();
|
||||||
@ -47,6 +50,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
private static final Logger logger = Logger.getLogger(MultiUserSettingsPanel.class.getName());
|
private static final Logger logger = Logger.getLogger(MultiUserSettingsPanel.class.getName());
|
||||||
private final ImageIcon goodIcon;
|
private final ImageIcon goodIcon;
|
||||||
private final ImageIcon badIcon;
|
private final ImageIcon badIcon;
|
||||||
|
private static final boolean isWindowsOS = PlatformUtil.isWindowsOS();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates new form AutopsyMultiUserSettingsPanel
|
* Creates new form AutopsyMultiUserSettingsPanel
|
||||||
@ -68,8 +72,8 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
textPrompts.add(new TextPrompt(PASSWORD_PROMPT, tbDbPassword));
|
textPrompts.add(new TextPrompt(PASSWORD_PROMPT, tbDbPassword));
|
||||||
textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbMsgHostname));
|
textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbMsgHostname));
|
||||||
textPrompts.add(new TextPrompt(PORT_PROMPT, tbMsgPort));
|
textPrompts.add(new TextPrompt(PORT_PROMPT, tbMsgPort));
|
||||||
textPrompts.add(new TextPrompt(USER_NAME_PROMPT, tbMsgUsername));
|
textPrompts.add(new TextPrompt(USER_NAME_PROMPT_OPT, tbMsgUsername));
|
||||||
textPrompts.add(new TextPrompt(PASSWORD_PROMPT, tbMsgPassword));
|
textPrompts.add(new TextPrompt(PASSWORD_PROMPT_OPT, tbMsgPassword));
|
||||||
textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbSolrHostname));
|
textPrompts.add(new TextPrompt(HOST_NAME_OR_IP_PROMPT, tbSolrHostname));
|
||||||
textPrompts.add(new TextPrompt(PORT_PROMPT, tbSolrPort));
|
textPrompts.add(new TextPrompt(PORT_PROMPT, tbSolrPort));
|
||||||
configureTextPrompts(textPrompts);
|
configureTextPrompts(textPrompts);
|
||||||
@ -105,6 +109,10 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
addDocumentListeners(textBoxes, textBoxChangedListener);
|
addDocumentListeners(textBoxes, textBoxChangedListener);
|
||||||
goodIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/good.png", false));
|
goodIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/good.png", false));
|
||||||
badIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/bad.png", false));
|
badIcon = new ImageIcon(ImageUtilities.loadImage("org/sleuthkit/autopsy/images/bad.png", false));
|
||||||
|
if (!isWindowsOS) {
|
||||||
|
cbEnableMultiUser.setEnabled(false);
|
||||||
|
cbEnableMultiUser.setSelected(false);
|
||||||
|
}
|
||||||
enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected());
|
enableMultiUserComponents(textBoxes, cbEnableMultiUser.isSelected());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,6 +151,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
private void initComponents() {
|
private void initComponents() {
|
||||||
|
|
||||||
|
jScrollPane = new javax.swing.JScrollPane();
|
||||||
pnOverallPanel = new javax.swing.JPanel();
|
pnOverallPanel = new javax.swing.JPanel();
|
||||||
pnDatabaseSettings = new javax.swing.JPanel();
|
pnDatabaseSettings = new javax.swing.JPanel();
|
||||||
tbDbHostname = new javax.swing.JTextField();
|
tbDbHostname = new javax.swing.JTextField();
|
||||||
@ -432,15 +441,17 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
.addContainerGap(39, Short.MAX_VALUE))
|
.addContainerGap(39, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
jScrollPane.setViewportView(pnOverallPanel);
|
||||||
|
|
||||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||||
this.setLayout(layout);
|
this.setLayout(layout);
|
||||||
layout.setHorizontalGroup(
|
layout.setHorizontalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(pnOverallPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 555, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(jScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 555, Short.MAX_VALUE)
|
||||||
);
|
);
|
||||||
layout.setVerticalGroup(
|
layout.setVerticalGroup(
|
||||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(pnOverallPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 559, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(jScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 559, Short.MAX_VALUE)
|
||||||
);
|
);
|
||||||
}// </editor-fold>//GEN-END:initComponents
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
@ -457,7 +468,11 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
private void cbEnableMultiUserItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbEnableMultiUserItemStateChanged
|
private void cbEnableMultiUserItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cbEnableMultiUserItemStateChanged
|
||||||
if (!cbEnableMultiUser.isSelected()) {
|
if (!cbEnableMultiUser.isSelected()) {
|
||||||
tbOops.setText("");
|
if (!isWindowsOS) {
|
||||||
|
tbOops.setText(NON_WINDOWS_OS_MSG);
|
||||||
|
} else {
|
||||||
|
tbOops.setText("");
|
||||||
|
}
|
||||||
bnTestDatabase.setEnabled(false);
|
bnTestDatabase.setEnabled(false);
|
||||||
lbTestDatabase.setIcon(null);
|
lbTestDatabase.setIcon(null);
|
||||||
bnTestSolr.setEnabled(false);
|
bnTestSolr.setEnabled(false);
|
||||||
@ -627,19 +642,29 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests whether or not values have been entered in all of the message
|
* Tests whether or not values have been entered in all of the
|
||||||
* service settings text fields.
|
* required message service settings text fields.
|
||||||
*
|
*
|
||||||
* @return True or false.
|
* @return True or false.
|
||||||
*/
|
*/
|
||||||
private boolean messageServiceFieldsArePopulated() {
|
private boolean messageServiceFieldsArePopulated() {
|
||||||
return !tbMsgHostname.getText().trim().isEmpty()
|
|
||||||
&& !tbMsgPort.getText().trim().isEmpty()
|
if ((tbMsgHostname.getText().trim().isEmpty()) ||
|
||||||
&& !tbMsgUsername.getText().trim().isEmpty()
|
(tbMsgPort.getText().trim().isEmpty())) {
|
||||||
&& tbMsgPassword.getPassword().length != 0;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// user name and pw are optional, but make sure they are both set or both empty
|
||||||
|
boolean isUserSet = (tbMsgUsername.getText().trim().isEmpty() == false);
|
||||||
|
boolean isPwSet = (tbMsgPassword.getPassword().length != 0);
|
||||||
|
return (isUserSet == isPwSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
void store() {
|
void store() {
|
||||||
|
if (!isWindowsOS) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
DbType dbType = DbType.SQLITE;
|
DbType dbType = DbType.SQLITE;
|
||||||
|
|
||||||
if (cbEnableMultiUser.isSelected()) {
|
if (cbEnableMultiUser.isSelected()) {
|
||||||
@ -691,7 +716,11 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
* @return true if it's okay, false otherwise.
|
* @return true if it's okay, false otherwise.
|
||||||
*/
|
*/
|
||||||
boolean valid() {
|
boolean valid() {
|
||||||
tbOops.setText("");
|
if (!isWindowsOS) {
|
||||||
|
tbOops.setText(NON_WINDOWS_OS_MSG);
|
||||||
|
} else {
|
||||||
|
tbOops.setText("");
|
||||||
|
}
|
||||||
|
|
||||||
if (cbEnableMultiUser.isSelected()) {
|
if (cbEnableMultiUser.isSelected()) {
|
||||||
return checkFieldsAndEnableButtons()
|
return checkFieldsAndEnableButtons()
|
||||||
@ -800,6 +829,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
private javax.swing.JButton bnTestMessageService;
|
private javax.swing.JButton bnTestMessageService;
|
||||||
private javax.swing.JButton bnTestSolr;
|
private javax.swing.JButton bnTestSolr;
|
||||||
private javax.swing.JCheckBox cbEnableMultiUser;
|
private javax.swing.JCheckBox cbEnableMultiUser;
|
||||||
|
private javax.swing.JScrollPane jScrollPane;
|
||||||
private javax.swing.JLabel lbDatabaseSettings;
|
private javax.swing.JLabel lbDatabaseSettings;
|
||||||
private javax.swing.JLabel lbMessageServiceSettings;
|
private javax.swing.JLabel lbMessageServiceSettings;
|
||||||
private javax.swing.JLabel lbSolrSettings;
|
private javax.swing.JLabel lbSolrSettings;
|
||||||
|
@ -1,97 +0,0 @@
|
|||||||
/*
|
|
||||||
* Autopsy Forensic Browser
|
|
||||||
*
|
|
||||||
* Copyright 2015 Basis Technology Corp.
|
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
package org.sleuthkit.autopsy.coreutils;
|
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class offers utility functions to identify and process time stamped folders.
|
|
||||||
*/
|
|
||||||
public final class TimeStampUtils {
|
|
||||||
|
|
||||||
// Pattern to identify whether case name contains a generated time stamp.
|
|
||||||
// Sample case name with time stamp: Case 1_2015_02_02_12_10_31 for case "Case 1"
|
|
||||||
private static final Pattern timeStampPattern = Pattern.compile("\\d{4}_\\d{2}_\\d{2}_\\d{2}_\\d{2}_\\d{2}$");
|
|
||||||
private static final int LENGTH_OF_DATE_TIME_STAMP = 20; // length of the above time stamp
|
|
||||||
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks whether a string ends with a time stamp defined by pattern.
|
|
||||||
*
|
|
||||||
* @param inputString Input string
|
|
||||||
*
|
|
||||||
* @return true if string ends with a time stamp, false otherwise.
|
|
||||||
*/
|
|
||||||
public static boolean endsWithTimeStamp(String inputString) {
|
|
||||||
Matcher m = timeStampPattern.matcher(inputString);
|
|
||||||
return m.find();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns length of time stamp string.
|
|
||||||
*
|
|
||||||
* @return length of time stamp string.
|
|
||||||
*/
|
|
||||||
public static int getTimeStampLength() {
|
|
||||||
return LENGTH_OF_DATE_TIME_STAMP;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a timestamp using the current time
|
|
||||||
*
|
|
||||||
* @return the timestamp as a String
|
|
||||||
*/
|
|
||||||
public static String createTimeStamp() {
|
|
||||||
return dateFormat.format(Calendar.getInstance().getTime());
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove a timestamp if it exists
|
|
||||||
*
|
|
||||||
* @param input the String to remove the trailing timestamp from
|
|
||||||
*
|
|
||||||
* @return the String without timestamp
|
|
||||||
*/
|
|
||||||
public static String removeTimeStamp(String input) {
|
|
||||||
String result = input;
|
|
||||||
if (input != null && endsWithTimeStamp(input)) {
|
|
||||||
result = input.substring(0, input.length() - getTimeStampLength());
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return the timestamp portion of the name passed in
|
|
||||||
*
|
|
||||||
* @param input the name to check for a timestamp
|
|
||||||
*
|
|
||||||
* @return the timestamp only, or empty String if none
|
|
||||||
*/
|
|
||||||
public static String getTimeStampOnly(String input) {
|
|
||||||
String result = "";
|
|
||||||
if (input != null && endsWithTimeStamp(input)) {
|
|
||||||
result = input.substring(input.length() - getTimeStampLength(), input.length());
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -454,7 +454,7 @@ public class EventsRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NbBundle.Messages({"progressWindow.msg.populateMacEventsFiles=populating mac events for files:",
|
@NbBundle.Messages({"progressWindow.msg.populateMacEventsFiles==Populating MAC time events for files:",
|
||||||
"progressWindow.msg.reinit_db=(re)initializing events database",
|
"progressWindow.msg.reinit_db=(re)initializing events database",
|
||||||
"progressWindow.msg.commitingDb=committing events db"})
|
"progressWindow.msg.commitingDb=committing events db"})
|
||||||
protected Void doInBackground() throws Exception {
|
protected Void doInBackground() throws Exception {
|
||||||
@ -587,7 +587,7 @@ public class EventsRepository {
|
|||||||
* @param trans the db transaction to use
|
* @param trans the db transaction to use
|
||||||
* @param skCase a reference to the sleuthkit case
|
* @param skCase a reference to the sleuthkit case
|
||||||
*/
|
*/
|
||||||
@NbBundle.Messages({"# {0} - event type ", "progressWindow.populatingXevents=populating {0} events"})
|
@NbBundle.Messages({"# {0} - event type ", "progressWindow.populatingXevents=Populating {0} events"})
|
||||||
private void populateEventType(final ArtifactEventType type, EventDB.EventTransaction trans) {
|
private void populateEventType(final ArtifactEventType type, EventDB.EventTransaction trans) {
|
||||||
try {
|
try {
|
||||||
//get all the blackboard artifacts corresponding to the given event sub_type
|
//get all the blackboard artifacts corresponding to the given event sub_type
|
||||||
|
@ -43,7 +43,7 @@ public final class OpenHelpAction implements ActionListener {
|
|||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
try {
|
try {
|
||||||
Desktop.getDesktop().browse(URI.create("http://sleuthkit.org/autopsy/docs/user-docs/"));
|
Desktop.getDesktop().browse(URI.create("http://sleuthkit.org/autopsy/docs/user-docs/4.0/image_gallery_page.html"));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
Exceptions.printStackTrace(ex);
|
Exceptions.printStackTrace(ex);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2011 Basis Technology Corp.
|
* Copyright 2011-2015 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");
|
||||||
@ -25,27 +25,14 @@ import java.io.Reader;
|
|||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.Future;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.concurrent.TimeoutException;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.apache.solr.client.solrj.SolrRequest.METHOD;
|
|
||||||
import org.apache.solr.client.solrj.SolrServerException;
|
import org.apache.solr.client.solrj.SolrServerException;
|
||||||
import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
|
|
||||||
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
|
|
||||||
import org.apache.solr.common.SolrException;
|
|
||||||
import org.apache.solr.common.SolrException.ErrorCode;
|
|
||||||
import org.apache.solr.common.util.ContentStream;
|
import org.apache.solr.common.util.ContentStream;
|
||||||
import org.apache.solr.common.SolrInputDocument;
|
import org.apache.solr.common.SolrInputDocument;
|
||||||
import org.openide.util.Exceptions;
|
import org.openide.util.Exceptions;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
import org.sleuthkit.autopsy.datamodel.ContentUtils;
|
||||||
import org.sleuthkit.autopsy.keywordsearch.Server.SolrServerNoPortException;
|
|
||||||
import org.sleuthkit.datamodel.AbstractContent;
|
import org.sleuthkit.datamodel.AbstractContent;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
@ -56,7 +43,6 @@ import org.sleuthkit.datamodel.File;
|
|||||||
import org.sleuthkit.datamodel.LayoutFile;
|
import org.sleuthkit.datamodel.LayoutFile;
|
||||||
import org.sleuthkit.datamodel.LocalFile;
|
import org.sleuthkit.datamodel.LocalFile;
|
||||||
import org.sleuthkit.datamodel.ReadContentInputStream;
|
import org.sleuthkit.datamodel.ReadContentInputStream;
|
||||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -66,7 +52,6 @@ class Ingester {
|
|||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(Ingester.class.getName());
|
private static final Logger logger = Logger.getLogger(Ingester.class.getName());
|
||||||
private volatile boolean uncommitedIngests = false;
|
private volatile boolean uncommitedIngests = false;
|
||||||
private final ExecutorService upRequestExecutor = Executors.newSingleThreadExecutor();
|
|
||||||
private final Server solrServer = KeywordSearch.getServer();
|
private final Server solrServer = KeywordSearch.getServer();
|
||||||
private final GetContentFieldsV getContentFieldsV = new GetContentFieldsV();
|
private final GetContentFieldsV getContentFieldsV = new GetContentFieldsV();
|
||||||
private static Ingester instance;
|
private static Ingester instance;
|
||||||
@ -193,7 +178,7 @@ class Ingester {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Map<String, String> defaultVisit(Content cntnt) {
|
protected Map<String, String> defaultVisit(Content cntnt) {
|
||||||
return new HashMap<String, String>();
|
return new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -239,14 +224,13 @@ class Ingester {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Map<String, String> getCommonFields(AbstractFile af) {
|
private Map<String, String> getCommonFields(AbstractFile af) {
|
||||||
Map<String, String> params = new HashMap<String, String>();
|
Map<String, String> params = new HashMap<>();
|
||||||
params.put(Server.Schema.ID.toString(), Long.toString(af.getId()));
|
params.put(Server.Schema.ID.toString(), Long.toString(af.getId()));
|
||||||
long dataSourceId = -1;
|
|
||||||
try {
|
try {
|
||||||
dataSourceId = af.getDataSource().getId();
|
long dataSourceId = af.getDataSource().getId();
|
||||||
params.put(Server.Schema.IMAGE_ID.toString(), Long.toString(dataSourceId));
|
params.put(Server.Schema.IMAGE_ID.toString(), Long.toString(dataSourceId));
|
||||||
} catch (TskCoreException ex) {
|
} catch (TskCoreException ex) {
|
||||||
logger.log(Level.SEVERE, "Could not get data source id to properly index the file " + af.getId()); //NON-NLS
|
logger.log(Level.SEVERE, "Could not get data source id to properly index the file {0}", af.getId()); //NON-NLS
|
||||||
params.put(Server.Schema.IMAGE_ID.toString(), Long.toString(-1));
|
params.put(Server.Schema.IMAGE_ID.toString(), Long.toString(-1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,7 +275,7 @@ class Ingester {
|
|||||||
//using size here, but we are no longer ingesting entire files
|
//using size here, but we are no longer ingesting entire files
|
||||||
//size is normally a chunk size, up to 1MB
|
//size is normally a chunk size, up to 1MB
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
|
// TODO (RC): Use try with resources, adjust exception messages
|
||||||
InputStream is = null;
|
InputStream is = null;
|
||||||
int read = 0;
|
int read = 0;
|
||||||
try {
|
try {
|
||||||
@ -302,10 +286,12 @@ class Ingester {
|
|||||||
NbBundle.getMessage(this.getClass(), "Ingester.ingest.exception.cantReadStream.msg",
|
NbBundle.getMessage(this.getClass(), "Ingester.ingest.exception.cantReadStream.msg",
|
||||||
cs.getName()));
|
cs.getName()));
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
if (null != is) {
|
||||||
is.close();
|
try {
|
||||||
} catch (IOException ex) {
|
is.close();
|
||||||
logger.log(Level.WARNING, "Could not close input stream after reading content, " + cs.getName(), ex); //NON-NLS
|
} catch (IOException ex) {
|
||||||
|
logger.log(Level.WARNING, "Could not close input stream after reading content, " + cs.getName(), ex); //NON-NLS
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,78 +322,6 @@ class Ingester {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Delegate method actually performing the indexing work for objects
|
|
||||||
* implementing ContentStream
|
|
||||||
*
|
|
||||||
* @param cs ContentStream to ingest
|
|
||||||
* @param fields content specific fields
|
|
||||||
* @param size size of the content - used to determine the Solr timeout,
|
|
||||||
* not used to populate meta-data
|
|
||||||
*
|
|
||||||
* @throws IngesterException if there was an error processing a specific
|
|
||||||
* content, but the Solr server is probably fine.
|
|
||||||
*/
|
|
||||||
private void ingestExtract(ContentStream cs, Map<String, String> fields, final long size) throws IngesterException {
|
|
||||||
final ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract"); //NON-NLS
|
|
||||||
up.addContentStream(cs);
|
|
||||||
setFields(up, fields);
|
|
||||||
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
|
|
||||||
|
|
||||||
final String contentType = cs.getContentType();
|
|
||||||
if (contentType != null && !contentType.trim().equals("")) {
|
|
||||||
up.setParam("stream.contentType", contentType); //NON-NLS
|
|
||||||
}
|
|
||||||
|
|
||||||
//logger.log(Level.INFO, "Ingesting " + fields.get("file_name"));
|
|
||||||
up.setParam("commit", "false"); //NON-NLS
|
|
||||||
|
|
||||||
final Future<?> f = upRequestExecutor.submit(new UpRequestTask(up));
|
|
||||||
|
|
||||||
try {
|
|
||||||
f.get(getTimeout(size), TimeUnit.SECONDS);
|
|
||||||
} catch (TimeoutException te) {
|
|
||||||
logger.log(Level.WARNING, "Solr timeout encountered, trying to restart Solr"); //NON-NLS
|
|
||||||
//restart may be needed to recover from some error conditions
|
|
||||||
hardSolrRestart();
|
|
||||||
throw new IngesterException(
|
|
||||||
NbBundle.getMessage(this.getClass(), "Ingester.ingestExtract.exception.solrTimeout.msg",
|
|
||||||
fields.get("id"), fields.get("file_name"))); //NON-NLS
|
|
||||||
} catch (Exception e) {
|
|
||||||
throw new IngesterException(
|
|
||||||
NbBundle.getMessage(this.getClass(), "Ingester.ingestExtract.exception.probPostToSolr.msg",
|
|
||||||
fields.get("id"), fields.get("file_name")), e); //NON-NLS
|
|
||||||
}
|
|
||||||
uncommitedIngests = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* attempt to restart Solr and recover from its internal error
|
|
||||||
*/
|
|
||||||
private void hardSolrRestart() {
|
|
||||||
try {
|
|
||||||
solrServer.closeCore();
|
|
||||||
} catch (KeywordSearchModuleException ex) {
|
|
||||||
logger.log(Level.WARNING, "Cannot close core", ex); //NON-NLS
|
|
||||||
}
|
|
||||||
|
|
||||||
solrServer.stop();
|
|
||||||
|
|
||||||
try {
|
|
||||||
solrServer.start();
|
|
||||||
} catch (KeywordSearchModuleException ex) {
|
|
||||||
logger.log(Level.WARNING, "Cannot start", ex); //NON-NLS
|
|
||||||
} catch (SolrServerNoPortException ex) {
|
|
||||||
logger.log(Level.WARNING, "Cannot start server with this port", ex); //NON-NLS
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
solrServer.openCore();
|
|
||||||
} catch (KeywordSearchModuleException ex) {
|
|
||||||
logger.log(Level.WARNING, "Cannot open core", ex); //NON-NLS
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* return timeout that should be used to index the content
|
* return timeout that should be used to index the content
|
||||||
*
|
*
|
||||||
@ -431,51 +345,6 @@ class Ingester {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private class UpRequestTask implements Runnable {
|
|
||||||
|
|
||||||
ContentStreamUpdateRequest up;
|
|
||||||
|
|
||||||
UpRequestTask(ContentStreamUpdateRequest up) {
|
|
||||||
this.up = up;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
up.setMethod(METHOD.POST);
|
|
||||||
solrServer.request(up);
|
|
||||||
} catch (NoOpenCoreException ex) {
|
|
||||||
throw new RuntimeException(
|
|
||||||
NbBundle.getMessage(this.getClass(), "Ingester.UpReqestTask.run.exception.sorlNotAvail.msg"), ex);
|
|
||||||
} catch (IllegalStateException ex) {
|
|
||||||
// problems with content
|
|
||||||
throw new RuntimeException(
|
|
||||||
NbBundle.getMessage(this.getClass(), "Ingester.UpRequestTask.run.exception.probReadFile.msg"), ex);
|
|
||||||
} catch (SolrServerException ex) {
|
|
||||||
// If there's a problem talking to Solr, something is fundamentally
|
|
||||||
// wrong with ingest
|
|
||||||
throw new RuntimeException(
|
|
||||||
NbBundle.getMessage(this.getClass(), "Ingester.UpRequestTask.run.exception.solrProb.msg"), ex);
|
|
||||||
} catch (SolrException ex) {
|
|
||||||
// Tika problems result in an unchecked SolrException
|
|
||||||
ErrorCode ec = ErrorCode.getErrorCode(ex.code());
|
|
||||||
|
|
||||||
// When Tika has problems with a document, it throws a server error
|
|
||||||
// but it's okay to continue with other documents
|
|
||||||
if (ec.equals(ErrorCode.SERVER_ERROR)) {
|
|
||||||
throw new RuntimeException(NbBundle.getMessage(this.getClass(),
|
|
||||||
"Ingester.UpRequestTask.run.exception.probPostToSolr.msg",
|
|
||||||
ec),
|
|
||||||
ex);
|
|
||||||
} else {
|
|
||||||
// shouldn't get any other error codes
|
|
||||||
throw ex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tells Solr to commit (necessary before ingested files will appear in
|
* Tells Solr to commit (necessary before ingested files will appear in
|
||||||
* searches)
|
* searches)
|
||||||
@ -484,22 +353,8 @@ class Ingester {
|
|||||||
try {
|
try {
|
||||||
solrServer.commit();
|
solrServer.commit();
|
||||||
uncommitedIngests = false;
|
uncommitedIngests = false;
|
||||||
} catch (NoOpenCoreException ex) {
|
} catch (NoOpenCoreException | SolrServerException ex) {
|
||||||
logger.log(Level.WARNING, "Error commiting index", ex); //NON-NLS
|
logger.log(Level.WARNING, "Error commiting index", ex); //NON-NLS
|
||||||
} catch (SolrServerException ex) {
|
|
||||||
logger.log(Level.WARNING, "Error commiting index", ex); //NON-NLS
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper to set document fields
|
|
||||||
*
|
|
||||||
* @param up request with document
|
|
||||||
* @param fields map of field-names->values
|
|
||||||
*/
|
|
||||||
private static void setFields(ContentStreamUpdateRequest up, Map<String, String> fields) {
|
|
||||||
for (Entry<String, String> field : fields.entrySet()) {
|
|
||||||
up.setParam("literal." + field.getKey(), field.getValue()); //NON-NLS
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -595,6 +450,8 @@ class Ingester {
|
|||||||
*/
|
*/
|
||||||
static class IngesterException extends Exception {
|
static class IngesterException extends Exception {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
IngesterException(String message, Throwable ex) {
|
IngesterException(String message, Throwable ex) {
|
||||||
super(message, ex);
|
super(message, ex);
|
||||||
}
|
}
|
||||||
|
@ -182,7 +182,8 @@ public class Server {
|
|||||||
// This could be a local or remote server.
|
// This could be a local or remote server.
|
||||||
private HttpSolrServer currentSolrServer;
|
private HttpSolrServer currentSolrServer;
|
||||||
|
|
||||||
private final String instanceDir;
|
private Core currentCore;
|
||||||
|
|
||||||
private final File solrFolder;
|
private final File solrFolder;
|
||||||
private final ServerAction serverAction;
|
private final ServerAction serverAction;
|
||||||
private InputStreamPrinterThread errorRedirectThread;
|
private InputStreamPrinterThread errorRedirectThread;
|
||||||
@ -197,9 +198,8 @@ public class Server {
|
|||||||
this.localSolrServer = new HttpSolrServer("http://localhost:" + currentSolrServerPort + "/solr"); //NON-NLS
|
this.localSolrServer = new HttpSolrServer("http://localhost:" + currentSolrServerPort + "/solr"); //NON-NLS
|
||||||
serverAction = new ServerAction();
|
serverAction = new ServerAction();
|
||||||
solrFolder = InstalledFileLocator.getDefault().locate("solr", Server.class.getPackage().getName(), false); //NON-NLS
|
solrFolder = InstalledFileLocator.getDefault().locate("solr", Server.class.getPackage().getName(), false); //NON-NLS
|
||||||
instanceDir = solrFolder.getAbsolutePath() + File.separator + "solr"; //NON-NLS
|
|
||||||
javaPath = PlatformUtil.getJavaPath();
|
javaPath = PlatformUtil.getJavaPath();
|
||||||
|
|
||||||
logger.log(Level.INFO, "Created Server instance"); //NON-NLS
|
logger.log(Level.INFO, "Created Server instance"); //NON-NLS
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,7 +295,7 @@ public class Server {
|
|||||||
BufferedReader br = new BufferedReader(isr);
|
BufferedReader br = new BufferedReader(isr);
|
||||||
OutputStreamWriter osw = new OutputStreamWriter(out, PlatformUtil.getDefaultPlatformCharset());
|
OutputStreamWriter osw = new OutputStreamWriter(out, PlatformUtil.getDefaultPlatformCharset());
|
||||||
BufferedWriter bw = new BufferedWriter(osw);) {
|
BufferedWriter bw = new BufferedWriter(osw);) {
|
||||||
|
|
||||||
String line = null;
|
String line = null;
|
||||||
while (doRun && (line = br.readLine()) != null) {
|
while (doRun && (line = br.readLine()) != null) {
|
||||||
bw.write(line);
|
bw.write(line);
|
||||||
@ -586,11 +586,10 @@ public class Server {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
|
/*
|
||||||
* ** Convenience methods for use while we only open one case at a time ***
|
* ** Convenience methods for use while we only open one case at a time ***
|
||||||
*/
|
*/
|
||||||
private volatile Core currentCore = null;
|
|
||||||
|
|
||||||
synchronized void openCore() throws KeywordSearchModuleException {
|
synchronized void openCore() throws KeywordSearchModuleException {
|
||||||
if (currentCore != null) {
|
if (currentCore != null) {
|
||||||
throw new KeywordSearchModuleException(
|
throw new KeywordSearchModuleException(
|
||||||
@ -1251,6 +1250,7 @@ public class Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ServerAction extends AbstractAction {
|
class ServerAction extends AbstractAction {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1263,6 +1263,7 @@ public class Server {
|
|||||||
* Exception thrown if solr port not available
|
* Exception thrown if solr port not available
|
||||||
*/
|
*/
|
||||||
class SolrServerNoPortException extends SocketException {
|
class SolrServerNoPortException extends SocketException {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#Updated by build script
|
#Updated by build script
|
||||||
#Tue, 13 Oct 2015 17:00:33 -0400
|
#Mon, 26 Oct 2015 09:54:05 -0400
|
||||||
LBL_splash_window_title=Starting Autopsy
|
LBL_splash_window_title=Starting Autopsy
|
||||||
SPLASH_HEIGHT=314
|
SPLASH_HEIGHT=314
|
||||||
SPLASH_WIDTH=538
|
SPLASH_WIDTH=538
|
||||||
@ -8,4 +8,4 @@ SplashRunningTextBounds=0,289,538,18
|
|||||||
SplashRunningTextColor=0x0
|
SplashRunningTextColor=0x0
|
||||||
SplashRunningTextFontSize=19
|
SplashRunningTextFontSize=19
|
||||||
|
|
||||||
currentVersion=Autopsy 3.1.3
|
currentVersion=Autopsy 4.0.0
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#Updated by build script
|
#Updated by build script
|
||||||
#Tue, 13 Oct 2015 17:00:33 -0400
|
#Mon, 26 Oct 2015 09:54:05 -0400
|
||||||
CTL_MainWindow_Title=Autopsy 3.1.3
|
CTL_MainWindow_Title=Autopsy 4.0.0
|
||||||
CTL_MainWindow_Title_No_Project=Autopsy 3.1.3
|
CTL_MainWindow_Title_No_Project=Autopsy 4.0.0
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
/*! \page android_page Android Analyzer
|
|
||||||
Overview
|
|
||||||
========
|
|
||||||
|
|
||||||
The Android Analyzer module allows you to analyze SQLite and other files from an Android device. It should work on Physical dumps from most Android devices (note that we do not provide an acquisition method). Autopsy will not support older Android devices that do not have a volume system. These devices will often have a single physical image file for them and there is no information in the image that describes the layout of the file systems. Autopsy will therefore not be able to detect what it is.
|
|
||||||
|
|
||||||
Simply add your physical images or file system dumps as data sources and enable the Android Analyzer module.
|
|
||||||
|
|
||||||
NOTE: This module is not exhaustive with its support for Android. It was created as a starting point for others to contribute plug-ins for 3rd party apps. See the Developer docs (http://sleuthkit.org/autopsy/docs/api-docs/3.1/mod_mobile_page.html) for information on writing modules.
|
|
||||||
|
|
||||||
|
|
||||||
Analysis
|
|
||||||
========
|
|
||||||
The module should be able to extract the following:
|
|
||||||
|
|
||||||
- Text messages / SMS / MMS
|
|
||||||
- Call Logs
|
|
||||||
- Contacts
|
|
||||||
- Tango Messages
|
|
||||||
- Words with Friends Messages
|
|
||||||
- GPS from the browser and Google Maps
|
|
||||||
- GPS from cache.wifi and cache.cell files
|
|
||||||
|
|
||||||
NOTE: These database formats vary by version of OS and different vendors can place the databaes in different places. Autopsy may not support all versions and vendors.
|
|
||||||
|
|
||||||
*/
|
|
@ -18,7 +18,7 @@ The module should be able to extract the following:
|
|||||||
|
|
||||||
NOTE: These database formats vary by version of OS and different vendors can place the databases in different places. Autopsy may not support all versions and vendors.
|
NOTE: These database formats vary by version of OS and different vendors can place the databases in different places. Autopsy may not support all versions and vendors.
|
||||||
|
|
||||||
NOTE: This module is not exhaustive with its support for Android. It was created as a starting point for others to contribute plug-ins for 3rd party apps. See the <a href="http://sleuthkit.org/autopsy/docs/api-docs/3.1/mod_mobile_page.html">Developer docs</a> for information on writing modules.
|
NOTE: This module is not exhaustive with its support for Android. It was created as a starting point for others to contribute plug-ins for 3rd party apps. See the <a href="http://sleuthkit.org/autopsy/docs/api-docs/4.0/mod_mobile_page.html">Developer docs</a> for information on writing modules.
|
||||||
|
|
||||||
|
|
||||||
Configuration
|
Configuration
|
||||||
|
BIN
docs/doxygen-user/images/case-newcase.PNG
Executable file
After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 30 KiB |
BIN
docs/doxygen-user/images/credentialManager.PNG
Executable file
After Width: | Height: | Size: 98 KiB |
BIN
docs/doxygen-user/images/credentialsWithDomain.PNG
Executable file
After Width: | Height: | Size: 34 KiB |
BIN
docs/doxygen-user/images/getHostname.PNG
Executable file
After Width: | Height: | Size: 9.3 KiB |
BIN
docs/doxygen-user/images/hostname.PNG
Executable file
After Width: | Height: | Size: 38 KiB |
BIN
docs/doxygen-user/images/toConnect.PNG
Executable file
After Width: | Height: | Size: 57 KiB |
BIN
docs/doxygen-user/images/urlInAddressbar.PNG
Executable file
After Width: | Height: | Size: 78 KiB |
@ -4,7 +4,7 @@
|
|||||||
Overview
|
Overview
|
||||||
-----
|
-----
|
||||||
|
|
||||||
This is the User's Guide for the <a href="http://www.sleuthkit.org/autopsy/">open source Autopsy platform</a>. Autopsy allows you to examine a hard drive or mobile device and recover evidence from it. This guide should help you with using Autopsy. The <a href="http://www.sleuthkit.org/autopsy/docs/api-docs/3.1/"> developer's guide</a> will help you develop your own Autopsy modules.
|
This is the User's Guide for the <a href="http://www.sleuthkit.org/autopsy/">open source Autopsy platform</a>. Autopsy allows you to examine a hard drive or mobile device and recover evidence from it. This guide should help you with using Autopsy. The <a href="http://www.sleuthkit.org/autopsy/docs/api-docs/4.0/"> developer's guide</a> will help you develop your own Autopsy modules.
|
||||||
|
|
||||||
Autopsy 4 (and 3) are a complete rewrite from Autopsy 2, and none of this document is relevant to Autopsy 2.
|
Autopsy 4 (and 3) are a complete rewrite from Autopsy 2, and none of this document is relevant to Autopsy 2.
|
||||||
|
|
||||||
@ -51,6 +51,7 @@ The following topics are available here:
|
|||||||
- \subpage install_activemq
|
- \subpage install_activemq
|
||||||
- \subpage install_postgresql
|
- \subpage install_postgresql
|
||||||
- \subpage install_solr
|
- \subpage install_solr
|
||||||
|
- \subpage windows_authentication
|
||||||
- \subpage multiuser_page
|
- \subpage multiuser_page
|
||||||
|
|
||||||
If the topic you need is not listed, refer to the <a href="http://wiki.sleuthkit.org/index.php?title=Autopsy_User%27s_Guide">Autopsy Wiki</a> or join the <a href="https://lists.sourceforge.net/lists/listinfo/sleuthkit-users">SleuthKit User List</a> at SourceForge.
|
If the topic you need is not listed, refer to the <a href="http://wiki.sleuthkit.org/index.php?title=Autopsy_User%27s_Guide">Autopsy Wiki</a> or join the <a href="https://lists.sourceforge.net/lists/listinfo/sleuthkit-users">SleuthKit User List</a> at SourceForge.
|
||||||
|
57
docs/doxygen-user/windows_authentication.dox
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
/*! \page windows_authentication Shared Drive Authentication
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
If your shared drive is a Windows-hosted shared drive, you will likely need to provide authentication for each machine that connects to the shared drive. This guide only covers Windows-hosted shared drives.
|
||||||
|
|
||||||
|
To authenticate with Windows and allow access to a shared drive, you will need:
|
||||||
|
- A username
|
||||||
|
- A password
|
||||||
|
- The domain name (if the machine hosting the shared drive is on a domain)
|
||||||
|
- The IP address of the machine hosting the shared drive
|
||||||
|
- The hostname of the machine hosting the shared drive
|
||||||
|
|
||||||
|
Using Windows Explorer, in the address bar enter two slashes "\\" followed by the storage machine's IP address and press _Enter_. An example is shown below with the text "\\10.10.152.211" entered.
|
||||||
|
<br><br>
|
||||||
|
\image html urlInAddressbar.PNG
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
You will see a dialog similar to the following, asking for your credentials.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
\image html credentialsWithDomain.PNG
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
If you have a domain name, add it in the top box before the "\". Follow the slash with your username. If you have no domain name, just use your username with no slashes. Add your password in the next box down and place a check mark in <i>"Remember my credentials"</i>, then click <i>"OK"</i>.
|
||||||
|
|
||||||
|
Next, we will do the same steps over again, using the hostname of the machine. This is necessary to authenticate with both IP address access and hostname access. If you do not know the hostname, you may find it by pinging the IP address with the <i>"-a"</i> flag set. It will look something like the screenshot below, where we find the hostname associated with the IP address <i>10.10.142.56</i> is <i>win-kmort-4863.basistech.net</i>.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
\image html getHostname.PNG
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
In Windows Explorer, use this hostname preceded by two slashes, "\\", in the address bar as shown below and press enter.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
\image html hostname.PNG
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
You will see a screen similar to the screenshot below. Do the same steps with domain, username, and password as you did above.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
\image html toConnect.PNG
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
Do these steps for <b>each machine</b> that will be accessing the shared drive.
|
||||||
|
<br><br><br>
|
||||||
|
<br><br><br>
|
||||||
|
- - - - -
|
||||||
|
Note that if you are familiar with the Windows Credential Manager, you may use this tool to manage credentials. These credentials can also be managed from the command line using the "net use" command. To get to Credential Manager click on to <i>Start</i>, and typing <i>"Credential Manager"</i> and pressing enter. A screenshot of the Windows Credential Manager with some domain names intentionally blanked out is shown below.
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
\image html credentialManager.PNG
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
Also note that authentication and access can be an issue when passwords change. When passwords change, for every computer using a credential that is no longer valid, you will need to redo the above steps. One indicator this is a problem is seeing the text: <i>"The system detected a possible attempt to compromise security. Please ensure that you can contact the server that authenticated you."</i> Do not forget to re-authenticate with both the IP address and the hostname.
|
||||||
|
<br><br><br>
|
||||||
|
|
||||||
|
*/
|
@ -18,7 +18,7 @@ If you want to write modules, then these pages are for you:
|
|||||||
- \subpage mod_content_page
|
- \subpage mod_content_page
|
||||||
- \subpage mod_result_page
|
- \subpage mod_result_page
|
||||||
- \subpage adv_dev_page
|
- \subpage adv_dev_page
|
||||||
- \subpage query_database_page
|
- <a class="el" href="http://sleuthkit.org/sleuthkit/docs/jni-docs/4.3/query_database_page.html">Query the Database</A>
|
||||||
- \subpage mod_mobile_page
|
- \subpage mod_mobile_page
|
||||||
|
|
||||||
These pages are more detailed if you want to modify Autopsy code instead of writing add-on modules.
|
These pages are more detailed if you want to modify Autopsy code instead of writing add-on modules.
|
||||||
|
@ -43,7 +43,7 @@ ingest modules.
|
|||||||
|
|
||||||
\section ingest_modules_lifecycle Ingest Module Life Cycle
|
\section ingest_modules_lifecycle Ingest Module Life Cycle
|
||||||
|
|
||||||
Before we dive into the details of creating a module, it is important to understand the life cycle of the module. Note that this life cycle is much different for Autopsy 3.1 modules compared to Autopsy 3.0 modules. This section only talks about 3.1 modules.
|
Before we dive into the details of creating a module, it is important to understand the life cycle of the module. Note that this life cycle is much different for Autopsy 3.1 and newer modules compared to Autopsy 3.0 modules. This section only talks about 3.1 and newer modules.
|
||||||
|
|
||||||
You will need to implement at least two classes to make an ingest module:
|
You will need to implement at least two classes to make an ingest module:
|
||||||
-# A factory class that will be created when Autopsy starts and will provide configuration panels to Autopsy and will create instances of your ingest module.
|
-# A factory class that will be created when Autopsy starts and will provide configuration panels to Autopsy and will create instances of your ingest module.
|
||||||
@ -319,7 +319,7 @@ databases from the hash databases manager.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
\section ingest_modules_api_migration Migrating 3.0 Java Ingest Modules to the 3.1 API
|
\section ingest_modules_api_migration Migrating 3.0 Java Ingest Modules to the 3.1 and newer API
|
||||||
|
|
||||||
This section is a guide for module developers who wrote modules for the 3.0 API. These API changes occurred so that
|
This section is a guide for module developers who wrote modules for the 3.0 API. These API changes occurred so that
|
||||||
we could make parallel pipelines of the file-level ingest modules. This section assumes you've read the above description of the new API.
|
we could make parallel pipelines of the file-level ingest modules. This section assumes you've read the above description of the new API.
|
||||||
|
@ -133,5 +133,4 @@ disabled.modules=\
|
|||||||
org.netbeans.modules.whitelist,\
|
org.netbeans.modules.whitelist,\
|
||||||
org.netbeans.modules.xml.jaxb,\
|
org.netbeans.modules.xml.jaxb,\
|
||||||
org.netbeans.modules.xml.tools.java,\
|
org.netbeans.modules.xml.tools.java,\
|
||||||
org.netbeans.spi.java.hints
|
org.netbeans.spi.java.hints
|
||||||
|
|
@ -4,7 +4,7 @@ app.title=Autopsy
|
|||||||
### lowercase version of above
|
### lowercase version of above
|
||||||
app.name=${branding.token}
|
app.name=${branding.token}
|
||||||
### if left unset, version will default to today's date
|
### if left unset, version will default to today's date
|
||||||
app.version=3.1.3
|
app.version=4.0.0
|
||||||
### Build type isn't used at this point, but it may be useful
|
### Build type isn't used at this point, but it may be useful
|
||||||
### Must be one of: DEVELOPMENT, RELEASE
|
### Must be one of: DEVELOPMENT, RELEASE
|
||||||
#build.type=RELEASE
|
#build.type=RELEASE
|
||||||
|