Merge remote-tracking branch 'origin/scalpelCarver' into scalpelCarver

This commit is contained in:
Kay Bassi 2014-03-12 16:01:03 -07:00
commit d53df5e452
244 changed files with 4986 additions and 1642 deletions

View File

@ -111,15 +111,18 @@ public final class AddImageAction extends CallableSystemAction implements Presen
final IngestConfigurator ingestConfig = Lookup.getDefault().lookup(IngestConfigurator.class);
if (null != ingestConfig && ingestConfig.isIngestRunning()) {
final String msg = "<html>Ingest is ongoing on another data source. Adding a new source now might slow down the current ingest.<br />Do you want to proceed and add a new data source now?</html>";
if (JOptionPane.showConfirmDialog(null, msg, "Ingest in progress", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.NO_OPTION) {
final String msg = NbBundle.getMessage(this.getClass(), "AddImageAction.ingestConfig.ongoingIngest.msg");
if (JOptionPane.showConfirmDialog(null, msg,
NbBundle.getMessage(this.getClass(),
"AddImageAction.ingestConfig.ongoingIngest.title"),
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.NO_OPTION) {
return;
}
}
iterator = new AddImageWizardIterator(this);
wizardDescriptor = new WizardDescriptor(iterator);
wizardDescriptor.setTitle("Add Data Source");
wizardDescriptor.setTitle(NbBundle.getMessage(this.getClass(), "AddImageAction.wizard.title"));
wizardDescriptor.putProperty(NAME, e);
if (dialog != null) {

View File

@ -24,6 +24,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor;
import org.sleuthkit.autopsy.coreutils.Logger;
@ -97,7 +99,9 @@ import org.sleuthkit.datamodel.TskException;
String currDir = process.currentDirectory();
if (currDir != null) {
if (!currDir.isEmpty() ) {
progressMonitor.setProgressText("Adding: " + currDir);
progressMonitor.setProgressText(
NbBundle.getMessage(this.getClass(), "AddImageTask.run.progress.adding",
currDir));
}
}
// this sleep here prevents the UI from locking up
@ -298,7 +302,7 @@ import org.sleuthkit.datamodel.TskException;
logger.log(Level.INFO, "interrupt() add image process");
addImageProcess.stop(); //it might take time to truly stop processing and writing to db
} catch (TskCoreException ex) {
throw new Exception("Error stopping add-image process.", ex);
throw new Exception(NbBundle.getMessage(this.getClass(), "AddImageTask.interrupt.exception.msg"), ex);
}
}

View File

@ -29,6 +29,7 @@ import javax.swing.event.ChangeListener;
import org.openide.WizardDescriptor;
import org.openide.util.HelpCtx;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor;
/**
@ -136,7 +137,8 @@ class AddImageWizardAddingProgressPanel implements WizardDescriptor.FinishablePa
public boolean isValid() {
// set the focus to the next button of the wizard dialog if it's enabled
if (imgAdded) {
Lookup.getDefault().lookup(AddImageAction.class).requestFocusButton("Next >");
Lookup.getDefault().lookup(AddImageAction.class).requestFocusButton(
NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressPanel.isValid.focusNext"));
}
return imgAdded;
@ -147,7 +149,8 @@ class AddImageWizardAddingProgressPanel implements WizardDescriptor.FinishablePa
*/
void setStateStarted() {
component.getProgressBar().setIndeterminate(true);
component.setProgressBarTextAndColor("*This process may take some time for large data sources.", 0, Color.black);
component.setProgressBarTextAndColor(
NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressPanel.stateStarted.progressBarText"), 0, Color.black);
}
/**

View File

@ -23,6 +23,7 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JProgressBar;
import org.openide.WizardDescriptor;
import org.openide.util.NbBundle;
/**
* visual component to display progress bar and status updates while adding an
@ -30,7 +31,8 @@ import org.openide.WizardDescriptor;
*/
class AddImageWizardAddingProgressVisual extends javax.swing.JPanel {
private static final String ADDING_DATA_SOURCE_COMPLETE = "Adding Data Source - Complete";
private static final String ADDING_DATA_SOURCE_COMPLETE = NbBundle
.getMessage(AddImageWizardAddingProgressVisual.class, "AddImageWizardAddingProgressVisual.addingDsComplete.text");
private String errorLog = "";
private boolean hasCriticalErrors = false;
@ -42,7 +44,7 @@ import org.openide.WizardDescriptor;
*/
@Override
public String getName() {
return "Add Data Source";
return NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressVisual.getName.text");
}
/**
@ -115,10 +117,12 @@ import org.openide.WizardDescriptor;
//progressBar.setValue(100); //always invoked when process completed
if (hasCriticalErrors) {
statusLabel.setForeground(Color.RED);
statusLabel.setText("*Failed to add data source (critical errors encountered). Click below to view the log.");
statusLabel.setText(
NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressVisual.showErrors.critText"));
} else {
statusLabel.setForeground(Color.BLACK);
statusLabel.setText("*Data Source added (non-critical errors encountered). Click below to view the log.");
statusLabel.setText(
NbBundle.getMessage(this.getClass(), "AddImageWizardAddingProgressVisual.showErrors.nonCritText"));
}
errorLog += errors + "\n";

View File

@ -25,6 +25,8 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
@ -106,7 +108,8 @@ class AddImageWizardChooseDataSourcePanel implements WizardDescriptor.Panel<Wiza
void moveFocusToNext() {
// set the focus to the next button of the wizard dialog if it's enabled
if (isNextEnable) {
Lookup.getDefault().lookup(AddImageAction.class).requestFocusButton("Next >");
Lookup.getDefault().lookup(AddImageAction.class).requestFocusButton(
NbBundle.getMessage(this.getClass(), "AddImageWizardChooseDataSourcePanel.moveFocusNext"));
}
}

View File

@ -37,6 +37,7 @@ import javax.swing.JSeparator;
import javax.swing.event.DocumentEvent;
import javax.swing.ListCellRenderer;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor;
@ -183,7 +184,7 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel {
*/
@Override
public String getName() {
return "Enter Data Source Information";
return NbBundle.getMessage(this.getClass(), "AddImageWizardChooseDataSourceVisual.getName.text");
}

View File

@ -19,6 +19,7 @@
package org.sleuthkit.autopsy.casemodule;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.ingest.IngestConfigurator;
import java.awt.Color;
import java.awt.Component;
@ -275,9 +276,11 @@ class AddImageWizardIngestConfigPanel implements WizardDescriptor.Panel<WizardDe
//check the result and display to user
if (result == DataSourceProcessorCallback.DataSourceProcessorResult.NO_ERRORS)
progressPanel.getComponent().setProgressBarTextAndColor("*Data Source added.", 100, Color.black);
progressPanel.getComponent().setProgressBarTextAndColor(
NbBundle.getMessage(this.getClass(), "AddImageWizardIngestConfigPanel.dsProcDone.noErrs.text"), 100, Color.black);
else
progressPanel.getComponent().setProgressBarTextAndColor("*Errors encountered in adding Data Source.", 100, Color.red);
progressPanel.getComponent().setProgressBarTextAndColor(
NbBundle.getMessage(this.getClass(), "AddImageWizardIngestConfigPanel.dsProcDone.errs.text"), 100, Color.red);
//if errors, display them on the progress panel

View File

@ -18,6 +18,8 @@
*/
package org.sleuthkit.autopsy.casemodule;
import org.openide.util.NbBundle;
import java.awt.BorderLayout;
import javax.swing.JPanel;
@ -55,7 +57,7 @@ import javax.swing.JPanel;
*/
@Override
public String getName() {
return "Configure Ingest Modules";
return NbBundle.getMessage(this.getClass(), "AddImageWizardIngestConfigVisual.getName.text");
}
/**

View File

@ -26,6 +26,7 @@ import java.util.NoSuchElementException;
import javax.swing.JComponent;
import javax.swing.event.ChangeListener;
import org.openide.WizardDescriptor;
import org.openide.util.NbBundle;
/**
* The iterator class for the "Add Image" wizard panel. This class is used to
@ -112,7 +113,8 @@ class AddImageWizardIterator implements WizardDescriptor.Iterator<WizardDescript
*/
@Override
public String name() {
return "Step " + Integer.toString(index + 1) + " of " + getPanels().size();
return NbBundle.getMessage(this.getClass(), "AddImageWizardIterator.stepXofN", Integer.toString(index + 1),
getPanels().size());
}
/**

View File

@ -23,6 +23,8 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor;
import org.sleuthkit.autopsy.coreutils.Logger;
@ -180,7 +182,9 @@ import org.sleuthkit.datamodel.TskCoreException;
@Override
public void fileAdded(final AbstractFile newFile) {
if (count++ % 10 == 0) {
progressMonitor.setProgressText("Adding: " + newFile.getParentPath() + "/" + newFile.getName());
progressMonitor.setProgressText(
NbBundle.getMessage(this.getClass(), "AddLocalFilesTask.localFileAdd.progress.text",
newFile.getParentPath(), newFile.getName()));
}
}
}

View File

@ -1,61 +1,11 @@
CTL_AddImage=Add Data Source...
CTL_AddImageButton=Add Data Source
CTL_CaseAction=Case
CTL_CaseCloseAct=Close Case
CTL_CaseNewAction=New Case...
#CTL_CaseOpenActionOld=Open Case(old)...
CTL_CasePropertiesAction=Case Properties...
CTL_CaseTopComponent=Case Window
#CTL_NewCaseAct=New Case(Old)...
CTL_OpenAction=Open Case...
CTL_RecentCases=Recent Cases
CTL_CaseDeleteAction=Delete Case
CTL_SaveCaseAction=Save Case
CTL_testAction=test
CTL_testTopComponent=test Window
HINT_CaseTopComponent=This is a Case window
HINT_testTopComponent=This is a test window
Menu/File/org-sleuthkit-autopsy-casemodule-CaseCloseAct.shadow=
Menu/File/org-sleuthkit-autopsy-casemodule-OpenAction.shadow=Open Case
OpenIDE-Module-Name=Case
CaseVisualPanel1.jLabel1.text=Name
CaseVisualPanel1.jLabel2.text=Image Path:
CaseVisualPanel1.jLabel3.text=Database Path:
CaseTopComponent.jLabel1.text=Name
CaseVisualPanel1.NameField.text=
CaseVisualPanel1.ImgPath.text=
CaseVisualPanel1.DbPath.text=
CaseTopComponent.jLabel2.text=Image Path
CaseTopComponent.jLabel3.text=DB Path
CaseVisualPanel1.ImgPathBrowserButton.text=Browse
CaseVisualPanel1.DbPathBrowserButton.text=Browse
NewCaseVisualPanel1.jLabel1.text=Name
NewCaseVisualPanel1.jTextField1.text=
NewCaseVisualPanel1.jLabel2.text=Image Type:
NewCaseVisualPanel1.jRadioButton1.text=Raw Single .img .dd
NewCaseVisualPanel1.jRadioButton2.text=Raw Split .001 .002 etc
NewCaseVisualPanel1.jRadioButton3.text=Encase .e01
NewCaseVisualPanel1.nameLabel.text_1=Name
NewCaseVisualPanel1.NameField.text_1=
NewCaseVisualPanel1.TypeLabel.text_1=Image Type:
NewCaseVisualPanel1.rawSingleRadio.text_1=Raw Single .img .dd
NewCaseVisualPanel1.rawSplitRadio.text_1=Raw Split .001 .002 etc
NewCaseVisualPanel1.encaseRadio.text_1=EnCase .e01
NewCaseVisualPanel2.jLabel1.text=Image Path:
NewCaseVisualPanel2.jLabel2.text=DataBase Path:
NewCaseVisualPanel2.descriptionText.text=variable text
NewCaseVisualPanel2.ImgBrowserButton.text=Browse
NewCaseVisualPanel2.DcBrowserButton.text=Browse
NewCaseVisualPanel2.ImagePathField.text=
NewCaseVisualPanel2.DbPathField.text=
CaseVisualPanel1.jLabel4.text=Image Type:
CaseVisualPanel1.rawSingle.text=Raw Single .img .dd
CaseVisualPanel1.rawSplit.text=Raw Split .001 .002 etc
CaseVisualPanel1.encase.text=EnCase .e01 .e02 etc
CaseVisualPanel1.multipleSelectLabel.text=Single Image: Multiple Select Disabled
CaseVisualPanel1.jLabel5.text=If a database has not already been loaded / created for the chosen image use this button: (could take a few minutes)
CaseVisualPanel1.ProgressLabel.text=
CaseVisualPanel1.createDbButton.text=Create Database
NewCaseVisualPanel1.jLabel1.text_1=Enter New Case Information:
NewCaseVisualPanel1.caseNameLabel.text_1=Case Name:
NewCaseVisualPanel1.caseDirLabel.text=Base Directory:
@ -77,8 +27,6 @@ CasePropertiesForm.OKButton.text=OK
CasePropertiesForm.deleteCaseButton.text=Delete Case
CueBannerPanel.autopsyLogo.text=
CueBannerPanel.createNewLabel.text=Create New Case
CueBannerPanel.autopsyLabel.text=Autopsy
CueBannerPanel.welcomeLabel.text=Welcome to
CueBannerPanel.openLabel.text=Open Existing Case
CueBannerPanel.closeButton.text=Close
CueBannerPanel.openRecentLabel.text=Open Recent Case
@ -87,13 +35,6 @@ CueBannerPanel.openCaseButton.text=
CueBannerPanel.openRecentButton.text=
OpenRecentCasePanel.cancelButton.text=Cancel
OpenRecentCasePanel.jLabel1.text=Recent Cases
NewJPanel.jLabel1.text=
NewJPanel.jLabel2.text=NSRL Index
NewJPanel.jLabel5.text=The NSRL index is used to idenify "known" files.
NewJPanel.jFormattedTextField1.text=jFormattedTextField1
NewJPanel.jButton1.text=Rename
NewJPanel.jLabel4.text=Database:
AddImageVisualPanel2.indexImageCheckBox.text=Index image for keyword search
CasePropertiesForm.caseNumberLabel.text=Case Number:
CasePropertiesForm.examinerLabel.text=Examiner:
CasePropertiesForm.caseNumberTextField.text=
@ -108,7 +49,6 @@ AddImageErrorsDialog.copyButton.toolTipText=Copy errors to clipboard
AddImageErrorsDialog.copyButton.text=Copy
AddImageErrorsDialog.closeButton.toolTipText=Close this window
AddImageErrorsDialog.closeButton.text=Close
AddImageVisualPanel4.jLabel2.text=You can add another image or click Finish to return to the case and view results.
OpenRecentCasePanel.openButton.text=Open
ImageFilePanel.pathLabel.text=Browse for an image file:
ImageFilePanel.browseButton.text=Browse
@ -118,8 +58,6 @@ MissingImageDialog.selectButton.text=Select Image
MissingImageDialog.titleLabel.text=Search for missing image
MissingImageDialog.cancelButton.text=Cancel
LocalDiskPanel.errorLabel.text=Error Label
AddImageDonePanel.statusLabel.text=File system has been added to the local database. Files are being analyzed.
AddImageDonePanel.crDbLabel.text=Adding Data Source - Complete
LocalFilesPanel.infoLabel.text=Add local files and folders:
LocalFilesPanel.selectButton.text=Add
LocalFilesPanel.localFileChooser.dialogTitle=Select Local Files or Folders
@ -152,3 +90,142 @@ LocalDiskPanel.descLabel.text=(faster results, although some data will not be se
MissingImageDialog.browseButton.text=Browse
MissingImageDialog.pathNameTextField.text=
AddImageWizardAddingProgressVisual.progressTextArea.border.title=Status
AddImageAction.wizard.title=Add Data Source
AddImageAction.ingestConfig.ongoingIngest.msg=<html>Ingest is ongoing on another data source. Adding a new source now might slow down the current ingest.<br />Do you want to proceed and add a new data source now?</html>
AddImageAction.ingestConfig.ongoingIngest.title=Ingest in progress
AddImageTask.run.progress.adding=Adding\: {0}
AddImageTask.interrupt.exception.msg=Error stopping add-image process.
AddImageWizardAddingProgressPanel.isValid.focusNext=Next >
AddImageWizardAddingProgressPanel.stateStarted.progressBarText=*This process may take some time for large data sources.
AddImageWizardAddingProgressVisual.addingDsComplete.text=Adding Data Source - Complete
AddImageWizardAddingProgressVisual.getName.text=Add Data Source
AddImageWizardAddingProgressVisual.showErrors.critText=*Failed to add data source (critical errors encountered). Click below to view the log.
AddImageWizardAddingProgressVisual.showErrors.nonCritText=*Data Source added (non-critical errors encountered). Click below to view the log.
AddImageWizardChooseDataSourcePanel.moveFocusNext=Next >
AddImageWizardChooseDataSourceVisual.getName.text=Enter Data Source Information
AddImageWizardIngestConfigPanel.dsProcDone.noErrs.text=*Data Source added.
AddImageWizardIngestConfigPanel.dsProcDone.errs.text=*Errors encountered in adding Data Source.
AddImageWizardIngestConfigVisual.getName.text=Configure Ingest Modules
AddImageWizardIterator.stepXofN=Step {0} of {1}
AddLocalFilesTask.localFileAdd.progress.text=Adding\: {0}/{1}
Case.getCurCase.exception.noneOpen=Can't get the current case; there is no case open\!
Case.moduleErr=Module Error
Case.changeCase.errListenToCaseUpdates.msg=A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.
Case.create.exception.msg=Error creating a case\: {0} in dir {1}
Case.open.exception.blankCase.msg=Case name is blank.
Case.open.msgDlg.updated.msg=Updated case database schema.\
A backup copy of the database with the following path has been made\:\
{0}
Case.open.msgDlg.updated.title=Case Database Schema Update
Case.open.exception.checkFile.msg=Check that you selected the correct case file (usually with {0} extension)
Case.open.exception.gen.msg=Error opening the case
Case.checkImgExist.confDlg.doesntExist.msg={0} has detected that one of the images associated with \
this case are missing. Would you like to search for them now?\
Previously, the image was located at\:\
{1}\
Please note that you will still be able to browse directories and generate reports\
if you choose No, but you will not be able to view file content or run the ingest process.
Case.checkImgExist.confDlg.doesntExist.title=Missing Image
Case.addImg.exception.msg=Error adding image to the case
Case.closeCase.exception.msg=Error while trying to close the current case.
Case.deleteCase.exception.msg=Error deleting the case dir\: {0}
Case.deleteCase.exception.msg2=Error deleting the case dir\: {0}
Case.updateCaseName.exception.msg=Error while trying to update the case name.
Case.updateExaminer.exception.msg=Error while trying to update the examiner.
Case.updateCaseNum.exception.msg=Error while trying to update the case number.
Case.exception.errGetRootObj=Error getting root objects.
Case.createCaseDir.exception.existNotDir=Cannot create case dir, already exists and is not a directory\: {0}
Case.createCaseDir.exception.existCantRW=Cannot create case dir, already exists and cannot read/write\: {0}
Case.createCaseDir.exception.cantCreate=Cannot create case dir\: {0}
Case.createCaseDir.exception.cantCreateCaseDir=Could not create case directory\: {0}
Case.createCaseDir.exception.cantCreateModDir=Could not create modules output directory\: {0}
Case.createCaseDir.exception.gen=Could not create case directory\: {0}
CaseDeleteAction.closeConfMsg.text=Are you sure want to close and delete this case? \
Case Name\: {0}\
Case Directory\: {1}
CaseDeleteAction.closeConfMsg.title=Warning\: Closing the Current Case
CaseDeleteAction.msgDlg.fileInUse.msg=The delete action can't be fully completed because the folder or file in it is open by another program.\
\
Close the folder and file and try again or you can delete the case manually.
CaseDeleteAction.msgDlg.fileInUse.title=Error\: Folder In Use
CaseDeleteAction.msgDlg.caseDelete.msg=Case {0} has been deleted.
CaseOpenAction.autFilter.title={0} Case File ( {1})
CaseOpenAction.msgDlg.fileNotExist.msg=Error\: File doesn't exist.
CaseOpenAction.msgDlg.fileNotExist.title=Error
CaseOpenAction.msgDlg.cantOpenCase.msg=Error\: could not open the case in folder {0}\: {1}
CaseOpenAction.msgDlg.cantOpenCase.title=Error
CasePropertiesAction.window.title=Case Properties
CasePropertiesForm.updateCaseName.msgDlg.empty.msg=The caseName cannot be empty.
CasePropertiesForm.updateCaseName.msgDlg.empty.title=Error
CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.msg=The Case Name cannot contain any of this following symbol\: \\ / \: * ? " < > |
CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.title=Error
CasePropertiesForm.updateCaseName.confMsg.msg=Are you sure want to update the case name from "{0}" to "{1}"?
CasePropertiesForm.updateCaseName.confMsg.title=Create directory
CueBannerPanel.title.text=Open Recent Case
GeneralFilter.rawImageDesc.text=Raw Images (*.img, *.dd, *.001, *.aa, *.raw, *.bin)
GeneralFilter.encaseImageDesc.text=Encase Images (*.e01)
ImageDSProcessor.dsType.text=Image File
ImageDSProcessor.allDesc.text=All Supported Types
ImageFilePanel.moduleErr=Module Error
ImageFilePanel.moduleErr.msg=A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.
LocalDiskDSProcessor.dsType.text=Local Disk
LocalDiskPanel.localDiskModel.loading.msg=Loading local disks...
LocalDiskPanel.moduleErr=Module Error
LocalDiskPanel.moduleErr.msg=A module caused an error listening to LocalDiskPanel updates. See log to determine which module. Some data could be incomplete.
LocalDiskPanel.errLabel.disksNotDetected.text=Disks were not detected. On some systems it requires admin privileges (or "Run as administrator").
LocalDiskPanel.errLabel.disksNotDetected.toolTipText=Disks were not detected. On some systems it requires admin privileges (or "Run as administrator").
LocalDiskPanel.errLabel.drivesNotDetected.text=Local drives were not detected. Auto-detection not supported on this OS or admin privileges required
LocalDiskPanel.errLabel.drivesNotDetected.toolTipText=Local drives were not detected. Auto-detection not supported on this OS or admin privileges required
LocalDiskPanel.errLabel.someDisksNotDetected.text=Some disks were not detected. On some systems it requires admin privileges (or "Run as administrator").
LocalDiskPanel.errLabel.someDisksNotDetected.toolTipText=Some disks were not detected. On some systems it requires admin privileges (or "Run as administrator").
LocalFilesDSProcessor.dsType=Logical Files
LocalFilesDSProcessor.toString.text=Logical Files
LocalFilesPanel.contentType.text=LOCAL
LocalFilesPanel.moduleErr=Module Error
LocalFilesPanel.moduleErr.msg=A module caused an error listening to LocalFilesPanel updates. See log to determine which module. Some data could be incomplete.
MissingImageDialog.allDesc.text=All Supported Types
MissingImageDialog.display.title=Search for Missing Image
MissingImageDialog.confDlg.noFileSel.msg=No image file has been selected, are you sure you\
would like to exit without finding the image.
MissingImageDialog.confDlg.noFileSel.title=Missing Image
NewCaseVisualPanel1.getName.text=Case Info
NewCaseVisualPanel1.caseDirBrowse.selectButton.text=Select
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.getName.text=New Case Wizard
NewCaseWizardPanel1.validate.errMsg.invalidSymbols=The Case Name cannot contain any of the following symbols\: \\ / \: * ? " < > |
NewCaseWizardPanel1.validate.errMsg.dirExists=Case directory ''{0}'' already exists.
NewCaseWizardPanel1.validate.confMsg.createDir.msg=The base directory ''{0}'' doesn''t exist. \
\
Do you want to create that directory?
NewCaseWizardPanel1.validate.confMsg.createDir.title=Create directory
NewCaseWizardPanel1.validate.errMsg.cantCreateParDir.msg=Error\: Couldn''t create case parent directory {0}
NewCaseWizardPanel1.validate.errMsg.prevCreateBaseDir.msg=Prevented from creating base directory {0}
NewCaseWizardPanel1.validate.errMsg.cantCreateDir=Error\: Couldn't create directory.
NewCaseWizardPanel1.validate.errMsg.invalidBaseDir.msg=ERROR\: The Base Directory that you entered is not valid.\
Please enter a valid Base Directory.
NewCaseWizardPanel1.createDir.errMsg.cantCreateDir.msg=ERROR\: Could not create the case directory. \
Please enter a valid Case Name and Directory.
NewCaseWizardPanel2.validate.errCreateCase.msg=Error creating case
OpenRecentCasePanel.openCase.msgDlg.caseDoesntExist.msg=Error\: Case {0} doesn''t exist.
OpenRecentCasePanel.openCase.msgDlg.err=Error
OpenRecentCasePanel.colName.caseName=Case Name
OpenRecentCasePanel.colName.path=Path
RecentCases.exception.caseIdxOutOfRange.msg=Recent case index {0} is out of range.
RecentCases.getName.text=Clear Recent Cases
RecentItems.openRecentCase.msgDlg.text=Error\: Case {0} doesn''t exist.
RecentItems.openRecentCase.msgDlg.err=Error
StartupWindow.title.text=Welcome
UpdateRecentCases.menuItem.clearRecentCases.text=Clear Recent Cases
UpdateRecentCases.menuItem.empty=-Empty-
XMLCaseManagement.create.exception.msg=Error setting up Case XML file,
XMLCaseManagement.writeFile.exception.noCase.msg=No set case to write management file for.
XMLCaseManagement.writeFile.exception.errWriteToFile.msg=Error writing to case file
XMLCaseManagement.open.exception.errReadXMLFile.msg=Error reading case XML file\: {0}
XMLCaseManagement.open.msgDlg.notAutCase.msg=Error\: This is not an Autopsy config file ("{0}").\
\
Detail\: \
Cannot open a non-Autopsy config file (at {1}).
XMLCaseManagement.open.msgDlg.notAutCase.title=Error

View File

@ -0,0 +1,90 @@
CTL_AddImage=データソース追加...
CTL_AddImageButton=データソース追加
CTL_CaseCloseAct=ケースを閉じる
CTL_CaseNewAction=New Case...
CTL_CaseOpenActionOld=Open Case(old)...
CTL_CasePropertiesAction=Case Properties...
CTL_OpenAction=Open Case...
CTL_CaseDeleteAction=ケース削除
OpenIDE-Module-Name=Case
NewCaseVisualPanel1.jLabel1.text_1=新規ケース情報を入力:
#Nick: Does this mean info on new case or new info on existing case?
NewCaseVisualPanel1.caseNameLabel.text_1=ケース名
NewCaseVisualPanel1.caseDirLabel.text=ベースディレクトリ:
NewCaseVisualPanel1.caseDirBrowseButton.text=閲覧
NewCaseVisualPanel1.caseNameTextField.text_1=
NewCaseVisualPanel1.jLabel2.text_1=ケースデータは下記のディレクトリに保存されます:
#Nick: is "case data" and "case information" the same?
NewCaseVisualPanel1.caseParentDirTextField.text=
NewCaseVisualPanel1.caseDirTextField.text_1=
CasePropertiesForm.caseDirLabel.text=ケースディレクトリ:
CasePropertiesForm.crDateLabel.text=作成日:
CasePropertiesForm.caseNameLabel.text=ケース名:
CasePropertiesForm.crDateTextField.text=
CasePropertiesForm.caseNameTextField.text=
CasePropertiesForm.updateCaseNameButton.text=アップデート
CasePropertiesForm.casePropLabel.text=ケース情報
CasePropertiesForm.genInfoLabel.text=一般情報
CasePropertiesForm.imgInfoLabel.text=画像情報
CasePropertiesForm.OKButton.text=OK
CasePropertiesForm.deleteCaseButton.text=ケース削除
CueBannerPanel.autopsyLogo.text=
CueBannerPanel.createNewLabel.text=新規ケース作成
CueBannerPanel.openLabel.text=既存ケースを開く
##オープンは日本語にするべき?
CueBannerPanel.closeButton.text=閉じる
CueBannerPanel.openRecentLabel.text=最近開いたケースを開く
CueBannerPanel.newCaseButton.text=
CueBannerPanel.openCaseButton.text=
CueBannerPanel.openRecentButton.text=
OpenRecentCasePanel.cancelButton.text=キャンセル
OpenRecentCasePanel.jLabel1.text=最近開いたファイル
CasePropertiesForm.caseNumberLabel.text=ケース番号:
CasePropertiesForm.examinerLabel.text=Examiner:
#審査官?カタカナ?
CasePropertiesForm.caseNumberTextField.text=
CasePropertiesForm.examinerTextField.text=
NewCaseVisualPanel2.caseNumberTextField.text=
NewCaseVisualPanel2.examinerLabel.text=Examiner:
#審査官?カタカナ?
NewCaseVisualPanel2.caseNumberLabel.text=ケース番号:
NewCaseVisualPanel2.examinerTextField.text=
NewCaseVisualPanel2.optionalLabel.text=オプショナル:ケース番号及び審査官を設定
#審査官?カタカナ?
AddImageErrorsDialog.title=イメージログ追加
AddImageErrorsDialog.copyButton.toolTipText=エラーをクリップボードにコピーします
AddImageErrorsDialog.copyButton.text=コピー
AddImageErrorsDialog.closeButton.toolTipText=このウィンドウを閉じます
AddImageErrorsDialog.closeButton.text=閉じる
OpenRecentCasePanel.openButton.text=開く
ImageFilePanel.pathLabel.text=画像ファイルを閲覧:
ImageFilePanel.browseButton.text=閲覧
ImageFilePanel.pathTextField.text=
LocalDiskPanel.diskLabel.text=ローカルディスクを選択:
MissingImageDialog.selectButton.text=画像選択
MissingImageDialog.titleLabel.text=欠落した画像の検索
MissingImageDialog.cancelButton.text=キャンセル
LocalDiskPanel.errorLabel.text=エラーラベル
LocalFilesPanel.infoLabel.text=ローカルファイル及びフォルダーを追加:
LocalFilesPanel.selectButton.text=追加
LocalFilesPanel.localFileChooser.dialogTitle=ローカルファイル又はフォルダーを選択
LocalFilesPanel.selectButton.toolTipText=ローカルファイル及びフォルダーをロジカルファイルとして追加します
LocalFilesPanel.clearButton.text=クリアー
LocalFilesPanel.clearButton.toolTipText=現在選択されているローカルファイルパスがクリアされます
LocalFilesPanel.selectedPaths.toolTipText=
LocalFilesPanel.localFileChooser.approveButtonText=選択
LocalFilesPanel.localFileChooser.approveButtonToolTipText=
LocalFilesPanel.selectButton.actionCommand=追加
AddImageWizardIngestConfigVisual.subtitleLabel.text=このデータソースに対して実行したい追加モジュール群を設定します
#Nick: Does ingest module mean a module you added?
AddImageWizardIngestConfigVisual.titleLabel.text=追加モジュール設定
AddImageWizardAddingProgressVisual.statusLabel.text=ファイルシステムがローカルデータベースに追加されました。ファイルを解析中です。
AddImageWizardChooseDataSourceVisual.typeTabel.text=追加するソースタイプを選択:
AddImageWizardChooseDataSourceVisual.jLabel2.text=jLabel2
AddImageWizardChooseDataSourceVisual.nextLabel.text=<html> 「次へ」をクリックして、インプットデータを解析、ボリューム及びファイルシステムデータを抽出、ローカルデータベースにデータを投入。</html>
#Nick: Do I leave the <html> and </html> as is?
AddImageWizardChooseDataSourceVisual.imgInfoLabel.text=データソース情報を入力:
AddImageWizardAddingProgressVisual.progressLabel.text=<進捗状況>
AddImageWizardAddingProgressVisual.viewLogButton.text=ログ閲覧
AddImageWizardAddingProgressVisual.titleLabel.text=データソース追加中
AddImageWizardAddingProgressVisual.subTitle1Label.text=ローカルデータベースにファイルシステム情報を追加中です。こちらが完了次第、ファイル解析が始まります。

View File

@ -37,8 +37,9 @@ import java.util.TimeZone;
import java.util.logging.Level;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import org.openide.util.Exceptions;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.openide.util.actions.CallableSystemAction;
import org.openide.util.actions.SystemAction;
import org.openide.windows.WindowManager;
@ -159,7 +160,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
if (currentCase != null) {
return currentCase;
} else {
throw new IllegalStateException("Can't get the current case; there is no case open!");
throw new IllegalStateException(NbBundle.getMessage(Case.class, "Case.getCurCase.exception.noneOpen"));
}
}
@ -192,7 +193,10 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(Case.class, "Case.moduleErr"),
NbBundle.getMessage(Case.class,
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
doCaseNameChange("");
@ -201,7 +205,10 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(Case.class, "Case.moduleErr"),
NbBundle.getMessage(Case.class,
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}
@ -214,7 +221,10 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(Case.class, "Case.moduleErr"),
NbBundle.getMessage(Case.class,
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
doCaseChange(currentCase);
@ -224,7 +234,10 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(Case.class, "Case.moduleErr"),
NbBundle.getMessage(Case.class,
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
doCaseNameChange(currentCase.name);
@ -267,7 +280,8 @@ public class Case implements SleuthkitCase.ErrorObserver {
db = SleuthkitCase.newCase(dbPath);
} catch (TskCoreException ex) {
logger.log(Level.SEVERE, "Error creating a case: " + caseName + " in dir " + caseDir, ex);
throw new CaseActionException("Error creating a case: " + caseName + " in dir " + caseDir, ex);
throw new CaseActionException(
NbBundle.getMessage(Case.class, "Case.create.exception.msg", caseName, caseDir), ex);
}
Case newCase = new Case(caseName, caseNumber, examiner, configFilePath, xmlcm, db);
@ -296,14 +310,18 @@ public class Case implements SleuthkitCase.ErrorObserver {
String examiner = xmlcm.getCaseExaminer();
// if the caseName is "", case / config file can't be opened
if (caseName.equals("")) {
throw new CaseActionException("Case name is blank.");
throw new CaseActionException(NbBundle.getMessage(Case.class, "Case.open.exception.blankCase.msg"));
}
String caseDir = xmlcm.getCaseDirectory();
String dbPath = caseDir + File.separator + "autopsy.db";
SleuthkitCase db = SleuthkitCase.openCase(dbPath);
if (null != db.getBackupDatabasePath()) {
JOptionPane.showMessageDialog(null, "Updated case database schema.\nA backup copy of the database with the following path has been made:\n " + db.getBackupDatabasePath(), "Case Database Schema Update", JOptionPane.INFORMATION_MESSAGE);
JOptionPane.showMessageDialog(null,
NbBundle.getMessage(Case.class, "Case.open.msgDlg.updated.msg",
db.getBackupDatabasePath()),
NbBundle.getMessage(Case.class, "Case.open.msgDlg.updated.title"),
JOptionPane.INFORMATION_MESSAGE);
}
checkImagesExist(db);
@ -318,10 +336,10 @@ public class Case implements SleuthkitCase.ErrorObserver {
CaseCloseAction closeCase = SystemAction.get(CaseCloseAction.class);
closeCase.actionPerformed(null);
if (!configFilePath.endsWith(CASE_DOT_EXTENSION)) {
throw new CaseActionException("Check that you selected the correct case file (usually with "
+ CASE_DOT_EXTENSION + " extension)", ex);
throw new CaseActionException(
NbBundle.getMessage(Case.class, "Case.open.exception.checkFile.msg", CASE_DOT_EXTENSION), ex);
} else {
throw new CaseActionException("Error opening the case", ex);
throw new CaseActionException(NbBundle.getMessage(Case.class, "Case.open.exception.gen.msg"), ex);
}
}
}
@ -352,11 +370,13 @@ public class Case implements SleuthkitCase.ErrorObserver {
boolean fileExists = (pathExists(path)
|| driveExists(path));
if (!fileExists) {
int ret = JOptionPane.showConfirmDialog(null, appName + " has detected that one of the images associated with \n"
+ "this case are missing. Would you like to search for them now?\n"
+ "Previously, the image was located at:\n" + path
+ "\nPlease note that you will still be able to browse directories and generate reports\n"
+ "if you choose No, but you will not be able to view file content or run the ingest process.", "Missing Image", JOptionPane.YES_NO_OPTION);
int ret = JOptionPane.showConfirmDialog(null,
NbBundle.getMessage(Case.class,
"Case.checkImgExist.confDlg.doesntExist.msg",
appName, path),
NbBundle.getMessage(Case.class,
"Case.checkImgExist.confDlg.doesntExist.title"),
JOptionPane.YES_NO_OPTION);
if (ret == JOptionPane.YES_OPTION) {
MissingImageDialog.makeDialog(obj_id, db);
@ -389,12 +409,15 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"),
NbBundle.getMessage(this.getClass(),
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
CoreComponentControl.openCoreWindows();
return newImage;
} catch (Exception ex) {
throw new CaseActionException("Error adding image to the case", ex);
throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.addImg.exception.msg"), ex);
}
}
@ -423,7 +446,10 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"),
NbBundle.getMessage(this.getClass(),
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
CoreComponentControl.openCoreWindows();
}
@ -456,7 +482,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
this.xmlcm.close(); // close the xmlcm
this.db.close();
} catch (Exception e) {
throw new CaseActionException("Error while trying to close the current case.", e);
throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.closeCase.exception.msg"), e);
}
}
@ -478,11 +504,13 @@ public class Case implements SleuthkitCase.ErrorObserver {
RecentCases.getInstance().removeRecentCase(this.name, this.configFilePath); // remove it from the recent case
Case.changeCase(null);
if (result == false) {
throw new CaseActionException("Error deleting the case dir: " + caseDir);
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "Case.deleteCase.exception.msg", caseDir));
}
} catch (Exception ex) {
logger.log(Level.SEVERE, "Error deleting the current case dir: " + caseDir, ex);
throw new CaseActionException("Error deleting the case dir: " + caseDir, ex);
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "Case.deleteCase.exception.msg2", caseDir), ex);
}
}
@ -504,12 +532,15 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"),
NbBundle.getMessage(this.getClass(),
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
doCaseNameChange(newCaseName);
} catch (Exception e) {
throw new CaseActionException("Error while trying to update the case name.", e);
throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.updateCaseName.exception.msg"), e);
}
}
@ -528,10 +559,13 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"),
NbBundle.getMessage(this.getClass(),
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
} catch (Exception e) {
throw new CaseActionException("Error while trying to update the examiner.", e);
throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.updateExaminer.exception.msg"), e);
}
}
@ -551,10 +585,13 @@ public class Case implements SleuthkitCase.ErrorObserver {
}
catch (Exception e) {
logger.log(Level.SEVERE, "Case listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Case updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "Case.moduleErr"),
NbBundle.getMessage(this.getClass(),
"Case.changeCase.errListenToCaseUpdates.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
} catch (Exception e) {
throw new CaseActionException("Error while trying to update the case number.", e);
throw new CaseActionException(NbBundle.getMessage(this.getClass(), "Case.updateCaseNum.exception.msg"), e);
}
}
@ -764,7 +801,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
try {
return db.getRootObjects();
} catch (TskException ex) {
throw new RuntimeException("Error getting root objects.", ex);
throw new RuntimeException(NbBundle.getMessage(this.getClass(), "Case.exception.errGetRootObj"), ex);
}
}
@ -919,16 +956,19 @@ public class Case implements SleuthkitCase.ErrorObserver {
File caseDirF = new File(caseDir);
if (caseDirF.exists()) {
if (caseDirF.isFile()) {
throw new CaseActionException("Cannot create case dir, already exists and is not a directory: " + caseDir);
throw new CaseActionException(
NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.existNotDir", caseDir));
} else if (!caseDirF.canRead() || !caseDirF.canWrite()) {
throw new CaseActionException("Cannot create case dir, already exists and cannot read/write: " + caseDir);
throw new CaseActionException(
NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.existCantRW", caseDir));
}
}
try {
boolean result = (caseDirF).mkdirs(); // create root case Directory
if (result == false) {
throw new CaseActionException("Cannot create case dir: " + caseDir);
throw new CaseActionException(
NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.cantCreate", caseDir));
}
// create the folders inside the case directory
@ -938,17 +978,21 @@ public class Case implements SleuthkitCase.ErrorObserver {
&& (new File(caseDir + File.separator + XMLCaseManagement.CACHE_FOLDER_RELPATH)).mkdir();
if (result == false) {
throw new CaseActionException("Could not create case directory: " + caseDir);
throw new CaseActionException(
NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.cantCreateCaseDir", caseDir));
}
final String modulesOutDir = caseDir + File.separator + getModulesOutputDirRelPath();
result = new File(modulesOutDir).mkdir();
if (result == false) {
throw new CaseActionException("Could not create modules output directory: " + modulesOutDir);
throw new CaseActionException(
NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.cantCreateModDir",
modulesOutDir));
}
} catch (Exception e) {
throw new CaseActionException("Could not create case directory: " + caseDir, e);
throw new CaseActionException(
NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.gen", caseDir), e);
}
}

View File

@ -99,8 +99,11 @@ import org.openide.util.actions.CallableSystemAction;
}
else{
// show the confirmation first to close the current case and open the "New Case" wizard panel
String closeCurrentCase = "Are you sure want to close and delete this case? \n Case Name: " + caseName + "\n Case Directory: "+ caseFolder.getPath();
NotifyDescriptor d = new NotifyDescriptor.Confirmation(closeCurrentCase, "Warning: Closing the Current Case", NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
String closeCurrentCase = NbBundle.getMessage(this.getClass(), "CaseDeleteAction.closeConfMsg.text", caseName, caseFolder.getPath());
NotifyDescriptor d = new NotifyDescriptor.Confirmation(closeCurrentCase,
NbBundle.getMessage(this.getClass(),
"CaseDeleteAction.closeConfMsg.title"),
NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
d.setValue(NotifyDescriptor.NO_OPTION);
Object res = DialogDisplayer.getDefault().notify(d);
@ -116,11 +119,18 @@ import org.openide.util.actions.CallableSystemAction;
// show notification whether the case has been deleted or it failed to delete...
if(!success){
JOptionPane.showMessageDialog(caller, "The delete action can't be fully completed because the folder or file in it is open by another program.\n \nClose the folder and file and try again or you can delete the case manually.", "Error: Folder In Use", JOptionPane.ERROR_MESSAGE); // throw an error
JOptionPane.showMessageDialog(caller,
NbBundle.getMessage(this.getClass(),
"CaseDeleteAction.msgDlg.fileInUse.msg"),
NbBundle.getMessage(this.getClass(),
"CaseDeleteAction.msgDlg.fileInUse.title"),
JOptionPane.ERROR_MESSAGE); // throw an error
}
else{
CasePropertiesAction.closeCasePropertiesWindow(); // because the "Delete Case" button is in the "CaseProperties" window, we have to close that window when we delete the case.
JOptionPane.showMessageDialog(caller, "Case " + caseName + " has been deleted.");
JOptionPane.showMessageDialog(caller, NbBundle.getMessage(this.getClass(),
"CaseDeleteAction.msgDlg.caseDelete.msg",
caseName));
}
}
}

View File

@ -22,15 +22,17 @@ import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Collections;
import java.util.logging.Level;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.coreutils.Version;
/**
* The action to open a existing case. This class is always enabled.
@ -47,8 +49,9 @@ public final class CaseOpenAction implements ActionListener {
* The constructor
*/
public CaseOpenAction() {
autFilter = new FileNameExtensionFilter(org.sleuthkit.autopsy.coreutils.Version.getName()
+ " Case File ( " + Case.CASE_DOT_EXTENSION + ")",
autFilter = new FileNameExtensionFilter(
NbBundle.getMessage(CaseOpenAction.class, "CaseOpenAction.autFilter.title", Version.getName(),
Case.CASE_DOT_EXTENSION),
Case.CASE_EXTENSION);
fc.setDragEnabled(false);
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
@ -80,7 +83,12 @@ public final class CaseOpenAction implements ActionListener {
ModuleSettings.setConfigSetting(ModuleSettings.MAIN_SETTINGS, PROP_BASECASE, dirPath.substring(0, dirPath.lastIndexOf(File.separator)));
// check if the file exists
if (!new File(path).exists()) {
JOptionPane.showMessageDialog(null, "Error: File doesn't exist.", "Error", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null,
NbBundle.getMessage(this.getClass(),
"CaseOpenAction.msgDlg.fileNotExist.msg"),
NbBundle.getMessage(this.getClass(),
"CaseOpenAction.msgDlg.fileNotExist.title"),
JOptionPane.ERROR_MESSAGE);
this.actionPerformed(e); // show the dialog box again
} else {
// try to close Startup window if there's one
@ -93,8 +101,13 @@ public final class CaseOpenAction implements ActionListener {
try {
Case.open(path); // open the case
} catch (CaseActionException ex) {
JOptionPane.showMessageDialog(null, "Error: could not open the case in folder " + path
+ ": " + ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null,
NbBundle.getMessage(this.getClass(),
"CaseOpenAction.msgDlg.cantOpenCase.msg", path,
ex.getMessage()),
NbBundle.getMessage(this.getClass(),
"CaseOpenAction.msgDlg.cantOpenCase.title"),
JOptionPane.ERROR_MESSAGE);
logger.log(Level.WARNING, "Error opening case in folder " + path, ex);
StartupWindowProvider.getInstance().open();

View File

@ -62,7 +62,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
try {
// create the popUp window for it
String title = "Case Properties";
String title = NbBundle.getMessage(this.getClass(), "CasePropertiesAction.window.title");
final JFrame frame = new JFrame(title);
popUpWindow = new JDialog(frame, title, true); // to make the popUp Window to be modal

View File

@ -27,9 +27,10 @@ package org.sleuthkit.autopsy.casemodule;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
@ -365,7 +366,12 @@ class CasePropertiesForm extends javax.swing.JPanel{
// check if the case name is empty
if(newCaseName.trim().equals("")){
JOptionPane.showMessageDialog(caller, "The caseName cannot be empty.", "Error", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(caller,
NbBundle.getMessage(this.getClass(),
"CasePropertiesForm.updateCaseName.msgDlg.empty.msg"),
NbBundle.getMessage(this.getClass(),
"CasePropertiesForm.updateCaseName.msgDlg.empty.title"),
JOptionPane.ERROR_MESSAGE);
}
else{
// check if case Name contain one of this following symbol:
@ -373,13 +379,22 @@ class CasePropertiesForm extends javax.swing.JPanel{
if(newCaseName.contains("\\") || newCaseName.contains("/") || newCaseName.contains(":") ||
newCaseName.contains("*") || newCaseName.contains("?") || newCaseName.contains("\"") ||
newCaseName.contains("<") || newCaseName.contains(">") || newCaseName.contains("|")){
String errorMsg = "The Case Name cannot contain any of this following symbol: \\ / : * ? \" < > |";
JOptionPane.showMessageDialog(caller, errorMsg, "Error", JOptionPane.ERROR_MESSAGE);
String errorMsg = NbBundle
.getMessage(this.getClass(), "CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.msg");
JOptionPane.showMessageDialog(caller, errorMsg,
NbBundle.getMessage(this.getClass(),
"CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.title"),
JOptionPane.ERROR_MESSAGE);
}
else{
// ask for the confirmation first
String confMsg = "Are you sure want to update the case name from \"" + oldCaseName + "\" to \"" + newCaseName + "\"?";
NotifyDescriptor d = new NotifyDescriptor.Confirmation(confMsg, "Create directory", NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
String confMsg = NbBundle
.getMessage(this.getClass(), "CasePropertiesForm.updateCaseName.confMsg.msg", oldCaseName,
newCaseName);
NotifyDescriptor d = new NotifyDescriptor.Confirmation(confMsg,
NbBundle.getMessage(this.getClass(),
"CasePropertiesForm.updateCaseName.confMsg.title"),
NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
d.setValue(NotifyDescriptor.NO_OPTION);
Object res = DialogDisplayer.getDefault().notify(d);

View File

@ -29,13 +29,14 @@ import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
/**
*
*/
public class CueBannerPanel extends javax.swing.JPanel {
final private static String title = "Open Recent Case";
final private static String title = NbBundle.getMessage(CueBannerPanel.class, "CueBannerPanel.title.text");
final private static JFrame frame = new JFrame(title);
final static JDialog recentCasesWindow = new JDialog(frame, title, true); // to make the popUp Window to be modal

View File

@ -19,6 +19,8 @@
package org.sleuthkit.autopsy.casemodule;
import org.openide.util.NbBundle;
import java.io.File;
import java.util.List;
import java.util.Arrays;
@ -32,10 +34,10 @@ public class GeneralFilter extends FileFilter{
// Extensions & Descriptions for commonly used filters
public static final List<String> RAW_IMAGE_EXTS = Arrays.asList(new String[]{".img", ".dd", ".001", ".aa", ".raw", ".bin"});
public static final String RAW_IMAGE_DESC = "Raw Images (*.img, *.dd, *.001, *.aa, *.raw, *.bin)";
public static final String RAW_IMAGE_DESC = NbBundle.getMessage(GeneralFilter.class, "GeneralFilter.rawImageDesc.text");
public static final List<String> ENCASE_IMAGE_EXTS = Arrays.asList(new String[]{".e01"});
public static final String ENCASE_IMAGE_DESC = "Encase Images (*.e01)";
public static final String ENCASE_IMAGE_DESC = NbBundle.getMessage(GeneralFilter.class, "GeneralFilter.encaseImageDesc.text");

View File

@ -22,6 +22,8 @@ import javax.swing.JPanel;
import java.util.ArrayList;
import java.util.List;
import javax.swing.filechooser.FileFilter;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor;
@ -41,7 +43,7 @@ public class ImageDSProcessor implements DataSourceProcessor {
static final Logger logger = Logger.getLogger(ImageDSProcessor.class.getName());
// Data source type handled by this processor
private final static String dsType = "Image File";
private final static String dsType = NbBundle.getMessage(ImageDSProcessor.class, "ImageDSProcessor.dsType.text");
// The Config UI panel that plugins into the Choose Data Source Wizard
private final ImageFilePanel imageFilePanel;
@ -70,7 +72,7 @@ public class ImageDSProcessor implements DataSourceProcessor {
allExt.addAll(GeneralFilter.RAW_IMAGE_EXTS);
allExt.addAll(GeneralFilter.ENCASE_IMAGE_EXTS);
}
static final String allDesc = "All Supported Types";
static final String allDesc = NbBundle.getMessage(ImageDSProcessor.class, "ImageDSProcessor.allDesc.text");
static final GeneralFilter allFilter = new GeneralFilter(allExt, allDesc);
static final List<FileFilter> filtersList = new ArrayList<>();

View File

@ -21,8 +21,6 @@ package org.sleuthkit.autopsy.casemodule;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.SimpleTimeZone;
@ -32,6 +30,8 @@ import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.JPanel;
import javax.swing.filechooser.FileFilter;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor;
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
@ -202,7 +202,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener {
}
catch (Exception e) {
logger.log(Level.SEVERE, "ImageFilePanel listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr"),
NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}//GEN-LAST:event_browseButtonActionPerformed
@ -330,7 +332,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener {
}
catch (Exception ee) {
logger.log(Level.SEVERE, "ImageFilePanel listener threw exception", ee);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr"),
NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}
@ -341,7 +345,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener {
}
catch (Exception ee) {
logger.log(Level.SEVERE, "ImageFilePanel listener threw exception", ee);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr"),
NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}
@ -353,7 +359,9 @@ public class ImageFilePanel extends JPanel implements DocumentListener {
}
catch (Exception ee) {
logger.log(Level.SEVERE, "ImageFilePanel listener threw exception", ee);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to ImageFilePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr"),
NbBundle.getMessage(this.getClass(), "ImageFilePanel.moduleErr.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}

View File

@ -20,6 +20,8 @@
package org.sleuthkit.autopsy.casemodule;
import javax.swing.JPanel;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor;
@ -33,7 +35,7 @@ public class LocalDiskDSProcessor implements DataSourceProcessor {
static final Logger logger = Logger.getLogger(ImageDSProcessor.class.getName());
// Data source type handled by this processor
private static final String dsType = "Local Disk";
private static final String dsType = NbBundle.getMessage(LocalDiskDSProcessor.class, "LocalDiskDSProcessor.dsType.text");
// The Config UI panel that plugins into the Choose Data Source Wizard
private final LocalDiskPanel localDiskPanel;

View File

@ -18,6 +18,7 @@
*/
package org.sleuthkit.autopsy.casemodule;
import org.sleuthkit.autopsy.coreutils.LocalDisk;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
@ -40,6 +41,8 @@ import javax.swing.ListCellRenderer;
import javax.swing.SwingWorker;
import javax.swing.border.EmptyBorder;
import javax.swing.event.ListDataListener;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
@ -297,7 +300,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
List<LocalDisk> partitions = new ArrayList<LocalDisk>();
//private String SELECT = "Select a local disk:";
private String LOADING = "Loading local disks...";
private String LOADING = NbBundle.getMessage(this.getClass(), "LocalDiskPanel.localDiskModel.loading.msg");
LocalDiskThread worker = null;
@ -335,7 +338,9 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
}
catch (Exception e) {
logger.log(Level.SEVERE, "LocalDiskPanel listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to LocalDiskPanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "LocalDiskPanel.moduleErr"),
NbBundle.getMessage(this.getClass(), "LocalDiskPanel.moduleErr.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}
}
@ -409,16 +414,22 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
private void displayErrors() {
if(physical.isEmpty() && partitions.isEmpty()) {
if(PlatformUtil.isWindowsOS()) {
errorLabel.setText("Disks were not detected. On some systems it requires admin privileges (or \"Run as administrator\").");
errorLabel.setToolTipText("Disks were not detected. On some systems it requires admin privileges (or \"Run as administrator\").");
errorLabel.setText(
NbBundle.getMessage(this.getClass(), "LocalDiskPanel.errLabel.disksNotDetected.text"));
errorLabel.setToolTipText(NbBundle.getMessage(this.getClass(),
"LocalDiskPanel.errLabel.disksNotDetected.toolTipText"));
} else {
errorLabel.setText("Local drives were not detected. Auto-detection not supported on this OS or admin privileges required");
errorLabel.setToolTipText("Local drives were not detected. Auto-detection not supported on this OS or admin privileges required");
errorLabel.setText(
NbBundle.getMessage(this.getClass(), "LocalDiskPanel.errLabel.drivesNotDetected.text"));
errorLabel.setToolTipText(NbBundle.getMessage(this.getClass(),
"LocalDiskPanel.errLabel.drivesNotDetected.toolTipText"));
}
diskComboBox.setEnabled(false);
} else if(physical.isEmpty()) {
errorLabel.setText("Some disks were not detected. On some systems it requires admin privileges (or \"Run as administrator\").");
errorLabel.setToolTipText("Some disks were not detected. On some systems it requires admin privileges (or \"Run as administrator\").");
errorLabel.setText(
NbBundle.getMessage(this.getClass(), "LocalDiskPanel.errLabel.someDisksNotDetected.text"));
errorLabel.setToolTipText(NbBundle.getMessage(this.getClass(),
"LocalDiskPanel.errLabel.someDisksNotDetected.toolTipText"));
}
}

View File

@ -20,6 +20,8 @@
package org.sleuthkit.autopsy.casemodule;
import javax.swing.JPanel;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorProgressMonitor;
@ -32,7 +34,7 @@ public class LocalFilesDSProcessor implements DataSourceProcessor {
static final Logger logger = Logger.getLogger(LocalFilesDSProcessor.class.getName());
// Data source type handled by this processor
private static final String dsType = "Logical Files";
private static final String dsType = NbBundle.getMessage(LocalFilesDSProcessor.class, "LocalFilesDSProcessor.dsType");
// The Config UI panel that plugins into the Choose Data Source Wizard
private final LocalFilesPanel localFilesPanel;

View File

@ -25,6 +25,8 @@ import java.util.Set;
import java.util.TreeSet;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessor;
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
import java.util.logging.Level;
@ -84,7 +86,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
//@Override
public String getContentType() {
return "LOCAL";
return NbBundle.getMessage(this.getClass(), "LocalFilesPanel.contentType.text");
}
//@Override
@ -127,7 +129,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
@Override
public String toString() {
return "Logical Files";
return NbBundle.getMessage(this.getClass(), "LocalFilesDSProcessor.toString.text");
}
/**
@ -242,7 +244,9 @@ import org.sleuthkit.autopsy.coreutils.Logger;
}
catch (Exception e) {
logger.log(Level.SEVERE, "LocalFilesPanel listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to LocalFilesPanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "LocalFilesPanel.moduleErr"),
NbBundle.getMessage(this.getClass(), "LocalFilesPanel.moduleErr.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}//GEN-LAST:event_selectButtonActionPerformed

View File

@ -31,6 +31,8 @@ import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.casemodule.GeneralFilter;
import org.sleuthkit.autopsy.coreutils.Logger;
@ -54,7 +56,7 @@ import org.sleuthkit.datamodel.TskCoreException;
allExt.addAll(GeneralFilter.RAW_IMAGE_EXTS);
allExt.addAll(GeneralFilter.ENCASE_IMAGE_EXTS);
}
static final String allDesc = "All Supported Types";
static final String allDesc = NbBundle.getMessage(MissingImageDialog.class, "MissingImageDialog.allDesc.text");
static final GeneralFilter allFilter = new GeneralFilter(allExt, allDesc);
private JFileChooser fc = new JFileChooser();
@ -100,7 +102,7 @@ import org.sleuthkit.datamodel.TskCoreException;
}
private void display() {
this.setTitle("Search for Missing Image");
this.setTitle(NbBundle.getMessage(this.getClass(), "MissingImageDialog.display.title"));
Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
// set the popUp window / JFrame
int w = this.getSize().width;
@ -316,9 +318,11 @@ import org.sleuthkit.datamodel.TskCoreException;
//
void cancel() {
int ret = JOptionPane.showConfirmDialog(null,
"No image file has been selected, are you sure you\n" +
"would like to exit without finding the image.",
"Missing Image", JOptionPane.YES_NO_OPTION);
NbBundle.getMessage(this.getClass(),
"MissingImageDialog.confDlg.noFileSel.msg"),
NbBundle.getMessage(this.getClass(),
"MissingImageDialog.confDlg.noFileSel.title"),
JOptionPane.YES_NO_OPTION);
if (ret == JOptionPane.YES_OPTION) {
this.dispose();
}

View File

@ -19,6 +19,8 @@
package org.sleuthkit.autopsy.casemodule;
import org.openide.util.NbBundle;
import java.awt.Component;
import java.io.File;
import javax.swing.JFileChooser;
@ -52,7 +54,7 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener{
*/
@Override
public String getName() {
return "Case Info";
return NbBundle.getMessage(this.getClass(), "NewCaseVisualPanel1.getName.text");
}
/**
@ -179,7 +181,8 @@ final class NewCaseVisualPanel1 extends JPanel implements DocumentListener{
//fc.setSelectedFile(new File("C:\\Program Files\\"));
//disableTextField(fc); // disable all the text field on the file chooser
int returnValue = fc.showDialog((Component)evt.getSource(), "Select");
int returnValue = fc.showDialog((Component)evt.getSource(), NbBundle.getMessage(this.getClass(),
"NewCaseVisualPanel1.caseDirBrowse.selectButton.text"));
if(returnValue == JFileChooser.APPROVE_OPTION){
String path = fc.getSelectedFile().getPath();
caseParentDirTextField.setText(path); // put the path to the textfield

View File

@ -24,6 +24,8 @@
*/
package org.sleuthkit.autopsy.casemodule;
import org.openide.util.NbBundle;
/**
*
* @author dfickling
@ -43,7 +45,7 @@ package org.sleuthkit.autopsy.casemodule;
*/
@Override
public String getName() {
return "Additional Information";
return NbBundle.getMessage(this.getClass(), "NewCaseVisualPanel2.getName.text");
}
/** This method is called from within the constructor to

View File

@ -31,6 +31,7 @@ import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
import org.openide.WizardDescriptor;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openide.util.actions.CallableSystemAction;
import org.openide.util.actions.SystemAction;
import org.sleuthkit.autopsy.coreutils.Logger;
@ -52,8 +53,12 @@ import org.sleuthkit.autopsy.coreutils.Logger;
// 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 = "Do you want to save and close this case and proceed with the new case creation?";
NotifyDescriptor d = new NotifyDescriptor.Confirmation(closeCurrentCase, "Warning: Closing the Current Case", NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
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);
@ -77,7 +82,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
WizardDescriptor wizardDescriptor = new WizardDescriptor(getPanels());
// {0} will be replaced by WizardDesriptor.Panel.getComponent().getName()
wizardDescriptor.setTitleFormat(new MessageFormat("{0}"));
wizardDescriptor.setTitle("New Case Information");
wizardDescriptor.setTitle(NbBundle.getMessage(this.getClass(), "NewCaseWizardAction.newCase.windowTitle.text"));
Dialog dialog = DialogDisplayer.getDefault().createDialog(wizardDescriptor);
dialog.setVisible(true);
dialog.toFront();
@ -149,7 +154,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
@Override
public String getName() {
return "New Case Wizard";
return NbBundle.getMessage(this.getClass(), "NewCaseWizardAction.getName.text");
}
@Override

View File

@ -23,6 +23,8 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
@ -205,13 +207,15 @@ class NewCaseWizardPanel1 implements WizardDescriptor.ValidatingPanel<WizardDesc
// check if case Name contain one of this following symbol:
// \ / : * ? " < > |
if (!Case.isValidName(caseName)) {
String errorMsg = "The Case Name cannot contain any of the following symbols: \\ / : * ? \" < > |";
String errorMsg = NbBundle
.getMessage(this.getClass(), "NewCaseWizardPanel1.validate.errMsg.invalidSymbols");
validationError(errorMsg);
} else {
// check if the directory exist
if (new File(caseDirPath).exists()) {
// throw a warning to enter new data or delete the existing directory
String errorMsg = "Case directory '" + caseDirPath + "' already exists.";
String errorMsg = NbBundle
.getMessage(this.getClass(), "NewCaseWizardPanel1.validate.errMsg.dirExists", caseDirPath);
validationError(errorMsg);
} else {
// check if the "base" directory path is absolute
@ -220,8 +224,13 @@ class NewCaseWizardPanel1 implements WizardDescriptor.ValidatingPanel<WizardDesc
// when the base directory doesn't exist
if (!baseDir.exists()) {
// get confirmation to create directory
String confMsg = "The base directory \'" + caseParentDir + "\' doesn't exist. \n \n Do you want to create that directory?";
NotifyDescriptor d2 = new NotifyDescriptor.Confirmation(confMsg, "Create directory", NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
String confMsg = NbBundle
.getMessage(this.getClass(), "NewCaseWizardPanel1.validate.confMsg.createDir.msg",
caseParentDir);
NotifyDescriptor d2 = new NotifyDescriptor.Confirmation(confMsg,
NbBundle.getMessage(this.getClass(),
"NewCaseWizardPanel1.validate.confMsg.createDir.title"),
NotifyDescriptor.YES_NO_OPTION, NotifyDescriptor.WARNING_MESSAGE);
d2.setValue(NotifyDescriptor.NO_OPTION);
Object res2 = DialogDisplayer.getDefault().notify(d2);
@ -230,27 +239,33 @@ class NewCaseWizardPanel1 implements WizardDescriptor.ValidatingPanel<WizardDesc
try {
createDirectory(caseDirPath);
} catch (Exception ex) {
String errorMsg = "Error: Couldn't create case parent directory " + caseParentDir;
String errorMsg = NbBundle.getMessage(this.getClass(),
"NewCaseWizardPanel1.validate.errMsg.cantCreateParDir.msg",
caseParentDir);
logger.log(Level.WARNING, errorMsg, ex);
validationError(errorMsg);
}
}
if (res2 != null && res2 == DialogDescriptor.NO_OPTION) {
// if user say no
validationError("Prevented from creating base directory " + caseDirPath );
validationError(NbBundle.getMessage(this.getClass(),
"NewCaseWizardPanel1.validate.errMsg.prevCreateBaseDir.msg",
caseDirPath) );
}
} else {
try {
createDirectory(caseDirPath);
} catch (Exception ex) {
String errorMsg = "Error: Couldn't create directory.";
String errorMsg = NbBundle
.getMessage(this.getClass(), "NewCaseWizardPanel1.validate.errMsg.cantCreateDir");
logger.log(Level.WARNING, errorMsg, ex);
validationError(errorMsg);
}
}
} else {
// throw a notification
String errorMsg = "ERROR: The Base Directory that you entered is not valid.\nPlease enter a valid Base Directory.";
String errorMsg = NbBundle
.getMessage(this.getClass(), "NewCaseWizardPanel1.validate.errMsg.invalidBaseDir.msg");
validationError(errorMsg);
}
}
@ -282,7 +297,8 @@ class NewCaseWizardPanel1 implements WizardDescriptor.ValidatingPanel<WizardDesc
Case.deleteCaseDirectory(new File(caseDirPath));
}
String errorMsg = "ERROR: Could not create the case directory. \nPlease enter a valid Case Name and Directory.";
String errorMsg = NbBundle.getMessage(this.getClass(),
"NewCaseWizardPanel1.createDir.errMsg.cantCreateDir.msg");
validationError(errorMsg);

View File

@ -29,6 +29,7 @@ import org.openide.WizardDescriptor;
import org.openide.WizardValidationException;
import org.openide.util.Exceptions;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
/**
* The "New Case" wizard panel with a component on it. This class represents
@ -190,7 +191,10 @@ class NewCaseWizardPanel2 implements WizardDescriptor.ValidatingPanel<WizardDesc
//Case.create(createdDirectory, caseName, caseNumber, examiner);
} catch(Exception ex) {
throw new WizardValidationException(this.getComponent(), "Error creating case", null);
throw new WizardValidationException(this.getComponent(),
NbBundle.getMessage(this.getClass(),
"NewCaseWizardPanel2.validate.errCreateCase.msg"),
null);
}
}
}

View File

@ -28,6 +28,8 @@ import java.util.logging.Level;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
/**
@ -198,7 +200,13 @@ class OpenRecentCasePanel extends javax.swing.JPanel {
// Open the recent cases
try {
if (caseName.equals("") || casePath.equals("") || (!new File(casePath).exists())) {
JOptionPane.showMessageDialog(null, "Error: Case " + caseName + " doesn't exist.", "Error", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(null,
NbBundle.getMessage(this.getClass(),
"OpenRecentCasePanel.openCase.msgDlg.caseDoesntExist.msg",
caseName),
NbBundle.getMessage(this.getClass(),
"OpenRecentCasePanel.openCase.msgDlg.err"),
JOptionPane.ERROR_MESSAGE);
RecentCases.getInstance().removeRecentCase(caseName, casePath); // remove the recent case if it doesn't exist anymore
//if case is not opened, open the start window
@ -258,10 +266,10 @@ class OpenRecentCasePanel extends javax.swing.JPanel {
switch (column) {
case 0:
colName = "Case Name";
colName = NbBundle.getMessage(this.getClass(), "OpenRecentCasePanel.colName.caseName");
break;
case 1:
colName = "Path";
colName = NbBundle.getMessage(this.getClass(), "OpenRecentCasePanel.colName.path");
break;
default:
;

View File

@ -31,6 +31,7 @@ import java.util.List;
import java.util.logging.Level;
import javax.swing.JMenuItem;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
import org.openide.util.actions.CallableSystemAction;
import org.openide.util.actions.Presenter;
import org.openide.filesystems.FileUtil;
@ -96,7 +97,8 @@ import org.sleuthkit.autopsy.coreutils.Logger;
private static void validateCaseIndex(int i) {
if (i < 0 || i >= LENGTH) {
throw new IllegalArgumentException("Recent case index " + i + " is out of range.");
throw new IllegalArgumentException(
NbBundle.getMessage(RecentCases.class, "RecentCases.exception.caseIdxOutOfRange.msg", i));
}
}
@ -419,7 +421,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
@Override
public String getName() {
//return NbBundle.getMessage(RecentCases.class, "CTL_RecentCases");
return "Clear Recent Cases";
return NbBundle.getMessage(this.getClass(), "RecentCases.getName.text");
}
/**

View File

@ -26,6 +26,8 @@ import java.io.File;
import java.util.logging.Level;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
/**
@ -56,7 +58,11 @@ class RecentItems implements ActionListener {
// check if the file exists
if(caseName.equals("") || casePath.equals("") || (!new File(casePath).exists())){
// throw an error here
JOptionPane.showMessageDialog(caller, "Error: Case " + caseName + " doesn't exist.", "Error", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(caller,
NbBundle.getMessage(this.getClass(), "RecentItems.openRecentCase.msgDlg.text",
caseName),
NbBundle.getMessage(this.getClass(), "RecentItems.openRecentCase.msgDlg.err"),
JOptionPane.ERROR_MESSAGE);
RecentCases.getInstance().removeRecentCase(caseName, casePath); // remove the recent case if it doesn't exist anymore
//if case is not opened, open the start window

View File

@ -26,6 +26,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDialog;
import javax.swing.JFrame;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
/**
@ -35,7 +37,7 @@ import org.openide.util.lookup.ServiceProvider;
public final class StartupWindow extends JDialog implements StartupWindowInterface {
private static StartupWindow instance;
private static final String TITLE = "Welcome";
private static final String TITLE = NbBundle.getMessage(StartupWindow.class, "StartupWindow.title.text");
private static Dimension DIMENSIONS = new Dimension(750, 400);
public StartupWindow() {

View File

@ -23,6 +23,7 @@ import javax.swing.JComponent;
import javax.swing.JMenuItem;
import javax.swing.JSeparator;
import org.openide.awt.DynamicMenuContent;
import org.openide.util.NbBundle;
import org.openide.util.actions.SystemAction;
/**
@ -66,14 +67,15 @@ import org.openide.util.actions.SystemAction;
// if it has recent case, create clear menu
if(hasRecentCase){
comps[length] = new JSeparator();
JMenuItem clearMenu = new JMenuItem("Clear Recent Cases");
JMenuItem clearMenu = new JMenuItem(
NbBundle.getMessage(this.getClass(), "UpdateRecentCases.menuItem.clearRecentCases.text"));
clearMenu.addActionListener(SystemAction.get(RecentCases.class));
comps[length+1] = clearMenu;
}
// otherwise, just create a disabled empty menu
else{
comps = new JComponent[1];
JMenuItem emptyMenu = new JMenuItem("-Empty-");
JMenuItem emptyMenu = new JMenuItem(NbBundle.getMessage(this.getClass(), "UpdateRecentCases.menuItem.empty"));
emptyMenu.addActionListener(new RecentItems("", ""));
comps[0] = emptyMenu;
comps[0].setEnabled(false);

View File

@ -30,6 +30,7 @@ import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import org.openide.util.Exceptions;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.coreutils.XMLUtil;
import org.w3c.dom.*;
@ -458,7 +459,8 @@ import org.xml.sax.SAXException;
docBuilder = docFactory.newDocumentBuilder();
} catch (ParserConfigurationException ex) {
clear();
throw new CaseActionException("Error setting up Case XML file, ", ex);
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "XMLCaseManagement.create.exception.msg"), ex);
}
doc = docBuilder.newDocument();
@ -531,7 +533,8 @@ import org.xml.sax.SAXException;
@Override
public void writeFile() throws CaseActionException {
if (doc == null || caseName.equals("")) {
throw new CaseActionException("No set case to write management file for.");
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "XMLCaseManagement.writeFile.exception.noCase.msg"));
}
// Prepare the DOM document for writing
@ -549,7 +552,8 @@ import org.xml.sax.SAXException;
xformer = tfactory.newTransformer();
} catch (TransformerConfigurationException ex) {
logger.log(Level.SEVERE, "Could not setup tranformer and write case file");
throw new CaseActionException("Error writing to case file", ex);
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "XMLCaseManagement.writeFile.exception.errWriteToFile.msg"), ex);
}
//Setup indenting to "pretty print"
@ -560,7 +564,8 @@ import org.xml.sax.SAXException;
xformer.transform(source, result);
} catch (TransformerException ex) {
logger.log(Level.SEVERE, "Could not run tranformer and write case file");
throw new CaseActionException("Error writing to case file", ex);
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "XMLCaseManagement.writeFile.exception.errWriteToFile.msg"), ex);
}
// preparing the output file
@ -597,11 +602,17 @@ import org.xml.sax.SAXException;
db = dbf.newDocumentBuilder();
doc = db.parse(file);
} catch (ParserConfigurationException ex) {
throw new CaseActionException("Error reading case XML file: " + conFilePath, ex);
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "XMLCaseManagement.open.exception.errReadXMLFile.msg",
conFilePath), ex);
} catch (SAXException ex) {
throw new CaseActionException("Error reading case XML file: " + conFilePath, ex);
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "XMLCaseManagement.open.exception.errReadXMLFile.msg",
conFilePath), ex);
} catch (IOException ex) {
throw new CaseActionException("Error reading case XML file: " + conFilePath, ex);
throw new CaseActionException(
NbBundle.getMessage(this.getClass(), "XMLCaseManagement.open.exception.errReadXMLFile.msg",
conFilePath), ex);
}
@ -619,7 +630,13 @@ import org.xml.sax.SAXException;
if (!rootName.equals(TOP_ROOT_NAME)) {
// throw an error ...
clear();
JOptionPane.showMessageDialog(caller, "Error: This is not an Autopsy config file (\"" + file.getName() + "\").\n \nDetail: \nCannot open a non-Autopsy config file (at " + className + ").", "Error", JOptionPane.ERROR_MESSAGE);
JOptionPane.showMessageDialog(caller,
NbBundle.getMessage(this.getClass(),
"XMLCaseManagement.open.msgDlg.notAutCase.msg",
file.getName(), className),
NbBundle.getMessage(this.getClass(),
"XMLCaseManagement.open.msgDlg.notAutCase.title"),
JOptionPane.ERROR_MESSAGE);
} else {
/* Autopsy Created Version */
String createdVersion = getCreatedVersion(); // get the created version

View File

@ -0,0 +1,16 @@
Metadata.tableRowTitle.name=Name
Metadata.tableRowTitle.size=Size
Metadata.tableRowTitle.fileNameAlloc=File Name Allocation
Metadata.tableRowTitle.metadataAlloc=Metadata Allocation
Metadata.tableRowTitle.modified=Modified
Metadata.tableRowTitle.accessed=Accessed
Metadata.tableRowTitle.created=Created
Metadata.tableRowTitle.changed=Changed
Metadata.tableRowContent.md5notCalc=Not calculated
Metadata.tableRowTitle.md5=MD5
Metadata.tableRowTitle.hashLookupResults=Hash Lookup Results
Metadata.tableRowTitle.internalid=Internal ID
Metadata.tableRowTitle.localPath=Local Path
Metadata.title=Metadata
Metadata.toolTip=Displays metadata about the file.
Metadata.nodeText.nonFilePassedIn=Non-file passed in

View File

@ -0,0 +1,16 @@
Metadata.tableRowTitle.name=\u540D\u79F0
Metadata.tableRowTitle.size=\u30B5\u30A4\u30BA
Metadata.tableRowTitle.fileNameAlloc=\u30D5\u30A1\u30A4\u30EB\u30A2\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u72B6\u614B
Metadata.tableRowTitle.metadataAlloc=\u30E1\u30BF\u30C7\u30FC\u30BF\u30A2\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u72B6\u614B
Metadata.tableRowTitle.modified=\u4FEE\u6B63\u6E08\u307F
Metadata.tableRowTitle.accessed=\u30A2\u30AF\u30BB\u30B9\u6E08\u307F
Metadata.tableRowTitle.created=\u4F5C\u6210\u6E08\u307F
Metadata.tableRowTitle.changed=\u5909\u66F4\u6E08\u307F
Metadata.tableRowContent.md5notCalc=\u672A\u8A08\u7B97
Metadata.tableRowTitle.md5=MD5
Metadata.tableRowTitle.hashLookupResults=\u30CF\u30C3\u30B7\u30E5\u30EB\u30C3\u30AF\u30A2\u30C3\u30D7\u7D50\u679C
Metadata.tableRowTitle.internalid=\u5185\u90E8ID
Metadata.tableRowTitle.localPath=\u30ED\u30FC\u30AB\u30EB\u30D1\u30B9
Metadata.title=\u30E1\u30BF\u30C7\u30FC\u30BF
Metadata.toolTip=\u30D5\u30A1\u30A4\u30EB\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3057\u307E\u3059\u3002
Metadata.nodeText.nonFilePassedIn=\u51E6\u7406\u4E2D\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306F\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093

View File

@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.contentviewers;
import java.awt.Component;
import org.openide.nodes.Node;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContentViewer;
import org.sleuthkit.autopsy.datamodel.AbstractAbstractFileNode;
@ -122,7 +123,7 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer
public void setNode(Node node) {
AbstractFile file = node.getLookup().lookup(AbstractFile.class);
if (file == null) {
setText("Non-file passed in");
setText(NbBundle.getMessage(this.getClass(), "Metadata.nodeText.nonFilePassedIn"));
return;
}
@ -130,29 +131,29 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer
startTable(sb);
try {
addRow(sb, "Name", file.getUniquePath());
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.name"), file.getUniquePath());
} catch (TskCoreException ex) {
addRow(sb, "Name", file.getParentPath() + "/" + file.getName());
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.name"), file.getParentPath() + "/" + file.getName());
}
addRow(sb, "Size", new Long(file.getSize()).toString() );
addRow(sb, "File Name Allocation", file.getDirFlagAsString());
addRow(sb, "Metadata Allocation", file.getMetaFlagsAsString());
addRow(sb, "Modified", ContentUtils.getStringTime(file.getMtime(), file));
addRow(sb, "Accessed", ContentUtils.getStringTime(file.getAtime(), file));
addRow(sb, "Created", ContentUtils.getStringTime(file.getCrtime(), file));
addRow(sb, "Changed", ContentUtils.getStringTime(file.getCtime(), file));
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.size"), new Long(file.getSize()).toString() );
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.fileNameAlloc"), file.getDirFlagAsString());
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.metadataAlloc"), file.getMetaFlagsAsString());
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.modified"), ContentUtils.getStringTime(file.getMtime(), file));
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.accessed"), ContentUtils.getStringTime(file.getAtime(), file));
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.created"), ContentUtils.getStringTime(file.getCrtime(), file));
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.changed"), ContentUtils.getStringTime(file.getCtime(), file));
String md5 = file.getMd5Hash();
if (md5 == null) {
md5 = "Not calculated";
md5 = NbBundle.getMessage(this.getClass(), "Metadata.tableRowContent.md5notCalc");
}
addRow(sb, "MD5", md5);
addRow(sb, "Hash Lookup Results", file.getKnown().toString());
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.md5"), md5);
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.hashLookupResults"), file.getKnown().toString());
addRow(sb, "Internal ID", new Long(file.getId()).toString());
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.internalid"), new Long(file.getId()).toString());
if (file.getType().compareTo(TSK_DB_FILES_TYPE_ENUM.LOCAL) == 0) {
addRow(sb, "Local Path", file.getLocalAbsPath());
addRow(sb, NbBundle.getMessage(this.getClass(), "Metadata.tableRowTitle.localPath"), file.getLocalAbsPath());
}
endTable(sb);
@ -161,12 +162,12 @@ public class Metadata extends javax.swing.JPanel implements DataContentViewer
@Override
public String getTitle() {
return "Metadata";
return NbBundle.getMessage(this.getClass(), "Metadata.title");
}
@Override
public String getToolTip() {
return "Displays metadata about the file.";
return NbBundle.getMessage(this.getClass(), "Metadata.toolTip");
}
@Override

View File

@ -1 +1,3 @@
OpenIDE-Module-Name=CoreComponentInterfaces
CoreComponentControl.CTL_DirectoryTreeTopComponent=Directory Tree
CoreComponentControl.CTL_FavoritesTopComponent=Favorites

View File

@ -0,0 +1,3 @@
OpenIDE-Module-Name=\u4E3B\u8981\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u30A4\u30F3\u30BF\u30FC\u30D5\u30A7\u30A4\u30B9
CoreComponentControl.CTL_DirectoryTreeTopComponent=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306E\u30C4\u30EA\u30FC
CoreComponentControl.CTL_FavoritesTopComponent=\u304A\u6C17\u306B\u5165\u308A

View File

@ -22,6 +22,8 @@ import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.util.Lookup;
import org.openide.windows.Mode;
@ -37,6 +39,10 @@ import org.sleuthkit.autopsy.corecomponents.DataContentTopComponent;
public class CoreComponentControl {
private static final Logger logger = Logger.getLogger(CoreComponentControl.class.getName());
private static final String DIRECTORY_TREE = NbBundle.getMessage(CoreComponentControl.class,
"CoreComponentControl.CTL_DirectoryTreeTopComponent");
private static final String FAVORITES = NbBundle.getMessage(CoreComponentControl.class,
"CoreComponentControl.CTL_FavoritesTopComponent");
/**
* Opens all TopComponent windows that are needed ({@link DataExplorer}, {@link DataResult}, and
@ -83,6 +89,7 @@ public class CoreComponentControl {
Set<? extends Mode> modes = wm.getModes();
Iterator<? extends Mode> iter = wm.getModes().iterator();
TopComponent directoryTree = null;
TopComponent favorites = null;
String tcName = "";
@ -94,16 +101,13 @@ public class CoreComponentControl {
logger.log(Level.INFO, "tcName was null");
tcName = "";
}
switch (tcName) {
case "Directory Tree":
directoryTree = tc;
break;
case "Favorites":
favorites = tc;
break;
default:
tc.close();
break;
// switch requires constant strings, so converted to if/else.
if (DIRECTORY_TREE.equals(tcName)) {
directoryTree = tc;
} else if (FAVORITES.equals(tcName)) {
favorites = tc;
} else {
tc.close();
}
}
}

View File

@ -1,38 +1,15 @@
CTL_DataContentAction=DataContent
CTL_DataContentTopComponent=Data Content
CTL_NodeTableAction=NodeTable
CTL_NodeTableTopComponent=NodeTable Window
CTL_HexViewAction=HexView
CTL_HexViewTopComponent=Hex View
CTL_StringViewAction=StringView
CTL_StringViewTopComponent=String View
CTL_CustomAboutAction=About
OptionsCategory_Name_General=General
OptionsCategory_Keywords_General=general
HINT_DataContentTopComponent=This is a DataContent window
HINT_NodeTableTopComponent=This is a DataResult window
HINT_HexViewTopComponent=This is a HexView window
HINT_StringViewTopComponent=This is a StringView window
OpenIDE-Module-Name=CoreComponents
OutputViewPanel.prevPageButton.text=Previous Page
OutputViewPanel.totalPageLabel.text=100
OutputViewPanel.ofLabel.text=of
OutputViewPanel.currentPageLabel.text=1
OutputViewPanel.pageLabel.text=Page:
OutputViewPanel.filePathLabel.text=FilePath
OutputViewPanel.nextPageButton.text=Next Page
DataContentViewerHex.filePathLabel.text=FilePath
DataContentViewerHex.pageLabel.text=Page:
DataContentViewerHex.currentPageLabel.text=1
DataContentViewerHex.ofLabel.text=of
DataContentViewerHex.totalPageLabel.text=100
DataContentViewerHex.prevPageButton.text=
DataContentViewerHex.nextPageButton.text=
DataContentViewerString.totalPageLabel.text=100
DataContentViewerString.prevPageButton.text=
DataContentViewerString.nextPageButton.text=
DataContentViewerString.filePathLabel.text=FilePath
DataContentViewerString.pageLabel.text=Page:
DataContentViewerString.currentPageLabel.text=1
DataContentViewerString.ofLabel.text=of
DataContentViewerHex.pageLabel.text_1=Page:
DataContentViewerHex.currentPageLabel.text_1=1
DataContentViewerHex.ofLabel.text_1=of
@ -41,7 +18,6 @@ DataContentViewerString.pageLabel.text_1=Page:
DataContentViewerString.currentPageLabel.text_1=1
DataContentViewerString.ofLabel.text_1=of
DataContentViewerString.totalPageLabel.text_1=100
DataContentViewerPicture.picLabel.text=[Picture goes Here]
DataContentViewerHex.pageLabel2.text=Page
DataContentViewerString.pageLabel2.text=Page
@ -54,13 +30,13 @@ URL_ON_IMG=http://www.sleuthkit.org/
#SwingBrowser
LBL_SwingBrowserDescription=Simple HTML Browser based on a Swing component
MSG_cannot_create_browser=Cannot create Swing HTML Browser.
Services/Browsers/SwingBrowser.settings=Swing HTML Browser
#LBL_SwingBrowserDescription=Simple HTML Browser based on a Swing component
#MSG_cannot_create_browser=Cannot create Swing HTML Browser.
#Services/Browsers/SwingBrowser.settings=Swing HTML Browser
LBL_Close=Close
MNE_Close=C
ACSN_Close=Close
ACSD_Close=Close
#MNE_Close=C
#ACSN_Close=Close
#ACSD_Close=Close
DataContentViewerString.copyMenuItem.text=Copy
DataContentViewerHex.copyMenuItem.text=Copy
DataContentViewerString.selectAllMenuItem.text=Select All
@ -112,3 +88,55 @@ GeneralPanel.useGMTTimeRB.text=Use GMT
GeneralPanel.jLabel3.text=Hide known files in the Directory Listing when:
GeneralPanel.viewsHideKnownCB.text=Selecting under Views
GeneralPanel.dataSourcesHideKnownCB.text=Selecting under Data Sources
DataContentViewerArtifact.waitText=Retrieving and preparing data, please wait...
DataContentViewerArtifact.errorText=Error retrieving result
DataContentViewerArtifact.title=Results
DataContentViewerArtifact.toolTip=Displays Results associated with the file
DataContentViewerHex.goToPageTextField.msgDlg=Please enter a valid page number between 1 and {0}
DataContentViewerHex.goToPageTextField.err=Invalid page number
DataContentViewerHex.setDataView.errorText=(offset {0}-{1} could not be read)
DataContentViewerHex.title=Hex
DataContentViewerHex.toolTip=Displays the binary contents of a file as hexidecimal, with bytes that are displayable as ASCII characters on the right.
DataContentViewerMedia.title=Media
DataContentViewerMedia.toolTip=Displays supported multimedia files (images, videos, audio)
DataContentViewerString.goToPageTextField.msgDlg=Please enter a valid page number between 1 and {0}
DataContentViewerString.goToPageTextField.err=Invalid page number
DataContentViewerString.setDataView.errorText=(offset {0}-{1} could not be read)
DataContentViewerString.setDataView.errorNoText=(offset {0}-{1} contains no text)
DataContentViewerString.title=Strings
DataContentViewerString.toolTip=Displays ASCII and Unicode strings extracted from the file.
DataResultPanel.dummyNodeDisplayName=Please Wait...
DataResultViewerTable.firstColLbl=Name
DataResultViewerTable.illegalArgExc.noChildFromParent=Couldn't get a child Node from the given parent.
DataResultViewerTable.illegalArgExc.childWithoutPropertySet=Child Node doesn't have the regular PropertySet.
DataResultViewerTable.title=Table
DataResultViewerTable.dummyNodeDisplayName=Please Wait...
DataResultViewerThumbnail.title=Thumbnail
DataResultViewerThumbnail.goToPageTextField.msgDlg=Please enter a valid page number between 1 and {0}
DataResultViewerThumbnail.goToPageTextField.err=Invalid page number
DataResultViewerThumbnail.genThumbs=Generating Thumbnails...
DataResultViewerThumbnail.pageNumbers.curOfTotal={0} of {1}
FXVideoPanel.mediaPane.infoLabel=Playback of deleted videos is not supported, use an external player.
FXVideoPanel.progress.bufferingFile=Buffering {0}
FXVideoPanel.progressLabel.buffering=Buffering...
FXVideoPanel.media.unsupportedFormat=Unsupported Format.
GeneralOptionsPanelController.moduleErr=Module Error
GeneralOptionsPanelController.moduleErr.msg=A module caused an error listening to GeneralOptionsPanelController updates. See log to determine which module. Some data could be incomplete.
GstVideoPanel.cannotProcFile.err=The media player cannot process this file.
GstVideoPanel.initGst.gstException.msg=Error initializing gstreamer for audio/video viewing and frame extraction capabilities. Video and audio viewing will be disabled.
GstVideoPanel.initGst.otherException.msg=Error initializing gstreamer for audio/video viewing frame extraction capabilities. Video and audio viewing will be disabled.
GstVideoPanel.setupVideo.infoLabel.text=Playback of deleted videos is not supported, use an external player.
GstVideoPanel.exception.problemFile.msg=Cannot capture frames from this file ({0}).
GstVideoPanel.exception.problemPlay.msg=Problem with video file; problem when attempting to play while obtaining duration.
GstVideoPanel.exception.problemPause.msg=Problem with video file; problem when attempting to pause while obtaining duration.
GstVideoPanel.exception.problemPauseCaptFrame.msg=Problem with video file; problem when attempting to pause while capturing a frame.
GstVideoPanel.exception.problemPlayCaptFrame.msg=Problem with video file; problem when attempting to play while capturing a frame.
GstVideoPanel.exception.problemStopCaptFrame.msg=Problem with video file; problem when attempting to stop while capturing a frame.
GstVideoPanel.progress.buffering=Buffering...
GstVideoPanel.progressLabel.bufferingErr=Error buffering file
MediaViewImagePanel.imgFileTooLarge.msg=Could not load image file (too large)\: {0}
ProductInformationPanel.actVerboseLogging.text=Activate verbose logging
ProductInformationPanel.verbLoggingEnabled.text=Verbose logging enabled
ProductInformationPanel.propertyUnknown.text=unknown
ProductInformationPanel.getVMValue.text={0} {1}
TableFilterNode.displayName.text=Name

View File

@ -0,0 +1,115 @@
CTL_DataContentTopComponent=\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4
HINT_DataContentTopComponent=\u3053\u308C\u306F\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3059
HINT_NodeTableTopComponent=\u3053\u308C\u306F\u30C7\u30FC\u30BF\u7D50\u679C\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u3059
OpenIDE-Module-Name=\u4E3B\u8981\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8
DataContentViewerHex.pageLabel.text_1=\u30DA\u30FC\u30B8\uFF1A
DataContentViewerHex.currentPageLabel.text_1=1
DataContentViewerHex.totalPageLabel.text_1=100
DataContentViewerString.pageLabel.text_1=\u30DA\u30FC\u30B8\uFF1A
DataContentViewerString.currentPageLabel.text_1=1
DataContentViewerString.totalPageLabel.text_1=100
DataContentViewerHex.pageLabel2.text=\u30DA\u30FC\u30B8
DataContentViewerString.pageLabel2.text=\u30DA\u30FC\u30B8
Format_OperatingSystem_Value={0} \u30D0\u30FC\u30B8\u30E7\u30F3 {1} \u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3\u3000{2}
URL_ON_IMG=http\://www.sleuthkit.org/
LBL_Close=\u9589\u3058\u308B
DataContentViewerString.copyMenuItem.text=\u30B3\u30D4\u30FC
DataContentViewerHex.copyMenuItem.text=\u30B3\u30D4\u30FC
DataContentViewerString.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
DataContentViewerHex.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
DataContentViewerArtifact.totalPageLabel.text=100
DataContentViewerArtifact.pageLabel2.text=\u7D50\u679C
DataContentViewerArtifact.currentPageLabel.text=1
DataContentViewerArtifact.copyMenuItem.text=\u30B3\u30D4\u30FC
DataContentViewerArtifact.selectAllMenuItem.text=\u3059\u3079\u3066\u9078\u629E
DataContentViewerArtifact.pageLabel.text=\u7D50\u679C\uFF1A
AdvancedConfigurationDialog.applyButton.text=OK
DataContentViewerString.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u3078\u79FB\u52D5\uFF1A
DataContentViewerHex.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u3078\u79FB\u52D5\uFF1A
DataContentViewerString.languageLabel.text=\u30B9\u30AF\u30EA\u30D7\u30C8\uFF1A
DataContentViewerString.languageCombo.toolTipText=\u30D0\u30A4\u30CA\u30EA\u30B9\u30C8\u30EA\u30F3\u30B0\u306E\u51E6\u7406\uFF08\u62BD\u51FA\u304A\u3088\u3073\u30C7\u30B3\u30FC\u30C9\uFF09\u306E\u969B\u306B\u4F7F\u7528\u3059\u308B\u8A00\u8A9E
DataResultViewerThumbnail.pageLabel.text=\u30DA\u30FC\u30B8\uFF1A
DataResultViewerThumbnail.pagesLabel.text=\u30DA\u30FC\u30B8\uFF1A
DataResultViewerThumbnail.imagesLabel.text=\u30A4\u30E1\u30FC\u30B8\uFF1A
DataResultViewerThumbnail.imagesRangeLabel.text=-
DataResultViewerThumbnail.pageNumLabel.text=-
DataResultViewerThumbnail.goToPageLabel.text=\u4E0B\u8A18\u306E\u30DA\u30FC\u30B8\u306B\u79FB\u52D5\uFF1A
GeneralPanel.jLabel1.text=\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u3059\u308B\u969B\uFF1A
GeneralPanel.useBestViewerRB.text=\u6700\u3082\u5C02\u9580\u7684\u306A\u30D5\u30A1\u30A4\u30EB\u30D3\u30E5\u30FC\u30A2\u306B\u5909\u66F4
GeneralPanel.keepCurrentViewerRB.text=\u305D\u306E\u307E\u307E\u540C\u3058\u30D5\u30A1\u30A4\u30EB\u30D3\u30E5\u30FC\u30A2\u3092\u4F7F\u7528
GeneralPanel.useBestViewerRB.toolTipText=\u4F8B\u3048\u3070\u3001JPEG\u304C\u9078\u629E\u3055\u308C\u305F\u969B\u306B\u306FHEX\u304B\u3089\u30E1\u30C7\u30A3\u30A2\u306B\u5909\u66F4\u3059\u308B\u3002
GeneralPanel.keepCurrentViewerRB.toolTipText=\u4F8B\u3048\u3070\u3001JPEG\u304C\u9078\u629E\u3055\u308C\u305F\u969B\u306B\u305D\u306E\u307E\u307EHEX\u30D3\u30E5\u30FC\u3092\u4F7F\u7528\u3002
AdvancedConfigurationDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
DataResultPanel.directoryTablePath.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30D1\u30B9
DataResultPanel.numberMatchLabel.text=0
DataResultPanel.matchLabel.text=\u7D50\u679C
MediaViewVideoPanel.pauseButton.text=\u25BA
MediaViewVideoPanel.progressLabel.text=00\:00
MediaViewVideoPanel.infoLabel.text=\u60C5\u5831
GeneralPanel.jLabel2.text=\u30A2\u30A4\u30C6\u30E0\u3092\u8868\u793A\u3059\u308B\u969B\uFF1A
GeneralPanel.useLocalTimeRB.text=\u30ED\u30FC\u30AB\u30EB\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u4F7F\u7528
GeneralPanel.useGMTTimeRB.text=GMT\u3092\u4F7F\u7528
GeneralPanel.jLabel3.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u30EA\u30B9\u30C6\u30A3\u30F3\u30B0\u5185\u306E\u65E2\u77E5\u30D5\u30A1\u30A4\u30EB\u306F\u4E0B\u8A18\u306E\u5834\u5408\u306B\u96A0\u3059\uFF1A
GeneralPanel.viewsHideKnownCB.text=\u30D3\u30E5\u30FC\u304B\u3089\u9078\u629E\u3057\u3066\u3044\u308B\u5834\u5408
GeneralPanel.dataSourcesHideKnownCB.text=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u304B\u3089\u9078\u629E\u3057\u3066\u3044\u308B\u5834\u5408
DataContentViewerArtifact.waitText=\u30C7\u30FC\u30BF\u3092\u53D6\u8FBC\u307F\u304A\u3088\u3073\u6E96\u5099\u4E2D\u3002\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u4E0B\u3055\u3044\u2026
DataContentViewerArtifact.errorText=\u7D50\u679C\u306E\u53D6\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
DataContentViewerArtifact.title=\u7D50\u679C
DataContentViewerArtifact.toolTip=\u30D5\u30A1\u30A4\u30EB\u306B\u95A2\u9023\u3059\u308B\u7D50\u679C\u3092\u8868\u793A\u3057\u307E\u3059
DataContentViewerHex.goToPageTextField.msgDlg=\uFF11\u304B\u3089 {0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044
DataContentViewerHex.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570
DataContentViewerHex.setDataView.errorText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306F\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF09
DataContentViewerHex.title=HEX
DataContentViewerHex.toolTip=\u30D0\u30A4\u30CA\u30EA\u30B3\u30F3\u30C6\u30F3\u30C4\u3092HEX\u30D5\u30A1\u30A4\u30EB\u3068\u3057\u3066\u8868\u793A\u3057\u3001ASCII\u3068\u3057\u3066\u8868\u793A\u3067\u304D\u308B\u30D0\u30A4\u30C8\u306F\u53F3\u5074\u306B\u8868\u793A\u3057\u307E\u3059\u3002
DataContentViewerMedia.title=\u30E1\u30C7\u30A3\u30A2
DataContentViewerMedia.toolTip=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u30DE\u30EB\u30C1\u30E1\u30C7\u30A3\u30A2\u30D5\u30A1\u30A4\u30EB\uFF08\u753B\u50CF\u3001\u30D3\u30C7\u30AA\u3001\u30AA\u30FC\u30C7\u30A3\u30AA\uFF09\u3092\u8868\u793A\u3057\u307E\u3059\u3002
DataContentViewerString.goToPageTextField.msgDlg=\uFF11\u304B\u3089{0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044
DataContentViewerString.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570
DataContentViewerString.setDataView.errorText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306F\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF09\
DataContentViewerString.setDataView.errorNoText=\uFF08\u30AA\u30D5\u30BB\u30C3\u30C8{0}-{1}\u306B\u306F\u30C6\u30AD\u30B9\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\uFF09
DataContentViewerString.title=\u30B9\u30C8\u30EA\u30F3\u30B0
DataContentViewerString.toolTip=\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u62BD\u51FA\u3055\u308C\u305FASCII\u304A\u3088\u3073\u30E6\u30CB\u30B3\u30FC\u30C9\u306E\u30B9\u30C8\u30EA\u30F3\u30B0\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002
DataResultPanel.dummyNodeDisplayName=\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u2026
DataResultViewerTable.firstColLbl=\u540D\u79F0
DataResultViewerTable.illegalArgExc.noChildFromParent=\u6307\u5B9A\u3055\u308C\u305F\u30DA\u30A2\u30EC\u30F3\u30C8\u304B\u3089\u30C1\u30E3\u30A4\u30EB\u30C9\u30CE\u30FC\u30C9\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
DataResultViewerTable.illegalArgExc.childWithoutPropertySet=\u30C1\u30E3\u30A4\u30EB\u30C9\u30CE\u30FC\u30C9\u306F\u901A\u5E38\u306EPropertySet\u3092\u6301\u3063\u3066\u3044\u307E\u305B\u3093\u3002
DataResultViewerTable.title=\u30C6\u30FC\u30D6\u30EB
DataResultViewerTable.dummyNodeDisplayName=\u3057\u3070\u3089\u304F\u304A\u5F85\u3061\u304F\u3060\u3055\u3044\u2026
DataResultViewerThumbnail.title=\u30B5\u30E0\u30CD\u30A4\u30EB
DataResultViewerThumbnail.goToPageTextField.msgDlg=\uFF11\u304B\u3089{0}\u306E\u9593\u306E\u6709\u52B9\u306A\u30DA\u30FC\u30B8\u6570\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044
DataResultViewerThumbnail.goToPageTextField.err=\u7121\u52B9\u306A\u30DA\u30FC\u30B8\u6570
DataResultViewerThumbnail.genThumbs=\u30B5\u30E0\u30CD\u30A4\u30EB\u3092\u4F5C\u6210\u4E2D\u2026
DataResultViewerThumbnail.pageNumbers.curOfTotal={0}\uFF0F{1}\u3064\u76EE
FXVideoPanel.mediaPane.infoLabel=\u524A\u9664\u3055\u308C\u305F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5916\u90E8\u30D7\u30EC\u30FC\u30E4\u30FC\u3092\u4F7F\u7528\u3057\u3066\u4E0B\u3055\u3044\u3002
FXVideoPanel.progress.bufferingFile={0}\u3092\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0
FXVideoPanel.progressLabel.buffering=\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u4E2D\u2026
FXVideoPanel.media.unsupportedFormat=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u3059\u3002
GeneralOptionsPanelController.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
GeneralOptionsPanelController.moduleErr.msg=GeneralOptionsPanelController\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3092\u78BA\u8A8D\u4E2D\u306B\u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u30A8\u30E9\u30FC\u3092\u8D77\u3053\u3057\u307E\u3057\u305F\u3002\u3069\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u304B\u30ED\u30B0\u3067\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u304C\u4E0D\u5B8C\u5168\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
GstVideoPanel.cannotProcFile.err=\u30E1\u30C7\u30A4\u30A2\u30D7\u30EC\u30FC\u30E4\u30FC\u304C\u3053\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u51E6\u7406\u3067\u304D\u307E\u305B\u3093\u3002
GstVideoPanel.initGst.gstException.msg=\u30AA\u30FC\u30C7\u30A3\u30AA\uFF0F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u304A\u3088\u3073\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u306B\u4F7F\u7528\u3059\u308BGStreamer\u306E\u521D\u671F\u5316\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D3\u30C7\u30AA\u304A\u3088\u3073\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u304C\u7121\u52B9\u5316\u3055\u308C\u307E\u3059\u3002
GstVideoPanel.initGst.otherException.msg=\u30AA\u30FC\u30C7\u30A3\u30AA\uFF0F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u304A\u3088\u3073\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u306B\u4F7F\u7528\u3059\u308BGStreamer\u306E\u521D\u671F\u5316\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D3\u30C7\u30AA\u304A\u3088\u3073\u30AA\u30FC\u30C7\u30A3\u30AA\u518D\u751F\u304C\u7121\u52B9\u5316\u3055\u308C\u307E\u3059\u3002
GstVideoPanel.setupVideo.infoLabel.text=\u524A\u9664\u3055\u308C\u305F\u30D3\u30C7\u30AA\u306E\u518D\u751F\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u5916\u90E8\u30D7\u30EC\u30FC\u30E4\u30FC\u3092\u4F7F\u7528\u3057\u3066\u4E0B\u3055\u3044\u3002
GstVideoPanel.exception.problemFile.msg=\u30D5\u30A1\u30A4\u30EB({0})\u304B\u3089\u306F\u30D5\u30EC\u30FC\u30E0\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
GstVideoPanel.exception.problemPlay.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1B\u9577\u3055\u3092\u78BA\u8A8D\u4E2D\u306B\u518D\u751F\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
LBL_Description=<div style\="font-size\: 12pt; font-family\: Verdana, 'Verdana CE', Arial, 'Arial CE', 'Lucida Grande CE', lucida, 'Helvetica CE', sans-serif;">\n <b>\u88FD\u54C1\u30D0\u30FC\u30B8\u30E7\u30F3\uFF1A</b> {0} ({9}) <br><b>Sleuth Kit\u30D0\u30FC\u30B8\u30E7\u30F3\uFF1A</b> {7} <br><b>Netbeans RCP\u30D3\u30EB\u30C9\:</b> {8} <br> <b>Java\:</b> {1}; {2}<br> <b>\u30B7\u30B9\u30C6\u30E0\uFF1A</b> {3}; {4}; {5}<br><b>\u30E6\u30FC\u30B6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D</b> {6}</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&trade;\u306FSleuth Kit&trade;\u3084\u305D\u306E\u4ED6\u30C4\u30FC\u30EB\u3092\u57FA\u306B\u3057\u305F\u30C7\u30B8\u30BF\u30EB\u30FB\u30D5\u30A9\u30EC\u30F3\u30B8\u30C3\u30AF\u30FB\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u3059\u3002<br> <br>Copyright &copy; 2003-2013. \u8A73\u7D30\u306F\u4E0B\u8A18\u3092\u3054\u89A7\u4E0B\u3055\u3044\u3002 <a style\="color\: \#1E2A60;" href\="http\://www.sleuthkit.org">http\://www.sleuthkit.org</a>. </div>
GstVideoPanel.exception.problemPause.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u9577\u3055\u3092\u78BA\u8A8D\u4E2D\u306B\u4E00\u6642\u505C\u6B62\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
GstVideoPanel.exception.problemPauseCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u4E00\u6642\u505C\u6B62\u3092\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
GstVideoPanel.exception.problemPlayCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u518D\u751F\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
GstVideoPanel.exception.problemStopCaptFrame.msg=\u30D3\u30C7\u30AA\u30D5\u30A1\u30A4\u30EB\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30D5\u30EC\u30FC\u30E0\u306E\u62BD\u51FA\u4E2D\u306B\u505C\u6B62\u3057\u3088\u3046\u3068\u3057\u305F\u969B\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
GstVideoPanel.progress.buffering=\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u4E2D\u2026
GstVideoPanel.progressLabel.bufferingErr=\u30D5\u30A1\u30A4\u30EB\u306E\u30D0\u30C3\u30D5\u30A1\u30EA\u30F3\u30B0\u30A8\u30E9\u30FC
MediaViewImagePanel.imgFileTooLarge.msg=\u753B\u50CF\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u5927\u304D\u3059\u304E\u3067\u3059\uFF09\uFF1A {0}
ProductInformationPanel.actVerboseLogging.text=Verbose\u30ED\u30B0\u3092\u6709\u52B9\u5316
ProductInformationPanel.verbLoggingEnabled.text=Verbose\u30ED\u30B0\u304C\u6709\u52B9\u3067\u3059
ProductInformationPanel.propertyUnknown.text=\u4E0D\u660E
ProductInformationPanel.getVMValue.text={0} {1}
TableFilterNode.displayName.text=\u540D\u79F0
CTL_DataContentAction=\u30C7\u30FC\u30BF\u30B3\u30F3\u30C6\u30F3\u30C4
OptionsCategory_Name_General=\u4E00\u822C
OptionsCategory_Keywords_General=\u4E00\u822C
CTL_CustomAboutAction=Autopsy\u306B\u3064\u3044\u3066
DataContentViewerHex.ofLabel.text_1=of
DataContentViewerString.ofLabel.text_1=of
DataContentViewerArtifact.ofLabel.text=of

View File

@ -37,7 +37,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
ProductInformationPanel pip = new ProductInformationPanel();
DialogDescriptor descriptor = new DialogDescriptor(
pip,
NbBundle.getMessage(AboutAction.class, "About_title"),
NbBundle.getMessage(CustomAboutAction.class, "CTL_CustomAboutAction"),
true,
new Object[0],
null,

View File

@ -27,6 +27,8 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.JMenuItem;
import javax.swing.JTextPane;
@ -53,8 +55,8 @@ import org.sleuthkit.datamodel.TskCoreException;
public class DataContentViewerArtifact extends javax.swing.JPanel implements DataContentViewer{
private final static Logger logger = Logger.getLogger(DataContentViewerArtifact.class.getName());
private final static String WAIT_TEXT = "Retrieving and preparing data, please wait...";
private final static String ERROR_TEXT = "Error retrieving result";
private final static String WAIT_TEXT = NbBundle.getMessage(DataContentViewerArtifact.class, "DataContentViewerArtifact.waitText");
private final static String ERROR_TEXT = NbBundle.getMessage(DataContentViewerArtifact.class, "DataContentViewerArtifact.errorText");
private Node currentNode; // @@@ Remove this when the redundant setNode() calls problem is fixed.
private int currentPage = 1;
private final Object lock = new Object();
@ -288,12 +290,12 @@ public class DataContentViewerArtifact extends javax.swing.JPanel implements Dat
@Override
public String getTitle() {
return "Results";
return NbBundle.getMessage(this.getClass(), "DataContentViewerArtifact.title");
}
@Override
public String getToolTip() {
return "Displays Results associated with the file";
return NbBundle.getMessage(this.getClass(), "DataContentViewerArtifact.toolTip");
}
@Override

View File

@ -23,6 +23,8 @@ import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
@ -257,8 +259,13 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont
pageNumber = totalPages + 1;
}
if (pageNumber > totalPages || pageNumber < 1) {
JOptionPane.showMessageDialog(this, "Please enter a valid page number between 1 and " + totalPages,
"Invalid page number", JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this,
NbBundle.getMessage(this.getClass(),
"DataContentViewerHex.goToPageTextField.msgDlg",
totalPages),
NbBundle.getMessage(this.getClass(),
"DataContentViewerHex.goToPageTextField.err"),
JOptionPane.WARNING_MESSAGE);
return;
}
setDataView(pageNumber);
@ -309,16 +316,16 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont
try {
bytesRead = dataSource.read(data, offset, pageLength); // read the data
} catch (TskException ex) {
errorText = "(offset " + offset + "-" + (offset + pageLength)
+ " could not be read)";
errorText = NbBundle.getMessage(this.getClass(), "DataContentViewerHex.setDataView.errorText", offset,
offset + pageLength);
logger.log(Level.WARNING, "Error while trying to show the hex content.", ex);
}
}
// set the data on the bottom and show it
if (bytesRead <= 0) {
errorText = "(offset " + offset + "-" + (offset + pageLength)
+ " could not be read)";
errorText = NbBundle.getMessage(this.getClass(), "DataContentViewerHex.setDataView.errorText", offset,
offset + pageLength);
}
@ -378,13 +385,12 @@ public class DataContentViewerHex extends javax.swing.JPanel implements DataCont
@Override
public String getTitle() {
return "Hex";
return NbBundle.getMessage(this.getClass(), "DataContentViewerHex.title");
}
@Override
public String getToolTip() {
return "Displays the binary contents of a file as hexidecimal, with "
+ "bytes that are displayable as ASCII characters on the right.";
return NbBundle.getMessage(this.getClass(), "DataContentViewerHex.toolTip");
}
@Override

View File

@ -24,6 +24,8 @@ import java.awt.Dimension;
import java.util.Arrays;
import java.util.logging.Level;
import javax.imageio.ImageIO;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.nodes.Node;
import org.openide.util.lookup.ServiceProvider;
@ -164,12 +166,12 @@ public class DataContentViewerMedia extends javax.swing.JPanel implements DataCo
@Override
public String getTitle() {
return "Media";
return NbBundle.getMessage(this.getClass(), "DataContentViewerMedia.title");
}
@Override
public String getToolTip() {
return "Displays supported multimedia files (images, videos, audio)";
return NbBundle.getMessage(this.getClass(), "DataContentViewerMedia.toolTip");
}
@Override

View File

@ -24,6 +24,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
@ -286,8 +288,13 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
pageNumber = maxPage + 1;
}
if (pageNumber > maxPage || pageNumber < 1) {
JOptionPane.showMessageDialog(this, "Please enter a valid page number between 1 and " + maxPage,
"Invalid page number", JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this,
NbBundle.getMessage(this.getClass(),
"DataContentViewerString.goToPageTextField.msgDlg",
maxPage),
NbBundle.getMessage(this.getClass(),
"DataContentViewerString.goToPageTextField.err"),
JOptionPane.WARNING_MESSAGE);
return;
}
currentOffset = (pageNumber - 1) * pageLength;
@ -346,8 +353,9 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
try {
bytesRead = dataSource.read(data, offset, pageLength); // read the data
} catch (TskException ex) {
text = "(offset " + currentOffset + "-" + (currentOffset + pageLength)
+ " could not be read)";
text = NbBundle.getMessage(this.getClass(),
"DataContentViewerString.setDataView.errorText", currentOffset,
currentOffset + pageLength);
logger.log(Level.WARNING, "Error while trying to show the String content.", ex);
}
}
@ -359,12 +367,13 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
StringExtractResult res = stringExtract.extract(data, bytesRead, 0);
text = res.getText();
if (text.trim().isEmpty()) {
text = "(offset " + currentOffset + "-" + (currentOffset + pageLength)
+ " contains no text)";
text = NbBundle.getMessage(this.getClass(),
"DataContentViewerString.setDataView.errorNoText", currentOffset,
currentOffset + pageLength);
}
} else {
text = "(offset " + currentOffset + "-" + (currentOffset + pageLength)
+ " could not be read)";
text = NbBundle.getMessage(this.getClass(), "DataContentViewerString.setDataView.errorText", currentOffset,
currentOffset + pageLength);
}
// disable or enable the next button
@ -459,12 +468,12 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
@Override
public String getTitle() {
return "Strings";
return NbBundle.getMessage(this.getClass(), "DataContentViewerString.title");
}
@Override
public String getToolTip() {
return "Displays ASCII and Unicode strings extracted from the file.";
return NbBundle.getMessage(this.getClass(), "DataContentViewerString.toolTip");
}
@Override

View File

@ -36,6 +36,7 @@ import org.openide.nodes.NodeListener;
import org.openide.nodes.NodeMemberEvent;
import org.openide.nodes.NodeReorderEvent;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContent;
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResult;
@ -67,8 +68,9 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
private final DummyNodeListener dummyNodeListener = new DummyNodeListener();
private static final Logger logger = Logger.getLogger(DataResultPanel.class.getName() );
private boolean listeningToTabbedPane = false;
private boolean listeningToTabbedPane = false;
private static final String DUMMY_NODE_DISPLAY_NAME = NbBundle.getMessage(DataResultPanel.class,
"DataResultPanel.dummyNodeDisplayName");
/**
* Creates new DataResultPanel
* Default constructor, needed mostly for the palette/UI builder
@ -619,7 +621,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
}
private class DummyNodeListener implements NodeListener {
private static final String DUMMY_NODE_DISPLAY_NAME = "Please Wait...";
private volatile boolean load = true;
public void reset() {

View File

@ -29,6 +29,8 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
@ -57,10 +59,11 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
//@ServiceProvider(service = DataResultViewer.class)
public class DataResultViewerTable extends AbstractDataResultViewer {
private String firstColumnLabel = "Name";
private String firstColumnLabel = NbBundle.getMessage(DataResultViewerTable.class, "DataResultViewerTable.firstColLbl");
private Set<Property> propertiesAcc = new LinkedHashSet<>();
private static final Logger logger = Logger.getLogger(DataResultViewerTable.class.getName());
private final DummyNodeListener dummyNodeListener = new DummyNodeListener();
private static final String DUMMY_NODE_DISPLAY_NAME = NbBundle.getMessage(DataResultViewerTable.class, "DataResultViewerTable.dummyNodeDisplayName");
/**
* Creates a DataResultViewerTable object that is compatible with node
@ -154,7 +157,8 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
Node firstChild = parent.getChildren().getNodeAt(0);
if (firstChild == null) {
throw new IllegalArgumentException("Couldn't get a child Node from the given parent.");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "DataResultViewerTable.illegalArgExc.noChildFromParent"));
} else {
for (PropertySet ps : firstChild.getPropertySets()) {
if (ps.getName().equals(Sheet.PROPERTIES)) {
@ -162,7 +166,8 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
}
}
throw new IllegalArgumentException("Child Node doesn't have the regular PropertySet.");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "DataResultViewerTable.illegalArgExc.childWithoutPropertySet"));
}
}
@ -180,7 +185,8 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
Property[] properties = null;
if (firstChild == null) {
throw new IllegalArgumentException("Couldn't get a child Node from the given parent.");
throw new IllegalArgumentException(
NbBundle.getMessage(this.getClass(), "DataResultViewerTable.illegalArgExc.noChildFromParent"));
} else {
Set<Property> allProperties = new LinkedHashSet<Property>();
while (firstChild != null) {
@ -410,7 +416,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
@Override
public String getTitle() {
return "Table";
return NbBundle.getMessage(this.getClass(), "DataResultViewerTable.title");
}
@Override
@ -481,7 +487,6 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
}
private class DummyNodeListener implements NodeListener {
private static final String DUMMY_NODE_DISPLAY_NAME = "Please Wait...";
private volatile boolean load = true;
public void reset() {

View File

@ -27,6 +27,8 @@ import java.util.Arrays;
import java.util.concurrent.ExecutionException;
import java.util.logging.Level;
import javax.swing.JOptionPane;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.ListSelectionModel;
import javax.swing.SwingWorker;
@ -331,7 +333,7 @@ import org.sleuthkit.datamodel.TskCoreException;
@Override
public String getTitle() {
return "Thumbnail";
return NbBundle.getMessage(this.getClass(), "DataResultViewerThumbnail.title");
}
@Override
@ -384,8 +386,13 @@ import org.sleuthkit.datamodel.TskCoreException;
}
if (newPage > totalPages || newPage < 1) {
JOptionPane.showMessageDialog(this, "Please enter a valid page number between 1 and " + totalPages,
"Invalid page number", JOptionPane.WARNING_MESSAGE);
JOptionPane.showMessageDialog(this,
NbBundle.getMessage(this.getClass(),
"DataResultViewerThumbnail.goToPageTextField.msgDlg",
totalPages),
NbBundle.getMessage(this.getClass(),
"DataResultViewerThumbnail.goToPageTextField.err"),
JOptionPane.WARNING_MESSAGE);
return;
}
@ -411,7 +418,8 @@ import org.sleuthkit.datamodel.TskCoreException;
pagePrevButton.setEnabled(false);
pageNextButton.setEnabled(false);
goToPageField.setEnabled(false);
progress = ProgressHandleFactory.createHandle("Generating Thumbnails...");
progress = ProgressHandleFactory.createHandle(
NbBundle.getMessage(this.getClass(), "DataResultViewerThumbnail.genThumbs"));
progress.start();
progress.switchToIndeterminate();
Node root = em.getRootContext();
@ -449,7 +457,9 @@ import org.sleuthkit.datamodel.TskCoreException;
pageNumLabel.setText("");
imagesRangeLabel.setText("");
} else {
pageNumLabel.setText(Integer.toString(curPage) + " of " + Integer.toString(totalPages));
pageNumLabel.setText(
NbBundle.getMessage(this.getClass(), "DataResultViewerThumbnail.pageNumbers.curOfTotal",
Integer.toString(curPage), Integer.toString(totalPages)));
final int imagesFrom = (curPage - 1) * ThumbnailViewChildren.IMAGES_PER_PAGE + 1;
final int imagesTo = curPageImages + (curPage - 1) * ThumbnailViewChildren.IMAGES_PER_PAGE;
imagesRangeLabel.setText(imagesFrom + "-" + imagesTo);

View File

@ -62,6 +62,7 @@ import javax.swing.SwingWorker;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory;
import org.openide.util.Cancellable;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.openide.util.lookup.ServiceProviders;
import org.sleuthkit.autopsy.casemodule.Case;
@ -139,7 +140,7 @@ public class FXVideoPanel extends MediaViewVideoPanel {
currentFile = file;
final boolean deleted = file.isDirNameFlagSet(TskData.TSK_FS_NAME_FLAG_ENUM.UNALLOC);
if (deleted) {
mediaPane.setInfoLabelText("Playback of deleted videos is not supported, use an external player.");
mediaPane.setInfoLabelText(NbBundle.getMessage(this.getClass(), "FXVideoPanel.mediaPane.infoLabel"));
removeAll();
return;
}
@ -242,13 +243,15 @@ public class FXVideoPanel extends MediaViewVideoPanel {
@Override
protected Object doInBackground() throws Exception {
success = false;
progress = ProgressHandleFactory.createHandle("Buffering " + sFile.getName(), new Cancellable() {
progress = ProgressHandleFactory.createHandle(
NbBundle.getMessage(this.getClass(), "FXVideoPanel.progress.bufferingFile", sFile.getName()),
new Cancellable() {
@Override
public boolean cancel() {
return ExtractMedia.this.cancel(true);
}
});
mediaPane.setProgressLabelText("Buffering... ");
mediaPane.setProgressLabelText(NbBundle.getMessage(this.getClass(), "FXVideoPanel.progressLabel.buffering"));
progress.start();
progress.switchToDeterminate(100);
try {
@ -394,7 +397,7 @@ public class FXVideoPanel extends MediaViewVideoPanel {
mediaView.setMediaPlayer(mediaPlayer);
} catch (MediaException ex) {
this.setProgressLabelText("");
this.setInfoLabelText("Unsupported Format.");
this.setInfoLabelText(NbBundle.getMessage(this.getClass(), "FXVideoPanel.media.unsupportedFormat"));
}
}

View File

@ -10,6 +10,7 @@ import javax.swing.JComponent;
import org.netbeans.spi.options.OptionsPanelController;
import org.openide.util.HelpCtx;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
import java.util.logging.Level;
import org.sleuthkit.autopsy.coreutils.Logger;
@ -20,7 +21,8 @@ iconBase = "org/sleuthkit/autopsy/corecomponents/general-options.png",
position = 1,
keywords = "#OptionsCategory_Keywords_General",
keywordsCategory = "General")
@org.openide.util.NbBundle.Messages({"OptionsCategory_Name_General=General", "OptionsCategory_Keywords_General=general"})
// moved to Bundle
//@org.openide.util.NbBundle.Messages({"OptionsCategory_Name_General=General", "OptionsCategory_Keywords_General=general"})
public final class GeneralOptionsPanelController extends OptionsPanelController {
private GeneralPanel panel;
@ -81,7 +83,10 @@ public final class GeneralOptionsPanelController extends OptionsPanelController
}
catch (Exception e) {
logger.log(Level.SEVERE, "GeneralOptionsPanelController listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to GeneralOptionsPanelController updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(
NbBundle.getMessage(this.getClass(), "GeneralOptionsPanelController.moduleErr"),
NbBundle.getMessage(this.getClass(), "GeneralOptionsPanelController.moduleErr.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}
@ -90,7 +95,10 @@ public final class GeneralOptionsPanelController extends OptionsPanelController
}
catch (Exception e) {
logger.log(Level.SEVERE, "GeneralOptionsPanelController listener threw exception", e);
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to GeneralOptionsPanelController updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
MessageNotifyUtil.Notify.show(
NbBundle.getMessage(this.getClass(), "GeneralOptionsPanelController.moduleErr"),
NbBundle.getMessage(this.getClass(), "GeneralOptionsPanelController.moduleErr.msg"),
MessageNotifyUtil.MessageType.ERROR);
}
}
}

View File

@ -148,6 +148,9 @@
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="GeneralPanel.useGMTTimeRB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useGMTTimeRBActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>

View File

@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.corecomponents;
import java.util.prefs.Preferences;
import org.openide.util.NbPreferences;
import org.sleuthkit.autopsy.datamodel.ContentUtils;
final class GeneralPanel extends javax.swing.JPanel {
@ -33,6 +34,7 @@ final class GeneralPanel extends javax.swing.JPanel {
GeneralPanel(GeneralOptionsPanelController controller) {
this.controller = controller;
initComponents();
ContentUtils.setDisplayInLocalTime(useLocalTimeRB.isSelected());
// TODO listen to changes in form fields and call controller.changed()
}
@ -80,6 +82,11 @@ final class GeneralPanel extends javax.swing.JPanel {
buttonGroup3.add(useGMTTimeRB);
org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.useGMTTimeRB.text")); // NOI18N
useGMTTimeRB.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
useGMTTimeRBActionPerformed(evt);
}
});
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.jLabel3.text")); // NOI18N
@ -144,6 +151,10 @@ final class GeneralPanel extends javax.swing.JPanel {
// TODO add your handling code here:
}//GEN-LAST:event_useBestViewerRBActionPerformed
private void useGMTTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useGMTTimeRBActionPerformed
ContentUtils.setDisplayInLocalTime(useLocalTimeRB.isSelected());
}//GEN-LAST:event_useGMTTimeRBActionPerformed
void load() {
boolean keepPreferredViewer = prefs.getBoolean(KEEP_PREFERRED_VIEWER, false);
keepCurrentViewerRB.setSelected(keepPreferredViewer);

View File

@ -54,6 +54,7 @@ import org.netbeans.api.progress.ProgressHandleFactory;
import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
import org.openide.util.Cancellable;
import org.openide.util.NbBundle;
import org.openide.util.lookup.ServiceProvider;
import org.openide.util.lookup.ServiceProviders;
import org.sleuthkit.autopsy.casemodule.Case;
@ -76,7 +77,7 @@ public class GstVideoPanel extends MediaViewVideoPanel {
private boolean gstInited;
private static final long MIN_FRAME_INTERVAL_MILLIS = 500;
private static final long FRAME_CAPTURE_TIMEOUT_MILLIS = 1000;
private static final String MEDIA_PLAYER_ERROR_STRING = "The media player cannot process this file.";
private static final String MEDIA_PLAYER_ERROR_STRING = NbBundle.getMessage(GstVideoPanel.class, "GstVideoPanel.cannotProcFile.err");
//playback
private long durationMillis = 0;
private VideoProgressWorker videoProgressWorker;
@ -166,15 +167,15 @@ public class GstVideoPanel extends MediaViewVideoPanel {
} catch (GstException e) {
gstInited = false;
logger.log(Level.SEVERE, "Error initializing gstreamer for audio/video viewing and frame extraction capabilities", e);
MessageNotifyUtil.Notify.error("Error initializing gstreamer for audio/video viewing and frame extraction capabilities. "
+ " Video and audio viewing will be disabled. ",
MessageNotifyUtil.Notify.error(
NbBundle.getMessage(this.getClass(), "GstVideoPanel.initGst.gstException.msg"),
e.getMessage());
return false;
} catch (UnsatisfiedLinkError | NoClassDefFoundError | Exception e) {
gstInited = false;
logger.log(Level.SEVERE, "Error initializing gstreamer for audio/video viewing and extraction capabilities", e);
MessageNotifyUtil.Notify.error("Error initializing gstreamer for audio/video viewing frame extraction capabilities. "
+ " Video and audio viewing will be disabled. ",
MessageNotifyUtil.Notify.error(
NbBundle.getMessage(this.getClass(), "GstVideoPanel.initGst.otherException.msg"),
e.getMessage());
return false;
}
@ -189,7 +190,7 @@ public class GstVideoPanel extends MediaViewVideoPanel {
currentFile = file;
final boolean deleted = file.isDirNameFlagSet(TskData.TSK_FS_NAME_FLAG_ENUM.UNALLOC);
if (deleted) {
infoLabel.setText("Playback of deleted videos is not supported, use an external player.");
infoLabel.setText(NbBundle.getMessage(this.getClass(), "GstVideoPanel.setupVideo.infoLabel.text"));
videoPanel.removeAll();
pauseButton.setEnabled(false);
progressSlider.setEnabled(false);
@ -318,7 +319,8 @@ public class GstVideoPanel extends MediaViewVideoPanel {
// throw exception if this file is known to be problematic
if (badVideoFiles.contains(file.getName())) {
throw new Exception("Cannot capture frames from this file (" + file.getName() + ").");
throw new Exception(
NbBundle.getMessage(this.getClass(), "GstVideoPanel.exception.problemFile.msg", file.getName()));
}
// set up a PlayBin2 object
@ -332,13 +334,13 @@ public class GstVideoPanel extends MediaViewVideoPanel {
if (ret == StateChangeReturn.FAILURE) {
// add this file to the set of known bad ones
badVideoFiles.add(file.getName());
throw new Exception("Problem with video file; problem when attempting to play while obtaining duration.");
throw new Exception(NbBundle.getMessage(this.getClass(), "GstVideoPanel.exception.problemPlay.msg"));
}
ret = playbin.pause();
if (ret == StateChangeReturn.FAILURE) {
// add this file to the set of known bad ones
badVideoFiles.add(file.getName());
throw new Exception("Problem with video file; problem when attempting to pause while obtaining duration.");
throw new Exception(NbBundle.getMessage(this.getClass(), "GstVideoPanel.exception.problemPause.msg"));
}
playbin.getState();
@ -364,7 +366,8 @@ public class GstVideoPanel extends MediaViewVideoPanel {
if (ret == StateChangeReturn.FAILURE) {
// add this file to the set of known bad ones
badVideoFiles.add(file.getName());
throw new Exception("Problem with video file; problem when attempting to pause while capturing a frame.");
throw new Exception(
NbBundle.getMessage(this.getClass(), "GstVideoPanel.exception.problemPauseCaptFrame.msg"));
}
playbin.getState();
@ -377,7 +380,8 @@ public class GstVideoPanel extends MediaViewVideoPanel {
if (ret == StateChangeReturn.FAILURE) {
// add this file to the set of known bad ones
badVideoFiles.add(file.getName());
throw new Exception("Problem with video file; problem when attempting to play while capturing a frame.");
throw new Exception(
NbBundle.getMessage(this.getClass(), "GstVideoPanel.exception.problemPlayCaptFrame.msg"));
}
// wait for FrameCaptureRGBListener to finish
@ -394,7 +398,8 @@ public class GstVideoPanel extends MediaViewVideoPanel {
if (ret == StateChangeReturn.FAILURE) {
// add this file to the set of known bad ones
badVideoFiles.add(file.getName());
throw new Exception("Problem with video file; problem when attempting to stop while capturing a frame.");
throw new Exception(
NbBundle.getMessage(this.getClass(), "GstVideoPanel.exception.problemStopCaptFrame.msg"));
}
if (image == null) {
@ -705,7 +710,7 @@ public class GstVideoPanel extends MediaViewVideoPanel {
return ExtractMedia.this.cancel(true);
}
});
progressLabel.setText("Buffering... ");
progressLabel.setText(NbBundle.getMessage(this.getClass(), "GstVideoPanel.progress.buffering"));
progress.start();
progress.switchToDeterminate(100);
try {
@ -738,7 +743,7 @@ public class GstVideoPanel extends MediaViewVideoPanel {
void playMedia() {
if (jFile == null || !jFile.exists()) {
progressLabel.setText("Error buffering file");
progressLabel.setText(NbBundle.getMessage(this.getClass(), "GstVideoPanel.progressLabel.bufferingErr"));
return;
}
ClockTime dur = null;

View File

@ -33,6 +33,8 @@ import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javax.imageio.ImageIO;
import javax.swing.SwingUtilities;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.corelibs.ScalrWrapper;
import org.sleuthkit.autopsy.coreutils.Logger;
@ -160,7 +162,9 @@ import org.sleuthkit.datamodel.ReadContentInputStream;
return;
} catch (OutOfMemoryError ex) {
logger.log(Level.WARNING, "Could not load image file into media view (too large): " + fileName, ex);
MessageNotifyUtil.Notify.warn("Could not load image file (too large): " + file.getName(), ex.getMessage());
MessageNotifyUtil.Notify.warn(
NbBundle.getMessage(this.getClass(), "MediaViewImagePanel.imgFileTooLarge.msg", file.getName()),
ex.getMessage());
return;
} finally {
try {

View File

@ -109,7 +109,8 @@ public class ProductInformationPanel extends JPanel implements HyperlinkListener
jScrollPane2.setViewportView(description);
verboseLoggingButton.setBackground(new java.awt.Color(255, 255, 255));
verboseLoggingButton.setText("Activate verbose logging");
verboseLoggingButton.setText(
NbBundle.getMessage(this.getClass(), "ProductInformationPanel.actVerboseLogging.text"));
verboseLoggingButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
activateVerboseLogging(evt);
@ -196,7 +197,8 @@ private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:eve
private void disableVerboseLoggingButton() {
this.verboseLoggingButton.setEnabled(false);
this.verboseLoggingButton.setText("Verbose logging enabled");
this.verboseLoggingButton.setText(
NbBundle.getMessage(this.getClass(), "ProductInformationPanel.verbLoggingEnabled.text"));
}
private void closeDialog() {
@ -225,17 +227,30 @@ private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:eve
private static String getOperatingSystemValue() {
return NbBundle.getMessage(ProductInformationPanel.class, "Format_OperatingSystem_Value",
System.getProperty("os.name", "unknown"),
System.getProperty("os.version", "unknown"),
System.getProperty("os.arch", "unknown"));
System.getProperty("os.name",
NbBundle.getMessage(ProductInformationPanel.class,
"ProductInformationPanel.propertyUnknown.text")),
System.getProperty("os.version",
NbBundle.getMessage(ProductInformationPanel.class,
"ProductInformationPanel.propertyUnknown.text")),
System.getProperty("os.arch",
NbBundle.getMessage(ProductInformationPanel.class,
"ProductInformationPanel.propertyUnknown.text")));
}
private static String getJavaValue() {
return System.getProperty("java.version", "unknown");
return System.getProperty("java.version",
NbBundle.getMessage(ProductInformationPanel.class,
"ProductInformationPanel.propertyUnknown.text"));
}
private static String getVMValue() {
return System.getProperty("java.vm.name", "unknown") + " " + System.getProperty("java.vm.version", "");
return NbBundle.getMessage(ProductInformationPanel.class,
"ProductInformationPanel.getVMValue.text",
System.getProperty("java.vm.name",
NbBundle.getMessage(ProductInformationPanel.class,
"ProductInformationPanel.propertyUnknown.text")),
System.getProperty("java.vm.version", ""));
}
private static String getSystemLocaleValue() {
@ -248,7 +263,8 @@ private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:eve
}
private static String getEncodingValue() {
return System.getProperty("file.encoding", "unknown");
return System.getProperty("file.encoding",
NbBundle.getMessage(ProductInformationPanel.class, "ProductInformationPanel.propertyUnknown.text"));
}
public void setCopyright(String text) {

View File

@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.corecomponents;
import org.openide.nodes.FilterNode;
import org.openide.nodes.Node;
import org.openide.util.NbBundle;
/**
* This class is used to filter the nodes that we want to show on the "TreeTableView".
@ -46,7 +47,7 @@ public class TableFilterNode extends FilterNode {
@Override
public String getDisplayName() {
if (createChild) {
return "Name";
return NbBundle.getMessage(this.getClass(), "TableFilterNode.displayName.text");
} else {
return super.getDisplayName();
}

View File

@ -1,2 +1,24 @@
OpenIDE-Module-Name=CoreUtils
JLNK.noPrefPath.text=No preferred path found
PlatformUtil.nameUnknown=unknown
PlatformUtil.verUnknown=unknown
PlatformUtil.archUnknown=unknown
PlatformUtil.jrePath.jreDir.msg=Embedded jre directory found in\: {0}
PlatformUtil.jrePath.usingJavaPath.msg=Using java binary path\: {0}
PlatformUtil.getPID.sigarNotInit.msg=Can't get PID, sigar not initialized
PlatformUtil.getPID.gen.msg=Can't get PID,{0}
PlatformUtil.getJavaPID.sigarNotInit.msg=Can't get PID of a java process, sigar not initialized
PlatformUtil.getJavaPID.gen.msg=Can't get PID for query\: {0}, {1}
PlatformUtil.getJavaPIDs.sigarNotInit=Can't get PIDs of a java process, sigar not initialized
PlatformUtil.getJavaPIDs.gen.msg=Can't get PIDs for query\: {0}, {1}
PlatformUtil.killProcess.sigarNotInit.msg=Can't kill process by pid, sigar not initialized.
PlatformUtil.killProcess.gen.msg=Can't kill process\: {0}, {1}
PlatformUtil.getProcVmUsed.sigarNotInit.msg=Can't get virt mem used, sigar not initialized.
PlatformUtil.getProcVmUsed.gen.msg=Can't get virt mem used, {0}
PlatformUtil.getJvmMemInfo.usageText=JVM heap usage\: {0}, JVM non-heap usage\: {1}
PlatformUtil.getPhysicalMemInfo.usageText=Physical memory usage (max, total, free)\: {0}, {1}, {2}
PlatformUtil.getAllMemUsageInfo.usageText={0}\
{1}\
Process Virtual Memory\: {2}
StringExtract.illegalStateException.cannotInit.msg=Unicode table not properly initialized, cannot instantiate StringExtract

View File

@ -0,0 +1,23 @@
OpenIDE-Module-Name=\u4E3B\u8981\u30E6\u30FC\u30C6\u30A3\u30EA\u30C6\u30A3
JLNK.noPrefPath.text=\u512A\u5148\u7684\u306B\u4F7F\u7528\u3059\u308B\u30D1\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093
PlatformUtil.nameUnknown=\u4E0D\u660E
PlatformUtil.verUnknown=\u4E0D\u660E
PlatformUtil.archUnknown=\u4E0D\u660E
PlatformUtil.jrePath.jreDir.msg=\u57CB\u3081\u8FBC\u307E\u308C\u305FJRE\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u4E0B\u8A18\u3067\u767A\u898B\u3055\u308C\u307E\u3057\u305F\uFF1A{0}
PlatformUtil.jrePath.usingJavaPath.msg=JAVA\u30D0\u30A4\u30CA\u30EA\u30D1\u30B9\u3092\u4F7F\u7528\uFF1A{0}
PlatformUtil.getPID.sigarNotInit.msg=PID\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093
PlatformUtil.getPID.gen.msg=PID\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3001{0}
PlatformUtil.getJavaPID.sigarNotInit.msg=JAVA\u30D7\u30ED\u30BB\u30B9\u306EPID\u304C\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093
PlatformUtil.getJavaPID.gen.msg=\u30AF\u30A8\u30EA\u30FC\u306EPID\u304C\u5165\u624B\u3067\u304D\u307E\u305B\u3093\uFF1A{0}, {1}
PlatformUtil.getJavaPIDs.sigarNotInit=JAVA\u30D7\u30ED\u30BB\u30B9\u306EPID\u304C\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093
PlatformUtil.getJavaPIDs.gen.msg=\u30AF\u30A8\u30EA\u30FC\u306EPID\u304C\u5165\u624B\u3067\u304D\u307E\u305B\u3093\uFF1A{0}, {1}
PlatformUtil.killProcess.sigarNotInit.msg=PID\u3092\u4F7F\u7528\u3057\u3066\u30D7\u30ED\u30BB\u30B9\u3092\u5F37\u5236\u4FEE\u4E86\u3067\u304D\u307E\u305B\u3093\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
PlatformUtil.killProcess.gen.msg=\u30D7\u30ED\u30BB\u30B9\u3092\u5F37\u5236\u4FEE\u4E86\u3067\u304D\u307E\u305B\u3093\uFF1A {0}, {1}
PlatformUtil.getProcVmUsed.sigarNotInit.msg=\u4F7F\u7528\u4E2D\u306E\u4EEE\u60F3\u30E1\u30E2\u30EA\u91CF\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3001Sigar\u304C\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002
PlatformUtil.getProcVmUsed.gen.msg=\u4F7F\u7528\u4E2D\u306E\u4EEE\u60F3\u30E1\u30E2\u30EA\u91CF\u3092\u78BA\u8A8D\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3001{0}
PlatformUtil.getJvmMemInfo.usageText=JVM\u30D2\u30FC\u30D7\u4F7F\u7528\u72B6\u6CC1\uFF1A{0}\u3001JVM\u975E\u30D2\u30FC\u30D7\u4F7F\u7528\u72B6\u6CC1\uFF1A{1}
PlatformUtil.getPhysicalMemInfo.usageText=\u7269\u7406\u30E1\u30E2\u30EA\u4F7F\u7528\u72B6\u6CC1\uFF08\u6700\u5927\u3001\u5408\u8A08\u3001\u5229\u7528\u53EF\u80FD\uFF09\uFF1A {0}, {1}, {2}
PlatformUtil.getAllMemUsageInfo.usageText={0}\
{1}\
\u30D7\u30ED\u30BB\u30B9\u4EEE\u60F3\u30E1\u30E2\u30EA\uFF1A{2}
StringExtract.illegalStateException.cannotInit.msg=\u30E6\u30CB\u30B3\u30FC\u30C9\u30C6\u30FC\u30D6\u30EB\u304C\u6B63\u3057\u304F\u521D\u671F\u5316\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3001StringExtract\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093

View File

@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.coreutils;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.LnkEnums.CommonNetworkRelativeLinkFlags;
import org.sleuthkit.autopsy.coreutils.LnkEnums.DriveType;
import org.sleuthkit.autopsy.coreutils.LnkEnums.FileAttributesFlags;
@ -294,7 +296,7 @@ import org.sleuthkit.autopsy.coreutils.LnkEnums.NetworkProviderType;
}
return ret;
}
return "No preferred path found";
return NbBundle.getMessage(this.getClass(), "JLNK.noPrefPath.text");
}
public String getBestName() {

View File

@ -16,7 +16,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sleuthkit.autopsy.casemodule;
package org.sleuthkit.autopsy.coreutils;
/**
* Representation of a PhysicalDisk or partition.

View File

@ -36,7 +36,7 @@ import java.util.logging.Level;
*/
public class ModuleSettings {
// The directory where the properties file is lcoated
// The directory where the properties file is located
private final static String moduleDirPath = PlatformUtil.getUserConfigDirectory();
public static final String DEFAULT_CONTEXT = "GeneralContext";
public static final String MAIN_SETTINGS = "Case";

View File

@ -37,7 +37,7 @@ import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.ptql.ProcessFinder;
import org.openide.modules.InstalledFileLocator;
import org.openide.modules.Places;
import org.sleuthkit.autopsy.casemodule.LocalDisk;
import org.openide.util.NbBundle;
import org.sleuthkit.datamodel.SleuthkitJNI;
import org.sleuthkit.datamodel.TskCoreException;
@ -48,9 +48,9 @@ import org.sleuthkit.datamodel.TskCoreException;
public class PlatformUtil {
private static String javaPath = null;
public static final String OS_NAME_UNKNOWN = "unknown";
public static final String OS_VERSION_UNKNOWN = "unknown";
public static final String OS_ARCH_UNKNOWN = "unknown";
public static final String OS_NAME_UNKNOWN = NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.nameUnknown");
public static final String OS_VERSION_UNKNOWN = NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.verUnknown");
public static final String OS_ARCH_UNKNOWN = NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.archUnknown");
private static volatile long pid = -1;
private static volatile Sigar sigar = null;
private static volatile MemoryMXBean memoryManager = null;
@ -118,7 +118,10 @@ public class PlatformUtil {
File jrePath = new File(getInstallPath() + File.separator + "jre");
if (jrePath != null && jrePath.exists() && jrePath.isDirectory()) {
System.out.println("Embedded jre directory found in: " + jrePath.getAbsolutePath());
System.out.println(
NbBundle.getMessage(PlatformUtil.class,
"PlatformUtil.jrePath.jreDir.msg",
jrePath.getAbsolutePath()));
javaPath = jrePath.getAbsolutePath() + File.separator + "bin" + File.separator + "java";
} else {
//else use system installed java in PATH env variable
@ -126,7 +129,7 @@ public class PlatformUtil {
}
System.out.println("Using java binary path: " + javaPath);
System.out.println(NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.jrePath.usingJavaPath.msg", javaPath));
return javaPath;
@ -427,10 +430,10 @@ public class PlatformUtil {
if (sigar != null) {
pid = sigar.getPid();
} else {
System.out.println("Can't get PID, sigar not initialized");
System.out.println(NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.getPID.sigarNotInit.msg"));
}
} catch (Exception e) {
System.out.println("Can't get PID," + e.toString());
System.out.println(NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.getPID.gen.msg", e.toString()));
}
return pid;
@ -457,10 +460,11 @@ public class PlatformUtil {
ProcessFinder finder = new ProcessFinder(sigar);
jpid = finder.findSingleProcess(sigarQuery);
} else {
System.out.println("Can't get PID of a java process, sigar not initialized");
System.out.println(NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.getJavaPID.sigarNotInit.msg"));
}
} catch (Exception e) {
System.out.println("Can't get PID for query: " + sigarQuery + ", " + e.toString());
System.out.println(
NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.getJavaPID.gen.msg", sigarQuery, e.toString()));
}
return jpid;
@ -487,10 +491,11 @@ public class PlatformUtil {
ProcessFinder finder = new ProcessFinder(sigar);
jpids = finder.find(sigarQuery);
} else {
System.out.println("Can't get PIDs of a java process, sigar not initialized");
System.out.println(NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.getJavaPIDs.sigarNotInit"));
}
} catch (Exception e) {
System.out.println("Can't get PIDs for query: " + sigarQuery + ", " + e.toString());
System.out.println(
NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.getJavaPIDs.gen.msg", sigarQuery, e.toString()));
}
return jpids;
@ -509,10 +514,11 @@ public class PlatformUtil {
if (sigar != null) {
sigar.kill(pid, 9);
} else {
System.out.println("Can't kill process by pid, sigar not initialized.");
System.out.println(NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.killProcess.sigarNotInit.msg"));
}
} catch (Exception e) {
System.out.println("Can't kill process: " + pid + ", " + e.toString());
System.out.println(
NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.killProcess.gen.msg", pid, e.toString()));
}
}
@ -532,12 +538,12 @@ public class PlatformUtil {
}
if (sigar == null || pid == -1) {
System.out.println("Can't get virt mem used, sigar not initialized. ");
System.out.println(NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.getProcVmUsed.sigarNotInit.msg"));
return -1;
}
virtMem = sigar.getProcMem(pid).getSize();
} catch (Exception e) {
System.out.println("Can't get virt mem used, " + e.toString());
System.out.println(NbBundle.getMessage(PlatformUtil.class, "PlatformUtil.getProcVmUsed.gen.msg", e.toString()));
}
return virtMem;
@ -557,9 +563,9 @@ public class PlatformUtil {
final MemoryUsage heap = memoryManager.getHeapMemoryUsage();
final MemoryUsage nonHeap = memoryManager.getNonHeapMemoryUsage();
return "JVM heap usage: " + heap.toString() + ", JVM non-heap usage: " + nonHeap.toString();
return NbBundle.getMessage(PlatformUtil.class,
"PlatformUtil.getJvmMemInfo.usageText",
heap.toString(), nonHeap.toString());
}
/**
@ -572,9 +578,9 @@ public class PlatformUtil {
final long maxMemory = runTime.maxMemory();
final long totalMemory = runTime.totalMemory();
final long freeMemory = runTime.freeMemory();
return "Physical memory usage (max, total, free): "
+ Long.toString(maxMemory) + ", " + Long.toString(totalMemory)
+ ", " + Long.toString(freeMemory);
return NbBundle.getMessage(PlatformUtil.class,
"PlatformUtil.getPhysicalMemInfo.usageText",
Long.toString(maxMemory), Long.toString(totalMemory), Long.toString(freeMemory));
}
/**
@ -583,10 +589,14 @@ public class PlatformUtil {
* @return formatted string with all memory usage info
*/
public static String getAllMemUsageInfo() {
StringBuilder sb = new StringBuilder();
sb.append(PlatformUtil.getPhysicalMemInfo()).append("\n");
sb.append(PlatformUtil.getJvmMemInfo()).append("\n");
sb.append("Process Virtual Memory: ").append(PlatformUtil.getProcessVirtualMemoryUsed());
return sb.toString();
// StringBuilder sb = new StringBuilder();
// sb.append(PlatformUtil.getPhysicalMemInfo()).append("\n");
// sb.append(PlatformUtil.getJvmMemInfo()).append("\n");
// sb.append("Process Virtual Memory: ").append(PlatformUtil.getProcessVirtualMemoryUsed());
// return sb.toString();
return NbBundle.getMessage(PlatformUtil.class,
"PlatformUtil.getAllMemUsageInfo.usageText",
PlatformUtil.getPhysicalMemInfo(), PlatformUtil.getJvmMemInfo(),
PlatformUtil.getProcessVirtualMemoryUsed());
}
}

View File

@ -26,6 +26,8 @@ import java.util.List;
import java.util.Properties;
import java.util.StringTokenizer;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.coreutils.StringExtract.StringExtractUnicodeTable.SCRIPT;
@ -78,7 +80,8 @@ public class StringExtract {
unicodeTable = StringExtractUnicodeTable.getInstance();
if (unicodeTable == null) {
throw new IllegalStateException("Unicode table not properly initialized, cannot instantiate StringExtract");
throw new IllegalStateException(
NbBundle.getMessage(StringExtract.class, "StringExtract.illegalStateException.cannotInit.msg"));
}
setEnabledScripts(SUPPORTED_SCRIPTS);

View File

@ -22,6 +22,8 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.datamodel.AbstractFile;
import org.sleuthkit.datamodel.BlackboardArtifact;
@ -52,117 +54,125 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
NAME {
@Override
public String toString() {
return "Name";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.nameColLbl");
}
},
LOCATION {
@Override
public String toString() {
return "Location";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.locationColLbl");
}
},
MOD_TIME {
@Override
public String toString() {
return "Modified Time";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.modifiedTimeColLbl");
}
},
CHANGED_TIME {
@Override
public String toString() {
return "Change Time";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.changeTimeColLbl");
}
},
ACCESS_TIME {
@Override
public String toString() {
return "Access Time";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.accessTimeColLbl");
}
},
CREATED_TIME {
@Override
public String toString() {
return "Created Time";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.createdTimeColLbl");
}
},
SIZE {
@Override
public String toString() {
return "Size";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.sizeColLbl");
}
},
FLAGS_DIR {
@Override
public String toString() {
return "Flags(Dir)";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.flagsDirColLbl");
}
},
FLAGS_META {
@Override
public String toString() {
return "Flags(Meta)";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.flagsMetaColLbl");
}
},
MODE {
@Override
public String toString() {
return "Mode";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.modeColLbl");
}
},
USER_ID {
@Override
public String toString() {
return "UserID";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.useridColLbl");
}
},
GROUP_ID {
@Override
public String toString() {
return "GroupID";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.groupidColLbl");
}
},
META_ADDR {
@Override
public String toString() {
return "Meta Addr.";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.metaAddrColLbl");
}
},
ATTR_ADDR {
@Override
public String toString() {
return "Attr. Addr.";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.attrAddrColLbl");
}
},
TYPE_DIR {
@Override
public String toString() {
return "Type(Dir)";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.typeDirColLbl");
}
},
TYPE_META {
@Override
public String toString() {
return "Type(Meta)";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.typeMetaColLbl");
}
},
KNOWN {
@Override
public String toString() {
return "Known";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.knownColLbl");
}
},
HASHSETS {
@Override
public String toString() {
return "In Hashsets";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.inHashsetsColLbl");
}
},
MD5HASH {
@Override
public String toString() {
return "MD5 Hash";
return NbBundle.getMessage(this.getClass(), "AbstractAbstractFileNode.md5HashColLbl");
}
},
ObjectID {
@Override
public String toString() {
return "Object ID";
}
}
},
}
@ -201,6 +211,7 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
map.put(AbstractFilePropertyType.KNOWN.toString(), content.getKnown().getName());
map.put(AbstractFilePropertyType.HASHSETS.toString(), getHashSetHitsForFile(content));
map.put(AbstractFilePropertyType.MD5HASH.toString(), content.getMd5Hash() == null ? "" : content.getMd5Hash());
map.put(AbstractFilePropertyType.ObjectID.toString(), content.getId());
}

View File

@ -21,7 +21,7 @@ package org.sleuthkit.autopsy.datamodel;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children.Keys;
import org.openide.nodes.Node;
import org.sleuthkit.autopsy.datamodel.KeywordHits.KeywordHitsRootNode;
import org.openide.util.NbBundle;
import org.sleuthkit.datamodel.DerivedFile;
import org.sleuthkit.datamodel.Directory;
import org.sleuthkit.datamodel.File;
@ -106,7 +106,8 @@ abstract class AbstractContentChildren<T> extends Keys<T> {
@Override
protected AbstractContentNode defaultVisit(SleuthkitVisitableItem di) {
throw new UnsupportedOperationException("No Node defined for the given SleuthkitItem");
throw new UnsupportedOperationException(NbBundle.getMessage(this.getClass(),
"AbstractContentChildren.CreateTSKNodeVisitor.exception.noNodeMsg"));
}
}
@ -186,7 +187,9 @@ abstract class AbstractContentChildren<T> extends Keys<T> {
@Override
protected AbstractNode defaultVisit(AutopsyVisitableItem di) {
throw new UnsupportedOperationException("No Node defined for the given DisplayableItem");
throw new UnsupportedOperationException(
NbBundle.getMessage(this.getClass(),
"AbstractContentChildren.createAutopsyNodeVisitor.exception.noNodeMsg"));
}
}
}

View File

@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.datamodel;
import java.util.List;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.datamodel.Content;
@ -63,7 +65,8 @@ public abstract class AbstractContentNode<T extends Content> extends ContentNode
@Override
public void setName(String name) {
throw new UnsupportedOperationException("Can't change the system name.");
throw new UnsupportedOperationException(
NbBundle.getMessage(this.getClass(), "AbstractContentNode.exception.cannotChangeSysName.msg"));
}
@Override

View File

@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.datamodel;
import java.util.LinkedHashMap;
import java.util.Map;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.datamodel.AbstractFile;
@ -73,7 +74,7 @@ public abstract class AbstractFsContentNode<T extends AbstractFile> extends Abst
AbstractFilePropertyType[] fsTypes = AbstractFilePropertyType.values();
final int FS_PROPS_LEN = fsTypes.length;
final String NO_DESCR = "no description";
final String NO_DESCR = NbBundle.getMessage(this.getClass(), "AbstractFsContentNode.noDesc.text");
for (int i = 0; i < FS_PROPS_LEN; ++i) {
final AbstractFilePropertyType propType = AbstractFilePropertyType.values()[i];
final String propString = propType.toString();

View File

@ -22,6 +22,8 @@ import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.TimeZone;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.datamodel.BlackboardArtifact;
import org.sleuthkit.datamodel.BlackboardAttribute;
@ -135,7 +137,9 @@ public class ArtifactStringContent implements StringContent {
//add file path
buffer.append("<tr>");
buffer.append("<td>Source File Path</td>");
buffer.append("<td>");
buffer.append(NbBundle.getMessage(this.getClass(), "ArtifactStringContent.getStr.srcFilePath.text"));
buffer.append("</td>");
buffer.append("<td>");
buffer.append(path);
buffer.append("</td>");
@ -146,7 +150,7 @@ public class ArtifactStringContent implements StringContent {
stringContent = buffer.toString();
} catch (TskException ex) {
stringContent = "Error getting content";
stringContent = NbBundle.getMessage(this.getClass(), "ArtifactStringContent.getStr.err");
}
}
@ -159,7 +163,7 @@ public class ArtifactStringContent implements StringContent {
} catch (TskException ex) {
logger.log(Level.WARNING, "Getting file failed", ex);
}
throw new IllegalArgumentException("Couldn't get file from database");
throw new IllegalArgumentException(NbBundle.getMessage(ArtifactStringContent.class, "ArtifactStringContent.exception.msg"));
}
private static TimeZone getTimeZone(BlackboardArtifact artifact) {

View File

@ -18,10 +18,10 @@
*/
package org.sleuthkit.autopsy.datamodel;
import java.util.Map;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
import org.openide.util.lookup.Lookups;
@ -65,15 +65,15 @@ public class ArtifactTypeNode extends DisplayableItemNode {
s.put(ss);
}
ss.put(new NodeProperty("Artifact Type",
"Artifact Type",
"no description",
type.getDisplayName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "ArtifactTypeNode.createSheet.artType.name"),
NbBundle.getMessage(this.getClass(), "ArtifactTypeNode.createSheet.artType.displayName"),
NbBundle.getMessage(this.getClass(), "ArtifactTypeNode.createSheet.artType.desc"),
type.getDisplayName()));
ss.put(new NodeProperty("Child Count",
"Child Count",
"no description",
childCount));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "ArtifactTypeNode.createSheet.childCnt.name"),
NbBundle.getMessage(this.getClass(), "ArtifactTypeNode.createSheet.childCnt.displayName"),
NbBundle.getMessage(this.getClass(), "ArtifactTypeNode.createSheet.childCnt.desc"),
childCount));
return s;
}

View File

@ -24,6 +24,8 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
@ -103,15 +105,15 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
ss = Sheet.createPropertiesSet();
s.put(ss);
}
final String NO_DESCR = "no description";
final String NO_DESCR = NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.noDesc.text");
Map<String, Object> map = new LinkedHashMap<String, Object>();
fillPropertyMap(map, artifact);
ss.put(new NodeProperty("Source File",
"Source File",
NO_DESCR,
associated.getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.srcFile.name"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.srcFile.displayName"),
NO_DESCR,
associated.getName()));
for (Map.Entry<String, Object> entry : map.entrySet()) {
ss.put(new NodeProperty(entry.getKey(),
@ -135,7 +137,10 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
AbstractFile af = (AbstractFile) associated;
ext = af.getNameExtension();
}
ss.put(new NodeProperty("Extension", "Extension", NO_DESCR, ext));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.ext.name"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.ext.displayName"),
NO_DESCR,
ext));
try {
String actualMimeType = "";
@ -151,7 +156,11 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
if (actualMimeType.isEmpty()) {
logger.log(Level.WARNING, "Could not find expected TSK_FILE_TYPE_SIG attribute.");
} else {
ss.put(new NodeProperty("MIME Type", "MIME Type", NO_DESCR, actualMimeType));
ss.put(new NodeProperty(
NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.mimeType.name"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.mimeType.displayName"),
NO_DESCR,
actualMimeType));
}
} catch (TskCoreException ex) {
logger.log(Level.WARNING, "Error while searching for TSK_FILE_TYPE_SIG attribute: ", ex);
@ -167,8 +176,11 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
}
if (sourcePath.isEmpty() == false) {
ss.put(new NodeProperty("File Path", "File Path",
NO_DESCR, sourcePath));
ss.put(new NodeProperty(
NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.filePath.name"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.filePath.displayName"),
NO_DESCR,
sourcePath));
}
} else {
String dataSource = "";
@ -184,8 +196,11 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
}
if (dataSource.isEmpty() == false) {
ss.put(new NodeProperty("Data Source", "Data Source",
NO_DESCR, dataSource));
ss.put(new NodeProperty(
NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.dataSrc.name"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactNode.createSheet.dataSrc.displayName"),
NO_DESCR,
dataSource));
}
}
@ -300,7 +315,8 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
} catch (TskException ex) {
logger.log(Level.WARNING, "Getting file failed", ex);
}
throw new IllegalArgumentException("Couldn't get file from database");
throw new IllegalArgumentException(
NbBundle.getMessage(BlackboardArtifactNode.class, "BlackboardArtifactNode.getAssocCont.exception.msg"));
}
private static HighlightLookup getHighlightLookup(BlackboardArtifact artifact, Content content) {

View File

@ -24,6 +24,7 @@ import java.util.logging.Logger;
import javax.swing.Action;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.actions.DeleteBlackboardArtifactTagAction;
import org.sleuthkit.datamodel.BlackboardArtifactTag;
@ -57,18 +58,34 @@ public class BlackboardArtifactTagNode extends DisplayableItemNode {
propertySheet.put(properties);
}
properties.put(new NodeProperty("Source File", "Source File", "", tag.getContent().getName()));
properties.put(new NodeProperty(
NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.srcFile.text"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.srcFile.text"),
"",
tag.getContent().getName()));
String contentPath;
try {
contentPath = tag.getContent().getUniquePath();
}
catch (TskCoreException ex) {
Logger.getLogger(ContentTagNode.class.getName()).log(Level.SEVERE, "Failed to get path for content (id = " + tag.getContent().getId() + ")", ex);
contentPath = "Unavailable";
contentPath = NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.unavail.text");
}
properties.put(new NodeProperty("Source File Path", "Source File Path", "", contentPath));
properties.put(new NodeProperty("Result Type", "Result Type", "", tag.getArtifact().getDisplayName()));
properties.put(new NodeProperty("Comment", "Comment", "", tag.getComment()));
properties.put(new NodeProperty(
NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.srcFilePath.text"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.srcFilePath.text"),
"",
contentPath));
properties.put(new NodeProperty(
NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.resultType.text"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.resultType.text"),
"",
tag.getArtifact().getDisplayName()));
properties.put(new NodeProperty(
NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.comment.text"),
NbBundle.getMessage(this.getClass(), "BlackboardArtifactTagNode.createSheet.comment.text"),
"",
tag.getComment()));
return propertySheet;
}

View File

@ -1 +1,254 @@
OpenIDE-Module-Name=DataModel
AbstractAbstractFileNode.nameColLbl=Name
AbstractAbstractFileNode.locationColLbl=Location
AbstractAbstractFileNode.modifiedTimeColLbl=Modified Time
AbstractAbstractFileNode.changeTimeColLbl=Change Time
AbstractAbstractFileNode.accessTimeColLbl=Access Time
AbstractAbstractFileNode.createdTimeColLbl=Created Time
AbstractAbstractFileNode.sizeColLbl=Size
AbstractAbstractFileNode.flagsDirColLbl=Flags(Dir)
AbstractAbstractFileNode.flagsMetaColLbl=Flags(Meta)
AbstractAbstractFileNode.modeColLbl=Mode
AbstractAbstractFileNode.useridColLbl=UserID
AbstractAbstractFileNode.groupidColLbl=GroupID
AbstractAbstractFileNode.metaAddrColLbl=Meta Addr.
AbstractAbstractFileNode.attrAddrColLbl=Attr. Addr.
AbstractAbstractFileNode.typeDirColLbl=Type(Dir)
AbstractAbstractFileNode.typeMetaColLbl=Type(Meta)
AbstractAbstractFileNode.knownColLbl=Known
AbstractAbstractFileNode.inHashsetsColLbl=In Hashsets
AbstractAbstractFileNode.md5HashColLbl=MD5 Hash
AbstractContentChildren.CreateTSKNodeVisitor.exception.noNodeMsg=No Node defined for the given SleuthkitItem
AbstractContentChildren.createAutopsyNodeVisitor.exception.noNodeMsg=No Node defined for the given DisplayableItem
AbstractContentNode.exception.cannotChangeSysName.msg=Can't change the system name.
AbstractFsContentNode.noDesc.text=no description
ArtifactStringContent.getStr.srcFilePath.text=Source File Path
ArtifactStringContent.getStr.err=Error getting content
ArtifactStringContent.exception.msg=Couldn't get file from database
ArtifactTypeNode.createSheet.artType.name=Artifact Type
ArtifactTypeNode.createSheet.artType.displayName=Artifact Type
ArtifactTypeNode.createSheet.artType.desc=no description
ArtifactTypeNode.createSheet.childCnt.name=Child Count
ArtifactTypeNode.createSheet.childCnt.displayName=Child Count
ArtifactTypeNode.createSheet.childCnt.desc=no description
BlackboardArtifactNode.noDesc.text=no description
BlackboardArtifactNode.createSheet.srcFile.name=Source File
BlackboardArtifactNode.createSheet.srcFile.displayName=Source File
BlackboardArtifactNode.createSheet.ext.name=Extension
BlackboardArtifactNode.createSheet.ext.displayName=Extension
BlackboardArtifactNode.createSheet.mimeType.name=MIME Type
BlackboardArtifactNode.createSheet.mimeType.displayName=MIME Type
BlackboardArtifactNode.createSheet.filePath.name=File Path
BlackboardArtifactNode.createSheet.filePath.displayName=File Path
BlackboardArtifactNode.createSheet.dataSrc.name=Data Source
BlackboardArtifactNode.createSheet.dataSrc.displayName=Data Source
BlackboardArtifactNode.getAssocCont.exception.msg=Couldn't get file from database
BlackboardArtifactTagNode.createSheet.srcFile.text=Source File
BlackboardArtifactTagNode.createSheet.unavail.text=Unavailable
BlackboardArtifactTagNode.createSheet.srcFilePath.text=Source File Path
BlackboardArtifactTagNode.createSheet.resultType.text=Result Type
BlackboardArtifactTagNode.createSheet.comment.text=Comment
ContentTagNode.createSheet.file.name=File
ContentTagNode.createSheet.file.displayName=File
ContentTagNode.createSheet.unavail.path=Unavailable
ContentTagNode.createSheet.filePath.name=File Path
ContentTagNode.createSheet.filePath.displayName=File Path
ContentTagNode.createSheet.comment.name=Comment
ContentTagNode.createSheet.comment.displayName=Comment
ContentTagTypeNode.displayName.text=File Tags
ContentTagTypeNode.createSheet.name.name=Name
ContentTagTypeNode.createSheet.name.displayName=Name
ContentUtils.exception.msg=Can't extract a {0}
DataModelActionsFactory.srcFileInDir.text=View Source File in Directory
DataModelActionsFactory.fileInDir.text=View File in Directory
DataModelActionsFactory.viewNewWin.text=View in New Window
DataModelActionsFactory.openExtViewer.text=Open in External Viewer
DataModelActionsFactory.srfFileSameMD5.text=Search for files with the same MD5 hash
DataSourcesNode.name=Data Sources
DataSourcesNode.createSheet.name.name=Name
DataSourcesNode.createSheet.name.displayName=Name
DataSourcesNode.createSheet.name.desc=no description
DeletedContent.fsDelFilter.text=File System
DeletedContent.allDelFilter.text=All
DeletedContent.deletedContentsNode.name=Deleted Files
DeletedContent.createSheet.name.name=Name
DeletedContent.createSheet.name.displayName=Name
DeletedContent.createSheet.name.desc=no description
DeletedContent.createSheet.filterType.name=Filter Type
DeletedContent.createSheet.filterType.displayName=Filter Type
DeletedContent.createSheet.filterType.desc=no description
DeletedContent.createKeys.maxObjects.msg=There are more Deleted Files than can be displayed. Only the first {0} Deleted Files will be shown.
DeletedContent.createNodeForKey.typeNotSupported.msg=Not supported for this type of Displayable Item\: {0}
DirectoryNode.parFolder.text=[parent folder]
DirectoryNode.curFolder.text=[current folder]
DirectoryNode.getActions.viewFileInDir.text=View File in Directory
DirectoryNode.viewInNewWin.text=View in New Window
EmailExtracted.mailAccount.text=Account
EmailExtracted.mailFolder.text=Folder
EmailExtracted.defaultAcct.text=Default
EmailExtracted.defaultFolder.text=Default
EmailExtracted.createSheet.name.name=Name
EmailExtracted.createSheet.name.displayName=Name
EmailExtracted.createSheet.name.desc=no description
ExtractedContentNode.name.text=Extracted Content
ExtractedContentNode.createSheet.name.name=Name
ExtractedContentNode.createSheet.name.displayName=Name
ExtractedContentNode.createSheet.name.desc=no description
FileNode.viewFileInDir.text=View File in Directory
FileNode.getActions.viewInNewWin.text=View in New Window
FileNode.getActions.openInExtViewer.text=Open in External Viewer
FileNode.getActions.searchFilesSameMD5.text=Search for files with the same MD5 hash
FileSize.fileSizeRootNode.name=File Size
FileSize.createSheet.name.name=Name
FileSize.createSheet.name.displayName=Name
FileSize.createSheet.name.desc=no description
FileSize.createSheet.filterType.name=Filter Type
FileSize.createSheet.filterType.displayName=Filter Type
FileSize.createSheet.filterType.desc=no description
FileSize.exception.notSupported.msg=Not supported for this type of Displayable Item\: {0}
FileTypeChildren.exception.notSupported.msg=Not supported for this type of Displayable Item\: {0}
FileTypeExtensionFilters.tskImgFilter.text=Images
FileTypeExtensionFilters.tskVideoFilter.text=Videos
FileTypeExtensionFilters.tskAudioFilter.text=Audio
FileTypeExtensionFilters.tskArchiveFilter.text=Archives
FileTypeExtensionFilters.tskDocumentFilter.text=Documents
FileTypeExtensionFilters.tskExecFilter.text=Executable
FileTypeExtensionFilters.autDocHtmlFilter.text=HTML
FileTypeExtensionFilters.autDocOfficeFilter.text=Office
FileTypeExtensionFilters.autoDocPdfFilter.text=PDF
FileTypeExtensionFilters.autDocTxtFilter.text=Plain Text
FileTypeExtensionFilters.autDocRtfFilter.text=Rich Text
FileTypeNode.createSheet.filterType.name=Filter Type
FileTypeNode.createSheet.filterType.displayName=Filter Type
FileTypeNode.createSheet.filterType.desc=no description
FileTypeNode.createSheet.fileExt.name=File Extensions
FileTypeNode.createSheet.fileExt.displayName=File Extensions
FileTypeNode.createSheet.fileExt.desc=no description
FileTypesNode.fname.text=File Types
FileTypesNode.createSheet.name.name=Name
FileTypesNode.createSheet.name.displayName=Name
FileTypesNode.createSheet.name.desc=no description
HashsetHits.createSheet.name.name=Name
HashsetHits.createSheet.name.displayName=Name
HashsetHits.createSheet.name.desc=no description
ImageNode.getActions.viewInNewWin.text=View in New Window
ImageNode.getActions.openFileSearchByAttr.text=Open File Search by Attributes
ImageNode.createSheet.name.name=Name
ImageNode.createSheet.name.displayName=Name
ImageNode.createSheet.name.desc=no description
Installer.exception.tskVerStringNull.msg=Sleuth Kit JNI test call returned without error, but version string was null\!
Installer.exception.taskVerStringBang.msg=Sleuth Kit JNI test call returned without error, but version string was ""\!
Installer.tskLibErr.msg=Problem with Sleuth Kit JNI. Test call failed\!\
\
Details\: {0}
Installer.tskLibErr.err=Fatal Error\!
InterestingHits.interestingItems.text=INTERESTING ITEMS
InterestingHits.displayName.text=Interesting Items
InterestingHits.createSheet.name.name=Name
InterestingHits.createSheet.name.displayName=Name
InterestingHits.createSheet.name.desc=no description
KeyValueNode.createSheet.name.name=Name
KeyValueNode.createSheet.name.displayName=Name
KeyValueNode.createSheet.name.desc=n/a
KeyValueNode.createSheet.map.desc=n/a
KeywordHits.kwHits.text=Keyword Hits
KeywordHits.simpleLiteralSearch.text=Single Literal Keyword Search
KeywordHits.singleRegexSearch.text=Single Regular Expression Search
KeywordHits.createSheet.name.name=Name
KeywordHits.createSheet.name.displayName=Name
KeywordHits.createSheet.name.desc=no description
KeywordHits.createSheet.listName.name=List Name
KeywordHits.createSheet.listName.displayName=List Name
KeywordHits.createSheet.listName.desc=no description
KeywordHits.createSheet.numChildren.name=Number of Children
KeywordHits.createSheet.numChildren.displayName=Number of Children
KeywordHits.createSheet.numChildren.desc=no description
KeywordHits.createSheet.filesWithHits.name=Files with Hits
KeywordHits.createSheet.filesWithHits.displayName=Files with Hits
KeywordHits.createSheet.filesWithHits.desc=no description
KeywordHits.createNodeForKey.modTime.displayName=Modified Time
KeywordHits.createNodeForKey.modTime.desc=Modified Time
KeywordHits.createNodeForKey.accessTime.displayName=Access Time
KeywordHits.createNodeForKey.accessTime.desc=Access Time
KeywordHits.createNodeForKey.chgTime.displayName=Change Time
KeywordHits.createNodeForKey.chgTime.desc=Change Time
KeywordHits.createNodeForKey.chgTime.name=ChangeTime
KeywordHits.createNodeForKey.accessTime.name=AccessTime
KeywordHits.createNodeForKey.modTime.name=ModifiedTime
KnownFileFilterNode.selectionContext.dataSources=Data Sources
KnownFileFilterNode.selectionContext.views=Views
LayoutFileNode.propertyType.parts=Parts
LayoutFileNode.createSheet.name.name=Name
LayoutFileNode.createSheet.name.displayName=Name
LayoutFileNode.createSheet.name.desc=no description
LayoutFileNode.createSheet.noDescr.text=no description
LayoutFileNode.getActions.viewInNewWin.text=View in New Window
LayoutFileNode.getActions.openInExtViewer.text=Open in External Viewer
LocalFileNode.createSheet.name.name=Name
LocalFileNode.createSheet.name.displayName=Name
LocalFileNode.createSheet.name.desc=no description
LocalFileNode.createSheet.noDescr.text=no description
LocalFileNode.getActions.viewInNewWin.text=View in New Window
LocalFileNode.getActions.openInExtViewer.text=Open in External Viewer
LocalFileNode.getActions.searchFilesSameMd5.text=Search for files with the same MD5 hash
RecentFiles.aut0DayFilter.displayName.text=Final Day
RecentFiles.aut1dayFilter.displayName.text=Final Day - 1
RecentFiles.aut2dayFilter.displayName.text=Final Day - 2
RecentFiles.aut3dayFilter.displayName.text=Final Day - 3
RecentFiles.aut4dayFilter.displayName.text=Final Day - 4
RecentFiles.aut5dayFilter.displayName.text=Final Day - 5
RecentFiles.aut6dayFilter.displayName.text=Final Day - 6
RecentFilesFilterChildren.exception.defaultVisit.msg=Not supported for this type of Displayable Item\: {0}
RecentFilesFilterNode.createSheet.filterType.name=Filter Type
RecentFilesFilterNode.createSheet.filterType.displayName=Filter Type
RecentFilesFilterNode.createSheet.filterType.desc=no description
RecentFilesNode.createSheet.name.name=Name
RecentFilesNode.createSheet.name.displayName=Name
RecentFilesNode.createSheet.name.desc=no description
RecentFilesNode.name.text=Recent Files
ResultsNode.name.text=Results
ResultsNode.createSheet.name.name=Name
ResultsNode.createSheet.name.displayName=Name
ResultsNode.createSheet.name.desc=no description
TagNameNode.namePlusTags.text={0} Tags
TagNameNode.contentTagTypeNodeKey.text=Content Tags
TagNameNode.bbArtTagTypeNodeKey.text=Result Tags
TagNameNode.bookmark.text=Bookmark
TagNameNode.createSheet.name.name=Name
TagNameNode.createSheet.name.displayName=Name
TagsNode.displayName.text=Tags
TagsNode.createSheet.name.name=Name
TagsNode.createSheet.name.displayName=Name
ViewsNode.name.text=Views
ViewsNode.createSheet.name.name=Name
ViewsNode.createSheet.name.displayName=Name
ViewsNode.createSheet.name.desc=no description
VirtualDirectoryNode.getActions.viewInNewWin.text=View in New Window
VirtualDirectoryNode.createSheet.name.name=Name
VirtualDirectoryNode.createSheet.name.displayName=Name
VirtualDirectoryNode.createSheet.name.desc=no description
VirtualDirectoryNode.createSheet.noDesc=no description
VolumeNode.getActions.viewInNewWin.text=View in New Window
VolumeNode.createSheet.name.name=Name
VolumeNode.createSheet.name.displayName=Name
VolumeNode.createSheet.name.desc=no description
VolumeNode.createSheet.id.name=ID
VolumeNode.createSheet.id.displayName=ID
VolumeNode.createSheet.id.desc=no description
VolumeNode.createSheet.startSector.name=Starting Sector
VolumeNode.createSheet.startSector.displayName=Starting Sector
VolumeNode.createSheet.startSector.desc=no description
VolumeNode.createSheet.lenSectors.name=Length in Sectors
VolumeNode.createSheet.lenSectors.displayName=Length in Sectors
VolumeNode.createSheet.lenSectors.desc=no description
VolumeNode.createSheet.description.name=Description
VolumeNode.createSheet.description.displayName=Description
VolumeNode.createSheet.description.desc=no description
VolumeNode.createSheet.flags.name=Flags
VolumeNode.createSheet.flags.displayName=Flags
VolumeNode.createSheet.flags.desc=no description

View File

@ -0,0 +1,249 @@
OpenIDE-Module-Name=\u30C7\u30FC\u30BF\u30E2\u30C7\u30EB
AbstractAbstractFileNode.nameColLbl=\u540D\u79F0
AbstractAbstractFileNode.locationColLbl=\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3
AbstractAbstractFileNode.modifiedTimeColLbl=\u4FEE\u6B63\u65E5\u6642
AbstractAbstractFileNode.changeTimeColLbl=\u5909\u66F4\u65E5\u6642
AbstractAbstractFileNode.accessTimeColLbl=\u30A2\u30AF\u30BB\u30B9\u65E5\u6642
AbstractAbstractFileNode.createdTimeColLbl=\u4F5C\u6210\u65E5\u6642
AbstractAbstractFileNode.sizeColLbl=\u30B5\u30A4\u30BA
AbstractAbstractFileNode.modeColLbl=\u30E2\u30FC\u30C9
AbstractAbstractFileNode.useridColLbl=\u30E6\u30FC\u30B6ID
AbstractAbstractFileNode.groupidColLbl=\u30B0\u30EB\u30FC\u30D7ID
AbstractAbstractFileNode.knownColLbl=\u65E2\u77E5
AbstractAbstractFileNode.inHashsetsColLbl=HashSet\u306B\u5B58\u5728
AbstractAbstractFileNode.md5HashColLbl=MD5\u30CF\u30C3\u30B7\u30E5
AbstractContentChildren.CreateTSKNodeVisitor.exception.noNodeMsg=\u6307\u5B9A\u3055\u308C\u305FSleuthkitItem\u306E\u30CE\u30FC\u30C9\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
AbstractContentChildren.createAutopsyNodeVisitor.exception.noNodeMsg=\u6307\u5B9A\u3055\u308C\u305F\u8868\u793A\u53EF\u80FD\u306A\u30A2\u30A4\u30C6\u30E0\u306E\u30CE\u30FC\u30C9\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093
AbstractContentNode.exception.cannotChangeSysName.msg=\u30B7\u30B9\u30C6\u30E0\u540D\u3092\u5909\u66F4\u3067\u304D\u307E\u305B\u3093\u3002
AbstractFsContentNode.noDesc.text=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
ArtifactStringContent.getStr.srcFilePath.text=\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9
ArtifactStringContent.getStr.err=\u30B3\u30F3\u30C6\u30F3\u30C4\u5165\u624B\u30A8\u30E9\u30FC
ArtifactStringContent.exception.msg=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
ArtifactTypeNode.createSheet.artType.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
ArtifactTypeNode.createSheet.childCnt.name=\u30C1\u30E3\u30A4\u30EB\u30C9\u6570
ArtifactTypeNode.createSheet.childCnt.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
BlackboardArtifactNode.noDesc.text=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
BlackboardArtifactNode.createSheet.srcFile.name=\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB
BlackboardArtifactNode.createSheet.srcFile.displayName=\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB
BlackboardArtifactNode.createSheet.ext.name=\u62E1\u5F35\u5B50
BlackboardArtifactNode.createSheet.ext.displayName=\u62E1\u5F35\u5B50
BlackboardArtifactNode.createSheet.mimeType.name=MIME\u30BF\u30A4\u30D7
BlackboardArtifactNode.createSheet.mimeType.displayName=MIME\u30BF\u30A4\u30D7
BlackboardArtifactNode.createSheet.filePath.name=\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9
BlackboardArtifactNode.createSheet.filePath.displayName=\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9
BlackboardArtifactNode.createSheet.dataSrc.name=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9
BlackboardArtifactNode.createSheet.dataSrc.displayName=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9
BlackboardArtifactNode.getAssocCont.exception.msg=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304B\u3089\u30D5\u30A1\u30A4\u30EB\u3092\u5165\u624B\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
BlackboardArtifactTagNode.createSheet.srcFile.text=\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB
BlackboardArtifactTagNode.createSheet.unavail.text=\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
BlackboardArtifactTagNode.createSheet.srcFilePath.text=\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9
BlackboardArtifactTagNode.createSheet.resultType.text=\u7D50\u679C\u30BF\u30A4\u30D7
BlackboardArtifactTagNode.createSheet.comment.text=\u30B3\u30E1\u30F3\u30C8
ContentTagNode.createSheet.file.name=\u30D5\u30A1\u30A4\u30EB
ContentTagNode.createSheet.file.displayName=\u30D5\u30A1\u30A4\u30EB
ContentTagNode.createSheet.unavail.path=\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
ContentTagNode.createSheet.filePath.name=\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9
ContentTagNode.createSheet.filePath.displayName=\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9
ContentTagNode.createSheet.comment.name=\u30B3\u30E1\u30F3\u30C8
ContentTagNode.createSheet.comment.displayName=\u30B3\u30E1\u30F3\u30C8
ContentTagTypeNode.displayName.text=\u30D5\u30A1\u30A4\u30EB\u30BF\u30B0
ContentTagTypeNode.createSheet.name.name=\u540D\u79F0
ContentTagTypeNode.createSheet.name.displayName=\u540D\u79F0
ContentUtils.exception.msg={0}\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093
DataModelActionsFactory.srcFileInDir.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u306E\u30BD\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u3092\u8868\u793A
DataModelActionsFactory.fileInDir.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8868\u793A
DataModelActionsFactory.viewNewWin.text=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u8868\u793A
DataModelActionsFactory.openExtViewer.text=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u306B\u8868\u793A
DataModelActionsFactory.srfFileSameMD5.text=\u540C\u3058MD5\u30CF\u30C3\u30B7\u30E5\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22
DataSourcesNode.name=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9
DataSourcesNode.createSheet.name.name=\u540D\u79F0
DataSourcesNode.createSheet.name.displayName=\u540D\u79F0
DataSourcesNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
DeletedContent.fsDelFilter.text=\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0
DeletedContent.allDelFilter.text=\u3059\u3079\u3066
DeletedContent.deletedContentsNode.name=\u524A\u9664\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB
DeletedContent.createSheet.name.name=\u540D\u79F0
DeletedContent.createSheet.name.displayName=\u540D\u79F0
DeletedContent.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
DeletedContent.createSheet.filterType.name=\u30D5\u30A1\u30A4\u30EB\u30BF\u30FC\u30BF\u30A4\u30D7
DeletedContent.createSheet.filterType.displayName=\u30D5\u30A3\u30EB\u30BF\u30FC\u30BF\u30A4\u30D7
DeletedContent.createSheet.filterType.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
DeletedContent.createKeys.maxObjects.msg=\u8868\u793A\u53EF\u80FD\u306A\u6570\u3088\u308A\u3082\u591A\u304F\u306E\u524A\u9664\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u304C\u5B58\u5728\u3057\u307E\u3059\u3002\u6700\u521D\u306E{0}\u306E\u524A\u9664\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002
DeletedContent.createNodeForKey.typeNotSupported.msg=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u8868\u793A\u53EF\u80FD\u306A\u30A2\u30A4\u30C6\u30E0\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF1A{0}
DirectoryNode.parFolder.text=[\u30DA\u30A2\u30EC\u30F3\u30C8\u30D5\u30A9\u30EB\u30C0\u30FC]
DirectoryNode.curFolder.text=[\u73FE\u5728\u306E\u30D5\u30A9\u30EB\u30C0\u30FC]
DirectoryNode.getActions.viewFileInDir.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8868\u793A
DirectoryNode.viewInNewWin.text=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u8868\u793A
EmailExtracted.mailAccount.text=\u30A2\u30AB\u30A6\u30F3\u30C8
EmailExtracted.mailFolder.text=\u30D5\u30A9\u30EB\u30C0\u30FC
EmailExtracted.defaultAcct.text=\u30C7\u30D5\u30A9\u30EB\u30C8
EmailExtracted.defaultFolder.text=\u30C7\u30D5\u30A9\u30EB\u30C8
EmailExtracted.createSheet.name.name=\u540D\u79F0
EmailExtracted.createSheet.name.displayName=\u540D\u79F0
EmailExtracted.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
ExtractedContentNode.name.text=\u62BD\u51FA\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4
ExtractedContentNode.createSheet.name.name=\u540D\u79F0
ExtractedContentNode.createSheet.name.displayName=\u540D\u79F0
ExtractedContentNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
FileNode.viewFileInDir.text=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u5185\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8868\u793A
FileNode.getActions.viewInNewWin.text=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u8868\u793A
FileNode.getActions.openInExtViewer.text=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u3067\u958B\u304F
FileNode.getActions.searchFilesSameMD5.text=\u540C\u3058MD5\u30CF\u30C3\u30B7\u30E5\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22
FileSize.fileSizeRootNode.name=\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA
FileSize.createSheet.name.name=\u540D\u79F0
FileSize.createSheet.name.displayName=\u540D\u79F0
FileSize.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
FileSize.createSheet.filterType.name=\u30D5\u30A3\u30EB\u30BF\u30FC\u30BF\u30A4\u30D7
FileSize.createSheet.filterType.displayName=\u30D5\u30A3\u30EB\u30BF\u30FC\u30BF\u30A4\u30D7
FileSize.createSheet.filterType.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
FileSize.exception.notSupported.msg=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u8868\u793A\u53EF\u80FD\u306A\u30A2\u30A4\u30C6\u30E0\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF1A{0}
FileTypeChildren.exception.notSupported.msg=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u8868\u793A\u53EF\u80FD\u306A\u30A2\u30A4\u30C6\u30E0\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\uFF1A{0}
FileTypeExtensionFilters.tskImgFilter.text=\u753B\u50CF
FileTypeExtensionFilters.tskVideoFilter.text=\u30D3\u30C7\u30AA
FileTypeExtensionFilters.tskAudioFilter.text=\u30AA\u30FC\u30C7\u30A3\u30AA
FileTypeExtensionFilters.tskArchiveFilter.text=\u30A2\u30FC\u30AB\u30A4\u30D6
FileTypeExtensionFilters.tskDocumentFilter.text=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8
FileTypeExtensionFilters.tskExecFilter.text=\u5B9F\u884C\u53EF\u80FD
FileTypeExtensionFilters.autDocHtmlFilter.text=HTML
FileTypeExtensionFilters.autDocOfficeFilter.text=\u30AA\u30D5\u30A3\u30B9
FileTypeExtensionFilters.autoDocPdfFilter.text=PDF
FileTypeExtensionFilters.autDocTxtFilter.text=\u30D7\u30EC\u30FC\u30F3\u30C6\u30AD\u30B9\u30C8
FileTypeExtensionFilters.autDocRtfFilter.text=\u30EA\u30C3\u30C1\u30C6\u30AD\u30B9\u30C8
FileTypeNode.createSheet.filterType.name=\u30D5\u30A3\u30EB\u30BF\u30FC\u30BF\u30A4\u30D7
FileTypeNode.createSheet.filterType.displayName=\u30D5\u30A3\u30EB\u30BF\u30FC\u30BF\u30A4\u30D7
FileTypeNode.createSheet.filterType.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
FileTypeNode.createSheet.fileExt.name=\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50
FileTypeNode.createSheet.fileExt.displayName=\u30D5\u30A1\u30A4\u30EB\u62E1\u5F35\u5B50
FileTypeNode.createSheet.fileExt.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
FileTypesNode.fname.text=\u30D5\u30A1\u30A4\u30EB\u30BF\u30A4\u30D7
FileTypesNode.createSheet.name.name=\u540D\u79F0
FileTypesNode.createSheet.name.displayName=\u540D\u79F0
FileTypesNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
HashsetHits.createSheet.name.name=\u540D\u79F0
HashsetHits.createSheet.name.displayName=\u540D\u79F0
HashsetHits.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
ImageNode.getActions.viewInNewWin.text=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u8868\u793A
ImageNode.getActions.openFileSearchByAttr.text=\u5C5E\u6027\u306B\u3088\u308B\u30D5\u30A1\u30A4\u30EB\u691C\u7D22\u3092\u958B\u304F
ImageNode.createSheet.name.name=\u540D\u79F0
ImageNode.createSheet.name.displayName=\u540D\u79F0
ImageNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
Installer.exception.tskVerStringNull.msg=Sleuth Kit JNI\u30C6\u30B9\u30C8\u30B3\u30FC\u30EB\u3067\u306F\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u304C\u3001\u30D0\u30FC\u30B8\u30E7\u30F3\u30B9\u30C8\u30EA\u30F3\u30B0\u306F\u30CC\u30EB\u3067\u3057\u305F\uFF01
Installer.tskLibErr.msg=Sleuth Kit JNI\u306B\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30C6\u30B9\u30C8\u30B3\u30FC\u30EB\u304C\u5931\u6557\u3057\u307E\u3057\u305F\uFF1A\
\
\u8A73\u7D30\uFF1A {0}
Installer.tskLibErr.err=\u81F4\u547D\u7684\u30A8\u30E9\u30FC\uFF1A
InterestingHits.interestingItems.text=\u602A\u3057\u3044\u30A2\u30A4\u30C6\u30E0
InterestingHits.displayName.text=\u602A\u3057\u3044\u30A2\u30A4\u30C6\u30E0
InterestingHits.createSheet.name.name=\u540D\u79F0
InterestingHits.createSheet.name.displayName=\u540D\u79F0
InterestingHits.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
KeyValueNode.createSheet.name.name=\u540D\u79F0
KeyValueNode.createSheet.name.displayName=\u540D\u79F0
KeyValueNode.createSheet.name.desc=\u8A72\u5F53\u306A\u3057
KeyValueNode.createSheet.map.desc=\u8A72\u5F53\u306A\u3057
KeywordHits.kwHits.text=\u30AD\u30FC\u30EF\u30FC\u30C9\u30D2\u30C3\u30C8
KeywordHits.createSheet.name.name=\u540D\u79F0
KeywordHits.createSheet.name.displayName=\u540D\u79F0
KeywordHits.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
KeywordHits.createSheet.listName.name=\u30EA\u30B9\u30C8\u540D
KeywordHits.createSheet.listName.displayName=\u30EA\u30B9\u30C8\u540D
KeywordHits.createSheet.listName.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
KeywordHits.createSheet.numChildren.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
KeywordHits.createSheet.filesWithHits.name=\u30D2\u30C3\u30C8\u3057\u305F\u30D5\u30A1\u30A4\u30EB
KeywordHits.createSheet.filesWithHits.displayName=\u30D2\u30C3\u30C8\u3057\u305F\u30D5\u30A1\u30A4\u30EB
KeywordHits.createSheet.filesWithHits.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
KeywordHits.createNodeForKey.modTime.displayName=
KeywordHits.createNodeForKey.modTime.desc=\u4FEE\u6B63\u65E5\u6642
KeywordHits.createNodeForKey.accessTime.displayName=\u30A2\u30AF\u30BB\u30B9\u65E5\u6642
KeywordHits.createNodeForKey.accessTime.desc=\u30A2\u30AF\u30BB\u30B9\u65E5\u6642
KeywordHits.createNodeForKey.chgTime.displayName=\u5909\u66F4\u65E5\u6642
KeywordHits.createNodeForKey.chgTime.desc=\u5909\u66F4\u65E5\u6642
KeywordHits.createNodeForKey.chgTime.name=\u5909\u66F4\u65E5\u6642
KeywordHits.createNodeForKey.accessTime.name=\u30A2\u30AF\u30BB\u30B9\u65E5\u6642
KeywordHits.createNodeForKey.modTime.name=\u4FEE\u6B63\u65E5\u6642
KnownFileFilterNode.selectionContext.dataSources=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9
KnownFileFilterNode.selectionContext.views=\u30D3\u30E5\u30FC
LayoutFileNode.propertyType.parts=\u30D1\u30FC\u30C4
LayoutFileNode.createSheet.name.name=\u540D\u79F0
LayoutFileNode.createSheet.name.displayName=\u540D\u79F0
LayoutFileNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
LayoutFileNode.createSheet.noDescr.text=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
LayoutFileNode.getActions.viewInNewWin.text=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u3067\u8868\u793A
LayoutFileNode.getActions.openInExtViewer.text=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u3067\u958B\u304F
LocalFileNode.createSheet.name.name=\u540D\u79F0
LocalFileNode.createSheet.name.displayName=\u540D\u79F0
LocalFileNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
LocalFileNode.createSheet.noDescr.text=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
LocalFileNode.getActions.viewInNewWin.text=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u8868\u793A
LocalFileNode.getActions.openInExtViewer.text=\u5916\u90E8\u30D3\u30E5\u30FC\u30A2\u3067\u958B\u304F
LocalFileNode.getActions.searchFilesSameMd5.text=\u540C\u3058MD5\u30CF\u30C3\u30B7\u30E5\u3092\u6301\u3064\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22
RecentFiles.aut0DayFilter.displayName.text=\u6700\u7D42\u65E5
RecentFiles.aut1dayFilter.displayName.text=\u6700\u7D42\u65E5 - 1
RecentFiles.aut2dayFilter.displayName.text=\u6700\u7D42\u65E5 - \uFF12
RecentFiles.aut3dayFilter.displayName.text=\u6700\u7D42\u65E5 - \uFF13
RecentFiles.aut4dayFilter.displayName.text=\u6700\u7D42\u65E5 - \uFF14
RecentFiles.aut5dayFilter.displayName.text=\u6700\u7D42\u65E5 - \uFF15
RecentFiles.aut6dayFilter.displayName.text=\u6700\u7D42\u65E5 - \uFF16
RecentFilesFilterChildren.exception.defaultVisit.msg=\u3053\u306E\u30BF\u30A4\u30D7\u306E\u8868\u793A\u3067\u304D\u308B\u30A2\u30A4\u30C6\u30E0
Installer.exception.taskVerStringBang.msg=Sleuth Kit JNI\u30C6\u30B9\u30C8\u30B3\u30FC\u30EB\u3067\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u305B\u3093\u3067\u3057\u305F\u304C\u3001\u30D0\u30FC\u30B8\u30E7\u30F3\u30B9\u30C8\u30EA\u30F3\u30B0\u306F""\u3067\u3057\u305F\uFF01
RecentFilesFilterNode.createSheet.filterType.name=\u30D5\u30A3\u30EB\u30BF\u30FC\u30BF\u30A4\u30D7
RecentFilesFilterNode.createSheet.filterType.displayName=\u30D5\u30A3\u30EB\u30BF\u30FC\u30BF\u30A4\u30D7
RecentFilesFilterNode.createSheet.filterType.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
RecentFilesNode.createSheet.name.name=\u540D\u79F0
RecentFilesNode.createSheet.name.displayName=\u540D\u79F0
RecentFilesNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
RecentFilesNode.name.text=\u6700\u8FD1\u4F7F\u7528\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB
ResultsNode.name.text=\u7D50\u679C
ResultsNode.createSheet.name.name=\u540D\u79F0
ResultsNode.createSheet.name.displayName=\u540D\u79F0
ResultsNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
TagNameNode.namePlusTags.text={0}\u30BF\u30B0
TagNameNode.contentTagTypeNodeKey.text=\u30B3\u30F3\u30C6\u30F3\u30C4\u30BF\u30B0
TagNameNode.bbArtTagTypeNodeKey.text=\u7D50\u679C\u30BF\u30B0
TagNameNode.bookmark.text=\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF
TagNameNode.createSheet.name.name=\u540D\u79F0
TagNameNode.createSheet.name.displayName=\u540D\u79F0
TagsNode.displayName.text=\u30BF\u30B0
TagsNode.createSheet.name.name=\u540D\u79F0
AbstractAbstractFileNode.flagsDirColLbl=\u30D5\u30E9\u30B0\uFF08\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF09
AbstractAbstractFileNode.flagsMetaColLbl=\u30D5\u30E9\u30B0\uFF08\u30E1\u30BF\u30C7\u30FC\u30BF\uFF09
AbstractAbstractFileNode.metaAddrColLbl=\u30E1\u30BF\u30C7\u30FC\u30BF\u30A2\u30C9\u30EC\u30B9
AbstractAbstractFileNode.attrAddrColLbl=\u5C5E\u6027\u30A2\u30C9\u30EC\u30B9
AbstractAbstractFileNode.typeDirColLbl=\u30BF\u30A4\u30D7\uFF08\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF09
AbstractAbstractFileNode.typeMetaColLbl=\u30BF\u30A4\u30D7\uFF08\u30E1\u30BF\u30C7\u30FC\u30BF\uFF09
ArtifactTypeNode.createSheet.childCnt.displayName=\u30C1\u30E3\u30A4\u30EB\u30C9\u6570
TagsNode.createSheet.name.displayName=\u540D\u79F0
ViewsNode.name.text=\u30D3\u30E5\u30FC
ViewsNode.createSheet.name.name=\u540D\u79F0
ViewsNode.createSheet.name.displayName=\u540D\u79F0
ViewsNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
VirtualDirectoryNode.getActions.viewInNewWin.text=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u8868\u793A
VirtualDirectoryNode.createSheet.name.name=\u540D\u79F0
VirtualDirectoryNode.createSheet.name.displayName=\u540D\u79F0
VirtualDirectoryNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
VirtualDirectoryNode.createSheet.noDesc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
VolumeNode.getActions.viewInNewWin.text=\u65B0\u898F\u30A6\u30A3\u30F3\u30C9\u30A6\u306B\u8868\u793A
VolumeNode.createSheet.name.name=\u540D\u79F0
VolumeNode.createSheet.name.displayName=\u540D\u79F0
VolumeNode.createSheet.name.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
VolumeNode.createSheet.id.name=ID
VolumeNode.createSheet.id.displayName=ID
VolumeNode.createSheet.id.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
VolumeNode.createSheet.startSector.name=\u6700\u521D\u306E\u30BB\u30AF\u30BF\u30FC
VolumeNode.createSheet.startSector.displayName=\u6700\u521D\u306E\u30BB\u30AF\u30BF\u30FC
VolumeNode.createSheet.startSector.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
VolumeNode.createSheet.lenSectors.name=\u30BB\u30AF\u30BF\u30FC\u306E\u9577\u3055
VolumeNode.createSheet.lenSectors.displayName=\u30BB\u30AF\u30BF\u30FC\u306E\u9577\u3055
VolumeNode.createSheet.lenSectors.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
VolumeNode.createSheet.description.name=\u8AAC\u660E
VolumeNode.createSheet.description.displayName=\u8AAC\u660E
VolumeNode.createSheet.description.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
VolumeNode.createSheet.flags.name=\u30D5\u30E9\u30B0
VolumeNode.createSheet.flags.displayName=\u30D5\u30E9\u30B0
VolumeNode.createSheet.flags.desc=\u8AAC\u660E\u304C\u3042\u308A\u307E\u305B\u3093
ArtifactTypeNode.createSheet.artType.name=\u6210\u679C\u7269\u30BF\u30A4\u30D7
ArtifactTypeNode.createSheet.artType.displayName=\u6210\u679C\u7269\u30BF\u30A4\u30D7
KeywordHits.createSheet.numChildren.name=\u30C1\u30E3\u30A4\u30EB\u30C9\u6570
KeywordHits.createSheet.numChildren.displayName=\u30C1\u30E3\u30A4\u30EB\u30C9\u6570
KeywordHits.simpleLiteralSearch.text=\u30B7\u30F3\u30B0\u30EB\u30EA\u30C6\u30E9\u30EB\u691C\u7D22
KeywordHits.singleRegexSearch.text=\u30B7\u30F3\u30B0\u30EB\u6B63\u898F\u8868\u73FE\u691C\u7D22

View File

@ -25,6 +25,7 @@ import java.util.logging.Logger;
import javax.swing.Action;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.actions.DeleteContentTagAction;
import org.sleuthkit.datamodel.ContentTag;
@ -57,17 +58,26 @@ import org.sleuthkit.datamodel.TskCoreException;
propertySheet.put(properties);
}
properties.put(new NodeProperty("File", "File", "", tag.getContent().getName()));
properties.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "ContentTagNode.createSheet.file.name"),
NbBundle.getMessage(this.getClass(), "ContentTagNode.createSheet.file.displayName"),
"",
tag.getContent().getName()));
String contentPath;
try {
contentPath = tag.getContent().getUniquePath();
}
catch (TskCoreException ex) {
Logger.getLogger(ContentTagNode.class.getName()).log(Level.SEVERE, "Failed to get path for content (id = " + tag.getContent().getId() + ")", ex);
contentPath = "Unavailable";
contentPath = NbBundle.getMessage(this.getClass(), "ContentTagNode.createSheet.unavail.path");
}
properties.put(new NodeProperty("File Path", "File Path", "", contentPath));
properties.put(new NodeProperty("Comment", "Comment", "", tag.getComment()));
properties.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "ContentTagNode.createSheet.filePath.name"),
NbBundle.getMessage(this.getClass(), "ContentTagNode.createSheet.filePath.displayName"),
"",
contentPath));
properties.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "ContentTagNode.createSheet.comment.name"),
NbBundle.getMessage(this.getClass(), "ContentTagNode.createSheet.comment.displayName"),
"",
tag.getComment()));
return propertySheet;
}

View File

@ -24,6 +24,7 @@ import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.coreutils.Logger;
@ -37,7 +38,7 @@ import org.sleuthkit.datamodel.TskCoreException;
* then by tag name.
*/
public class ContentTagTypeNode extends DisplayableItemNode {
private static final String DISPLAY_NAME = "File Tags";
private static final String DISPLAY_NAME = NbBundle.getMessage(ContentTagTypeNode.class, "ContentTagTypeNode.displayName.text");
private static final String ICON_PATH = "org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
public ContentTagTypeNode(TagName tagName) {
@ -65,7 +66,10 @@ public class ContentTagTypeNode extends DisplayableItemNode {
propertySheet.put(properties);
}
properties.put(new NodeProperty("Name", "Name", "", getName()));
properties.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "ContentTagTypeNode.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "ContentTagTypeNode.createSheet.name.displayName"),
"",
getName()));
return propertySheet;
}

View File

@ -25,6 +25,8 @@ import java.text.SimpleDateFormat;
import java.util.TimeZone;
import java.util.logging.Level;
import java.util.prefs.Preferences;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.SwingWorker;
import org.netbeans.api.progress.ProgressHandle;
@ -50,7 +52,7 @@ public final class ContentUtils {
private final static Logger logger = Logger.getLogger(ContentUtils.class.getName());
private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
private static final SimpleDateFormat dateFormatterISO8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
private static boolean displayInLocalTime;
// don't instantiate
private ContentUtils() {
throw new AssertionError();
@ -104,12 +106,11 @@ public final class ContentUtils {
public static String getStringTimeISO8601(long epochSeconds, Content c) {
return getStringTimeISO8601(epochSeconds, getTimeZone(c));
}
public static TimeZone getTimeZone(Content c) {
Preferences generalPanelPrefs = NbPreferences.root().node("/org/sleuthkit/autopsy/core");
boolean useLocalTime = generalPanelPrefs.getBoolean("useLocalTime", true);
try {
if (!useLocalTime) {
if (!getDisplayInLocalTime()) {
return TimeZone.getTimeZone("GMT");
}
else {
@ -356,8 +357,23 @@ public final class ContentUtils {
@Override
protected Void defaultVisit(Content cntnt) {
throw new UnsupportedOperationException("Can't extract a "
+ cntnt.getClass().getSimpleName());
throw new UnsupportedOperationException(NbBundle.getMessage(this.getClass(),
"ContentUtils.exception.msg",
cntnt.getClass().getSimpleName()));
}
}
/**sets displayInlocalTime value based on button in GeneralPanel.java
*
* @param flag
*/
public static void setDisplayInLocalTime(boolean flag) {
displayInLocalTime = flag;
}
/** get global timezone setting for displaying time values
*
* @return
*/
public static boolean getDisplayInLocalTime(){
return displayInLocalTime;
}
}

View File

@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.datamodel;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Action;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.actions.AddBlackboardArtifactTagAction;
import org.sleuthkit.autopsy.actions.AddContentTagAction;
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
@ -46,17 +48,28 @@ import org.sleuthkit.datamodel.VirtualDirectory;
// method could be implemented. If the different nodes are necessary, is it merely because of some misuse of the Visitor pattern somewhere?
// 2. All of this would be much improved by not constructing nodes with actions, but this might be necessary with pushing of nodes rather than use of lookups to
// handle selections.
class DataModelActionsFactory {
class DataModelActionsFactory {
public static final String VIEW_SOURCE_FILE_IN_DIR = NbBundle
.getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.srcFileInDir.text");
public static final String VIEW_FILE_IN_DIR = NbBundle
.getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.fileInDir.text");
public static final String VIEW_IN_NEW_WINDOW = NbBundle
.getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.viewNewWin.text");
public static final String OPEN_IN_EXTERNAL_VIEWER = NbBundle
.getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.openExtViewer.text");
public static final String SEARCH_FOR_FILES_SAME_MD5 = NbBundle
.getMessage(DataModelActionsFactory.class, "DataModelActionsFactory.srfFileSameMD5.text");
static List<Action> getActions(File file, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>();
actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), file));
actions.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), file));
final FileNode fileNode = new FileNode(file);
actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", fileNode));
actions.add(new ExternalViewerAction("Open in External Viewer", fileNode));
actions.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, fileNode));
actions.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, fileNode));
actions.add(null); // creates a menu separator
actions.add(ExtractAction.getInstance());
actions.add(new HashSearchAction("Search for files with the same MD5 hash", fileNode));
actions.add(new HashSearchAction(SEARCH_FOR_FILES_SAME_MD5, fileNode));
actions.add(null); // creates a menu separator
actions.add(AddContentTagAction.getInstance());
if (isArtifactSource) {
@ -68,11 +81,11 @@ class DataModelActionsFactory {
static List<Action> getActions(LayoutFile file, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>();
actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), file));
actions.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), file));
LayoutFileNode layoutFileNode = new LayoutFileNode(file);
actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", layoutFileNode));
actions.add(new ExternalViewerAction("Open in External Viewer", layoutFileNode));
actions.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, layoutFileNode));
actions.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, layoutFileNode));
actions.add(null); // creates a menu separator
actions.add(ExtractAction.getInstance());//
actions.add(null); // creates a menu separator
@ -86,11 +99,11 @@ class DataModelActionsFactory {
static List<Action> getActions(Directory directory, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>();
actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), directory));
actions.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), directory));
DirectoryNode directoryNode = new DirectoryNode(directory);
actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", directoryNode));
actions.add(new ExternalViewerAction("Open in External Viewer", directoryNode));
actions.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
actions.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
actions.add(null); // creates a menu separator
actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator
@ -104,11 +117,11 @@ class DataModelActionsFactory {
static List<Action> getActions(VirtualDirectory directory, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>();
actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), directory));
actions.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), directory));
VirtualDirectoryNode directoryNode = new VirtualDirectoryNode(directory);
actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", directoryNode));
actions.add(new ExternalViewerAction("Open in External Viewer", directoryNode));
actions.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
actions.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
actions.add(null); // creates a menu separator
actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator
@ -122,11 +135,11 @@ class DataModelActionsFactory {
static List<Action> getActions(LocalFile file, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>();
actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), file));
actions.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), file));
final LocalFileNode localFileNode = new LocalFileNode(file);
actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", localFileNode));
actions.add(new ExternalViewerAction("Open in External Viewer", localFileNode));
actions.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, localFileNode));
actions.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, localFileNode));
actions.add(null); // creates a menu separator
actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator
@ -140,11 +153,11 @@ class DataModelActionsFactory {
static List<Action> getActions(DerivedFile file, boolean isArtifactSource) {
List<Action> actions = new ArrayList<>();
actions.add(new ViewContextAction((isArtifactSource ? "View Source File in Directory" : "View File in Directory"), file));
actions.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), file));
final LocalFileNode localFileNode = new LocalFileNode(file);
actions.add(null); // creates a menu separator
actions.add(new NewWindowViewAction("View in New Window", localFileNode));
actions.add(new ExternalViewerAction("Open in External Viewer", localFileNode));
actions.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, localFileNode));
actions.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, localFileNode));
actions.add(null); // creates a menu separator
actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator

