mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
Merged develop into new ingest framework feature branch
This commit is contained in:
commit
ff0b814225
@ -2,7 +2,7 @@ Manifest-Version: 1.0
|
||||
OpenIDE-Module: org.sleuthkit.autopsy.core/9
|
||||
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/core/Bundle.properties
|
||||
OpenIDE-Module-Layer: org/sleuthkit/autopsy/core/layer.xml
|
||||
OpenIDE-Module-Implementation-Version: 9
|
||||
OpenIDE-Module-Implementation-Version: 10
|
||||
OpenIDE-Module-Requires: org.openide.windows.WindowManager, org.netbeans.api.javahelp.Help
|
||||
AutoUpdate-Show-In-Client: true
|
||||
AutoUpdate-Essential-Module: true
|
||||
|
@ -6,5 +6,5 @@ license.file=../LICENSE-2.0.txt
|
||||
nbm.homepage=http://www.sleuthkit.org/
|
||||
nbm.module.author=Brian Carrier
|
||||
nbm.needs.restart=true
|
||||
spec.version.base=7.0
|
||||
spec.version.base=7.1
|
||||
|
||||
|
@ -194,6 +194,7 @@
|
||||
<package>org.sleuthkit.autopsy.actions</package>
|
||||
<package>org.sleuthkit.autopsy.casemodule</package>
|
||||
<package>org.sleuthkit.autopsy.casemodule.services</package>
|
||||
<package>org.sleuthkit.autopsy.contentviewers</package>
|
||||
<package>org.sleuthkit.autopsy.core</package>
|
||||
<package>org.sleuthkit.autopsy.corecomponentinterfaces</package>
|
||||
<package>org.sleuthkit.autopsy.corecomponents</package>
|
||||
@ -206,14 +207,14 @@
|
||||
<package>org.sleuthkit.autopsy.report</package>
|
||||
<package>org.sleuthkit.datamodel</package>
|
||||
</public-packages>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/sqlite-jdbc-3.8.0-SNAPSHOT.jar</runtime-relative-path>
|
||||
<binary-origin>release/modules/ext/sqlite-jdbc-3.8.0-SNAPSHOT.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/Tsk_DataModel.jar</runtime-relative-path>
|
||||
<binary-origin>release/modules/ext/Tsk_DataModel.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/sqlite-jdbc-3.8.0-SNAPSHOT.jar</runtime-relative-path>
|
||||
<binary-origin>release/modules/ext/sqlite-jdbc-3.8.0-SNAPSHOT.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
||||
|
@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.actions;
|
||||
import java.util.Collection;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.Utilities;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
@ -50,7 +52,11 @@ public class AddBlackboardArtifactTagAction extends AddTagAction {
|
||||
|
||||
@Override
|
||||
protected String getActionDisplayName() {
|
||||
return Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class).size() > 1 ? "Tag Results" : "Tag Result";
|
||||
String singularTagResult = NbBundle.getMessage(this.getClass(),
|
||||
"AddBlackboardArtifactTagAction.singularTagResult");
|
||||
String pluralTagResult = NbBundle.getMessage(this.getClass(),
|
||||
"AddBlackboardArtifactTagAction.pluralTagResult");
|
||||
return Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class).size() > 1 ? pluralTagResult : singularTagResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -62,7 +68,13 @@ public class AddBlackboardArtifactTagAction extends AddTagAction {
|
||||
}
|
||||
catch (TskCoreException ex) {
|
||||
Logger.getLogger(AddBlackboardArtifactTagAction.class.getName()).log(Level.SEVERE, "Error tagging result", ex);
|
||||
JOptionPane.showMessageDialog(null, "Unable to tag " + artifact.getDisplayName() + ".", "Tagging Error", JOptionPane.ERROR_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddBlackboardArtifactTagAction.unableToTag.msg",
|
||||
artifact.getDisplayName()),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddBlackboardArtifactTagAction.taggingErr"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -21,6 +21,8 @@ package org.sleuthkit.autopsy.actions;
|
||||
import java.util.Collection;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.Utilities;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
@ -51,7 +53,9 @@ public class AddContentTagAction extends AddTagAction {
|
||||
|
||||
@Override
|
||||
protected String getActionDisplayName() {
|
||||
return Utilities.actionsGlobalContext().lookupAll(AbstractFile.class).size() > 1 ? "Tag Files" : "Tag File";
|
||||
String singularTagFile = NbBundle.getMessage(this.getClass(), "AddContentTagAction.singularTagFile");
|
||||
String pluralTagFile = NbBundle.getMessage(this.getClass(), "AddContentTagAction.pluralTagFile");
|
||||
return Utilities.actionsGlobalContext().lookupAll(AbstractFile.class).size() > 1 ? pluralTagFile : singularTagFile;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -66,7 +70,13 @@ public class AddContentTagAction extends AddTagAction {
|
||||
file = (AbstractFile)parentFile;
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(null, "Unable to tag " + parentFile.getName() + ", not a regular file.", "Cannot Apply Tag", JOptionPane.WARNING_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddContentTagAction.unableToTag.msg",
|
||||
parentFile.getName()),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddContentTagAction.cannotApplyTagErr"),
|
||||
JOptionPane.WARNING_MESSAGE);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -78,12 +88,24 @@ public class AddContentTagAction extends AddTagAction {
|
||||
file = (AbstractFile)parentFile;
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(null, "Unable to tag " + parentFile.getName() + ", not a regular file.", "Cannot Apply Tag", JOptionPane.WARNING_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddContentTagAction.unableToTag.msg",
|
||||
parentFile.getName()),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddContentTagAction.cannotApplyTagErr"),
|
||||
JOptionPane.WARNING_MESSAGE);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else {
|
||||
JOptionPane.showMessageDialog(null, "Unable to tag " + parentFile.getName() + ", not a regular file.", "Cannot Apply Tag", JOptionPane.WARNING_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddContentTagAction.unableToTag.msg",
|
||||
parentFile.getName()),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddContentTagAction.cannotApplyTagErr"),
|
||||
JOptionPane.WARNING_MESSAGE);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -92,7 +114,12 @@ public class AddContentTagAction extends AddTagAction {
|
||||
}
|
||||
catch (TskCoreException ex) {
|
||||
Logger.getLogger(AddContentTagAction.class.getName()).log(Level.SEVERE, "Error tagging result", ex);
|
||||
JOptionPane.showMessageDialog(null, "Unable to tag " + file.getName() + ".", "Tagging Error", JOptionPane.ERROR_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"AddContentTagAction.unableToTag.msg2",
|
||||
file.getName()),
|
||||
NbBundle.getMessage(this.getClass(), "AddContentTagAction.taggingErr"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,8 @@ import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JMenuItem;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.actions.Presenter;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
||||
@ -85,7 +87,7 @@ abstract class AddTagAction extends TagAction implements Presenter.Popup {
|
||||
}
|
||||
|
||||
// Create a "Quick Tag" sub-menu.
|
||||
JMenu quickTagMenu = new JMenu("Quick Tag");
|
||||
JMenu quickTagMenu = new JMenu(NbBundle.getMessage(this.getClass(), "AddTagAction.quickTag"));
|
||||
add(quickTagMenu);
|
||||
|
||||
// Each tag name in the current set of tags gets its own menu item in
|
||||
@ -105,7 +107,7 @@ abstract class AddTagAction extends TagAction implements Presenter.Popup {
|
||||
}
|
||||
}
|
||||
else {
|
||||
JMenuItem empty = new JMenuItem("No tags");
|
||||
JMenuItem empty = new JMenuItem(NbBundle.getMessage(this.getClass(), "AddTagAction.noTags"));
|
||||
empty.setEnabled(false);
|
||||
quickTagMenu.add(empty);
|
||||
}
|
||||
@ -115,7 +117,7 @@ abstract class AddTagAction extends TagAction implements Presenter.Popup {
|
||||
// The "Quick Tag" menu also gets an "Choose Tag..." menu item.
|
||||
// Selecting this item initiates a dialog that can be used to create
|
||||
// or select a tag name and adds a tag with the resulting name.
|
||||
JMenuItem newTagMenuItem = new JMenuItem("New Tag...");
|
||||
JMenuItem newTagMenuItem = new JMenuItem(NbBundle.getMessage(this.getClass(), "AddTagAction.newTag"));
|
||||
newTagMenuItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
@ -131,7 +133,8 @@ abstract class AddTagAction extends TagAction implements Presenter.Popup {
|
||||
// Create a "Choose Tag and Comment..." menu item. Selecting this item initiates
|
||||
// a dialog that can be used to create or select a tag name with an
|
||||
// optional comment and adds a tag with the resulting name.
|
||||
JMenuItem tagAndCommentItem = new JMenuItem("Tag and Comment...");
|
||||
JMenuItem tagAndCommentItem = new JMenuItem(
|
||||
NbBundle.getMessage(this.getClass(), "AddTagAction.tagAndComment"));
|
||||
tagAndCommentItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
@ -14,3 +14,37 @@ GetTagNameAndCommentDialog.commentLabel.text=Comment:
|
||||
GetTagNameAndCommentDialog.cancelButton.text=Cancel
|
||||
GetTagNameAndCommentDialog.tagCombo.toolTipText=Select tag to use
|
||||
GetTagNameAndCommentDialog.tagLabel.text=Tag:
|
||||
AddBlackboardArtifactTagAction.singularTagResult=Tag Result
|
||||
AddBlackboardArtifactTagAction.pluralTagResult=Tag Results
|
||||
AddBlackboardArtifactTagAction.unableToTag.msg=Unable to tag {0}.
|
||||
AddBlackboardArtifactTagAction.taggingErr=Tagging Error
|
||||
AddContentTagAction.singularTagFile=Tag File
|
||||
AddContentTagAction.pluralTagFile=Tag Files
|
||||
AddContentTagAction.unableToTag.msg=Unable to tag {0}, not a regular file.
|
||||
AddContentTagAction.cannotApplyTagErr=Cannot Apply Tag
|
||||
AddContentTagAction.unableToTag.msg2=Unable to tag {0}.
|
||||
AddContentTagAction.taggingErr=Tagging Error
|
||||
AddTagAction.quickTag=Quick Tag
|
||||
AddTagAction.noTags=No tags
|
||||
AddTagAction.newTag=New Tag...
|
||||
AddTagAction.tagAndComment=Tag and Comment...
|
||||
DeleteBlackboardArtifactTagAction.deleteTags=Delete Tag(s)
|
||||
DeleteBlackboardArtifactTagAction.unableToDelTag.msg=Unable to delete tag {0}.
|
||||
DeleteBlackboardArtifactTagAction.tagDelErr=Tag Deletion Error
|
||||
DeleteContentTagAction.deleteTags=Delete Tag(s)
|
||||
DeleteContentTagAction.unableToDelTag.msg=Unable to delete tag {0}.
|
||||
DeleteContentTagAction.tagDelErr=Tag Deletion Error
|
||||
GetTagNameAndCommentDialog.noTags=No Tags
|
||||
GetTagNameAndCommentDialog.createTag=Create Tag
|
||||
GetTagNameAndCommentDialog.cancelName=cancel
|
||||
GetTagNameDialog.createTag=Create Tag
|
||||
GetTagNameDialog.cancelName=Cancel
|
||||
GetTagNameDialog.mustSupplyTtagName.msg=Must supply a tag name to continue.
|
||||
GetTagNameDialog.tagNameErr=Tag Name
|
||||
GetTagNameDialog.illegalChars.msg=The tag name contains illegal characters.\
|
||||
Cannot contain any of the following symbols\: \\ \: * ? " < > |
|
||||
GetTagNameDialog.illegalCharsErr=Illegal Characters
|
||||
GetTagNameDialog.unableToAddTagNameToCase.msg=Unable to add the {0} tag name to the case.
|
||||
GetTagNameDialog.taggingErr=Tagging Error
|
||||
GetTagNameDialog.tagNameAlreadyDef.msg=A {0} tag name has already been defined.
|
||||
GetTagNameDialog.dupTagErr=Duplicate Tag Error
|
||||
|
46
Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties
Normal file
46
Core/src/org/sleuthkit/autopsy/actions/Bundle_ja.properties
Normal file
@ -0,0 +1,46 @@
|
||||
GetTagNameDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
GetTagNameDialog.okButton.text=OK
|
||||
GetTagNameDialog.preexistingLabel.text=\u65E2\u5B58\u30BF\u30B0\uFF1A
|
||||
GetTagNameDialog.newTagPanel.border.title=\u65B0\u898F\u30BF\u30B0
|
||||
GetTagNameDialog.tagNameLabel.text=\u30BF\u30B0\u540D\uFF1A
|
||||
GetTagNameAndCommentDialog.newTagButton.text=\u65B0\u898F\u30BF\u30B0
|
||||
GetTagNameAndCommentDialog.okButton.text=OK
|
||||
GetTagNameAndCommentDialog.commentText.toolTipText=\u30BF\u30B0\u306E\u30B3\u30E1\u30F3\u30C8\u3092\u5165\u529B\u307E\u305F\u306F\u7A7A\u6B04\u306B\u3057\u3066\u304F\u3060\u3055\u3044
|
||||
GetTagNameAndCommentDialog.commentLabel.text=\u30B3\u30E1\u30F3\u30C8\uFF1A
|
||||
GetTagNameAndCommentDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
GetTagNameAndCommentDialog.tagCombo.toolTipText=\u4F7F\u7528\u3059\u308B\u30BF\u30B0\u3092\u9078\u629E
|
||||
GetTagNameAndCommentDialog.tagLabel.text=\u30BF\u30B0\uFF1A
|
||||
AddBlackboardArtifactTagAction.singularTagResult=\u7D50\u679C\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||
AddBlackboardArtifactTagAction.pluralTagResult=\u7D50\u679C\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||
AddBlackboardArtifactTagAction.unableToTag.msg={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
AddBlackboardArtifactTagAction.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC
|
||||
AddContentTagAction.singularTagFile=\u30D5\u30A1\u30A4\u30EB\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||
AddContentTagAction.pluralTagFile=\u30D5\u30A1\u30A4\u30EB\u306B\u30BF\u30B0\u3092\u8FFD\u52A0
|
||||
AddContentTagAction.unableToTag.msg={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002\u901A\u5E38\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
AddContentTagAction.unableToTag.msg2={0}\u306B\u30BF\u30B0\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
AddContentTagAction.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC
|
||||
AddTagAction.quickTag=\u30AF\u30A4\u30C3\u30AF\u30BF\u30B0
|
||||
AddTagAction.noTags=\u30BF\u30B0\u7121\u3057
|
||||
AddTagAction.newTag=\u65B0\u898F\u30BF\u30B0\u2026
|
||||
AddTagAction.tagAndComment=\u30BF\u30B0\u3068\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u2026
|
||||
DeleteBlackboardArtifactTagAction.deleteTags=\u30BF\u30B0\u3092\u524A\u9664
|
||||
DeleteBlackboardArtifactTagAction.unableToDelTag.msg=\u30BF\u30B0{0}\u306E\u524A\u9664\u304C\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
DeleteBlackboardArtifactTagAction.tagDelErr=\u30BF\u30B0\u524A\u9664\u30A8\u30E9\u30FC
|
||||
DeleteContentTagAction.deleteTags=\u30BF\u30B0\u3092\u524A\u9664
|
||||
DeleteContentTagAction.unableToDelTag.msg=\u30BF\u30B0{0}\u306E\u524A\u9664\u304C\u3067\u304D\u307E\u305B\u3093\u3002
|
||||
DeleteContentTagAction.tagDelErr=\u30BF\u30B0\u524A\u9664\u30A8\u30E9\u30FC
|
||||
GetTagNameAndCommentDialog.noTags=\u30BF\u30B0\u7121\u3057
|
||||
GetTagNameAndCommentDialog.createTag=\u30BF\u30B0\u3092\u4F5C\u6210
|
||||
GetTagNameAndCommentDialog.cancelName=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
GetTagNameDialog.createTag=\u30BF\u30B0\u3092\u4F5C\u6210
|
||||
GetTagNameDialog.cancelName=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
GetTagNameDialog.mustSupplyTtagName.msg=\u30BF\u30B0\u540D\u3092\u6307\u5B9A\u3057\u306A\u3051\u308C\u3070\u3001\u5148\u306B\u9032\u3081\u307E\u305B\u3093\u3002
|
||||
GetTagNameDialog.tagNameErr=\u30BF\u30B0\u540D
|
||||
GetTagNameDialog.illegalChars.msg=\u4E0D\u6B63\u306A\u6587\u5B57\u304C\u30BF\u30B0\u540D\u306B\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\
|
||||
\u6B21\u306E\u6587\u5B57\u306F\u4F7F\u3048\u307E\u305B\u3093\uFF1A \\ \: * ? " < > |
|
||||
GetTagNameDialog.illegalCharsErr=\u4E0D\u6B63\u306A\u6587\u5B57
|
||||
GetTagNameDialog.unableToAddTagNameToCase.msg=\u30BF\u30B0\u540D{0}\u3092\u30B1\u30FC\u30B9\u306B\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
||||
GetTagNameDialog.taggingErr=\u30BF\u30B0\u4ED8\u3051\u30A8\u30E9\u30FC
|
||||
GetTagNameDialog.tagNameAlreadyDef.msg=\u30BF\u30B0\u540D{0}\u306F\u65E2\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059\u3002
|
||||
GetTagNameDialog.dupTagErr=\u91CD\u8907\u30BF\u30B0\u306E\u30A8\u30E9\u30FC
|
||||
AddContentTagAction.cannotApplyTagErr=\u30BF\u30B0\u3092\u9069\u7528\u3067\u304D\u307E\u305B\u3093
|
@ -23,6 +23,8 @@ import java.util.Collection;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.Utilities;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifactTag;
|
||||
@ -32,7 +34,8 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
* Instances of this Action allow users to delete tags applied to blackboard artifacts.
|
||||
*/
|
||||
public class DeleteBlackboardArtifactTagAction extends TagAction {
|
||||
private static final String MENU_TEXT = "Delete Tag(s)";
|
||||
private static final String MENU_TEXT = NbBundle.getMessage(DeleteBlackboardArtifactTagAction.class,
|
||||
"DeleteBlackboardArtifactTagAction.deleteTags");
|
||||
|
||||
// This class is a singleton to support multi-selection of nodes, since
|
||||
// org.openide.nodes.NodeOp.findActions(Node[] nodes) will only pick up an Action if every
|
||||
@ -59,7 +62,13 @@ public class DeleteBlackboardArtifactTagAction extends TagAction {
|
||||
}
|
||||
catch (TskCoreException ex) {
|
||||
Logger.getLogger(AddContentTagAction.class.getName()).log(Level.SEVERE, "Error deleting tag", ex);
|
||||
JOptionPane.showMessageDialog(null, "Unable to delete tag " + tag.getName() + ".", "Tag Deletion Error", JOptionPane.ERROR_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"DeleteBlackboardArtifactTagAction.unableToDelTag.msg",
|
||||
tag.getName()),
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"DeleteBlackboardArtifactTagAction.tagDelErr"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,8 @@ import java.util.Collection;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.Utilities;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.datamodel.ContentTag;
|
||||
@ -32,7 +34,8 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
* Instances of this Action allow users to delete tags applied to content.
|
||||
*/
|
||||
public class DeleteContentTagAction extends TagAction {
|
||||
private static final String MENU_TEXT = "Delete Tag(s)";
|
||||
private static final String MENU_TEXT = NbBundle.getMessage(DeleteContentTagAction.class,
|
||||
"DeleteContentTagAction.deleteTags");
|
||||
|
||||
// This class is a singleton to support multi-selection of nodes, since
|
||||
// org.openide.nodes.NodeOp.findActions(Node[] nodes) will only pick up an Action if every
|
||||
@ -59,7 +62,12 @@ public class DeleteContentTagAction extends TagAction {
|
||||
}
|
||||
catch (TskCoreException ex) {
|
||||
Logger.getLogger(AddContentTagAction.class.getName()).log(Level.SEVERE, "Error deleting tag", ex);
|
||||
JOptionPane.showMessageDialog(null, "Unable to delete tag " + tag.getName() + ".", "Tag Deletion Error", JOptionPane.ERROR_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"DeleteContentTagAction.unableToDelTag.msg",
|
||||
tag.getName()),
|
||||
NbBundle.getMessage(this.getClass(), "DeleteContentTagAction.tagDelErr"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -109,6 +109,7 @@
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new javax.swing.JComboBox<String>()"/>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<String>"/>
|
||||
</AuxValues>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="tagLabel">
|
||||
|
@ -30,6 +30,8 @@ import javax.swing.JComponent;
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.KeyStroke;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.windows.WindowManager;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
||||
@ -38,7 +40,8 @@ import org.sleuthkit.datamodel.TagName;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
public class GetTagNameAndCommentDialog extends JDialog {
|
||||
private static final String NO_TAG_NAMES_MESSAGE = "No Tags";
|
||||
private static final String NO_TAG_NAMES_MESSAGE = NbBundle.getMessage(GetTagNameAndCommentDialog.class,
|
||||
"GetTagNameAndCommentDialog.noTags");
|
||||
private final HashMap<String, TagName> tagNames = new HashMap<>();
|
||||
private TagNameAndComment tagNameAndComment = null;
|
||||
|
||||
@ -66,11 +69,13 @@ public class GetTagNameAndCommentDialog extends JDialog {
|
||||
}
|
||||
|
||||
private GetTagNameAndCommentDialog() {
|
||||
super((JFrame)WindowManager.getDefault().getMainWindow(), "Create Tag", true);
|
||||
super((JFrame)WindowManager.getDefault().getMainWindow(),
|
||||
NbBundle.getMessage(GetTagNameAndCommentDialog.class, "GetTagNameAndCommentDialog.createTag"),
|
||||
true);
|
||||
initComponents();
|
||||
|
||||
// Set up the dialog to close when Esc is pressed.
|
||||
String cancelName = "cancel";
|
||||
String cancelName = NbBundle.getMessage(this.getClass(), "GetTagNameAndCommentDialog.cancelName");
|
||||
InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), cancelName);
|
||||
ActionMap actionMap = getRootPane().getActionMap();
|
||||
@ -240,7 +245,7 @@ public class GetTagNameAndCommentDialog extends JDialog {
|
||||
private javax.swing.JTextField commentText;
|
||||
private javax.swing.JButton newTagButton;
|
||||
private javax.swing.JButton okButton;
|
||||
private javax.swing.JComboBox tagCombo;
|
||||
private javax.swing.JComboBox<String> tagCombo;
|
||||
private javax.swing.JLabel tagLabel;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ import javax.swing.JOptionPane;
|
||||
import javax.swing.KeyStroke;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import org.openide.util.ImageUtilities;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.windows.WindowManager;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
||||
@ -52,12 +53,14 @@ public class GetTagNameDialog extends JDialog {
|
||||
}
|
||||
|
||||
private GetTagNameDialog() {
|
||||
super((JFrame)WindowManager.getDefault().getMainWindow(), "Create Tag", true);
|
||||
super((JFrame)WindowManager.getDefault().getMainWindow(),
|
||||
NbBundle.getMessage(GetTagNameDialog.class, "GetTagNameDialog.createTag"),
|
||||
true);
|
||||
setIconImage(ImageUtilities.loadImage(TAG_ICON_PATH));
|
||||
initComponents();
|
||||
|
||||
// Set up the dialog to close when Esc is pressed.
|
||||
String cancelName = "cancel";
|
||||
String cancelName = NbBundle.getMessage(this.getClass(), "GetTagNameDialog.cancelName");
|
||||
InputMap inputMap = getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
|
||||
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), cancelName);
|
||||
ActionMap actionMap = getRootPane().getActionMap();
|
||||
@ -276,10 +279,17 @@ public class GetTagNameDialog extends JDialog {
|
||||
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
|
||||
String tagDisplayName = tagNameField.getText();
|
||||
if (tagDisplayName.isEmpty()) {
|
||||
JOptionPane.showMessageDialog(null, "Must supply a tag name to continue.", "Tag Name", JOptionPane.ERROR_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"GetTagNameDialog.mustSupplyTtagName.msg"),
|
||||
NbBundle.getMessage(this.getClass(), "GetTagNameDialog.tagNameErr"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
else if (containsIllegalCharacters(tagDisplayName)) {
|
||||
JOptionPane.showMessageDialog(null, "The tag name contains illegal characters.\nCannot contain any of the following symbols: \\ : * ? \" < > |", "Illegal Characters", JOptionPane.ERROR_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(), "GetTagNameDialog.illegalChars.msg"),
|
||||
NbBundle.getMessage(this.getClass(), "GetTagNameDialog.illegalCharsErr"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
else {
|
||||
tagName = tagNames.get(tagDisplayName);
|
||||
@ -290,12 +300,22 @@ public class GetTagNameDialog extends JDialog {
|
||||
}
|
||||
catch (TskCoreException ex) {
|
||||
Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, "Error adding " + tagDisplayName + " tag name", ex);
|
||||
JOptionPane.showMessageDialog(null, "Unable to add the " + tagDisplayName + " tag name to the case.", "Tagging Error", JOptionPane.ERROR_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"GetTagNameDialog.unableToAddTagNameToCase.msg",
|
||||
tagDisplayName),
|
||||
NbBundle.getMessage(this.getClass(), "GetTagNameDialog.taggingErr"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
tagName = null;
|
||||
}
|
||||
catch (TagsManager.TagNameAlreadyExistsException ex) {
|
||||
Logger.getLogger(AddTagAction.class.getName()).log(Level.SEVERE, "Error adding " + tagDisplayName + " tag name", ex);
|
||||
JOptionPane.showMessageDialog(null, "A " + tagDisplayName + " tag name has already been defined.", "Duplicate Tag Error", JOptionPane.ERROR_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(this.getClass(),
|
||||
"GetTagNameDialog.tagNameAlreadyDef.msg",
|
||||
tagDisplayName),
|
||||
NbBundle.getMessage(this.getClass(), "GetTagNameDialog.dupTagErr"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
tagName = null;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2011 Basis Technology Corp.
|
||||
* Copyright 2011-2014 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -19,7 +19,6 @@
|
||||
|
||||
package org.sleuthkit.autopsy.casemodule;
|
||||
|
||||
import org.sleuthkit.autopsy.ingest.IngestJobLauncher;
|
||||
import java.awt.Component;
|
||||
import java.awt.Dialog;
|
||||
import java.awt.event.ActionEvent;
|
||||
@ -110,15 +109,18 @@ public final class AddImageAction extends CallableSystemAction implements Presen
|
||||
Logger.noteAction(AddImageAction.class);
|
||||
|
||||
if (IngestManager.getDefault().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) {
|
||||
|
@ -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;
|
||||
@ -37,7 +39,7 @@ import org.sleuthkit.datamodel.TskDataException;
|
||||
import org.sleuthkit.datamodel.TskException;
|
||||
|
||||
/*
|
||||
* A background task (swingworker) that adds the given image to
|
||||
* A background task that adds the given image to
|
||||
* database using the Sleuthkit JNI interface.
|
||||
*
|
||||
* It updates the given ProgressMonitor as it works through adding the image,
|
||||
@ -74,7 +76,7 @@ import org.sleuthkit.datamodel.TskException;
|
||||
boolean noFatOrphans;
|
||||
|
||||
/*
|
||||
* A Swingworker that updates the progressMonitor with the name of the
|
||||
* A thread that updates the progressMonitor with the name of the
|
||||
* directory currently being processed by the AddImageTask
|
||||
*/
|
||||
private class CurrentDirectoryFetcher implements Runnable {
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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";
|
||||
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.casemodule;
|
||||
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
@ -37,25 +36,22 @@ 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;
|
||||
|
||||
/**
|
||||
* visual component for the first panel of add image wizard.
|
||||
* Allows the user to choose the data source type and then select the data source
|
||||
* visual component for the first panel of add image wizard. Allows the user to
|
||||
* choose the data source type and then select the data source
|
||||
*
|
||||
*/
|
||||
final class AddImageWizardChooseDataSourceVisual extends JPanel {
|
||||
|
||||
static final Logger logger = Logger.getLogger(AddImageWizardChooseDataSourceVisual.class.getName());
|
||||
|
||||
private AddImageWizardChooseDataSourcePanel wizPanel;
|
||||
|
||||
private JPanel currentPanel;
|
||||
private Map<String, DataSourceProcessor> datasourceProcessorsMap = new HashMap<String, DataSourceProcessor>();
|
||||
|
||||
|
||||
List<String> coreDSPTypes = new ArrayList<String>();
|
||||
private Map<String, DataSourceProcessor> datasourceProcessorsMap = new HashMap<>();
|
||||
List<String> coreDSPTypes = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Creates new form AddImageVisualPanel1
|
||||
@ -65,46 +61,45 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel {
|
||||
AddImageWizardChooseDataSourceVisual(AddImageWizardChooseDataSourcePanel wizPanel) {
|
||||
initComponents();
|
||||
this.wizPanel = wizPanel;
|
||||
|
||||
|
||||
customInit();
|
||||
}
|
||||
|
||||
private void customInit() {
|
||||
|
||||
|
||||
typePanel.setLayout(new BorderLayout());
|
||||
|
||||
|
||||
discoverDataSourceProcessors();
|
||||
|
||||
|
||||
// set up the DSP type combobox
|
||||
typeComboBox.removeAllItems();
|
||||
|
||||
|
||||
Set<String> dspTypes = datasourceProcessorsMap.keySet();
|
||||
|
||||
|
||||
// make a list of core DSPs
|
||||
// ensure that the core DSPs are at the top and in a fixed order
|
||||
coreDSPTypes.add(ImageDSProcessor.getType());
|
||||
coreDSPTypes.add(LocalDiskDSProcessor.getType());
|
||||
coreDSPTypes.add(LocalFilesDSProcessor.getType());
|
||||
|
||||
for(String dspType:coreDSPTypes){
|
||||
|
||||
for (String dspType : coreDSPTypes) {
|
||||
typeComboBox.addItem(dspType);
|
||||
}
|
||||
|
||||
|
||||
// now add any addtional DSPs that haven't already been added
|
||||
for(String dspType:dspTypes){
|
||||
for (String dspType : dspTypes) {
|
||||
if (!coreDSPTypes.contains(dspType)) {
|
||||
typeComboBox.addItem(dspType);
|
||||
}
|
||||
}
|
||||
|
||||
// set a custom renderer that draws a separator at the end of the core DSPs in the combobox
|
||||
typeComboBox.setRenderer(new ComboboxSeparatorRenderer(typeComboBox.getRenderer()){
|
||||
|
||||
typeComboBox.setRenderer(new ComboboxSeparatorRenderer(typeComboBox.getRenderer()) {
|
||||
@Override
|
||||
protected boolean addSeparatorAfter(JList list, Object value, int index){
|
||||
return (index == coreDSPTypes.size() - 1);
|
||||
}
|
||||
});
|
||||
|
||||
protected boolean addSeparatorAfter(JList list, Object value, int index) {
|
||||
return (index == coreDSPTypes.size() - 1);
|
||||
}
|
||||
});
|
||||
|
||||
//add actionlistner to listen for change
|
||||
ActionListener cbActionListener = new ActionListener() {
|
||||
@Override
|
||||
@ -117,24 +112,23 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel {
|
||||
}
|
||||
|
||||
private void discoverDataSourceProcessors() {
|
||||
|
||||
for (DataSourceProcessor dsProcessor: Lookup.getDefault().lookupAll(DataSourceProcessor.class)) {
|
||||
|
||||
if (!datasourceProcessorsMap.containsKey(dsProcessor.getDataSourceType()) ) {
|
||||
datasourceProcessorsMap.put(dsProcessor.getDataSourceType(), dsProcessor);
|
||||
}
|
||||
else {
|
||||
logger.log(Level.SEVERE, "discoverDataSourceProcessors(): A DataSourceProcessor already exists for type = " + dsProcessor.getDataSourceType() );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dspSelectionChanged() {
|
||||
// update the current panel to selection
|
||||
currentPanel = getCurrentDSProcessor().getPanel();
|
||||
updateCurrentPanel(currentPanel);
|
||||
for (DataSourceProcessor dsProcessor : Lookup.getDefault().lookupAll(DataSourceProcessor.class)) {
|
||||
|
||||
if (!datasourceProcessorsMap.containsKey(dsProcessor.getDataSourceType())) {
|
||||
datasourceProcessorsMap.put(dsProcessor.getDataSourceType(), dsProcessor);
|
||||
} else {
|
||||
logger.log(Level.SEVERE, "discoverDataSourceProcessors(): A DataSourceProcessor already exists for type = {0}", dsProcessor.getDataSourceType());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void dspSelectionChanged() {
|
||||
// update the current panel to selection
|
||||
currentPanel = getCurrentDSProcessor().getPanel();
|
||||
updateCurrentPanel(currentPanel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Changes the current panel to the given panel.
|
||||
*
|
||||
@ -143,7 +137,7 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel {
|
||||
private void updateCurrentPanel(JPanel panel) {
|
||||
currentPanel = panel;
|
||||
typePanel.removeAll();
|
||||
typePanel.add((JPanel) currentPanel, BorderLayout.CENTER);
|
||||
typePanel.add(currentPanel, BorderLayout.CENTER);
|
||||
typePanel.validate();
|
||||
typePanel.repaint();
|
||||
currentPanel.addPropertyChangeListener(new PropertyChangeListener() {
|
||||
@ -157,24 +151,26 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
updateUI(null);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Returns the currently selected DS Processor
|
||||
* @return DataSourceProcessor the DataSourceProcessor corresponding to the data source type selected in the combobox
|
||||
*
|
||||
* @return DataSourceProcessor the DataSourceProcessor corresponding to the
|
||||
* data source type selected in the combobox
|
||||
*/
|
||||
protected DataSourceProcessor getCurrentDSProcessor() {
|
||||
// get the type of the currently selected panel and then look up
|
||||
// the correspodning DS Handler in the map
|
||||
String dsType = (String) typeComboBox.getSelectedItem();
|
||||
DataSourceProcessor dsProcessor = datasourceProcessorsMap.get(dsType);
|
||||
|
||||
|
||||
return dsProcessor;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the name of the this panel. This name will be shown on the left
|
||||
* panel of the "Add Image" wizard panel.
|
||||
@ -183,10 +179,9 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel {
|
||||
*/
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Enter Data Source Information";
|
||||
return NbBundle.getMessage(this.getClass(), "AddImageWizardChooseDataSourceVisual.getName.text");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
@ -309,25 +304,27 @@ final class AddImageWizardChooseDataSourceVisual extends JPanel {
|
||||
this.wizPanel.enableNextButton(getCurrentDSProcessor().isPanelValid());
|
||||
}
|
||||
|
||||
|
||||
public abstract class ComboboxSeparatorRenderer implements ListCellRenderer{
|
||||
public abstract class ComboboxSeparatorRenderer implements ListCellRenderer {
|
||||
|
||||
private ListCellRenderer delegate;
|
||||
private JPanel separatorPanel = new JPanel(new BorderLayout());
|
||||
private JSeparator separator = new JSeparator();
|
||||
|
||||
public ComboboxSeparatorRenderer(ListCellRenderer delegate){
|
||||
this.delegate = delegate;
|
||||
public ComboboxSeparatorRenderer(ListCellRenderer delegate) {
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){
|
||||
@Override
|
||||
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
|
||||
Component comp = delegate.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
|
||||
if(index!=-1 && addSeparatorAfter(list, value, index)){
|
||||
if (index != -1 && addSeparatorAfter(list, value, index)) {
|
||||
separatorPanel.removeAll();
|
||||
separatorPanel.add(comp, BorderLayout.CENTER);
|
||||
separatorPanel.add(separator, BorderLayout.SOUTH);
|
||||
return separatorPanel;
|
||||
}else
|
||||
} else {
|
||||
return comp;
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract boolean addSeparatorAfter(JList list, Object value, int index);
|
||||
|
@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.casemodule;
|
||||
|
||||
|
||||
import org.sleuthkit.autopsy.ingest.IngestJobLauncher;
|
||||
import org.openide.util.NbBundle;
|
||||
import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.Window;
|
||||
@ -32,7 +33,6 @@ import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import org.openide.WizardDescriptor;
|
||||
import org.openide.util.HelpCtx;
|
||||
import org.openide.util.Lookup;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataSourceProcessorCallback;
|
||||
@ -275,9 +275,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
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,61 +1,12 @@
|
||||
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_OpenRecentAction=Open Recent Case
|
||||
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 +28,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 +36,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 +50,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 +59,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 +91,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
|
||||
|
226
Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties
Normal file
226
Core/src/org/sleuthkit/autopsy/casemodule/Bundle_ja.properties
Normal file
@ -0,0 +1,226 @@
|
||||
CTL_AddImage=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u8FFD\u52A0...
|
||||
CTL_AddImageButton=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u8FFD\u52A0
|
||||
CTL_CaseCloseAct=\u30B1\u30FC\u30B9\u3092\u9589\u3058\u308B
|
||||
CTL_CaseNewAction=\u65B0\u898F\u30B1\u30FC\u30B9\u2026
|
||||
CTL_CasePropertiesAction=\u30B1\u30FC\u30B9\u30D7\u30ED\u30D1\u30C6\u30A3\u2026
|
||||
CTL_OpenAction=\u30B1\u30FC\u30B9\u3092\u958B\u304F\u2026
|
||||
CTL_OpenRecentAction=\u6700\u8FD1\u958B\u3044\u305F\u30B1\u30FC\u30B9\u3092\u958B\u304F
|
||||
CTL_CaseDeleteAction=\u30B1\u30FC\u30B9\u524A\u9664
|
||||
OpenIDE-Module-Name=\u30B1\u30FC\u30B9
|
||||
NewCaseVisualPanel1.jLabel1.text_1=\u65B0\u898F\u30B1\u30FC\u30B9\u60C5\u5831\u3092\u5165\u529B\uFF1A
|
||||
NewCaseVisualPanel1.caseNameLabel.text_1=\u30B1\u30FC\u30B9\u540D\uFF1A
|
||||
NewCaseVisualPanel1.caseDirLabel.text=\u30D9\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF1A
|
||||
NewCaseVisualPanel1.caseDirBrowseButton.text=\u95B2\u89A7
|
||||
NewCaseVisualPanel1.caseNameTextField.text_1=
|
||||
NewCaseVisualPanel1.jLabel2.text_1=\u30B1\u30FC\u30B9\u30C7\u30FC\u30BF\u306F\u4E0B\u8A18\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306B\u4FDD\u5B58\u3055\u308C\u307E\u3059\uFF1A
|
||||
NewCaseVisualPanel1.caseParentDirTextField.text=
|
||||
NewCaseVisualPanel1.caseDirTextField.text_1=
|
||||
CasePropertiesForm.caseDirLabel.text=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF1A
|
||||
CasePropertiesForm.crDateLabel.text=\u4F5C\u6210\u65E5\uFF1A
|
||||
CasePropertiesForm.caseNameLabel.text=\u30B1\u30FC\u30B9\u540D\uFF1A
|
||||
CasePropertiesForm.crDateTextField.text=
|
||||
CasePropertiesForm.caseNameTextField.text=
|
||||
CasePropertiesForm.updateCaseNameButton.text=\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8
|
||||
CasePropertiesForm.casePropLabel.text=\u30B1\u30FC\u30B9\u60C5\u5831
|
||||
CasePropertiesForm.genInfoLabel.text=\u4E00\u822C\u60C5\u5831
|
||||
CasePropertiesForm.imgInfoLabel.text=\u30A4\u30E1\u30FC\u30B8\u60C5\u5831
|
||||
CasePropertiesForm.OKButton.text=OK
|
||||
CasePropertiesForm.deleteCaseButton.text=\u30B1\u30FC\u30B9\u524A\u9664
|
||||
CueBannerPanel.autopsyLogo.text=
|
||||
CueBannerPanel.createNewLabel.text=\u65B0\u898F\u30B1\u30FC\u30B9\u4F5C\u6210
|
||||
CueBannerPanel.openLabel.text=\u65E2\u5B58\u30B1\u30FC\u30B9\u3092\u958B\u304F
|
||||
CueBannerPanel.closeButton.text=\u9589\u3058\u308B
|
||||
CueBannerPanel.openRecentLabel.text=\u6700\u8FD1\u958B\u3044\u305F\u30B1\u30FC\u30B9\u3092\u958B\u304F
|
||||
CueBannerPanel.newCaseButton.text=
|
||||
CueBannerPanel.openCaseButton.text=
|
||||
CueBannerPanel.openRecentButton.text=
|
||||
OpenRecentCasePanel.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
OpenRecentCasePanel.jLabel1.text=\u6700\u8FD1\u958B\u3044\u305F\u30D5\u30A1\u30A4\u30EB
|
||||
CasePropertiesForm.caseNumberLabel.text=\u30B1\u30FC\u30B9\u756A\u53F7\uFF1A
|
||||
CasePropertiesForm.examinerLabel.text=\u8ABF\u67FB\u62C5\u5F53\u8005\uFF1A
|
||||
CasePropertiesForm.caseNumberTextField.text=
|
||||
CasePropertiesForm.examinerTextField.text=
|
||||
NewCaseVisualPanel2.caseNumberTextField.text=
|
||||
NewCaseVisualPanel2.examinerLabel.text=\u8ABF\u67FB\u62C5\u5F53\u8005\uFF1A
|
||||
NewCaseVisualPanel2.caseNumberLabel.text=\u30B1\u30FC\u30B9\u756A\u53F7\uFF1A
|
||||
NewCaseVisualPanel2.examinerTextField.text=
|
||||
NewCaseVisualPanel2.optionalLabel.text=\u30AA\u30D7\u30B7\u30E7\u30CA\u30EB\uFF1A\u30B1\u30FC\u30B9\u756A\u53F7\u53CA\u3073\u8ABF\u67FB\u62C5\u5F53\u8005\u3092\u8A2D\u5B9A
|
||||
AddImageErrorsDialog.title=\u30A4\u30E1\u30FC\u30B8\u30ED\u30B0\u3092\u8FFD\u52A0
|
||||
AddImageErrorsDialog.copyButton.toolTipText=\u30A8\u30E9\u30FC\u3092\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC\u3057\u307E\u3059
|
||||
AddImageErrorsDialog.copyButton.text=\u30B3\u30D4\u30FC
|
||||
AddImageErrorsDialog.closeButton.toolTipText=\u3053\u306E\u30A6\u30A3\u30F3\u30C9\u30A6\u3092\u9589\u3058\u307E\u3059
|
||||
AddImageErrorsDialog.closeButton.text=\u9589\u3058\u308B
|
||||
OpenRecentCasePanel.openButton.text=\u958B\u304F
|
||||
ImageFilePanel.pathLabel.text=\u30A4\u30E1\u30FC\u30B8\u30D5\u30A1\u30A4\u30EB\u3092\u95B2\u89A7\uFF1A
|
||||
ImageFilePanel.browseButton.text=\u95B2\u89A7
|
||||
ImageFilePanel.pathTextField.text=
|
||||
LocalDiskPanel.diskLabel.text=\u30ED\u30FC\u30AB\u30EB\u30C7\u30A3\u30B9\u30AF\u3092\u9078\u629E\uFF1A
|
||||
MissingImageDialog.selectButton.text=\u30A4\u30E1\u30FC\u30B8\u3092\u9078\u629E
|
||||
MissingImageDialog.titleLabel.text=\u6B20\u843D\u3057\u305F\u30A4\u30E1\u30FC\u30B8\u306E\u691C\u7D22
|
||||
MissingImageDialog.cancelButton.text=\u30AD\u30E3\u30F3\u30BB\u30EB
|
||||
LocalDiskPanel.errorLabel.text=\u30A8\u30E9\u30FC\u30E9\u30D9\u30EB
|
||||
LocalFilesPanel.infoLabel.text=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u53CA\u3073\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u8FFD\u52A0\uFF1A
|
||||
LocalFilesPanel.selectButton.text=\u8FFD\u52A0
|
||||
LocalFilesPanel.localFileChooser.dialogTitle=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u53C8\u306F\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u9078\u629E
|
||||
LocalFilesPanel.selectButton.toolTipText=\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u53CA\u3073\u30D5\u30A9\u30EB\u30C0\u30FC\u3092\u30ED\u30B8\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u3068\u3057\u3066\u8FFD\u52A0\u3057\u307E\u3059
|
||||
LocalFilesPanel.clearButton.text=\u30AF\u30EA\u30A2
|
||||
LocalFilesPanel.clearButton.toolTipText=\u73FE\u5728\u9078\u629E\u3055\u308C\u3066\u3044\u308B\u30ED\u30FC\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u304C\u30AF\u30EA\u30A2\u3055\u308C\u307E\u3059
|
||||
LocalFilesPanel.selectedPaths.toolTipText=
|
||||
LocalFilesPanel.localFileChooser.approveButtonText=\u9078\u629E
|
||||
LocalFilesPanel.localFileChooser.approveButtonToolTipText=
|
||||
LocalFilesPanel.selectButton.actionCommand=\u8FFD\u52A0
|
||||
AddImageWizardIngestConfigVisual.subtitleLabel.text=\u3053\u306E\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306B\u5BFE\u3057\u3066\u5B9F\u884C\u3057\u305F\u3044\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB\u7FA4\u3092\u8A2D\u5B9A\u3057\u307E\u3059\u3002
|
||||
AddImageWizardIngestConfigVisual.titleLabel.text=\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u8A2D\u5B9A
|
||||
AddImageWizardAddingProgressVisual.statusLabel.text=\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u304C\u30ED\u30FC\u30AB\u30EB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F\u3002\u30D5\u30A1\u30A4\u30EB\u3092\u89E3\u6790\u4E2D\u3067\u3059\u3002
|
||||
AddImageWizardChooseDataSourceVisual.typeTabel.text=\u8FFD\u52A0\u3059\u308B\u30BD\u30FC\u30B9\u30BF\u30A4\u30D7\u3092\u9078\u629E\uFF1A
|
||||
AddImageWizardChooseDataSourceVisual.jLabel2.text=jLabel2
|
||||
AddImageWizardChooseDataSourceVisual.nextLabel.text=<html> \u300C\u6B21\u3078\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u3001\u30A4\u30F3\u30D7\u30C3\u30C8\u30C7\u30FC\u30BF\u3092\u89E3\u6790\u3001\u30DC\u30EA\u30E5\u30FC\u30E0\u53CA\u3073\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u30C7\u30FC\u30BF\u3092\u62BD\u51FA\u3001\u30ED\u30FC\u30AB\u30EB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u30C7\u30FC\u30BF\u3092\u6295\u5165\u3002</html>
|
||||
AddImageWizardChooseDataSourceVisual.imgInfoLabel.text=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u60C5\u5831\u3092\u5165\u529B\uFF1A
|
||||
AddImageWizardAddingProgressVisual.progressLabel.text=\uFF1C\u30D7\u30ED\u30B0\u30EC\u30B9\uFF1E
|
||||
AddImageWizardAddingProgressVisual.viewLogButton.text=\u30ED\u30B0\u3092\u8868\u793A
|
||||
AddImageWizardAddingProgressVisual.titleLabel.text=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u8FFD\u52A0\u4E2D
|
||||
AddImageWizardAddingProgressVisual.subTitle1Label.text=\u30ED\u30FC\u30AB\u30EB\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306B\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u60C5\u5831\u3092\u8FFD\u52A0\u4E2D\u3067\u3059\u3002\u3053\u3061\u3089\u304C\u5B8C\u4E86\u6B21\u7B2C\u3001\u30D5\u30A1\u30A4\u30EB\u89E3\u6790\u304C\u59CB\u307E\u308A\u307E\u3059\u3002
|
||||
ImageFilePanel.timeZoneLabel.text=\u30A4\u30F3\u30D7\u30C3\u30C8\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u9078\u629E\u3057\u3066\u4E0B\u3055\u3044\uFF1A
|
||||
ImageFilePanel.descLabel.text=\uFF08\u3088\u308A\u901F\u3044\u7D50\u679C\u3001\u3057\u304B\u3057\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u306F\u691C\u7D22\u3055\u308C\u307E\u305B\u3093\uFF09
|
||||
LocalDiskPanel.timeZoneLabel.text=\u30A4\u30F3\u30D7\u30C3\u30C8\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u3092\u9078\u629E\u3057\u3066\u4E0B\u3055\u3044\uFF1A
|
||||
LocalDiskPanel.descLabel.text=\uFF08\u3088\u308A\u901F\u3044\u7D50\u679C\u3001\u3057\u304B\u3057\u4E00\u90E8\u306E\u30C7\u30FC\u30BF\u306F\u691C\u7D22\u3055\u308C\u307E\u305B\u3093\uFF09
|
||||
MissingImageDialog.browseButton.text=\u95B2\u89A7
|
||||
AddImageWizardAddingProgressVisual.progressTextArea.border.title=\u30B9\u30C6\u30FC\u30BF\u30B9
|
||||
AddImageAction.wizard.title=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3092\u8FFD\u52A0
|
||||
AddImageAction.ingestConfig.ongoingIngest.msg=<html>\u4ED6\u306E\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u304C\u51E6\u7406\u4E2D\u3067\u3059\u3002\u65B0\u898F\u30BD\u30FC\u30B9\u3092\u4ECA\u8FFD\u52A0\u3059\u308B\u3068\u5B9F\u884C\u4E2D\u306E\u51E6\u7406\u304C\u9045\u304F\u306A\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002<br />\u3053\u306E\u307E\u307E\u5B9F\u884C\u3057\u3001\u65B0\u898F\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3092\u8FFD\u52A0\u3057\u307E\u3059\u304B\uFF1F</html>
|
||||
AddImageAction.ingestConfig.ongoingIngest.title=\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3092\u5B9F\u884C\u4E2D
|
||||
AddImageTask.run.progress.adding=\u8FFD\u52A0\u4E2D\uFF1A{0}
|
||||
AddImageTask.interrupt.exception.msg=\u30A4\u30E1\u30FC\u30B8\u8FFD\u52A0\u30D7\u30ED\u30BB\u30B9\u306E\u505C\u6B62\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
AddImageWizardAddingProgressPanel.isValid.focusNext=\u6B21 >
|
||||
AddImageWizardAddingProgressPanel.stateStarted.progressBarText=*\u5927\u304D\u3044\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306E\u5834\u5408\u3001\u3053\u306E\u30D7\u30ED\u30BB\u30B9\u306F\u6642\u9593\u304C\u304B\u304B\u308B\u304B\u3082\u3057\u308C\u307E\u305B\u3093\u3002
|
||||
AddImageWizardAddingProgressVisual.addingDsComplete.text=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3092\u8FFD\u52A0 - \u5B8C\u4E86
|
||||
AddImageWizardAddingProgressVisual.getName.text=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u3092\u8FFD\u52A0
|
||||
AddImageWizardAddingProgressVisual.showErrors.critText=*\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306E\u8FFD\u52A0\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u81F4\u547D\u7684\u306A\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF09\u3002\u4E0B\u8A18\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002
|
||||
AddImageWizardAddingProgressVisual.showErrors.nonCritText=*\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306E\u8FFD\u52A0\u306B\u5931\u6557\u3057\u307E\u3057\u305F\uFF08\u91CD\u5927\u3067\u306F\u306A\u3044\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF09\u3002\u4E0B\u8A18\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002
|
||||
AddImageWizardChooseDataSourcePanel.moveFocusNext=\u6B21 >
|
||||
AddImageWizardChooseDataSourceVisual.getName.text=\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u60C5\u5831\u3092\u5165\u529B
|
||||
AddImageWizardIngestConfigPanel.dsProcDone.noErrs.text=*\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F\u3002
|
||||
AddImageWizardIngestConfigPanel.dsProcDone.errs.text=*\u30C7\u30FC\u30BF\u30BD\u30FC\u30B9\u306E\u8FFD\u52A0\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
AddImageWizardIngestConfigVisual.getName.text=\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u30E2\u30B8\u30E5\u30FC\u30EB\u3092\u8A2D\u5B9A
|
||||
AddImageWizardIterator.stepXofN=\u30B9\u30C6\u30C3\u30D7{0}\uFF0F{1}
|
||||
AddLocalFilesTask.localFileAdd.progress.text=\u8FFD\u52A0\u4E2D\uFF1A{0}/{1}
|
||||
Case.getCurCase.exception.noneOpen=\u73FE\u5728\u306E\u30B1\u30FC\u30B9\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093\uFF1B\u958B\u3044\u3066\u3044\u308B\u30B1\u30FC\u30B9\u304C\u3042\u308A\u307E\u305B\u3093\uFF01
|
||||
Case.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
|
||||
Case.changeCase.errListenToCaseUpdates.msg=\u30B1\u30FC\u30B9\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
|
||||
Case.create.exception.msg=\u30B1\u30FC\u30B9\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{1}\u306E{0}
|
||||
Case.open.exception.blankCase.msg=\u30B1\u30FC\u30B9\u540D\u304C\u7A7A\u767D\u3067\u3059\u3002
|
||||
Case.open.msgDlg.updated.msg=\u30B1\u30FC\u30B9\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30B9\u30AD\u30FC\u30DE\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u307E\u3057\u305F\u3002\
|
||||
\u4E0B\u8A18\u306E\u30D1\u30B9\u3092\u6301\u3064\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u30B3\u30D4\u30FC\u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F\uFF1A\
|
||||
{0}
|
||||
Case.open.msgDlg.updated.title=\u30B1\u30FC\u30B9\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30B9\u30AD\u30FC\u30DE\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8
|
||||
Case.open.exception.checkFile.msg=\u6B63\u3057\u3044\u30B1\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u3057\u305F\u304B\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\uFF08\u901A\u5E38\u62E1\u5F35\u5B50{0}\u3092\u6301\u3064\uFF09
|
||||
Case.open.exception.gen.msg=\u30B1\u30FC\u30B9\u3092\u958B\u304F\u306E\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||
Case.checkImgExist.confDlg.doesntExist.msg=\u4EE5\u524D\u3001\u30A4\u30E1\u30FC\u30B8\u306F\u4E0B\u8A18\u306B\u3042\u308A\u307E\u3057\u305F\uFF1A\
|
||||
{1}\
|
||||
\u4ECA\u5F8C\u3082\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u30D6\u30E9\u30A6\u30BA\u3057\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u304C\u3067\u304D\u307E\u3059
|
||||
Case.checkImgExist.confDlg.doesntExist.title=\u30A4\u30E1\u30FC\u30B8\u6B20\u843D
|
||||
Case.addImg.exception.msg=\u30B1\u30FC\u30B9\u306B\u30A4\u30E1\u30FC\u30B8\u3092\u8FFD\u52A0\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||
Case.closeCase.exception.msg=\u73FE\u5728\u306E\u30B1\u30FC\u30B9\u3092\u9589\u3058\u308B\u6700\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Case.deleteCase.exception.msg=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u524A\u9664\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A{0}
|
||||
Case.deleteCase.exception.msg2=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u524A\u9664\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\uFF1A{0}
|
||||
Case.updateCaseName.exception.msg=\u30B1\u30FC\u30B9\u540D\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Case.updateExaminer.exception.msg=\u8ABF\u67FB\u62C5\u5F53\u8005\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30BF\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Case.updateCaseNum.exception.msg=\u30B1\u30FC\u30B9\u756A\u53F7\u3092\u30A2\u30C3\u30D7\u30C7\u30FC\u30BF\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Case.exception.errGetRootObj=\u30EB\u30FC\u30C8\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3092\u53D6\u5F97\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
|
||||
Case.createCaseDir.exception.existNotDir=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u65E2\u306B\u5B58\u5728\u3057\u3001\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF1A{0}
|
||||
Case.createCaseDir.exception.existCantRW=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u65E2\u306B\u5B58\u5728\u3057\u3001\u8AAD\u307F\u53D6\u308A\uFF0F\u66F8\u304D\u8FBC\u307F\u304C\u3067\u304D\u307E\u305B\u3093\uFF1A{0}
|
||||
Case.createCaseDir.exception.cantCreate=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\uFF1A {0}
|
||||
Case.createCaseDir.exception.cantCreateCaseDir=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A {0}
|
||||
Case.createCaseDir.exception.cantCreateModDir=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A2\u30A6\u30C8\u30D7\u30C3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{0}
|
||||
Case.createCaseDir.exception.gen=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF1A{0}
|
||||
CaseDeleteAction.closeConfMsg.text=\u3053\u306E\u30B1\u30FC\u30B9\u3092\u672C\u5F53\u306B\u9589\u3058\u3001\u524A\u9664\u3057\u307E\u3059\u304B\uFF1F\
|
||||
\u30B1\u30FC\u30B9\u540D\uFF1A {0}\
|
||||
\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\: {1}
|
||||
CaseDeleteAction.closeConfMsg.title=\u8B66\u544A\uFF1A\u73FE\u5728\u306E\u30B1\u30FC\u30B9\u3092\u9589\u3058\u307E\u3059
|
||||
CaseDeleteAction.msgDlg.fileInUse.msg=\u5225\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3067\u30D5\u30A9\u30EB\u30C0\u307E\u305F\u306F\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u3044\u3066\u3044\u308B\u306E\u3067\u3001\u524A\u9664\u3092\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093\u3002\
|
||||
\
|
||||
\u30D5\u30A9\u30EB\u30C0\u307E\u305F\u306F\u30D5\u30A1\u30A4\u30EB\u3092\u9589\u3058\u3066\u304B\u3089\u518D\u5B9F\u884C\u3059\u308B\u304B\u3001\u624B\u52D5\u3067\u30B1\u30FC\u30B9\u3092\u524A\u9664\u3057\u3066\u4E0B\u3055\u3044\u3002
|
||||
CaseDeleteAction.msgDlg.fileInUse.title=\u30A8\u30E9\u30FC\uFF1A\u30D5\u30A9\u30EB\u30C0\u304C\u4F7F\u7528\u4E2D
|
||||
CaseDeleteAction.msgDlg.caseDelete.msg=\u30B1\u30FC\u30B9{0}\u306F\u524A\u9664\u3055\u308C\u307E\u3057\u305F\u3002
|
||||
CaseOpenAction.autFilter.title={0} \u30B1\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB ( {1})
|
||||
CaseOpenAction.msgDlg.fileNotExist.msg=\u30A8\u30E9\u30FC\uFF1A\u30D5\u30A1\u30A4\u30EB\u304C\u5B58\u5728\u3057\u307E\u305B\u3093\u3002
|
||||
CaseOpenAction.msgDlg.fileNotExist.title=\u30A8\u30E9\u30FC
|
||||
CaseOpenAction.msgDlg.cantOpenCase.msg=\u30A8\u30E9\u30FC\uFF1A\u30D5\u30A9\u30EB\u30C0{0}\: {1}\u306E\u30B1\u30FC\u30B9\u3092\u958B\u3051\u307E\u305B\u3093\u3067\u3057\u305F
|
||||
CaseOpenAction.msgDlg.cantOpenCase.title=\u30A8\u30E9\u30FC
|
||||
CasePropertiesAction.window.title=\u30B1\u30FC\u30B9\u30D7\u30ED\u30D1\u30C6\u30A3
|
||||
CasePropertiesForm.updateCaseName.msgDlg.empty.msg=\u30B1\u30FC\u30B9\u540D\u306F\u7A7A\u767D\u3067\u306F\u3044\u3051\u307E\u305B\u3093\u3002
|
||||
CasePropertiesForm.updateCaseName.msgDlg.empty.title=\u30A8\u30E9\u30FC
|
||||
CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.msg=\u30B1\u30FC\u30B9\u540D\u306B\u306F\u4E0B\u8A18\u306E\u8A18\u53F7\u3092\u542B\u3081\u307E\u305B\u3093\uFF1A\\ / \: * ? " < > |
|
||||
CasePropertiesForm.updateCaseName.msgDlg.invalidSymbols.title=\u30A8\u30E9\u30FC
|
||||
CasePropertiesForm.updateCaseName.confMsg.msg=\u30B1\u30FC\u30B9\u540D\u3092"{0}"\u304B\u3089"{1}"\u306B\u672C\u5F53\u306B\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u3057\u307E\u3059\u304B\uFF1F
|
||||
CasePropertiesForm.updateCaseName.confMsg.title=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u4F5C\u6210
|
||||
CueBannerPanel.title.text=\u6700\u8FD1\u958B\u3044\u305F\u30B1\u30FC\u30B9\u3092\u958B\u304F
|
||||
GeneralFilter.rawImageDesc.text=\u30ED\u30FC\u30A4\u30E1\u30FC\u30B8(*.img, *.dd, *.001, *.aa, *.raw, *.bin)
|
||||
GeneralFilter.encaseImageDesc.text=\u30A8\u30F3\u30B1\u30FC\u30B9\u30A4\u30E1\u30FC\u30B8(*.e01)
|
||||
ImageDSProcessor.dsType.text=\u30A4\u30E1\u30FC\u30B8\u30D5\u30A1\u30A4\u30EB
|
||||
ImageDSProcessor.allDesc.text=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u5168\u30BF\u30A4\u30D7
|
||||
ImageFilePanel.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
|
||||
ImageFilePanel.moduleErr.msg=ImageFilePanel\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
|
||||
LocalDiskDSProcessor.dsType.text=\u30ED\u30FC\u30AB\u30EB\u30C7\u30A3\u30B9\u30AF
|
||||
LocalDiskPanel.localDiskModel.loading.msg=\u30ED\u30FC\u30AB\u30EB\u30C7\u30A3\u30B9\u30AF\u3092\u30ED\u30FC\u30C9\u4E2D\u2026
|
||||
LocalDiskPanel.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
|
||||
LocalDiskPanel.moduleErr.msg=LocalDiskPanel\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
|
||||
LocalDiskPanel.errLabel.disksNotDetected.text=\u30C7\u30A3\u30B9\u30AF\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4E00\u90E8\u306E\u30B7\u30B9\u30C6\u30E0\u3067\u306F\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u3082\u3057\u304F\u306F\u300C\u7BA1\u7406\u8005\u3068\u3057\u3066\u5B9F\u884C\u3059\u308B\u300D\uFF09\u3002
|
||||
LocalDiskPanel.errLabel.disksNotDetected.toolTipText=\u30C7\u30A3\u30B9\u30AF\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4E00\u90E8\u306E\u30B7\u30B9\u30C6\u30E0\u3067\u306F\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u3082\u3057\u304F\u306F\u300C\u7BA1\u7406\u8005\u3068\u3057\u3066\u5B9F\u884C\u3059\u308B\u300D\uFF09\u3002
|
||||
LocalDiskPanel.errLabel.drivesNotDetected.text=\u30ED\u30FC\u30AB\u30EB\u30C9\u30E9\u30A4\u30D6\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u81EA\u52D5\u691C\u51FA\u306F\u3053\u306EOS\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u304B\u3001\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002
|
||||
LocalDiskPanel.errLabel.drivesNotDetected.toolTipText=\u30ED\u30FC\u30AB\u30EB\u30C9\u30E9\u30A4\u30D6\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u81EA\u52D5\u691C\u51FA\u306F\u3053\u306EOS\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u304B\u3001\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002
|
||||
LocalDiskPanel.errLabel.someDisksNotDetected.text=\u4E00\u90E8\u306E\u30C7\u30A3\u30B9\u30AF\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4E00\u90E8\u306E\u30B7\u30B9\u30C6\u30E0\u3067\u306F\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u3082\u3057\u304F\u306F\u300C\u7BA1\u7406\u8005\u3068\u3057\u3066\u5B9F\u884C\u3059\u308B\u300D\uFF09\u3002
|
||||
LocalDiskPanel.errLabel.someDisksNotDetected.toolTipText=\u4E00\u90E8\u306E\u30C7\u30A3\u30B9\u30AF\u304C\u691C\u51FA\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4E00\u90E8\u306E\u30B7\u30B9\u30C6\u30E0\u3067\u306F\u7BA1\u7406\u8005\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\uFF08\u3082\u3057\u304F\u306F\u300C\u7BA1\u7406\u8005\u3068\u3057\u3066\u5B9F\u884C\u3059\u308B\u300D\uFF09\u3002
|
||||
LocalFilesDSProcessor.dsType=\u30ED\u30B8\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB
|
||||
LocalFilesDSProcessor.toString.text=\u30ED\u30B8\u30AB\u30EB\u30D5\u30A1\u30A4\u30EB
|
||||
LocalFilesPanel.contentType.text=\u30ED\u30FC\u30AB\u30EB
|
||||
LocalFilesPanel.moduleErr=\u30E2\u30B8\u30E5\u30FC\u30EB\u30A8\u30E9\u30FC
|
||||
LocalFilesPanel.moduleErr.msg=LocalFilesPanel\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
|
||||
MissingImageDialog.allDesc.text=\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308B\u5168\u3066\u306E\u30BF\u30A4\u30D7
|
||||
MissingImageDialog.display.title=\u6B20\u843D\u30A4\u30E1\u30FC\u30B8\u3092\u691C\u7D22
|
||||
MissingImageDialog.confDlg.noFileSel.msg=\u30A4\u30E1\u30FC\u30B8\u30D5\u30A1\u30A4\u30EB\u304C\u9078\u629E\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002\u30A4\u30E1\u30FC\u30B8\u3092\u898B\u3064\u3051\u308B\
|
||||
\u524D\u306B\u672C\u5F53\u306B\u7D42\u4E86\u3057\u307E\u3059\u304B\uFF1F
|
||||
MissingImageDialog.confDlg.noFileSel.title=\u6B20\u843D\u30A4\u30E1\u30FC\u30B8
|
||||
NewCaseVisualPanel1.getName.text=\u30B1\u30FC\u30B9\u60C5\u5831
|
||||
NewCaseVisualPanel1.caseDirBrowse.selectButton.text=\u9078\u629E
|
||||
NewCaseVisualPanel2.getName.text=\u4ED8\u52A0\u60C5\u5831
|
||||
NewCaseWizardAction.closeCurCase.confMsg.msg=\u3053\u306E\u30B1\u30FC\u30B9\u3092\u4FDD\u5B58\u3057\u3001\u9589\u3058\u3066\u3001\u65B0\u898F\u30B1\u30FC\u30B9\u4F5C\u6210\u3092\u5B9F\u884C\u3057\u307E\u3059\u304B\uFF1F
|
||||
NewCaseWizardAction.closeCurCase.confMsg.title=\u8B66\u544A\uFF1A\u73FE\u5728\u306E\u30B1\u30FC\u30B9\u3092\u9589\u3058\u307E\u3059
|
||||
NewCaseWizardAction.newCase.windowTitle.text=\u65B0\u898F\u30B1\u30FC\u30B9\u60C5\u5831
|
||||
NewCaseWizardAction.getName.text=\u65B0\u898F\u30B1\u30FC\u30B9\u30A6\u30A3\u30B6\u30FC\u30C9
|
||||
NewCaseWizardPanel1.validate.errMsg.invalidSymbols=\u30B1\u30FC\u30B9\u540D\u306B\u306F\u4E0B\u8A18\u306E\u8A18\u53F7\u3092\u542B\u3081\u307E\u305B\u3093\uFF1A\\ / \: * ? " < > |
|
||||
NewCaseWizardPanel1.validate.errMsg.dirExists=\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA''{0}''\u306F\u65E2\u306B\u5B58\u5728\u3057\u307E\u3059\u3002
|
||||
NewCaseWizardPanel1.validate.confMsg.createDir.msg=\u30D9\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA''{0}''\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002\
|
||||
\
|
||||
\u3053\u306E\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3057\u307E\u3059\u304B\uFF1F
|
||||
NewCaseWizardPanel1.validate.confMsg.createDir.title=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u4F5C\u6210
|
||||
NewCaseWizardPanel1.validate.errMsg.cantCreateParDir.msg=\u30A8\u30E9\u30FC\uFF1A\u30B1\u30FC\u30B9\u30DA\u30A2\u30EC\u30F3\u30C8\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F
|
||||
NewCaseWizardPanel1.validate.errMsg.prevCreateBaseDir.msg=\u30D9\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306E\u4F5C\u6210\u3092\u9632\u6B62\u3055\u308C\u307E\u3057\u305F
|
||||
NewCaseWizardPanel1.validate.errMsg.cantCreateDir=\u30A8\u30E9\u30FC\uFF1A\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002
|
||||
NewCaseWizardPanel1.validate.errMsg.invalidBaseDir.msg=\u30A8\u30E9\u30FC\uFF1A\u5165\u529B\u3057\u305F\u30D9\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\
|
||||
\u6709\u52B9\u306A\u30D9\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044\u3002
|
||||
NewCaseWizardPanel1.createDir.errMsg.cantCreateDir.msg=\u30A8\u30E9\u30FC\uFF1A\u30B1\u30FC\u30B9\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\
|
||||
\u6709\u52B9\u306A\u30B1\u30FC\u30B9\u540D\u304A\u3088\u3073\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u5165\u529B\u3057\u3066\u4E0B\u3055\u3044\u3002
|
||||
NewCaseWizardPanel2.validate.errCreateCase.msg=\u30B1\u30FC\u30B9\u4F5C\u6210\u30A8\u30E9\u30FC
|
||||
OpenRecentCasePanel.openCase.msgDlg.caseDoesntExist.msg=\u30A8\u30E9\u30FC\uFF1A\u30B1\u30FC\u30B9{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002
|
||||
OpenRecentCasePanel.openCase.msgDlg.err=\u30A8\u30E9\u30FC
|
||||
OpenRecentCasePanel.colName.caseName=\u30B1\u30FC\u30B9\u540D
|
||||
OpenRecentCasePanel.colName.path=\u30D1\u30B9
|
||||
RecentCases.exception.caseIdxOutOfRange.msg=\u6700\u8FD1\u306E\u30B1\u30FC\u30B9\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9{0}\u306F\u7BC4\u56F2\u5916\u3067\u3059\u3002
|
||||
RecentCases.getName.text=\u6700\u8FD1\u958B\u3044\u305F\u30B1\u30FC\u30B9\u3092\u30AF\u30EA\u30A2
|
||||
RecentItems.openRecentCase.msgDlg.text=\u30A8\u30E9\u30FC\uFF1A\u30B1\u30FC\u30B9{0}\u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3002
|
||||
RecentItems.openRecentCase.msgDlg.err=\u30A8\u30E9\u30FC
|
||||
StartupWindow.title.text=\u3088\u3046\u3053\u305D
|
||||
UpdateRecentCases.menuItem.clearRecentCases.text=\u6700\u8FD1\u958B\u3044\u305F\u30B1\u30FC\u30B9\u3092\u30AF\u30EA\u30A2
|
||||
UpdateRecentCases.menuItem.empty=-\u7A7A\u767D-
|
||||
XMLCaseManagement.create.exception.msg=\u30B1\u30FC\u30B9XML\u30D5\u30A1\u30A4\u30EB\u306E\u8A2D\u5B9A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3001
|
||||
XMLCaseManagement.writeFile.exception.noCase.msg=\u30DE\u30CD\u30B8\u30E1\u30F3\u30C8\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304F\u5FC5\u8981\u304C\u3042\u308B\u30B1\u30FC\u30B9\u304C\u3042\u308A\u307E\u305B\u3093\u3002
|
||||
XMLCaseManagement.writeFile.exception.errWriteToFile.msg=\u30B1\u30FC\u30B9\u30D5\u30A1\u30A4\u30EB\u3078\u306E\u66F8\u304D\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
|
||||
XMLCaseManagement.open.exception.errReadXMLFile.msg=\u30B1\u30FC\u30B9XML\u30D5\u30A1\u30A4\u30EB\u306E\u8AAD\u307F\u53D6\u308A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3057\u305F\uFF1A{0}
|
||||
XMLCaseManagement.open.msgDlg.notAutCase.msg=\u30A8\u30E9\u30FC\uFF1AAutopsy\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB("{0}")\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\
|
||||
\
|
||||
\u8A73\u7D30\uFF1A\
|
||||
Autopsy\u8A2D\u5B9A\u30D5\u30A1\u30A4\u30EB\u4EE5\u5916(at {1})\u306F\u958B\u3051\u307E\u305B\u3093\u3002
|
||||
XMLCaseManagement.open.msgDlg.notAutCase.title=\u30A8\u30E9\u30FC
|
||||
ImageFilePanel.noFatOrphansCheckbox.text=FAT\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u306E\u30AA\u30FC\u30D5\u30A1\u30F3\u30D5\u30A1\u30A4\u30EB\u306F\u7121\u8996
|
||||
LocalDiskPanel.noFatOrphansCheckbox.text=FAT\u30D5\u30A1\u30A4\u30EB\u30B7\u30B9\u30C6\u30E0\u306E\u30AA\u30FC\u30D5\u30A1\u30F3\u30D5\u30A1\u30A4\u30EB\u306F\u7121\u8996
|
@ -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;
|
||||
@ -61,47 +62,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
|
||||
private static final String autopsyVer = Version.getVersion(); // current version of autopsy. Change it when the version is changed
|
||||
private static String appName = null;
|
||||
/**
|
||||
* Property name that indicates the name of the current case has changed.
|
||||
* When a case is opened, "old name" is empty string and "new name" is the name.
|
||||
* When a case is closed, "old name" is the case name and "new name" is empty string.
|
||||
* When a case is renamed, "old name" has the original name and "new name" has the new name.
|
||||
*/
|
||||
public static final String CASE_NAME = "caseName";
|
||||
/**
|
||||
* Property name that indicates the number of the current case has changed.
|
||||
* Fired with the case number is changed. The value is an int: the number of
|
||||
* the case. -1 is used for no case number set.
|
||||
*/
|
||||
public static final String CASE_NUMBER = "caseNumber";
|
||||
/**
|
||||
* Property name that indicates the examiner of the current case has
|
||||
* changed. Fired with the case examiner is changed. The value is a String:
|
||||
* the name of the examiner. The empty string ("") is used for no examiner
|
||||
* set.
|
||||
*/
|
||||
public static final String CASE_EXAMINER = "caseExaminer";
|
||||
/**
|
||||
* Property name that indicates a new data source (image, disk or local
|
||||
* file) has been added to the current case. The new value is the
|
||||
* newly-added instance of the new data source, and the old value is always
|
||||
* null.
|
||||
*/
|
||||
public static final String CASE_ADD_DATA_SOURCE = "addDataSource";
|
||||
/**
|
||||
* Property name that indicates a data source has been removed from the
|
||||
* current case. The "old value" is the (int) content ID of the data source
|
||||
* that was removed, the new value is the instance of the data source.
|
||||
*/
|
||||
public static final String CASE_DEL_DATA_SOURCE = "removeDataSource";
|
||||
/**
|
||||
* Property name that indicates the currently open case has changed.
|
||||
* When a case is opened, the "new value" will be an instance of the opened
|
||||
* Case object and the "old value" will be null.
|
||||
* When a case is closed, the "new value" will be null and the "old value"
|
||||
* will be the instance of the Case object being closed.
|
||||
*/
|
||||
public static final String CASE_CURRENT_CASE = "currentCase";
|
||||
|
||||
/**
|
||||
* Name for the property that determines whether to show the dialog at
|
||||
* startup
|
||||
@ -114,69 +75,53 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
* Events that the case module will fire. Event listeners can get the event
|
||||
* name by using String returned by toString() method on a specific event.
|
||||
*/
|
||||
/* @@@ BC: I added this as a place holder for what I want this to be, but
|
||||
* this is not the time to change it. We'll start using this at a major release
|
||||
* version.
|
||||
*/
|
||||
private enum CaseModuleEvent_DoNotUse {
|
||||
/**
|
||||
* Property name that indicates the name of the current case has changed.
|
||||
* Fired with the case is renamed, and when the current case is
|
||||
* opened/closed/changed. The value is a String: the name of the case. The
|
||||
* empty string ("") is used for no open case.
|
||||
*/
|
||||
// @@@ BC: I propose that this is no longer called for case open/close.
|
||||
CASE_NAME("caseName"),
|
||||
|
||||
/**
|
||||
* Property name that indicates the number of the current case has changed.
|
||||
* Fired with the case number is changed. The value is an int: the number of
|
||||
* the case. -1 is used for no case number set.
|
||||
*/
|
||||
CASE_NUMBER("caseNumber"),
|
||||
|
||||
/**
|
||||
* Property name that indicates the examiner of the current case has
|
||||
* changed. Fired with the case examiner is changed. The value is a String:
|
||||
* the name of the examiner. The empty string ("") is used for no examiner
|
||||
* set.
|
||||
*/
|
||||
CASE_EXAMINER("caseExaminer"),
|
||||
|
||||
/**
|
||||
* Property name that indicates a new data source (image, disk or local
|
||||
* file) has been added to the current case. The new value is the
|
||||
* newly-added instance of the new data source, and the old value is always
|
||||
* null.
|
||||
*/
|
||||
CASE_ADD_DATA_SOURCE("addDataSource"),
|
||||
|
||||
/**
|
||||
* Property name that indicates a data source has been removed from the
|
||||
* current case. The "old value" is the (int) content ID of the data source
|
||||
* that was removed, the new value is the instance of the data source.
|
||||
*/
|
||||
CASE_DEL_DATA_SOURCE("removeDataSource"),
|
||||
|
||||
public enum Events {
|
||||
/**
|
||||
* Property name that indicates the currently open case has changed. The new
|
||||
* value is the instance of the opened Case, or null if there is no open
|
||||
* case. The old value is the instance of the closed Case, or null if there
|
||||
* was no open case.
|
||||
* Property name that indicates the name of the current case has
|
||||
* changed. When a case is opened, "old name" is empty string and "new
|
||||
* name" is the name. When a case is closed, "old name" is the case name
|
||||
* and "new name" is empty string. When a case is renamed, "old name"
|
||||
* has the original name and "new name" has the new name.
|
||||
*/
|
||||
CASE_CURRENT_CASE("currentCase");
|
||||
|
||||
private String name;
|
||||
CaseModuleEvent_DoNotUse(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
// @@@ BC: I propose that this is no longer called for case open/close.
|
||||
NAME,
|
||||
/**
|
||||
* Property name that indicates the number of the current case has
|
||||
* changed. Fired with the case number is changed. The value is an int:
|
||||
* the number of the case. -1 is used for no case number set.
|
||||
*/
|
||||
NUMBER,
|
||||
/**
|
||||
* Property name that indicates the examiner of the current case has
|
||||
* changed. Fired with the case examiner is changed. The value is a
|
||||
* String: the name of the examiner. The empty string ("") is used for
|
||||
* no examiner set.
|
||||
*/
|
||||
EXAMINER,
|
||||
/**
|
||||
* Property name that indicates a new data source (image, disk or local
|
||||
* file) has been added to the current case. The new value is the
|
||||
* newly-added instance of the new data source, and the old value is
|
||||
* always null.
|
||||
*/
|
||||
DATA_SOURCE_ADDED,
|
||||
/**
|
||||
* Property name that indicates a data source has been removed from the
|
||||
* current case. The "old value" is the (int) content ID of the data
|
||||
* source that was removed, the new value is the instance of the data
|
||||
* source.
|
||||
*/
|
||||
DATA_SOURCE_DELETED,
|
||||
/**
|
||||
* Property name that indicates the currently open case has changed.
|
||||
* When a case is opened, the "new value" will be an instance of the
|
||||
* opened Case object and the "old value" will be null. When a case is
|
||||
* closed, the "new value" will be null and the "old value" will be the
|
||||
* instance of the Case object being closed.
|
||||
*/
|
||||
CURRENT_CASE;
|
||||
};
|
||||
|
||||
|
||||
private String name;
|
||||
private String number;
|
||||
private String examiner;
|
||||
@ -215,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"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -244,20 +189,26 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
doCaseChange(null); //closes windows, etc
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_CURRENT_CASE, oldCase, null);
|
||||
pcs.firePropertyChange(Events.CURRENT_CASE.toString(), oldCase, null);
|
||||
}
|
||||
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("");
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_NAME, oldCase.name, "");
|
||||
pcs.firePropertyChange(Events.NAME.toString(), oldCase.name, "");
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -266,21 +217,27 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_CURRENT_CASE, null, currentCase);
|
||||
pcs.firePropertyChange(Events.CURRENT_CASE.toString(), null, currentCase);
|
||||
}
|
||||
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);
|
||||
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_NAME, "", currentCase.name);
|
||||
pcs.firePropertyChange(Events.NAME.toString(), "", currentCase.name);
|
||||
}
|
||||
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);
|
||||
|
||||
@ -323,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);
|
||||
@ -352,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);
|
||||
@ -374,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -408,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);
|
||||
@ -441,16 +405,19 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
Image newImage = db.getImageById(imgId);
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_ADD_DATA_SOURCE, null, newImage); // the new value is the instance of the image
|
||||
pcs.firePropertyChange(Events.DATA_SOURCE_ADDED.toString(), null, newImage); // the new value is the instance of the image
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -475,11 +442,14 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
void notifyNewDataSource(Content newDataSource) {
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_ADD_DATA_SOURCE, null, newDataSource);
|
||||
pcs.firePropertyChange(Events.DATA_SOURCE_ADDED.toString(), null, newDataSource);
|
||||
}
|
||||
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();
|
||||
}
|
||||
@ -512,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -534,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -556,16 +528,19 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
name = newCaseName; // change the local value
|
||||
RecentCases.getInstance().updateRecentCase(oldCaseName, oldPath, newCaseName, newPath); // update the recent case
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_NAME, oldCaseName, newCaseName);
|
||||
pcs.firePropertyChange(Events.NAME.toString(), oldCaseName, newCaseName);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -580,14 +555,17 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
xmlcm.setCaseExaminer(newExaminer); // set the examiner
|
||||
examiner = newExaminer;
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_EXAMINER, oldExaminer, newExaminer);
|
||||
pcs.firePropertyChange(Events.EXAMINER.toString(), oldExaminer, newExaminer);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -603,14 +581,17 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
||||
number = newCaseNumber;
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(CASE_NUMBER, oldCaseNumber, newCaseNumber);
|
||||
pcs.firePropertyChange(Events.NUMBER.toString(), oldCaseNumber, newCaseNumber);
|
||||
}
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -820,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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -975,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
|
||||
@ -994,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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
@ -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");
|
||||
|
||||
|
||||
|
||||
|
@ -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<>();
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -80,6 +80,10 @@
|
||||
<StringArray count="0"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new javax.swing.JComboBox<>()"/>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<LocalDisk>"/>
|
||||
</AuxValues>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="errorLabel">
|
||||
<Properties>
|
||||
|
@ -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;
|
||||
@ -47,12 +50,12 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
/**
|
||||
* ImageTypePanel for adding a local disk or partition such as PhysicalDrive0 or C:.
|
||||
*/
|
||||
class LocalDiskPanel extends JPanel {
|
||||
final class LocalDiskPanel extends JPanel {
|
||||
private static final Logger logger = Logger.getLogger(LocalDiskPanel.class.getName());
|
||||
|
||||
private static LocalDiskPanel instance;
|
||||
private PropertyChangeSupport pcs = null;
|
||||
private List<LocalDisk> disks = new ArrayList<LocalDisk>();
|
||||
private List<LocalDisk> disks;
|
||||
private LocalDiskModel model;
|
||||
private boolean enableNext = false;
|
||||
|
||||
@ -60,6 +63,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
* Creates new form LocalDiskPanel
|
||||
*/
|
||||
public LocalDiskPanel() {
|
||||
this.disks = new ArrayList<>();
|
||||
initComponents();
|
||||
customInit();
|
||||
|
||||
@ -98,7 +102,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
private void initComponents() {
|
||||
|
||||
diskLabel = new javax.swing.JLabel();
|
||||
diskComboBox = new javax.swing.JComboBox();
|
||||
diskComboBox = new javax.swing.JComboBox<>();
|
||||
errorLabel = new javax.swing.JLabel();
|
||||
timeZoneLabel = new javax.swing.JLabel();
|
||||
timeZoneComboBox = new javax.swing.JComboBox<String>();
|
||||
@ -162,7 +166,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JLabel descLabel;
|
||||
private javax.swing.JComboBox diskComboBox;
|
||||
private javax.swing.JComboBox<LocalDisk> diskComboBox;
|
||||
private javax.swing.JLabel diskLabel;
|
||||
private javax.swing.JLabel errorLabel;
|
||||
private javax.swing.JCheckBox noFatOrphansCheckbox;
|
||||
@ -293,14 +297,13 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
private Object selected;
|
||||
private boolean ready = false;
|
||||
private volatile boolean loadingDisks = false;
|
||||
List<LocalDisk> physical = new ArrayList<LocalDisk>();
|
||||
List<LocalDisk> partitions = new ArrayList<LocalDisk>();
|
||||
List<LocalDisk> physical = new ArrayList<>();
|
||||
List<LocalDisk> partitions = new ArrayList<>();
|
||||
|
||||
//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;
|
||||
|
||||
|
||||
private void loadDisks() {
|
||||
|
||||
// if there is a worker already building the lists, then cancel it first.
|
||||
@ -310,9 +313,9 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
|
||||
// Clear the lists
|
||||
errorLabel.setText("");
|
||||
disks = new ArrayList<LocalDisk>();
|
||||
physical = new ArrayList<LocalDisk>();
|
||||
partitions = new ArrayList<LocalDisk>();
|
||||
disks = new ArrayList<>();
|
||||
physical = new ArrayList<>();
|
||||
partitions = new ArrayList<>();
|
||||
diskComboBox.setEnabled(false);
|
||||
ready = false;
|
||||
enableNext = false;
|
||||
@ -327,7 +330,7 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
@Override
|
||||
public void setSelectedItem(Object anItem) {
|
||||
if(ready) {
|
||||
selected = anItem;
|
||||
selected = (LocalDisk) anItem;
|
||||
enableNext = true;
|
||||
|
||||
try {
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -379,13 +384,14 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
label.setForeground(list.getForeground());
|
||||
}
|
||||
|
||||
if(value !=null && value.equals(LOADING)) {
|
||||
String localDiskString = value.toString();
|
||||
if(localDiskString.equals(LOADING)) {
|
||||
Font font = new Font(label.getFont().getName(), Font.ITALIC, label.getFont().getSize());
|
||||
label.setText(LOADING);
|
||||
label.setFont(font);
|
||||
label.setBackground(Color.GRAY);
|
||||
} else {
|
||||
label.setText(value != null ? value.toString() : "");
|
||||
label.setText(value.toString());
|
||||
}
|
||||
label.setOpaque(true);
|
||||
label.setBorder(new EmptyBorder(2, 2, 2, 2));
|
||||
@ -409,16 +415,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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012 Basis Technology Corp.
|
||||
* Copyright 2012-2014 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -18,7 +18,6 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.casemodule;
|
||||
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.event.WindowAdapter;
|
||||
@ -31,52 +30,46 @@ import java.io.File;
|
||||
import javax.swing.JFileChooser;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JOptionPane;
|
||||
import org.sleuthkit.autopsy.casemodule.GeneralFilter;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
class MissingImageDialog extends javax.swing.JDialog {
|
||||
|
||||
|
||||
class MissingImageDialog extends javax.swing.JDialog {
|
||||
private static final Logger logger = Logger.getLogger(MissingImageDialog.class.getName());
|
||||
long obj_id;
|
||||
SleuthkitCase db;
|
||||
|
||||
|
||||
|
||||
static final GeneralFilter rawFilter = new GeneralFilter(GeneralFilter.RAW_IMAGE_EXTS, GeneralFilter.RAW_IMAGE_DESC);
|
||||
static final GeneralFilter encaseFilter = new GeneralFilter(GeneralFilter.ENCASE_IMAGE_EXTS, GeneralFilter.ENCASE_IMAGE_DESC);
|
||||
|
||||
static final List<String> allExt = new ArrayList<String>();
|
||||
|
||||
static {
|
||||
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();
|
||||
|
||||
|
||||
private MissingImageDialog(long obj_id, SleuthkitCase db) {
|
||||
super(new JFrame(), true);
|
||||
this.obj_id = obj_id;
|
||||
this.db = db;
|
||||
initComponents();
|
||||
|
||||
|
||||
fc.setDragEnabled(false);
|
||||
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
||||
fc.setMultiSelectionEnabled(false);
|
||||
|
||||
|
||||
fc.addChoosableFileFilter(rawFilter);
|
||||
fc.addChoosableFileFilter(encaseFilter);
|
||||
fc.setFileFilter(allFilter);
|
||||
|
||||
|
||||
|
||||
|
||||
customInit();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// * Client call to create a MissingImageDialog.
|
||||
// *
|
||||
@ -89,45 +82,45 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
@Override
|
||||
public void windowClosing(WindowEvent e) {
|
||||
dialog.cancel();
|
||||
}
|
||||
}
|
||||
});
|
||||
dialog.display();
|
||||
}
|
||||
|
||||
|
||||
private void customInit() {
|
||||
|
||||
selectButton.setEnabled(false);
|
||||
|
||||
selectButton.setEnabled(false);
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
int h = this.getSize().height;
|
||||
// set the location of the popUp Window on the center of the screen
|
||||
setLocation((screenDimension.width - w) / 2, (screenDimension.height - h) / 2);
|
||||
|
||||
|
||||
this.setVisible(true);
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// * Focuses the select button for easy enter-pressing access.
|
||||
//
|
||||
private void moveFocusToSelect() {
|
||||
this.selectButton.requestFocusInWindow();
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// * Enables/disables the select button based off the current panel.
|
||||
//
|
||||
private void updateSelectButton() {
|
||||
|
||||
|
||||
// Enable this based on whether there is a valid path
|
||||
if (!pathNameTextField.getText().isEmpty()) {
|
||||
String filePath = pathNameTextField.getText();
|
||||
boolean isExist = Case.pathExists(filePath) || Case.driveExists(filePath);
|
||||
selectButton.setEnabled(isExist);
|
||||
selectButton.setEnabled(isExist);
|
||||
}
|
||||
}
|
||||
|
||||
@ -274,16 +267,14 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
private void pathNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pathNameTextFieldActionPerformed
|
||||
// TODO add your handling code here:
|
||||
|
||||
updateSelectButton();
|
||||
|
||||
updateSelectButton();
|
||||
}//GEN-LAST:event_pathNameTextFieldActionPerformed
|
||||
|
||||
private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseButtonActionPerformed
|
||||
|
||||
|
||||
|
||||
|
||||
String oldText = pathNameTextField.getText();
|
||||
|
||||
|
||||
// set the current directory of the FileChooser if the ImagePath Field is valid
|
||||
File currentDir = new File(oldText);
|
||||
if (currentDir.exists()) {
|
||||
@ -296,10 +287,9 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
pathNameTextField.setText(path);
|
||||
}
|
||||
//pcs.firePropertyChange(DataSourceProcessor.DSP_PANEL_EVENT.FOCUS_NEXT.toString(), false, true);
|
||||
|
||||
updateSelectButton();
|
||||
}//GEN-LAST:event_browseButtonActionPerformed
|
||||
|
||||
updateSelectButton();
|
||||
}//GEN-LAST:event_browseButtonActionPerformed
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton browseButton;
|
||||
private javax.swing.JPanel buttonPanel;
|
||||
@ -310,19 +300,19 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
private javax.swing.JLabel titleLabel;
|
||||
private javax.swing.JSeparator titleSeparator;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
|
||||
//
|
||||
// * Verify the user wants to cancel searching for the image.
|
||||
//
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
@ -115,7 +120,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
* Initialize panels representing individual wizard's steps and sets
|
||||
* various properties for them influencing wizard appearance.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked"})
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
private WizardDescriptor.Panel<WizardDescriptor>[] getPanels() {
|
||||
if (panels == null) {
|
||||
panels = new WizardDescriptor.Panel[]{
|
||||
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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:
|
||||
;
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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
|
@ -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
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013 Basis Technology Corp.
|
||||
* Copyright 2013-2014 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -21,8 +21,6 @@ package org.sleuthkit.autopsy.contentviewers;
|
||||
import javax.swing.JTextPane;
|
||||
import javax.swing.text.html.HTMLEditorKit;
|
||||
import javax.swing.text.html.StyleSheet;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -10,3 +10,5 @@ OpenIDE-Module-Name=Autopsy-Core
|
||||
OpenIDE-Module-Short-Description=Autopsy Core Module
|
||||
org_sleuthkit_autopsy_core_update_center=http://sleuthkit.org/autopsy/updates.xml
|
||||
Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy Update Center
|
||||
Installer.errorInitJavafx.msg=Error initializing JavaFX.
|
||||
Installer.errorInitJavafx.details=\ Some features will not be available. Check that you have the right JRE installed (Oracle JRE > 1.7.10).
|
||||
|
14
Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties
Normal file
14
Core/src/org/sleuthkit/autopsy/core/Bundle_ja.properties
Normal file
@ -0,0 +1,14 @@
|
||||
OpenIDE-Module-Display-Category=\u57FA\u76E4
|
||||
OpenIDE-Module-Long-Description=\
|
||||
Autopsy\u30E2\u30B8\u30E5\u30FC\u30EB\u306E\u30B3\u30A2\u3067\u3059\u3002\n\n\
|
||||
\u30A2\u30D7\u30EA\u30B1\u30FC\u30B7\u30E7\u30F3\u306E\u307F\u3067\u5B9F\u884C\u3059\u308B\u306E\u306B\u5FC5\u8981\u306A\u4E3B\u8981\u306A\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\uFF1ARCP\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3001\u30A6\u30A3\u30F3\u30C9\u30A6\u30A4\u30F3\u30B0GUI\u3001Sleuth Kit\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u3001\u30C7\u30FC\u30BF\u30E2\u30C7\u30EB\uFF0F\u30B9\u30C8\u30EC\u30FC\u30B8\u3001\u30A8\u30AF\u30B9\u30D7\u30ED\u30FC\u30E9\u3001\u7D50\u679C\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30B3\u30F3\u30C6\u30F3\u30C4\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u7528\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u3001\u30D5\u30A1\u30A4\u30EB\u691C\u7D22\u7B49\u306E\u4E3B\u8981\u30C4\u30FC\u30EB\u3002\n\n\
|
||||
\u30E2\u30B8\u30E5\u30FC\u30EB\u5185\u306E\u30D5\u30EC\u30FC\u30E0\u30EF\u30FC\u30AF\u306B\u306F\u30A4\u30F3\u30B8\u30A7\u30B9\u30C8\u3001\u30D3\u30E5\u30FC\u30A2\u30FC\u3001\u30EC\u30DD\u30FC\u30C8\u751F\u6210\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u958B\u767A\u7528\u306EAPI\u304C\u542B\u307E\u308C\u307E\u3059\u3002\
|
||||
\u30E2\u30B8\u30E5\u30FC\u30EB\u306FAutopsy\u30D7\u30E9\u30B0\u30A4\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30E9\u30FC\u3092\u4F7F\u7528\u3057\u3001\u30D7\u30E9\u30B0\u30A4\u30F3\u3068\u3057\u3066\u5B9F\u88C5\u3067\u304D\u307E\u3059\u3002\n\
|
||||
\u3053\u306E\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3057\u3066\u306F\u3044\u3051\u307E\u305B\u3093\u3002\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u306A\u3051\u308C\u3070\u3001Autopsy\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\n\
|
||||
\u8A73\u7D30\u306F\u4E0B\u8A18\u3092\u3054\u89A7\u4E0B\u3055\u3044\u3002http\://www.sleuthkit.org/autopsy/
|
||||
OpenIDE-Module-Name=Autopsy-\u30B3\u30A2
|
||||
OpenIDE-Module-Short-Description=Autopsy\u30B3\u30A2\u30E2\u30B8\u30E5\u30FC\u30EB
|
||||
org_sleuthkit_autopsy_core_update_center=http\://sleuthkit.org/autopsy/updates.xml
|
||||
Services/AutoupdateType/org_sleuthkit_autopsy_core_update_center.settings=Autopsy\u30A2\u30C3\u30D7\u30C7\u30FC\u30C8\u30BB\u30F3\u30BF\u30FC
|
||||
Installer.errorInitJavafx.msg=JavaFX\u521D\u671F\u5316\u30A8\u30E9\u30FC
|
||||
Installer.errorInitJavafx.details=\u4E00\u90E8\u306E\u6A5F\u80FD\u304C\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002\u6B63\u3057\u3044JRE\u304C\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u3055\u308C\u3066\u3044\u308B\u306E\u3092\u78BA\u8A8D\u3057\u3066\u4E0B\u3055\u3044\u3002\uFF08Oracle JRE > 1.7.10\uFF09
|
@ -23,6 +23,7 @@ import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import javafx.application.Platform;
|
||||
import javafx.embed.swing.JFXPanel;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.openide.modules.ModuleInstall;
|
||||
import org.openide.windows.WindowManager;
|
||||
@ -48,8 +49,11 @@ public class Installer extends ModuleInstall {
|
||||
* If libtsk_jni tries to load them, they will not be found by
|
||||
* Windows because they are in special NetBeans folders. So, we
|
||||
* manually load them from within Autopsy so that they are found
|
||||
* via the NetBeans loading setup.
|
||||
* On other platforms, we assume the dependncies are all installed
|
||||
* via the NetBeans loading setup. These are copied by the build
|
||||
* script when making the ZIP file. In a development environment
|
||||
* they will need to be loaded from standard places in your system.
|
||||
*
|
||||
* On non-Windows platforms, we assume the dependncies are all installed
|
||||
* and loadable (i.e. a 'make install' was done).
|
||||
*/
|
||||
if (PlatformUtil.isWindowsOS()) {
|
||||
@ -110,9 +114,8 @@ public class Installer extends ModuleInstall {
|
||||
javaFxInit = true;
|
||||
} catch (UnsatisfiedLinkError | NoClassDefFoundError | Exception e) {
|
||||
//in case javafx not present
|
||||
final String msg = "Error initializing JavaFX. ";
|
||||
final String details = " Some features will not be available. "
|
||||
+ " Check that you have the right JRE installed (Oracle JRE > 1.7.10). ";
|
||||
final String msg = NbBundle.getMessage(Installer.class, "Installer.errorInitJavafx.msg");
|
||||
final String details = NbBundle.getMessage(Installer.class, "Installer.errorInitJavafx.details");
|
||||
logger.log(Level.SEVERE, msg
|
||||
+ details, e);
|
||||
|
||||
|
@ -13,7 +13,8 @@
|
||||
<attr name="Menu\File\Separator4.instance_hidden\position" intvalue="400"/>-->
|
||||
|
||||
<folder name="OptionsDialog">
|
||||
<folder name="General.instance_hidden"/>
|
||||
<!--<folder name="General.instance_hidden"/>-->
|
||||
<file name="General.instance"/>
|
||||
<folder name="Keymaps.instance_hidden"/> <!-- Keymap -->
|
||||
<folder name="Java.instance_hidden"/>
|
||||
<folder name="Advanced.instance_hidden"/> <!-- Miscellaneous -->
|
||||
|
@ -1 +1,3 @@
|
||||
OpenIDE-Module-Name=CoreComponentInterfaces
|
||||
CoreComponentControl.CTL_DirectoryTreeTopComponent=Directory Tree
|
||||
CoreComponentControl.CTL_FavoritesTopComponent=Favorites
|
||||
|
@ -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
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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=Display
|
||||
OptionsCategory_Keywords_General=display
|
||||
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
|
||||
@ -107,8 +83,60 @@ MediaViewVideoPanel.progressLabel.text=00:00
|
||||
DataContentViewerMedia.AccessibleContext.accessibleDescription=
|
||||
MediaViewVideoPanel.infoLabel.text=info
|
||||
GeneralPanel.jLabel2.text=When displaying times:
|
||||
GeneralPanel.useLocalTimeRB.text=Use local timezone
|
||||
GeneralPanel.useLocalTimeRB.text=Use local time zone
|
||||
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
|
||||
GeneralPanel.jLabel3.text=Hide known files (i.e. those in the NIST NSRL) in the:
|
||||
GeneralPanel.viewsHideKnownCB.text= Views area
|
||||
GeneralPanel.dataSourcesHideKnownCB.text=Data Sources area (the directory hierarchy)
|
||||
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
|
||||
|
@ -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™\u306FSleuth Kit™\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 © 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
|
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -284,6 +284,10 @@
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="languageComboActionPerformed"/>
|
||||
</Events>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new javax.swing.JComboBox<>()"/>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<SCRIPT>"/>
|
||||
</AuxValues>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="languageLabel">
|
||||
<Properties>
|
||||
|
@ -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;
|
||||
@ -114,7 +116,7 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
|
||||
prevPageButton = new javax.swing.JButton();
|
||||
goToPageLabel = new javax.swing.JLabel();
|
||||
goToPageTextField = new javax.swing.JTextField();
|
||||
languageCombo = new javax.swing.JComboBox();
|
||||
languageCombo = new javax.swing.JComboBox<>();
|
||||
languageLabel = new javax.swing.JLabel();
|
||||
|
||||
copyMenuItem.setText(org.openide.util.NbBundle.getMessage(DataContentViewerString.class, "DataContentViewerString.copyMenuItem.text")); // NOI18N
|
||||
@ -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;
|
||||
@ -309,7 +316,7 @@ public class DataContentViewerString extends javax.swing.JPanel implements DataC
|
||||
private javax.swing.JTextField goToPageTextField;
|
||||
private javax.swing.JPanel jPanel1;
|
||||
private javax.swing.JScrollPane jScrollPane1;
|
||||
private javax.swing.JComboBox languageCombo;
|
||||
private javax.swing.JComboBox<SCRIPT> languageCombo;
|
||||
private javax.swing.JLabel languageLabel;
|
||||
private javax.swing.JButton nextPageButton;
|
||||
private javax.swing.JLabel ofLabel;
|
||||
@ -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
|
||||
|
@ -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() {
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013 Basis Technology Corp.
|
||||
* Copyright 2013-2014 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -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;
|
||||
@ -55,28 +57,28 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
// service provider when DataResultViewers can be made compatible with node
|
||||
// multiple selection actions.
|
||||
//@ServiceProvider(service = DataResultViewer.class)
|
||||
public class DataResultViewerTable extends AbstractDataResultViewer {
|
||||
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
|
||||
* Creates a DataResultViewerTable object that is compatible with node
|
||||
* multiple selection actions.
|
||||
*/
|
||||
public DataResultViewerTable(ExplorerManager explorerManager) {
|
||||
super(explorerManager);
|
||||
initialize();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Creates a DataResultViewerTable object that is NOT compatible with node
|
||||
* Creates a DataResultViewerTable object that is NOT compatible with node
|
||||
* multiple selection actions.
|
||||
*/
|
||||
public DataResultViewerTable() {
|
||||
initialize();
|
||||
initialize();
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
@ -90,9 +92,9 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
|
||||
// don't show the root node
|
||||
ov.getOutline().setRootVisible(false);
|
||||
ov.getOutline().setDragEnabled(false);
|
||||
ov.getOutline().setDragEnabled(false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Expand node
|
||||
*
|
||||
@ -154,7 +156,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 +165,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"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -174,13 +178,15 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
* @param parent Node with at least one child to get properties from
|
||||
* @return Properties,
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
private Node.Property[] getAllChildPropertyHeaders(Node parent) {
|
||||
Node firstChild = parent.getChildren().getNodeAt(0);
|
||||
|
||||
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) {
|
||||
@ -216,7 +222,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
private void getAllChildPropertyHeadersRec(Node parent, int rows) {
|
||||
Children children = parent.getChildren();
|
||||
int childCount = 0;
|
||||
for (Node child : children.getNodes()) {
|
||||
for (Node child : children.getNodes()) {
|
||||
if (++childCount > rows) {
|
||||
break;
|
||||
}
|
||||
@ -236,13 +242,19 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Thread note: Make sure to run this in the EDT as it causes GUI
|
||||
* operations.
|
||||
*
|
||||
* @param selectedNode
|
||||
*/
|
||||
@Override
|
||||
public void setNode(Node selectedNode) {
|
||||
// change the cursor to "waiting cursor" for this operation
|
||||
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
try {
|
||||
boolean hasChildren = false;
|
||||
|
||||
|
||||
if (selectedNode != null) {
|
||||
hasChildren = selectedNode.getChildren().getNodesCount() > 0;
|
||||
}
|
||||
@ -251,7 +263,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
if (oldNode != null) {
|
||||
oldNode.removeNodeListener(dummyNodeListener);
|
||||
}
|
||||
|
||||
|
||||
// if there's no selection node, do nothing
|
||||
if (hasChildren) {
|
||||
Node root = selectedNode;
|
||||
@ -269,11 +281,11 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
this.setCursor(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create Column Headers based on the Content represented by the Nodes in
|
||||
* the table.
|
||||
*
|
||||
*
|
||||
* @param root The parent Node of the ContentNodes
|
||||
*/
|
||||
private void setupTable(final Node root) {
|
||||
@ -292,11 +304,11 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
if (ov == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
propertiesAcc.clear();
|
||||
|
||||
propertiesAcc.clear();
|
||||
|
||||
DataResultViewerTable.this.getAllChildPropertyHeadersRec(root, 100);
|
||||
List<Node.Property> props = new ArrayList<Node.Property>(propertiesAcc);
|
||||
List<Node.Property> props = new ArrayList<>(propertiesAcc);
|
||||
if (props.size() > 0) {
|
||||
Node.Property prop = props.remove(0);
|
||||
((DefaultOutlineModel) ov.getOutline().getOutlineModel()).setNodesColumnLabel(prop.getDisplayName());
|
||||
@ -335,15 +347,15 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
// show the horizontal scroll panel and show all the content & header
|
||||
|
||||
int totalColumns = props.size();
|
||||
|
||||
//int scrollWidth = ttv.getWidth();
|
||||
int margin = 4;
|
||||
int startColumn = 1;
|
||||
|
||||
// If there is only one column (which was removed from props above)
|
||||
// Just let the table resize itself.
|
||||
ov.getOutline().setAutoResizeMode((props.size() > 0) ? JTable.AUTO_RESIZE_OFF : JTable.AUTO_RESIZE_ALL_COLUMNS);
|
||||
|
||||
|
||||
//int scrollWidth = ttv.getWidth();
|
||||
int margin = 4;
|
||||
int startColumn = 1;
|
||||
|
||||
// If there is only one column (which was removed from props above)
|
||||
// Just let the table resize itself.
|
||||
ov.getOutline().setAutoResizeMode((props.size() > 0) ? JTable.AUTO_RESIZE_OFF : JTable.AUTO_RESIZE_ALL_COLUMNS);
|
||||
|
||||
|
||||
|
||||
// get first 100 rows values for the table
|
||||
@ -379,34 +391,32 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
// Populate a two-dimensional array with rows of property values for up
|
||||
// to maxRows children of the node passed in.
|
||||
private static Object[][] getRowValues(Node node, int maxRows) {
|
||||
Object[][] rowValues = new Object[Math.min(maxRows, node.getChildren().getNodesCount())][];
|
||||
Object[][] rowValues = new Object[Math.min(maxRows, node.getChildren().getNodesCount())][];
|
||||
int rowCount = 0;
|
||||
for (Node child : node.getChildren().getNodes()) {
|
||||
if (rowCount >= maxRows) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
PropertySet[] propertySets = child.getPropertySets();
|
||||
if (propertySets.length > 0)
|
||||
{
|
||||
if (propertySets.length > 0) {
|
||||
Property[] properties = propertySets[0].getProperties();
|
||||
rowValues[rowCount] = new Object[properties.length];
|
||||
for (int j = 0; j < properties.length; ++j) {
|
||||
try {
|
||||
rowValues[rowCount][j] = properties[j].getValue();
|
||||
}
|
||||
catch (IllegalAccessException | InvocationTargetException ignore) {
|
||||
} catch (IllegalAccessException | InvocationTargetException ignore) {
|
||||
rowValues[rowCount][j] = "n/a";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
++rowCount;
|
||||
}
|
||||
}
|
||||
return rowValues;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return "Table";
|
||||
return NbBundle.getMessage(this.getClass(), "DataResultViewerTable.title");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -425,6 +435,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
* @param table the object table
|
||||
* @return max the maximum width of the column
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
private int getMaxColumnWidth(int index, FontMetrics metrics, int margin, int padding, List<Node.Property> header, Object[][] table) {
|
||||
// set the tree (the node / names column) width
|
||||
String headerName = header.get(index - 1).getDisplayName();
|
||||
@ -475,15 +486,15 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
|
||||
super.clearComponent();
|
||||
}
|
||||
|
||||
|
||||
private class DummyNodeListener implements NodeListener {
|
||||
private static final String DUMMY_NODE_DISPLAY_NAME = "Please Wait...";
|
||||
|
||||
private volatile boolean load = true;
|
||||
|
||||
|
||||
public void reset() {
|
||||
load = true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void childrenAdded(final NodeMemberEvent nme) {
|
||||
Node[] delta = nme.getDelta();
|
||||
@ -501,7 +512,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private boolean containsReal(Node[] delta) {
|
||||
for (Node n : delta) {
|
||||
if (!n.getDisplayName().equals(DUMMY_NODE_DISPLAY_NAME)) {
|
||||
|
@ -16,7 +16,7 @@
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="thumbnailScrollPanel" max="32767" attributes="0"/>
|
||||
<Component id="thumbnailScrollPanel" pref="642" max="32767" attributes="0"/>
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
@ -201,18 +201,17 @@
|
||||
</Component>
|
||||
<Component class="javax.swing.JComboBox" name="thumbnailSizeComboBox">
|
||||
<Properties>
|
||||
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
|
||||
<StringArray count="3">
|
||||
<StringItem index="0" value="Small Thumbnails"/>
|
||||
<StringItem index="1" value="Medium Thumbnails"/>
|
||||
<StringItem index="2" value="Large Thumbnails"/>
|
||||
</StringArray>
|
||||
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
|
||||
<Connection code="new javax.swing.DefaultComboBoxModel<String>(new String[] { "Small Thumbnails", "Medium Thumbnails", "Large Thumbnails" })" type="code"/>
|
||||
</Property>
|
||||
<Property name="selectedIndex" type="int" value="1"/>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="thumbnailSizeComboBoxActionPerformed"/>
|
||||
</Events>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new javax.swing.JComboBox<>()"/>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<String>"/>
|
||||
</AuxValues>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Form>
|
||||
|
@ -24,13 +24,18 @@ import java.awt.EventQueue;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
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;
|
||||
import org.netbeans.api.progress.ProgressHandle;
|
||||
import org.netbeans.api.progress.ProgressHandleFactory;
|
||||
import org.openide.DialogDisplayer;
|
||||
import org.openide.NotifyDescriptor;
|
||||
import org.openide.explorer.ExplorerManager;
|
||||
import org.openide.explorer.view.IconView;
|
||||
import org.openide.nodes.AbstractNode;
|
||||
@ -40,6 +45,7 @@ import org.openide.nodes.NodeEvent;
|
||||
import org.openide.nodes.NodeListener;
|
||||
import org.openide.nodes.NodeMemberEvent;
|
||||
import org.openide.nodes.NodeReorderEvent;
|
||||
import org.openide.util.Exceptions;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
import org.sleuthkit.autopsy.coreutils.ImageUtils;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
@ -115,7 +121,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
filePathLabel = new javax.swing.JLabel();
|
||||
goToPageLabel = new javax.swing.JLabel();
|
||||
goToPageField = new javax.swing.JTextField();
|
||||
thumbnailSizeComboBox = new javax.swing.JComboBox();
|
||||
thumbnailSizeComboBox = new javax.swing.JComboBox<>();
|
||||
|
||||
thumbnailScrollPanel.setPreferredSize(new java.awt.Dimension(582, 348));
|
||||
|
||||
@ -165,8 +171,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
}
|
||||
});
|
||||
|
||||
thumbnailSizeComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Small Thumbnails", "Medium Thumbnails", "Large Thumbnails" }));
|
||||
thumbnailSizeComboBox.setSelectedIndex(1);
|
||||
thumbnailSizeComboBox.setModel(new javax.swing.DefaultComboBoxModel<String>(new String[] { "Small Thumbnails", "Medium Thumbnails", "Large Thumbnails" }));
|
||||
thumbnailSizeComboBox.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
thumbnailSizeComboBoxActionPerformed(evt);
|
||||
@ -177,7 +182,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(thumbnailScrollPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(thumbnailScrollPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 642, Short.MAX_VALUE)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
@ -283,7 +288,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
private javax.swing.JButton pagePrevButton;
|
||||
private javax.swing.JLabel pagesLabel;
|
||||
private javax.swing.JScrollPane thumbnailScrollPanel;
|
||||
private javax.swing.JComboBox thumbnailSizeComboBox;
|
||||
private javax.swing.JComboBox<String> thumbnailSizeComboBox;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
@Override
|
||||
@ -327,7 +332,7 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
@Override
|
||||
public String getTitle() {
|
||||
return "Thumbnail";
|
||||
return NbBundle.getMessage(this.getClass(), "DataResultViewerThumbnail.title");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -380,8 +385,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;
|
||||
}
|
||||
|
||||
@ -407,7 +417,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();
|
||||
@ -421,7 +432,17 @@ import org.sleuthkit.datamodel.TskCoreException;
|
||||
protected void done() {
|
||||
progress.finish();
|
||||
setCursor(null);
|
||||
updateControls();
|
||||
updateControls();
|
||||
// see if any exceptions were thrown
|
||||
try {
|
||||
get();
|
||||
} catch (InterruptedException | ExecutionException ex) {
|
||||
NotifyDescriptor d =
|
||||
new NotifyDescriptor.Message("Error making thumbnails: " + ex.getMessage(),
|
||||
NotifyDescriptor.ERROR_MESSAGE);
|
||||
DialogDisplayer.getDefault().notify(d);
|
||||
logger.log(Level.SEVERE, "Error making thumbnails: " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
}.execute();
|
||||
|
||||
@ -435,7 +456,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);
|
||||
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,21 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.corecomponents;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -1,6 +1,20 @@
|
||||
/*
|
||||
* To change this template, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013-2014 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.corecomponents;
|
||||
|
||||
@ -10,57 +24,65 @@ 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;
|
||||
|
||||
@OptionsPanelController.TopLevelRegistration(
|
||||
categoryName = "#OptionsCategory_Name_General",
|
||||
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"})
|
||||
@OptionsPanelController.TopLevelRegistration(categoryName = "#OptionsCategory_Name_General",
|
||||
iconBase = "org/sleuthkit/autopsy/corecomponents/display-options.png",
|
||||
position = 1,
|
||||
keywords = "#OptionsCategory_Keywords_General",
|
||||
keywordsCategory = "General")
|
||||
public final class GeneralOptionsPanelController extends OptionsPanelController {
|
||||
|
||||
private GeneralPanel panel;
|
||||
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
|
||||
private boolean changed;
|
||||
private static final Logger logger = Logger.getLogger(GeneralOptionsPanelController.class.getName());
|
||||
|
||||
@Override
|
||||
public void update() {
|
||||
getPanel().load();
|
||||
changed = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyChanges() {
|
||||
getPanel().store();
|
||||
changed = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
// need not do anything special, if no changes have been persisted yet
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid() {
|
||||
return getPanel().valid();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChanged() {
|
||||
return changed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HelpCtx getHelpCtx() {
|
||||
return null; // new HelpCtx("...ID") if you have a help set
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JComponent getComponent(Lookup masterLookup) {
|
||||
return getPanel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addPropertyChangeListener(PropertyChangeListener l) {
|
||||
pcs.addPropertyChangeListener(l);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removePropertyChangeListener(PropertyChangeListener l) {
|
||||
pcs.removePropertyChangeListener(l);
|
||||
}
|
||||
@ -75,22 +97,26 @@ public final class GeneralOptionsPanelController extends OptionsPanelController
|
||||
void changed() {
|
||||
if (!changed) {
|
||||
changed = true;
|
||||
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(OptionsPanelController.PROP_CHANGED, false, true);
|
||||
}
|
||||
catch (Exception e) {
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
|
||||
}
|
||||
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);
|
||||
}
|
||||
|
||||
try {
|
||||
pcs.firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
|
||||
} catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "GeneralOptionsPanelController listener threw exception", e);
|
||||
MessageNotifyUtil.Notify.show(
|
||||
NbBundle.getMessage(this.getClass(), "GeneralOptionsPanelController.moduleErr"),
|
||||
NbBundle.getMessage(this.getClass(), "GeneralOptionsPanelController.moduleErr.msg"),
|
||||
MessageNotifyUtil.MessageType.ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -148,6 +148,9 @@
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/corecomponents/Bundle.properties" key="GeneralPanel.useGMTTimeRB.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="useGMTTimeRBActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="jLabel3">
|
||||
<Properties>
|
||||
|
@ -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);
|
||||
|
@ -29,6 +29,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CancellationException;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.BoxLayout;
|
||||
@ -50,7 +51,10 @@ import org.gstreamer.elements.RGBDataSink;
|
||||
import org.gstreamer.swing.VideoComponent;
|
||||
import org.netbeans.api.progress.ProgressHandle;
|
||||
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;
|
||||
@ -73,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;
|
||||
@ -163,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;
|
||||
}
|
||||
@ -186,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);
|
||||
@ -315,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
|
||||
@ -329,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();
|
||||
|
||||
@ -361,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();
|
||||
|
||||
@ -374,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
|
||||
@ -391,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) {
|
||||
@ -659,6 +667,18 @@ public class GstVideoPanel extends MediaViewVideoPanel {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void done() {
|
||||
// see if any exceptions were thrown
|
||||
try {
|
||||
get();
|
||||
} catch (InterruptedException | ExecutionException ex) {
|
||||
logger.log(Level.WARNING, "Error updating video progress: " + ex.getMessage());
|
||||
infoLabel.setText("Error updating video progress: " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
} //end class progress worker
|
||||
|
||||
/* Thread that extracts and plays a file */
|
||||
@ -690,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 {
|
||||
@ -723,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;
|
||||
|
@ -107,7 +107,7 @@ public class Installer extends ModuleInstall {
|
||||
final String[] UI_MENU_ITEM_KEYS = new String[]{"MenuBarUI",
|
||||
};
|
||||
|
||||
Map<Object, Object> uiEntries = new TreeMap<Object, Object>();
|
||||
Map<Object, Object> uiEntries = new TreeMap<>();
|
||||
|
||||
// Store the keys that deal with menu items
|
||||
for(String key : UI_MENU_ITEM_KEYS) {
|
||||
@ -129,7 +129,7 @@ public class Installer extends ModuleInstall {
|
||||
}
|
||||
|
||||
// Overwrite the Metal menu item keys to use the Aqua versions
|
||||
for(Map.Entry entry : uiEntries.entrySet()) {
|
||||
for(Map.Entry<Object,Object> entry : uiEntries.entrySet()) {
|
||||
UIManager.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
}
|
||||
|
BIN
Core/src/org/sleuthkit/autopsy/corecomponents/display-options.png
Executable file
BIN
Core/src/org/sleuthkit/autopsy/corecomponents/display-options.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
@ -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
|
||||
|
||||
|
@ -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
|
@ -193,10 +193,7 @@ public class ImageUtils {
|
||||
* Check for the JPEG header. Since Java bytes are signed, we cast them
|
||||
* to an int first.
|
||||
*/
|
||||
if (((int) (fileHeaderBuffer[0] & 0xff) == 0xff) && ((int) (fileHeaderBuffer[1] & 0xff) == 0xd8)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return (((fileHeaderBuffer[0] & 0xff) == 0xff) && ((fileHeaderBuffer[1] & 0xff) == 0xd8));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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.
|
@ -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";
|
||||
|
@ -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;
|
||||
@ -205,7 +208,7 @@ public class PlatformUtil {
|
||||
* @throws IOException exception thrown if extract the file failed for IO
|
||||
* reasons
|
||||
*/
|
||||
public static boolean extractResourceToUserConfigDir(final Class resourceClass, final String resourceFile) throws IOException {
|
||||
public static <T> boolean extractResourceToUserConfigDir(final Class<T> resourceClass, final String resourceFile) throws IOException {
|
||||
final File userDir = new File(getUserConfigDirectory());
|
||||
|
||||
final File resourceFileF = new File(userDir + File.separator + resourceFile);
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.report;
|
||||
package org.sleuthkit.autopsy.coreutils;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
@ -32,7 +32,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
/**
|
||||
* Database connection class & utilities *
|
||||
*/
|
||||
public class SQLiteDBConnect {
|
||||
public class SQLiteDBConnect {
|
||||
|
||||
public String sDriver = "";
|
||||
public String sUrl = null;
|
@ -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);
|
||||
|
@ -68,7 +68,7 @@ public class XMLUtil {
|
||||
* For example usages, please see KeywordSearchListsXML, HashDbXML, or IngestModuleLoader.
|
||||
*
|
||||
*/
|
||||
public static boolean xmlIsValid(DOMSource xmlfile, Class clazz, String schemaFile) {
|
||||
public static <T> boolean xmlIsValid(DOMSource xmlfile, Class<T> clazz, String schemaFile) {
|
||||
try{
|
||||
PlatformUtil.extractResourceToUserConfigDir(clazz, schemaFile);
|
||||
File schemaLoc = new File(PlatformUtil.getUserConfigDirectory() + File.separator + schemaFile);
|
||||
@ -103,7 +103,7 @@ public class XMLUtil {
|
||||
* For example usages, please see KeywordSearchListsXML, HashDbXML, or IngestModuleLoader.
|
||||
*
|
||||
*/
|
||||
public static boolean xmlIsValid(Document doc, Class clazz, String type){
|
||||
public static <T> boolean xmlIsValid(Document doc, Class<T> clazz, String type){
|
||||
DOMSource dms = new DOMSource(doc);
|
||||
return xmlIsValid(dms, clazz, type);
|
||||
}
|
||||
@ -118,7 +118,7 @@ public class XMLUtil {
|
||||
* @param xsdPath the full path to the file to validate against
|
||||
*
|
||||
*/
|
||||
public static Document loadDoc(Class clazz, String xmlPath, String xsdPath) {
|
||||
public static <T> Document loadDoc(Class<T> clazz, String xmlPath, String xsdPath) {
|
||||
DocumentBuilderFactory builderFactory =
|
||||
DocumentBuilderFactory.newInstance();
|
||||
Document ret = null;
|
||||
@ -154,7 +154,7 @@ public class XMLUtil {
|
||||
* @param doc the document to save
|
||||
*
|
||||
*/
|
||||
public static boolean saveDoc(Class clazz, String xmlPath, String encoding, final Document doc) {
|
||||
public static <T> boolean saveDoc(Class<T> clazz, String xmlPath, String encoding, final Document doc) {
|
||||
TransformerFactory xf = TransformerFactory.newInstance();
|
||||
xf.setAttribute("indent-number", new Integer(1));
|
||||
boolean success = false;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2011 Basis Technology Corp.
|
||||
* Copyright 2011-2014 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -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";
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@ -179,7 +189,7 @@ public abstract class AbstractAbstractFileNode<T extends AbstractFile> extends A
|
||||
try {
|
||||
path = content.getUniquePath();
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Except while calling Content.getUniquePath() on " + content);
|
||||
logger.log(Level.SEVERE, "Except while calling Content.getUniquePath() on {0}", content);
|
||||
}
|
||||
|
||||
map.put(AbstractFilePropertyType.NAME.toString(), AbstractAbstractFileNode.getContentDisplayName(content));
|
||||
@ -201,15 +211,19 @@ 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());
|
||||
}
|
||||
|
||||
|
||||
static String getContentDisplayName(AbstractFile file) {
|
||||
String name = file.getName();
|
||||
if (name.equals("..")) {
|
||||
name = DirectoryNode.DOTDOTDIR;
|
||||
} else if (name.equals(".")) {
|
||||
name = DirectoryNode.DOTDIR;
|
||||
switch (name) {
|
||||
case "..":
|
||||
name = DirectoryNode.DOTDOTDIR;
|
||||
break;
|
||||
case ".":
|
||||
name = DirectoryNode.DOTDIR;
|
||||
break;
|
||||
}
|
||||
return name;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2011 Basis Technology Corp.
|
||||
* Copyright 2011-2014 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -21,7 +21,9 @@ package org.sleuthkit.autopsy.datamodel;
|
||||
import org.openide.nodes.AbstractNode;
|
||||
import org.openide.nodes.Children.Keys;
|
||||
import org.openide.nodes.Node;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.datamodel.KeywordHits.KeywordHitsRootNode;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.DerivedFile;
|
||||
import org.sleuthkit.datamodel.Directory;
|
||||
import org.sleuthkit.datamodel.File;
|
||||
@ -62,51 +64,52 @@ abstract class AbstractContentChildren<T> extends Keys<T> {
|
||||
/**
|
||||
* Creates appropriate Node for each sub-class of Content
|
||||
*/
|
||||
public static class CreateSleuthkitNodeVisitor extends SleuthkitItemVisitor.Default<AbstractContentNode> {
|
||||
public static class CreateSleuthkitNodeVisitor extends SleuthkitItemVisitor.Default<AbstractContentNode<? extends Content>> {
|
||||
|
||||
@Override
|
||||
public AbstractContentNode visit(Directory drctr) {
|
||||
public AbstractContentNode<? extends Content> visit(Directory drctr) {
|
||||
return new DirectoryNode(drctr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractContentNode visit(File file) {
|
||||
public AbstractContentNode<? extends Content> visit(File file) {
|
||||
return new FileNode(file);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractContentNode visit(Image image) {
|
||||
public AbstractContentNode<? extends Content> visit(Image image) {
|
||||
return new ImageNode(image);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractContentNode visit(Volume volume) {
|
||||
public AbstractContentNode<? extends Content> visit(Volume volume) {
|
||||
return new VolumeNode(volume);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractContentNode visit(LayoutFile lf) {
|
||||
public AbstractContentNode<? extends Content> visit(LayoutFile lf) {
|
||||
return new LayoutFileNode(lf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractContentNode visit(DerivedFile df) {
|
||||
public AbstractContentNode<? extends Content> visit(DerivedFile df) {
|
||||
return new LocalFileNode(df);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractContentNode visit(LocalFile lf) {
|
||||
public AbstractContentNode<? extends Content> visit(LocalFile lf) {
|
||||
return new LocalFileNode(lf);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractContentNode visit(VirtualDirectory ld) {
|
||||
public AbstractContentNode<? extends Content> visit(VirtualDirectory ld) {
|
||||
return new VirtualDirectoryNode(ld);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AbstractContentNode defaultVisit(SleuthkitVisitableItem di) {
|
||||
throw new UnsupportedOperationException("No Node defined for the given SleuthkitItem");
|
||||
protected AbstractContentNode<? extends Content> defaultVisit(SleuthkitVisitableItem di) {
|
||||
throw new UnsupportedOperationException(NbBundle.getMessage(this.getClass(),
|
||||
"AbstractContentChildren.CreateTSKNodeVisitor.exception.noNodeMsg"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -149,12 +152,12 @@ abstract class AbstractContentChildren<T> extends Keys<T> {
|
||||
public AbstractNode visit(HashsetHits hh) {
|
||||
return hh.new HashsetHitsRootNode();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AbstractNode visit(InterestingHits ih) {
|
||||
return ih.new InterestingHitsRootNode();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AbstractNode visit(EmailExtracted ee) {
|
||||
return ee.new EmailExtractedRootNode();
|
||||
@ -186,7 +189,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"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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,14 +74,14 @@ 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();
|
||||
ss.put(new NodeProperty(propString, propString, NO_DESCR, map.get(propString)));
|
||||
ss.put(new NodeProperty<>(propString, propString, NO_DESCR, map.get(propString)));
|
||||
}
|
||||
if (directoryBrowseMode) {
|
||||
ss.put(new NodeProperty(HIDE_PARENT, HIDE_PARENT, HIDE_PARENT, HIDE_PARENT));
|
||||
ss.put(new NodeProperty<>(HIDE_PARENT, HIDE_PARENT, HIDE_PARENT, HIDE_PARENT));
|
||||
}
|
||||
|
||||
return s;
|
||||
|
@ -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) {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user