View File

@ -19,8 +19,9 @@
package org.sleuthkit.autopsy.datamodel;
import java.util.List;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.datamodel.Content;
@ -29,7 +30,7 @@ import org.sleuthkit.datamodel.Content;
*/
public class DataSourcesNode extends DisplayableItemNode {
public static final String NAME = "Data Sources";
public static final String NAME = NbBundle.getMessage(DataSourcesNode.class, "DataSourcesNode.name");
public DataSourcesNode(List<Content> images) {
super(new RootContentChildren(images), Lookups.singleton(NAME));
@ -57,10 +58,10 @@ public class DataSourcesNode extends DisplayableItemNode {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
NAME));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "DataSourcesNode.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "DataSourcesNode.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "DataSourcesNode.createSheet.name.desc"),
NAME));
return s;
}
}

View File

@ -29,6 +29,7 @@ import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.datamodel.AbstractFile;
@ -51,8 +52,12 @@ public class DeletedContent implements AutopsyVisitableItem {
public enum DeletedContentFilter implements AutopsyVisitableItem {
FS_DELETED_FILTER(0, "FS_DELETED_FILTER", "File System"),
ALL_DELETED_FILTER(1, "ALL_DELETED_FILTER", "All");
FS_DELETED_FILTER(0,
"FS_DELETED_FILTER",
NbBundle.getMessage(DeletedContent.class, "DeletedContent.fsDelFilter.text")),
ALL_DELETED_FILTER(1,
"ALL_DELETED_FILTER",
NbBundle.getMessage(DeletedContent.class, "DeletedContent.allDelFilter.text"));
private int id;
private String name;
private String displayName;
@ -97,7 +102,8 @@ public class DeletedContent implements AutopsyVisitableItem {
public static class DeletedContentsNode extends DisplayableItemNode {
private static final String NAME = "Deleted Files";
private static final String NAME = NbBundle.getMessage(DeletedContent.class,
"DeletedContent.deletedContentsNode.name");
private SleuthkitCase skCase;
DeletedContentsNode(SleuthkitCase skCase) {
@ -127,10 +133,10 @@ public class DeletedContent implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
NAME));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "DeletedContent.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "DeletedContent.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "DeletedContent.createSheet.name.desc"),
NAME));
return s;
}
}
@ -191,9 +197,10 @@ public class DeletedContent implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Filter Type",
"Filter Type",
"no description",
ss.put(new NodeProperty(
NbBundle.getMessage(this.getClass(), "DeletedContent.createSheet.filterType.name"),
NbBundle.getMessage(this.getClass(), "DeletedContent.createSheet.filterType.displayName"),
NbBundle.getMessage(this.getClass(), "DeletedContent.createSheet.filterType.desc"),
filter.getDisplayName()));
return s;
@ -225,9 +232,9 @@ public class DeletedContent implements AutopsyVisitableItem {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JOptionPane.showMessageDialog(null, "There are more Deleted Files than can be displayed. Only the first "
+ (MAX_OBJECTS - 1)
+ " Deleted Files will be shown.");
JOptionPane.showMessageDialog(null, NbBundle.getMessage(this.getClass(),
"DeletedContent.createKeys.maxObjects.msg",
MAX_OBJECTS - 1));
}
});
}
@ -330,7 +337,9 @@ public class DeletedContent implements AutopsyVisitableItem {
@Override
protected AbstractNode defaultVisit(Content di) {
throw new UnsupportedOperationException("Not supported for this type of Displayable Item: " + di.toString());
throw new UnsupportedOperationException(NbBundle.getMessage(this.getClass(),
"DeletedContent.createNodeForKey.typeNotSupported.msg",
di.toString()));
}
});
}

View File

@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.datamodel;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Action;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
import org.sleuthkit.autopsy.actions.AddContentTagAction;
import org.sleuthkit.autopsy.directorytree.ExtractAction;
@ -36,8 +38,8 @@ import org.sleuthkit.datamodel.TskData.TSK_FS_NAME_FLAG_ENUM;
*/
public class DirectoryNode extends AbstractFsContentNode<AbstractFile> {
public static final String DOTDOTDIR = "[parent folder]";
public static final String DOTDIR = "[current folder]";
public static final String DOTDOTDIR = NbBundle.getMessage(DirectoryNode.class, "DirectoryNode.parFolder.text");
public static final String DOTDIR = NbBundle.getMessage(DirectoryNode.class, "DirectoryNode.curFolder.text");
public DirectoryNode(Directory dir) {
this(dir, true);
@ -70,10 +72,11 @@ public class DirectoryNode extends AbstractFsContentNode<AbstractFile> {
public Action[] getActions(boolean popup) {
List<Action> actions = new ArrayList<>();
if (!getDirectoryBrowseMode()) {
actions.add(new ViewContextAction("View File in Directory", this));
actions.add(new ViewContextAction(
NbBundle.getMessage(this.getClass(), "DirectoryNode.getActions.viewFileInDir.text"), this));
actions.add(null); // creates a menu separator
}
actions.add(new NewWindowViewAction("View in New Window", this));
actions.add(new NewWindowViewAction(NbBundle.getMessage(this.getClass(), "DirectoryNode.viewInNewWin.text"), this));
actions.add(null); // creates a menu separator
actions.add(ExtractAction.getInstance());
actions.add(null); // creates a menu separator

View File

@ -26,8 +26,9 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
@ -49,8 +50,8 @@ public class EmailExtracted implements AutopsyVisitableItem {
private static final String LABEL_NAME = BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG.getLabel();
private static final String DISPLAY_NAME = BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG.getDisplayName();
private static final Logger logger = Logger.getLogger(EmailExtracted.class.getName());
private static final String MAIL_ACCOUNT = "Account";
private static final String MAIL_FOLDER = "Folder";
private static final String MAIL_ACCOUNT = NbBundle.getMessage(EmailExtracted.class, "EmailExtracted.mailAccount.text");
private static final String MAIL_FOLDER = NbBundle.getMessage(EmailExtracted.class, "EmailExtracted.mailFolder.text");
private static final String MAIL_PATH_SEPARATOR = "/";
private SleuthkitCase skCase;
private Map<String, Map<String, List<Long>>> accounts;
@ -104,8 +105,8 @@ public class EmailExtracted implements AutopsyVisitableItem {
if (split.length < 4) {
logger.log(Level.WARNING, "Unexpected number of tokens when parsing email PATH: "
+ split.length + ", will use defaults");
parsed.put(MAIL_ACCOUNT, "Default");
parsed.put(MAIL_FOLDER, "Default");
parsed.put(MAIL_ACCOUNT, NbBundle.getMessage(EmailExtracted.class, "EmailExtracted.defaultAcct.text"));
parsed.put(MAIL_FOLDER, NbBundle.getMessage(EmailExtracted.class, "EmailExtracted.defaultFolder.text"));
return parsed;
}
@ -152,10 +153,10 @@ public class EmailExtracted implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.desc"),
getName()));
return s;
}
@ -234,10 +235,10 @@ public class EmailExtracted implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.desc"),
getName()));
return s;
}
@ -281,10 +282,10 @@ public class EmailExtracted implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.desc"),
getName()));
return s;
}
@ -351,10 +352,10 @@ public class EmailExtracted implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "EmailExtracted.createSheet.name.desc"),
getName()));
return s;
}

View File

@ -18,9 +18,9 @@
*/
package org.sleuthkit.autopsy.datamodel;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.datamodel.SleuthkitCase;
@ -29,7 +29,7 @@ import org.sleuthkit.datamodel.SleuthkitCase;
*/
public class ExtractedContentNode extends DisplayableItemNode {
public static final String NAME = "Extracted Content";
public static final String NAME = NbBundle.getMessage(ExtractedContentNode.class, "ExtractedContentNode.name.text");
public ExtractedContentNode(SleuthkitCase skCase) {
super(Children.create(new ExtractedContentChildren(skCase), true), Lookups.singleton(NAME));
@ -57,9 +57,9 @@ public class ExtractedContentNode extends DisplayableItemNode {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "ExtractedContentNode.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "ExtractedContentNode.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "ExtractedContentNode.createSheet.name.desc"),
NAME));
return s;
}

View File

@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.datamodel;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Action;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
import org.sleuthkit.autopsy.actions.AddContentTagAction;
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
@ -76,14 +78,17 @@ public class FileNode extends AbstractFsContentNode<AbstractFile> {
public Action[] getActions(boolean popup) {
List<Action> actionsList = new ArrayList<>();
if (!this.getDirectoryBrowseMode()) {
actionsList.add(new ViewContextAction("View File in Directory", this));
actionsList.add(new ViewContextAction(NbBundle.getMessage(this.getClass(), "FileNode.viewFileInDir.text"), this));
actionsList.add(null); // creates a menu separator
}
actionsList.add(new NewWindowViewAction("View in New Window", this));
actionsList.add(new ExternalViewerAction("Open in External Viewer", this));
actionsList.add(new NewWindowViewAction(
NbBundle.getMessage(this.getClass(), "FileNode.getActions.viewInNewWin.text"), this));
actionsList.add(new ExternalViewerAction(
NbBundle.getMessage(this.getClass(), "FileNode.getActions.openInExtViewer.text"), this));
actionsList.add(null); // creates a menu separator
actionsList.add(ExtractAction.getInstance());
actionsList.add(new HashSearchAction("Search for files with the same MD5 hash", this));
actionsList.add(new HashSearchAction(
NbBundle.getMessage(this.getClass(), "FileNode.getActions.searchFilesSameMD5.text"), this));
actionsList.add(null); // creates a menu separator
actionsList.add(AddContentTagAction.getInstance());
actionsList.addAll(ContextMenuExtensionPoint.getActions());

View File

@ -27,6 +27,7 @@ import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.datamodel.AbstractFile;
@ -99,7 +100,7 @@ public class FileSize implements AutopsyVisitableItem {
public static class FileSizeRootNode extends DisplayableItemNode {
private static final String NAME = "File Size";
private static final String NAME = NbBundle.getMessage(FileSize.class, "FileSize.fileSizeRootNode.name");
private SleuthkitCase skCase;
FileSizeRootNode(SleuthkitCase skCase) {
@ -129,9 +130,9 @@ public class FileSize implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "FileSize.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "FileSize.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "FileSize.createSheet.name.desc"),
NAME));
return s;
}
@ -193,10 +194,10 @@ public class FileSize implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Filter Type",
"Filter Type",
"no description",
filter.getDisplayName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "FileSize.createSheet.filterType.name"),
NbBundle.getMessage(this.getClass(), "FileSize.createSheet.filterType.displayName"),
NbBundle.getMessage(this.getClass(), "FileSize.createSheet.filterType.desc"),
filter.getDisplayName()));
return s;
}
@ -327,7 +328,10 @@ public class FileSize implements AutopsyVisitableItem {
@Override
protected AbstractNode defaultVisit(Content di) {
throw new UnsupportedOperationException("Not supported for this type of Displayable Item: " + di.toString());
throw new UnsupportedOperationException(
NbBundle.getMessage(this.getClass(),
"FileSize.exception.notSupported.msg",
di.toString()));
}
});
}

View File

@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.datamodel;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.ChildFactory;
@ -125,7 +127,10 @@ class FileTypeChildren extends ChildFactory<Content> {
@Override
protected AbstractNode defaultVisit(Content di) {
throw new UnsupportedOperationException("Not supported for this type of Displayable Item: " + di.toString());
throw new UnsupportedOperationException(
NbBundle.getMessage(this.getClass(),
"FileTypeChildren.exception.notSupported.msg",
di.toString()));
}
});
}

View File

@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.datamodel;
import java.util.Arrays;
import java.util.List;
import org.openide.util.NbBundle;
import org.sleuthkit.datamodel.SleuthkitCase;
/**
@ -31,12 +33,24 @@ import org.sleuthkit.datamodel.SleuthkitCase;
// root node filters
public enum RootFilter implements AutopsyVisitableItem,SearchFilterInterface {
TSK_IMAGE_FILTER(0, "TSK_IMAGE_FILTER", "Images", FileTypeExtensions.getImageExtensions()),
TSK_VIDEO_FILTER(1, "TSK_VIDEO_FILTER", "Videos", FileTypeExtensions.getVideoExtensions()),
TSK_AUDIO_FILTER(2, "TSK_AUDIO_FILTER", "Audio", FileTypeExtensions.getAudioExtensions()),
TSK_ARCHIVE_FILTER(3, "TSK_ARCHIVE_FILTER", "Archives", FileTypeExtensions.getArchiveExtensions()),
TSK_DOCUMENT_FILTER(3, "TSK_DOCUMENT_FILTER", "Documents", Arrays.asList(".doc", ".docx", ".pdf", ".xls", ".rtf", ".txt")),
TSK_EXECUTABLE_FILTER(3, "TSK_EXECUTABLE_FILTER", "Executable", Arrays.asList(".exe", ".dll", ".bat", ".cmd", ".com"));
TSK_IMAGE_FILTER(0, "TSK_IMAGE_FILTER",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.tskImgFilter.text"),
FileTypeExtensions.getImageExtensions()),
TSK_VIDEO_FILTER(1, "TSK_VIDEO_FILTER",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.tskVideoFilter.text"),
FileTypeExtensions.getVideoExtensions()),
TSK_AUDIO_FILTER(2, "TSK_AUDIO_FILTER",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.tskAudioFilter.text"),
FileTypeExtensions.getAudioExtensions()),
TSK_ARCHIVE_FILTER(3, "TSK_ARCHIVE_FILTER",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.tskArchiveFilter.text"),
FileTypeExtensions.getArchiveExtensions()),
TSK_DOCUMENT_FILTER(3, "TSK_DOCUMENT_FILTER",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.tskDocumentFilter.text"),
Arrays.asList(".doc", ".docx", ".pdf", ".xls", ".rtf", ".txt")),
TSK_EXECUTABLE_FILTER(3, "TSK_EXECUTABLE_FILTER",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.tskExecFilter.text"),
Arrays.asList(".exe", ".dll", ".bat", ".cmd", ".com"));
private int id;
private String name;
@ -78,12 +92,21 @@ import org.sleuthkit.datamodel.SleuthkitCase;
// document sub-node filters
public enum DocumentFilter implements AutopsyVisitableItem,SearchFilterInterface {
AUT_DOC_HTML(0, "AUT_DOC_HTML", "HTML", Arrays.asList(".htm", ".html")),
AUT_DOC_OFFICE(1, "AUT_DOC_OFFICE", "Office", Arrays.asList(".doc", ".docx",
".odt", ".xls", ".xlsx", ".ppt", ".pptx")),
AUT_DOC_PDF(2, "AUT_DOC_PDF", "PDF", Arrays.asList(".pdf")),
AUT_DOC_TXT(3, "AUT_DOC_TXT", "Plain Text", Arrays.asList(".txt")),
AUT_DOC_RTF(4, "AUT_DOC_RTF", "Rich Text", Arrays.asList(".rtf"));
AUT_DOC_HTML(0, "AUT_DOC_HTML",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.autDocHtmlFilter.text"),
Arrays.asList(".htm", ".html")),
AUT_DOC_OFFICE(1, "AUT_DOC_OFFICE",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.autDocOfficeFilter.text"),
Arrays.asList(".doc", ".docx", ".odt", ".xls", ".xlsx", ".ppt", ".pptx")),
AUT_DOC_PDF(2, "AUT_DOC_PDF",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.autoDocPdfFilter.text"),
Arrays.asList(".pdf")),
AUT_DOC_TXT(3, "AUT_DOC_TXT",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.autDocTxtFilter.text"),
Arrays.asList(".txt")),
AUT_DOC_RTF(4, "AUT_DOC_RTF",
NbBundle.getMessage(FileTypeExtensionFilters.class, "FileTypeExtensionFilters.autDocRtfFilter.text"),
Arrays.asList(".rtf"));
private int id;
private String name;

View File

@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.datamodel;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.datamodel.SleuthkitCase;
@ -61,19 +62,19 @@ public class FileTypeNode extends DisplayableItemNode {
s.put(ss);
}
ss.put(new NodeProperty("Filter Type",
"Filter Type",
"no description",
filter.getDisplayName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "FileTypeNode.createSheet.filterType.name"),
NbBundle.getMessage(this.getClass(), "FileTypeNode.createSheet.filterType.displayName"),
NbBundle.getMessage(this.getClass(), "FileTypeNode.createSheet.filterType.desc"),
filter.getDisplayName()));
String extensions = "";
for (String ext : filter.getFilter()) {
extensions += "'" + ext + "', ";
}
extensions = extensions.substring(0, extensions.lastIndexOf(','));
ss.put(new NodeProperty("File Extensions",
"File Extensions",
"no description",
extensions));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "FileTypeNode.createSheet.fileExt.name"),
NbBundle.getMessage(this.getClass(), "FileTypeNode.createSheet.fileExt.displayName"),
NbBundle.getMessage(this.getClass(), "FileTypeNode.createSheet.fileExt.desc"),
extensions));
return s;
}

View File

@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.datamodel;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.datamodel.SleuthkitCase;
@ -28,7 +29,7 @@ import org.sleuthkit.datamodel.SleuthkitCase;
*/
public class FileTypesNode extends DisplayableItemNode {
private static final String FNAME = "File Types";
private static final String FNAME = NbBundle.getMessage(FileTypesNode.class, "FileTypesNode.fname.text");
private SleuthkitCase skCase;
/**
@ -71,9 +72,9 @@ public class FileTypesNode extends DisplayableItemNode {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "FileTypesNode.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "FileTypesNode.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "FileTypesNode.createSheet.name.desc"),
getName()));
return s;
}

View File

@ -20,21 +20,19 @@ package org.sleuthkit.autopsy.datamodel;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.nodes.Sheet;
import org.openide.util.Exceptions;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.datamodel.BlackboardArtifact;
import org.sleuthkit.datamodel.BlackboardAttribute;
@ -131,10 +129,10 @@ public class HashsetHits implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "HashsetHits.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "HashsetHits.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "HashsetHits.createSheet.name.desc"),
getName()));
return s;
}
@ -177,10 +175,10 @@ public class HashsetHits implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "HashsetHits.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "HashsetHits.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "HashsetHits.createSheet.name.desc"),
getName()));
return s;
}

View File

@ -22,6 +22,7 @@ import java.util.ArrayList;
import java.util.List;
import javax.swing.Action;
import org.openide.nodes.Sheet;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.directorytree.ExplorerNodeActionVisitor;
import org.sleuthkit.autopsy.directorytree.FileSearchAction;
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
@ -66,8 +67,10 @@ public class ImageNode extends AbstractContentNode<Image> {
public Action[] getActions(boolean context) {
List<Action> actionsList = new ArrayList<Action>();
actionsList.add(new NewWindowViewAction("View in New Window", this));
actionsList.add(new FileSearchAction("Open File Search by Attributes"));
actionsList.add(new NewWindowViewAction(
NbBundle.getMessage(this.getClass(), "ImageNode.getActions.viewInNewWin.text"), this));
actionsList.add(new FileSearchAction(
NbBundle.getMessage(this.getClass(), "ImageNode.getActions.openFileSearchByAttr.text")));
actionsList.addAll(ExplorerNodeActionVisitor.getActions(content));
return actionsList.toArray(new Action[0]);
@ -82,7 +85,10 @@ public class ImageNode extends AbstractContentNode<Image> {
s.put(ss);
}
ss.put(new NodeProperty("Name", "Name", "no description", getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "ImageNode.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "ImageNode.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "ImageNode.createSheet.name.desc"),
getName()));
// @@@ add more properties here...
return s;

View File

@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.datamodel;
import java.awt.Component;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.JOptionPane;
import org.openide.LifecycleManager;
@ -62,9 +64,9 @@ public class Installer extends ModuleInstall {
String skVersion = SleuthkitJNI.getVersion();
if (skVersion == null) {
throw new Exception("Sleuth Kit JNI test call returned without error, but version string was null!");
throw new Exception(NbBundle.getMessage(this.getClass(), "Installer.exception.tskVerStringNull.msg"));
} else if (skVersion.length() == 0) {
throw new Exception("Sleuth Kit JNI test call returned without error, but version string was \"\"!");
throw new Exception(NbBundle.getMessage(this.getClass(), "Installer.exception.taskVerStringBang.msg"));
} else {
logger.log(Level.CONFIG, "Sleuth Kit Version: {0}", skVersion);
}
@ -75,8 +77,8 @@ public class Installer extends ModuleInstall {
// Normal error box log handler won't be loaded yet, so show error here.
final Component parentComponent = null; // Use default window frame.
final String message = "Problem with Sleuth Kit JNI. Test call failed!\n\nDetails: " + e.toString();
final String title = "Fatal Error!";
final String message = NbBundle.getMessage(this.getClass(), "Installer.tskLibErr.msg", e.toString());
final String title = NbBundle.getMessage(this.getClass(), "Installer.tskLibErr.err");
final int messageType = JOptionPane.ERROR_MESSAGE;
JOptionPane.showMessageDialog(

View File

@ -27,6 +27,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
@ -41,8 +43,9 @@ import org.sleuthkit.datamodel.TskException;
public class InterestingHits implements AutopsyVisitableItem {
private static final String INTERESTING_ITEMS = "INTERESTING ITEMS";
private static final String DISPLAY_NAME = "Interesting Items";
private static final String INTERESTING_ITEMS = NbBundle
.getMessage(InterestingHits.class, "InterestingHits.interestingItems.text");
private static final String DISPLAY_NAME = NbBundle.getMessage(InterestingHits.class, "InterestingHits.displayName.text");
private static final Logger logger = Logger.getLogger(InterestingHits.class.getName());
private SleuthkitCase skCase;
private Map<String, Set<Long>> interestingItemsMap;
@ -132,10 +135,10 @@ public class InterestingHits implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "InterestingHits.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "InterestingHits.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "InterestingHits.createSheet.name.desc"),
getName()));
return s;
}
@ -178,10 +181,10 @@ public class InterestingHits implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "InterestingHits.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "InterestingHits.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "InterestingHits.createSheet.name.desc"),
getName()));
return s;
}

View File

@ -23,6 +23,7 @@ import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.nodes.Sheet;
import org.openide.util.Lookup;
import org.openide.util.NbBundle;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.datamodel.AbstractFile;
@ -78,12 +79,18 @@ import org.sleuthkit.datamodel.AbstractFile;
// table view drops first column of properties under assumption
// that it contains the node's name
ss.put(new NodeProperty("Name", "Name", "n/a", data.getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "KeyValueNode.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "KeyValueNode.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "KeyValueNode.createSheet.name.desc"),
data.getName()));
for (Map.Entry<String, Object> entry : data.getMap().entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
ss.put(new NodeProperty(key, key, "n/a", value));
ss.put(new NodeProperty(key,
key,
NbBundle.getMessage(this.getClass(), "KeyValueNode.createSheet.map.desc"),
value));
}
return s;

View File

@ -27,12 +27,13 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.openide.nodes.ChildFactory;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.nodes.Sheet;
import org.openide.util.Exceptions;
import org.openide.util.lookup.Lookups;
import org.sleuthkit.datamodel.BlackboardArtifact;
import org.sleuthkit.datamodel.BlackboardAttribute;
@ -48,10 +49,12 @@ public class KeywordHits implements AutopsyVisitableItem {
private SleuthkitCase skCase;
private static final Logger logger = Logger.getLogger(KeywordHits.class.getName());
private static final String KEYWORD_HITS = "Keyword Hits";
private static final String KEYWORD_HITS = NbBundle.getMessage(KeywordHits.class, "KeywordHits.kwHits.text");
public static final String NAME = BlackboardArtifact.ARTIFACT_TYPE.TSK_KEYWORD_HIT.getLabel();
public static final String SIMPLE_LITERAL_SEARCH = "Single Literal Keyword Search";
public static final String SIMPLE_REGEX_SEARCH = "Single Regular Expression Search";
public static final String SIMPLE_LITERAL_SEARCH = NbBundle
.getMessage(KeywordHits.class, "KeywordHits.simpleLiteralSearch.text");
public static final String SIMPLE_REGEX_SEARCH = NbBundle
.getMessage(KeywordHits.class, "KeywordHits.singleRegexSearch.text");
// Map from String (list name) to Map from string (keyword) to set<long> (artifact ids)
private Map<String, Map<String, Set<Long>>> topLevelMap;
private Map<String, Map<String, Set<Long>>> listsMap;
@ -190,10 +193,10 @@ public class KeywordHits implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("Name",
"Name",
"no description",
getName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.name.name"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.name.displayName"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.name.desc"),
getName()));
return s;
}
@ -240,16 +243,16 @@ public class KeywordHits implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("List Name",
"List Name",
"no description",
name));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.listName.name"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.listName.displayName"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.listName.desc"),
name));
ss.put(new NodeProperty("Number of Children",
"Number of Children",
"no description",
children.size()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.numChildren.name"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.numChildren.displayName"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.numChildren.desc"),
children.size()));
return s;
}
@ -321,16 +324,16 @@ public class KeywordHits implements AutopsyVisitableItem {
s.put(ss);
}
ss.put(new NodeProperty("List Name",
"List Name",
"no description",
getDisplayName()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.listName.name"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.listName.displayName"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.listName.desc"),
getDisplayName()));
ss.put(new NodeProperty("Files with Hits",
"Files with Hits",
"no description",
children.size()));
ss.put(new NodeProperty(NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.filesWithHits.name"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.filesWithHits.displayName"),
NbBundle.getMessage(this.getClass(), "KeywordHits.createSheet.filesWithHits.desc"),
children.size()));
return s;
}
@ -371,19 +374,28 @@ public class KeywordHits implements AutopsyVisitableItem {
return n;
}
n.addNodeProperty(new NodeProperty("ModifiedTime",
"Modified Time",
"Modified Time",
n.addNodeProperty(new NodeProperty(
NbBundle.getMessage(this.getClass(), "KeywordHits.createNodeForKey.modTime.name"),
NbBundle.getMessage(this.getClass(),
"KeywordHits.createNodeForKey.modTime.displayName"),
NbBundle.getMessage(this.getClass(),
"KeywordHits.createNodeForKey.modTime.desc"),
ContentUtils.getStringTime(file.getMtime(), file)));
n.addNodeProperty(new NodeProperty("AccessTime",
"Access Time",
"Access Time",
n.addNodeProperty(new NodeProperty(
NbBundle.getMessage(this.getClass(), "KeywordHits.createNodeForKey.accessTime.name"),
NbBundle.getMessage(this.getClass(),
"KeywordHits.createNodeForKey.accessTime.displayName"),
NbBundle.getMessage(this.getClass(),
"KeywordHits.createNodeForKey.accessTime.desc"),
ContentUtils.getStringTime(file.getAtime(), file)));
n.addNodeProperty(new NodeProperty("ChangeTime",
"Change Time",
"Change Time",
n.addNodeProperty(new NodeProperty(
NbBundle.getMessage(this.getClass(), "KeywordHits.createNodeForKey.chgTime.name"),
NbBundle.getMessage(this.getClass(),
"KeywordHits.createNodeForKey.chgTime.displayName"),
NbBundle.getMessage(this.getClass(),
"KeywordHits.createNodeForKey.chgTime.desc"),
ContentUtils.getStringTime(file.getCtime(), file)));
return n;
}
}

View File

@ -23,6 +23,7 @@ import java.util.prefs.PreferenceChangeListener;
import java.util.prefs.Preferences;
import org.openide.nodes.FilterNode;
import org.openide.nodes.Node;
import org.openide.util.NbBundle;
import org.openide.util.NbPreferences;
import org.sleuthkit.datamodel.AbstractFile;
import org.sleuthkit.datamodel.TskData;
@ -56,8 +57,8 @@ public class KnownFileFilterNode extends FilterNode {
* is a sub-node of. (i.e. Data Sources, Views, Results)
*/
public enum SelectionContext {
DATA_SOURCES("Data Sources"), // Subnode of DataSources
VIEWS("Views"), // Subnode of Views
DATA_SOURCES(NbBundle.getMessage(KnownFileFilterNode.class, "KnownFileFilterNode.selectionContext.dataSources")), // Subnode of DataSources
VIEWS(NbBundle.getMessage(KnownFileFilterNode.class, "KnownFileFilterNode.selectionContext.views")), // Subnode of Views
OTHER(""); // Subnode of another node.
private final String displayName;

Some files were not shown because too many files have changed in this diff Show More