mirror of
https://github.com/elisspace/autopsy.git
synced 2026-10-06 01:06:20 +00:00
Merge pull request #3221 from wschaeferB/3201-ManageTagsOptionsPanel
3201 manage tags options panel
This commit is contained in:
@@ -1,16 +1,23 @@
|
||||
OptionsCategory_Name_TagNamesOptions=Tags
|
||||
OptionsCategory_TagNames=TagNames
|
||||
Blackboard.unableToIndexArtifact.error.msg=Unable to index blackboard artifact {0}
|
||||
NewTagNameDialog.title.text=New Tag Name
|
||||
NewTagNameDialog.JOptionPane.tagNameIllegalCharacters.message=Tag name may not contain any of the following symbols\: \\ \: * ? " < > | , ;
|
||||
NewTagNameDialog.JOptionPane.tagNameIllegalCharacters.title=Invalid character in tag name
|
||||
NewTagNameDialog.JOptionPane.tagNameEmpty.message=The tag name cannot be empty
|
||||
NewTagNameDialog.JOptionPane.tagNameEmpty.title=Empty tag name
|
||||
TagNameDialog.title.text=New Tag
|
||||
TagNameDialog.JOptionPane.tagNameIllegalCharacters.message=Tag name may not contain any of the following symbols\: \\ \: * ? " < > | , ;
|
||||
TagNameDialog.JOptionPane.tagNameIllegalCharacters.title=Invalid character in tag name
|
||||
TagNameDialog.JOptionPane.tagNameEmpty.message=The tag name cannot be empty
|
||||
TagNameDialog.JOptionPane.tagNameEmpty.title=Empty tag name
|
||||
TagOptionsPanel.tagTypesListLabel.text=Tag Names:
|
||||
TagOptionsPanel.panelDescriptionLabel.text=Autopsy keeps a list of the tag names you have created in the past. Add more or delete them here.
|
||||
NewTagNameDialog.okButton.text=OK
|
||||
NewTagNameDialog.cancelButton.text=Cancel
|
||||
NewTagNameDialog.tagNameTextField.text=
|
||||
NewTagNameDialog.newTagNameLabel.text=New Tag Name:
|
||||
TagOptionsPanel.deleteTagNameButton.text=Delete Tag Name
|
||||
TagOptionsPanel.newTagNameButton.text=New Tag Name
|
||||
TagOptionsPanel.deleteTagNameButton.text=Delete Tag
|
||||
TagOptionsPanel.newTagNameButton.text=New Tag
|
||||
TagOptionsPanel.editTagNameButton.text=Edit Tag
|
||||
TagNameDialog.descriptionLabel.text=Description:
|
||||
TagNameDialog.okButton.text=OK
|
||||
TagNameDialog.cancelButton.text=Cancel
|
||||
TagNameDialog.tagNameTextField.text=
|
||||
TagNameDialog.newTagNameLabel.text=Name:
|
||||
TagNameDialog.notableCheckbox.text=Tag indicates item is notable.
|
||||
TagOptionsPanel.isNotableLabel.text=Tag indicates item is notable:
|
||||
TagOptionsPanel.notableYesOrNoLabel.text=
|
||||
TagOptionsPanel.descriptionLabel.text=Tag Description:
|
||||
TagOptionsPanel.jTextArea1.text=Create and manage tags, which can be applied to files and results in the case. Notable tags will cause items tagged with them to be flagged as notable when using a central repository.
|
||||
TagOptionsPanel.ingestRunningWarningLabel.text=Cannot make changes to existing tags when ingest is running!
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
TagsManager.predefTagNames.bookmark.text=\u30d6\u30c3\u30af\u30de\u30fc\u30af
|
||||
Blackboard.unableToIndexArtifact.error.msg=blackboard\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8{0}\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
|
||||
Blackboard.unableToIndexArtifact.error.msg=blackboard\u30a2\u30fc\u30c6\u30a3\u30d5\u30a1\u30af\u30c8{0}\u3092\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002
|
||||
TagOptionsPanel.ingestRunningWarningLabel.text=\u30a4\u30f3\u30b8\u30a7\u30b9\u30c8\u3092\u5b9f\u884c\u4e2d\u306b\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u5b9a\u7fa9\u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093\uff01
|
||||
|
||||
+32
-32
@@ -40,24 +40,24 @@ import org.sleuthkit.datamodel.TskData;
|
||||
* A tag name definition consisting of a display name, description and color.
|
||||
*/
|
||||
@Immutable
|
||||
final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
final class TagNameDefinition implements Comparable<TagNameDefinition> {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(TagNameDefiniton.class.getName());
|
||||
@NbBundle.Messages({"TagNameDefiniton.predefTagNames.bookmark.text=Bookmark",
|
||||
"TagNameDefiniton.predefTagNames.followUp.text=Follow Up",
|
||||
"TagNameDefiniton.predefTagNames.notableItem.text=Notable Item"})
|
||||
private static final Logger LOGGER = Logger.getLogger(TagNameDefinition.class.getName());
|
||||
@NbBundle.Messages({"TagNameDefinition.predefTagNames.bookmark.text=Bookmark",
|
||||
"TagNameDefinition.predefTagNames.followUp.text=Follow Up",
|
||||
"TagNameDefinition.predefTagNames.notableItem.text=Notable Item"})
|
||||
private static final String TAGS_SETTINGS_NAME = "Tags"; //NON-NLS
|
||||
private static final String TAG_NAMES_SETTING_KEY = "TagNames"; //NON-NLS
|
||||
|
||||
private static final List<String> STANDARD_NOTABLE_TAG_DISPLAY_NAMES = Arrays.asList(Bundle.TagNameDefiniton_predefTagNames_notableItem_text(), DhsImageCategory.ONE.getDisplayName(), DhsImageCategory.TWO.getDisplayName(), DhsImageCategory.THREE.getDisplayName()); // NON-NLS
|
||||
private static final List<String> STANDARD_TAG_DISPLAY_NAMES = Arrays.asList(Bundle.TagNameDefiniton_predefTagNames_bookmark_text(), Bundle.TagNameDefiniton_predefTagNames_followUp_text(),
|
||||
Bundle.TagNameDefiniton_predefTagNames_notableItem_text(), DhsImageCategory.ONE.getDisplayName(),
|
||||
private static final List<String> STANDARD_NOTABLE_TAG_DISPLAY_NAMES = Arrays.asList(Bundle.TagNameDefinition_predefTagNames_notableItem_text(), DhsImageCategory.ONE.getDisplayName(), DhsImageCategory.TWO.getDisplayName(), DhsImageCategory.THREE.getDisplayName()); // NON-NLS
|
||||
private static final List<String> STANDARD_TAG_DISPLAY_NAMES = Arrays.asList(Bundle.TagNameDefinition_predefTagNames_bookmark_text(), Bundle.TagNameDefinition_predefTagNames_followUp_text(),
|
||||
Bundle.TagNameDefinition_predefTagNames_notableItem_text(), DhsImageCategory.ONE.getDisplayName(),
|
||||
DhsImageCategory.TWO.getDisplayName(), DhsImageCategory.THREE.getDisplayName(),
|
||||
DhsImageCategory.FOUR.getDisplayName(), DhsImageCategory.FIVE.getDisplayName());
|
||||
private final String displayName;
|
||||
private final String description;
|
||||
private final TagName.HTML_COLOR color;
|
||||
private final TskData.FileKnown knownStatusDenoted;
|
||||
private final TskData.FileKnown knownStatus;
|
||||
|
||||
/**
|
||||
* Constructs a tag name definition consisting of a display name,
|
||||
@@ -66,13 +66,13 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
* @param displayName The display name for the tag name.
|
||||
* @param description The description for the tag name.
|
||||
* @param color The color for the tag name.
|
||||
* @param knownStatus The status denoted by the tag.
|
||||
* @param knownStatus The status denoted by the tag name.
|
||||
*/
|
||||
TagNameDefiniton(String displayName, String description, TagName.HTML_COLOR color, TskData.FileKnown status) {
|
||||
TagNameDefinition(String displayName, String description, TagName.HTML_COLOR color, TskData.FileKnown status) {
|
||||
this.displayName = displayName;
|
||||
this.description = description;
|
||||
this.color = color;
|
||||
this.knownStatusDenoted = status;
|
||||
this.knownStatus = status;
|
||||
}
|
||||
|
||||
static List<String> getStandardTagNames() {
|
||||
@@ -107,13 +107,13 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the status that this tag implies is the Notable status
|
||||
* Whether or not the status that this tag implies Notable status
|
||||
*
|
||||
* @return true if the Notable status is implied by this tag, false
|
||||
* otherwise.
|
||||
*/
|
||||
boolean isNotable() {
|
||||
return knownStatusDenoted == TskData.FileKnown.BAD;
|
||||
return knownStatus == TskData.FileKnown.BAD;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,7 +128,7 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
* the specified tag name definition.
|
||||
*/
|
||||
@Override
|
||||
public int compareTo(TagNameDefiniton other) {
|
||||
public int compareTo(TagNameDefinition other) {
|
||||
return this.getDisplayName().toLowerCase().compareTo(other.getDisplayName().toLowerCase());
|
||||
}
|
||||
|
||||
@@ -154,10 +154,10 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
*/
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (!(obj instanceof TagNameDefiniton)) {
|
||||
if (!(obj instanceof TagNameDefinition)) {
|
||||
return false;
|
||||
}
|
||||
TagNameDefiniton thatTagName = (TagNameDefiniton) obj;
|
||||
TagNameDefinition thatTagName = (TagNameDefinition) obj;
|
||||
return this.getDisplayName().equals(thatTagName.getDisplayName());
|
||||
}
|
||||
|
||||
@@ -176,13 +176,13 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
* that is used by the tags settings file.
|
||||
*/
|
||||
private String toSettingsFormat() {
|
||||
return displayName + "," + description + "," + color.name() + "," + knownStatusDenoted.toString();
|
||||
return displayName + "," + description + "," + color.name() + "," + knownStatus.toString();
|
||||
}
|
||||
|
||||
private TagName saveToCase(SleuthkitCase caseDb) {
|
||||
TagName tagName = null;
|
||||
try {
|
||||
tagName = caseDb.addOrUpdateTagName(displayName, description, color, knownStatusDenoted);
|
||||
tagName = caseDb.addOrUpdateTagName(displayName, description, color, knownStatus);
|
||||
} catch (TskCoreException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Error updating non-file object ", ex);
|
||||
}
|
||||
@@ -195,8 +195,8 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
*
|
||||
* @return A set of tag name definition objects.
|
||||
*/
|
||||
static synchronized Set<TagNameDefiniton> getTagNameDefinitions() {
|
||||
Set<TagNameDefiniton> tagNames = new HashSet<>();
|
||||
static synchronized Set<TagNameDefinition> getTagNameDefinitions() {
|
||||
Set<TagNameDefinition> tagNames = new HashSet<>();
|
||||
//modifiable copy of default tags list for us to keep track of which default tags have already been created
|
||||
Set<String> standardTags = new HashSet<>(STANDARD_TAG_DISPLAY_NAMES);
|
||||
String setting = ModuleSettings.getConfigSetting(TAGS_SETTINGS_NAME, TAG_NAMES_SETTING_KEY);
|
||||
@@ -218,9 +218,9 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
//create standard tags which should always exist which were not already created for whatever reason, such as upgrade
|
||||
for (String standardTagName : standardTags) {
|
||||
if (STANDARD_NOTABLE_TAG_DISPLAY_NAMES.contains(standardTagName)) {
|
||||
tagNames.add(new TagNameDefiniton(standardTagName, "", TagName.HTML_COLOR.NONE, TskData.FileKnown.BAD));
|
||||
tagNames.add(new TagNameDefinition(standardTagName, "", TagName.HTML_COLOR.NONE, TskData.FileKnown.BAD));
|
||||
} else {
|
||||
tagNames.add(new TagNameDefiniton(standardTagName, "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN));
|
||||
tagNames.add(new TagNameDefinition(standardTagName, "", TagName.HTML_COLOR.NONE, TskData.FileKnown.UNKNOWN));
|
||||
}
|
||||
}
|
||||
return tagNames;
|
||||
@@ -238,8 +238,8 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
*
|
||||
* @return tagNames a list of TagNameDefinitions
|
||||
*/
|
||||
private static Set<TagNameDefiniton> upgradeTagPropertiesFile(List<String> tagProperties, Set<String> standardTagsToBeCreated) {
|
||||
Set<TagNameDefiniton> tagNames = new HashSet<>();
|
||||
private static Set<TagNameDefinition> upgradeTagPropertiesFile(List<String> tagProperties, Set<String> standardTagsToBeCreated) {
|
||||
Set<TagNameDefinition> tagNames = new HashSet<>();
|
||||
List<String> legacyNotableTags = new ArrayList<>();
|
||||
String badTagsStr = ModuleSettings.getConfigSetting("CentralRepository", "db.badTags"); // NON-NLS
|
||||
if (badTagsStr == null || badTagsStr.isEmpty()) { //if there were no bad tags in the central repo properties file use the default list
|
||||
@@ -251,10 +251,10 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
String[] tagNameAttributes = tagNameTuple.split(","); //get the attributes
|
||||
standardTagsToBeCreated.remove(tagNameAttributes[0]); //remove the tag from the list of standard tags which have not been created
|
||||
if (legacyNotableTags.contains(tagNameAttributes[0])) { //if tag should be notable mark create it as such
|
||||
tagNames.add(new TagNameDefiniton(tagNameAttributes[0], tagNameAttributes[1],
|
||||
tagNames.add(new TagNameDefinition(tagNameAttributes[0], tagNameAttributes[1],
|
||||
TagName.HTML_COLOR.valueOf(tagNameAttributes[2]), TskData.FileKnown.BAD));
|
||||
} else { //otherwise create it as unknown
|
||||
tagNames.add(new TagNameDefiniton(tagNameAttributes[0], tagNameAttributes[1],
|
||||
tagNames.add(new TagNameDefinition(tagNameAttributes[0], tagNameAttributes[1],
|
||||
TagName.HTML_COLOR.valueOf(tagNameAttributes[2]), TskData.FileKnown.UNKNOWN)); //add the default value for that tag
|
||||
}
|
||||
}
|
||||
@@ -272,12 +272,12 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
*
|
||||
* @return tagNames a list of TagNameDefinitions
|
||||
*/
|
||||
private static Set<TagNameDefiniton> readCurrentTagPropertiesFile(List<String> tagProperties, Set<String> standardTagsToBeCreated) {
|
||||
Set<TagNameDefiniton> tagNames = new HashSet<>();
|
||||
private static Set<TagNameDefinition> readCurrentTagPropertiesFile(List<String> tagProperties, Set<String> standardTagsToBeCreated) {
|
||||
Set<TagNameDefinition> tagNames = new HashSet<>();
|
||||
for (String tagNameTuple : tagProperties) {
|
||||
String[] tagNameAttributes = tagNameTuple.split(","); //get the attributes
|
||||
standardTagsToBeCreated.remove(tagNameAttributes[0]); //remove the tag from the list of standard tags which have not been created
|
||||
tagNames.add(new TagNameDefiniton(tagNameAttributes[0], tagNameAttributes[1],
|
||||
tagNames.add(new TagNameDefinition(tagNameAttributes[0], tagNameAttributes[1],
|
||||
TagName.HTML_COLOR.valueOf(tagNameAttributes[2]), TskData.FileKnown.valueOf(tagNameAttributes[3])));
|
||||
}
|
||||
return tagNames;
|
||||
@@ -288,9 +288,9 @@ final class TagNameDefiniton implements Comparable<TagNameDefiniton> {
|
||||
*
|
||||
* @param tagNames A set of tag name definition objects.
|
||||
*/
|
||||
static synchronized void setTagNameDefinitions(Set<TagNameDefiniton> tagNames) {
|
||||
static synchronized void setTagNameDefinitions(Set<TagNameDefinition> tagNames) {
|
||||
StringBuilder setting = new StringBuilder();
|
||||
for (TagNameDefiniton tagName : tagNames) {
|
||||
for (TagNameDefinition tagName : tagNames) {
|
||||
if (setting.length() != 0) {
|
||||
setting.append(";");
|
||||
}
|
||||
+54
-12
@@ -23,10 +23,10 @@
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="tagNameTextField" pref="220" max="32767" attributes="0"/>
|
||||
<Component id="tagNameTextField" pref="284" max="32767" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
<Component id="okButton" min="-2" max="-2" attributes="0"/>
|
||||
@@ -34,6 +34,14 @@
|
||||
<Component id="cancelButton" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="newTagNameLabel" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="descriptionScrollPane" alignment="1" max="32767" attributes="0"/>
|
||||
<Group type="102" attributes="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="notableCheckbox" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="descriptionLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
@@ -41,20 +49,22 @@
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="newTagNameLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="tagNameTextField" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="50" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<EmptySpace max="32767" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="descriptionLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="descriptionScrollPane" min="-2" pref="57" max="-2" attributes="0"/>
|
||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||
<Component id="notableCheckbox" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace pref="42" max="32767" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="cancelButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="okButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@@ -63,21 +73,21 @@
|
||||
<Component class="javax.swing.JLabel" name="newTagNameLabel">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="NewTagNameDialog.newTagNameLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagNameDialog.newTagNameLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JTextField" name="tagNameTextField">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="NewTagNameDialog.tagNameTextField.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagNameDialog.tagNameTextField.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="cancelButton">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="NewTagNameDialog.cancelButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagNameDialog.cancelButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
@@ -87,12 +97,44 @@
|
||||
<Component class="javax.swing.JButton" name="okButton">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="NewTagNameDialog.okButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagNameDialog.okButton.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="okButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Container class="javax.swing.JScrollPane" name="descriptionScrollPane">
|
||||
<AuxValues>
|
||||
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JTextArea" name="descriptionTextArea">
|
||||
<Properties>
|
||||
<Property name="columns" type="int" value="20"/>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
<Font name="Tahoma" size="11" style="0"/>
|
||||
</Property>
|
||||
<Property name="rows" type="int" value="5"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
<Component class="javax.swing.JLabel" name="descriptionLabel">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagNameDialog.descriptionLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JCheckBox" name="notableCheckbox">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagNameDialog.notableCheckbox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Form>
|
||||
+84
-30
@@ -28,11 +28,14 @@ import javax.swing.JOptionPane;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import javax.swing.event.DocumentListener;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.NbBundle.Messages;
|
||||
|
||||
final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
final class TagNameDialog extends javax.swing.JDialog {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String userTagDisplayName;
|
||||
private String userTagDescription;
|
||||
private boolean userTagIsNotable;
|
||||
private BUTTON_PRESSED result;
|
||||
|
||||
enum BUTTON_PRESSED {
|
||||
@@ -42,13 +45,25 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
/**
|
||||
* Creates a new NewUserTagNameDialog dialog.
|
||||
*/
|
||||
NewTagNameDialog() {
|
||||
super(new JFrame(NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.title.text")),
|
||||
NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.title.text"), true);
|
||||
TagNameDialog() {
|
||||
super(new JFrame(NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.title.text")),
|
||||
NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.title.text"), true);
|
||||
initComponents();
|
||||
this.display();
|
||||
}
|
||||
|
||||
@Messages({"TagNameDialog.editTitle.text=Edit Tag"})
|
||||
TagNameDialog(TagNameDefinition tagNameToEdit) {
|
||||
super(new JFrame(NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.editTitle.text")),
|
||||
NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.editTitle.text"), true);
|
||||
initComponents();
|
||||
tagNameTextField.setText(tagNameToEdit.getDisplayName());
|
||||
descriptionTextArea.setText(tagNameToEdit.getDescription());
|
||||
notableCheckbox.setSelected(tagNameToEdit.isNotable());
|
||||
tagNameTextField.setEnabled(false);
|
||||
this.display();
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets display settings for the dialog and adds appropriate listeners.
|
||||
*/
|
||||
@@ -56,7 +71,7 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
setLayout(new BorderLayout());
|
||||
|
||||
/*
|
||||
* Center the dialog
|
||||
* Center the dialog
|
||||
*/
|
||||
Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
|
||||
int width = this.getSize().width;
|
||||
@@ -81,14 +96,17 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
public void changedUpdate(DocumentEvent e) {
|
||||
fire();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeUpdate(DocumentEvent e) {
|
||||
fire();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertUpdate(DocumentEvent e) {
|
||||
fire();
|
||||
}
|
||||
|
||||
private void fire() {
|
||||
enableOkButton();
|
||||
}
|
||||
@@ -105,6 +123,7 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
|
||||
/**
|
||||
* Called when a button is pressed or when the dialog is closed.
|
||||
*
|
||||
* @param okPressed whether the OK button was pressed.
|
||||
*/
|
||||
private void doButtonAction(boolean okPressed) {
|
||||
@@ -112,40 +131,49 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
String newTagDisplayName = tagNameTextField.getText().trim();
|
||||
if (newTagDisplayName.isEmpty()) {
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.JOptionPane.tagNameEmpty.message"),
|
||||
NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.JOptionPane.tagNameEmpty.title"),
|
||||
NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.JOptionPane.tagNameEmpty.message"),
|
||||
NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.JOptionPane.tagNameEmpty.title"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
//if a tag name contains illegal characters and is not the name of one of the standard tags
|
||||
if (TagsManager.containsIllegalCharacters(newTagDisplayName) && !TagNameDefiniton.getStandardTagNames().contains(newTagDisplayName)) {
|
||||
if (TagsManager.containsIllegalCharacters(newTagDisplayName) && !TagNameDefinition.getStandardTagNames().contains(newTagDisplayName)) {
|
||||
JOptionPane.showMessageDialog(null,
|
||||
NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.JOptionPane.tagNameIllegalCharacters.message"),
|
||||
NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.JOptionPane.tagNameIllegalCharacters.title"),
|
||||
NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.JOptionPane.tagNameIllegalCharacters.message"),
|
||||
NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.JOptionPane.tagNameIllegalCharacters.title"),
|
||||
JOptionPane.ERROR_MESSAGE);
|
||||
return;
|
||||
}
|
||||
userTagDescription = descriptionTextArea.getText();
|
||||
userTagDisplayName = newTagDisplayName;
|
||||
userTagIsNotable = notableCheckbox.isSelected();
|
||||
result = BUTTON_PRESSED.OK;
|
||||
} else {
|
||||
result = BUTTON_PRESSED.CANCEL;
|
||||
}
|
||||
setVisible(false);
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the tag name entered by the user.
|
||||
*
|
||||
* @return a new user tag name
|
||||
*
|
||||
* @return a new user tag name
|
||||
*/
|
||||
String getTagName() {
|
||||
return userTagDisplayName;
|
||||
}
|
||||
|
||||
String getTagDesciption() {
|
||||
return userTagDescription;
|
||||
}
|
||||
|
||||
boolean isTagNotable() {
|
||||
return userTagIsNotable;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns information about which button was pressed.
|
||||
*
|
||||
*
|
||||
* @return BUTTON_PRESSED (OK, CANCEL)
|
||||
*/
|
||||
BUTTON_PRESSED getResult() {
|
||||
@@ -153,9 +181,9 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable the OK button if the tag name text field is not empty.
|
||||
* Sets the enter button as default, so user can press enter to activate
|
||||
* an okButton press and add the tag name.
|
||||
* Enable the OK button if the tag name text field is not empty. Sets the
|
||||
* enter button as default, so user can press enter to activate an okButton
|
||||
* press and add the tag name.
|
||||
*/
|
||||
private void enableOkButton() {
|
||||
okButton.setEnabled(!tagNameTextField.getText().isEmpty());
|
||||
@@ -175,27 +203,40 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
tagNameTextField = new javax.swing.JTextField();
|
||||
cancelButton = new javax.swing.JButton();
|
||||
okButton = new javax.swing.JButton();
|
||||
descriptionScrollPane = new javax.swing.JScrollPane();
|
||||
descriptionTextArea = new javax.swing.JTextArea();
|
||||
descriptionLabel = new javax.swing.JLabel();
|
||||
notableCheckbox = new javax.swing.JCheckBox();
|
||||
|
||||
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(newTagNameLabel, org.openide.util.NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.newTagNameLabel.text")); // NOI18N
|
||||
org.openide.awt.Mnemonics.setLocalizedText(newTagNameLabel, org.openide.util.NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.newTagNameLabel.text")); // NOI18N
|
||||
|
||||
tagNameTextField.setText(org.openide.util.NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.tagNameTextField.text")); // NOI18N
|
||||
tagNameTextField.setText(org.openide.util.NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.tagNameTextField.text")); // NOI18N
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.cancelButton.text")); // NOI18N
|
||||
org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.cancelButton.text")); // NOI18N
|
||||
cancelButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
cancelButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(NewTagNameDialog.class, "NewTagNameDialog.okButton.text")); // NOI18N
|
||||
org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.okButton.text")); // NOI18N
|
||||
okButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
okButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
descriptionTextArea.setColumns(20);
|
||||
descriptionTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
|
||||
descriptionTextArea.setRows(5);
|
||||
descriptionScrollPane.setViewportView(descriptionTextArea);
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(descriptionLabel, org.openide.util.NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.descriptionLabel.text")); // NOI18N
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(notableCheckbox, org.openide.util.NbBundle.getMessage(TagNameDialog.class, "TagNameDialog.notableCheckbox.text")); // NOI18N
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||
getContentPane().setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
@@ -203,13 +244,19 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(tagNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 220, Short.MAX_VALUE)
|
||||
.addComponent(tagNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 284, Short.MAX_VALUE)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(0, 0, Short.MAX_VALUE)
|
||||
.addComponent(okButton)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(cancelButton))
|
||||
.addComponent(newTagNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addComponent(newTagNameLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(descriptionScrollPane, javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(notableCheckbox)
|
||||
.addComponent(descriptionLabel))
|
||||
.addGap(0, 0, Short.MAX_VALUE)))
|
||||
.addContainerGap())
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
@@ -219,13 +266,16 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
.addComponent(newTagNameLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(tagNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addContainerGap(50, Short.MAX_VALUE))
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(descriptionLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(descriptionScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addComponent(notableCheckbox)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 42, Short.MAX_VALUE)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(cancelButton)
|
||||
.addComponent(okButton))
|
||||
.addContainerGap())
|
||||
.addComponent(okButton)))
|
||||
);
|
||||
|
||||
pack();
|
||||
@@ -242,7 +292,11 @@ final class NewTagNameDialog extends javax.swing.JDialog {
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton cancelButton;
|
||||
private javax.swing.JLabel descriptionLabel;
|
||||
private javax.swing.JScrollPane descriptionScrollPane;
|
||||
private javax.swing.JTextArea descriptionTextArea;
|
||||
private javax.swing.JLabel newTagNameLabel;
|
||||
private javax.swing.JCheckBox notableCheckbox;
|
||||
private javax.swing.JButton okButton;
|
||||
private javax.swing.JTextField tagNameTextField;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
@@ -16,7 +16,7 @@
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="jPanel1" alignment="0" pref="778" max="32767" attributes="0"/>
|
||||
<Component id="jPanel1" alignment="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
@@ -29,7 +29,7 @@
|
||||
<Container class="javax.swing.JPanel" name="jPanel1">
|
||||
<Properties>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[750, 500]"/>
|
||||
<Dimension value="[750, 490]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
|
||||
@@ -37,43 +37,39 @@
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="panelDescriptionLabel" max="32767" attributes="0"/>
|
||||
<Component id="jScrollPane2" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||
<Component id="jScrollPane2" max="32767" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="panelDescriptionLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||
<Component id="jScrollPane2" max="32767" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
</Layout>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JLabel" name="panelDescriptionLabel">
|
||||
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.panelDescriptionLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[750, 490]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||
<SubComponents>
|
||||
<Container class="javax.swing.JSplitPane" name="jSplitPane1">
|
||||
<Properties>
|
||||
<Property name="dividerLocation" type="int" value="400"/>
|
||||
<Property name="dividerLocation" type="int" value="365"/>
|
||||
<Property name="dividerSize" type="int" value="1"/>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[748, 488]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
|
||||
@@ -89,34 +85,46 @@
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="jScrollPane1" alignment="1" max="32767" attributes="0"/>
|
||||
<Component id="tagTypesListLabel" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="tagTypesListLabel" max="32767" attributes="0"/>
|
||||
<Group type="102" attributes="0">
|
||||
<Component id="newTagNameButton" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="deleteTagNameButton" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="113" max="32767" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="103" groupAlignment="1" max="-2" attributes="0">
|
||||
<Component id="jScrollPane1" alignment="0" max="32767" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="newTagNameButton" linkSize="1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="editTagNameButton" linkSize="1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="deleteTagNameButton" linkSize="1" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<Component id="jScrollPane3" alignment="0" min="-2" pref="345" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="-2" pref="10" max="-2" attributes="0"/>
|
||||
<Component id="jScrollPane3" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Component id="tagTypesListLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="jScrollPane1" pref="381" max="32767" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Component id="jScrollPane1" pref="355" max="32767" attributes="0"/>
|
||||
<EmptySpace type="unrelated" min="-2" max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="newTagNameButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="deleteTagNameButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="newTagNameButton" linkSize="2" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="editTagNameButton" linkSize="2" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="deleteTagNameButton" linkSize="2" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@@ -144,7 +152,7 @@
|
||||
<Property name="selectionMode" type="int" value="0"/>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<org.sleuthkit.autopsy.casemodule.services.TagNameDefiniton>"/>
|
||||
<AuxValue name="JavaCodeGenerator_TypeParameters" type="java.lang.String" value="<org.sleuthkit.autopsy.casemodule.services.TagNameDefinition>"/>
|
||||
</AuxValues>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
@@ -157,6 +165,15 @@
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.newTagNameButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="newTagNameButtonActionPerformed"/>
|
||||
@@ -170,11 +187,70 @@
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.deleteTagNameButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="deleteTagNameButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="editTagNameButton">
|
||||
<Properties>
|
||||
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||
<Image iconType="3" name="/org/sleuthkit/autopsy/images/edit-tag.png"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.editTagNameButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[111, 25]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="editTagNameButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Container class="javax.swing.JScrollPane" name="jScrollPane3">
|
||||
<AuxValues>
|
||||
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JTextArea" name="jTextArea1">
|
||||
<Properties>
|
||||
<Property name="editable" type="boolean" value="false"/>
|
||||
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||
<Color blue="f0" green="f0" red="f0" type="rgb"/>
|
||||
</Property>
|
||||
<Property name="columns" type="int" value="20"/>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
<Font name="Tahoma" size="11" style="0"/>
|
||||
</Property>
|
||||
<Property name="lineWrap" type="boolean" value="true"/>
|
||||
<Property name="rows" type="int" value="3"/>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.jTextArea1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="wrapStyleWord" type="boolean" value="true"/>
|
||||
<Property name="focusable" type="boolean" value="false"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
<Container class="javax.swing.JPanel" name="tagTypesAdditionalPanel">
|
||||
@@ -187,15 +263,109 @@
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<EmptySpace min="0" pref="354" max="32767" attributes="0"/>
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="descriptionScrollPane" pref="361" max="32767" attributes="0"/>
|
||||
<Group type="102" attributes="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Component id="descriptionLabel" min="-2" pref="92" max="-2" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<Component id="isNotableLabel" min="-2" pref="150" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="notableYesOrNoLabel" min="-2" pref="25" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Component id="ingestRunningWarningLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<EmptySpace min="0" pref="454" max="32767" attributes="0"/>
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="descriptionLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="descriptionScrollPane" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="isNotableLabel" alignment="3" min="-2" pref="22" max="-2" attributes="0"/>
|
||||
<Component id="notableYesOrNoLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace pref="304" max="32767" attributes="0"/>
|
||||
<Component id="ingestRunningWarningLabel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" pref="31" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
</Layout>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JLabel" name="descriptionLabel">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.descriptionLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Container class="javax.swing.JScrollPane" name="descriptionScrollPane">
|
||||
<AuxValues>
|
||||
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JTextArea" name="descriptionTextArea">
|
||||
<Properties>
|
||||
<Property name="editable" type="boolean" value="false"/>
|
||||
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||
<Color blue="f0" green="f0" red="f0" type="rgb"/>
|
||||
</Property>
|
||||
<Property name="columns" type="int" value="20"/>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
<Font name="Tahoma" size="11" style="0"/>
|
||||
</Property>
|
||||
<Property name="lineWrap" type="boolean" value="true"/>
|
||||
<Property name="rows" type="int" value="5"/>
|
||||
<Property name="wrapStyleWord" type="boolean" value="true"/>
|
||||
<Property name="focusable" type="boolean" value="false"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
<Component class="javax.swing.JLabel" name="isNotableLabel">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.isNotableLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="notableYesOrNoLabel">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.notableYesOrNoLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
<Component class="javax.swing.JLabel" name="ingestRunningWarningLabel">
|
||||
<Properties>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
|
||||
<FontInfo relative="true">
|
||||
<Font bold="false" component="ingestRunningWarningLabel" property="font" relativeSize="false" size="11"/>
|
||||
</FontInfo>
|
||||
</Property>
|
||||
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
|
||||
<Image iconType="3" name="/org/sleuthkit/autopsy/modules/filetypeid/warning16.png"/>
|
||||
</Property>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/services/Bundle.properties" key="TagOptionsPanel.ingestRunningWarningLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.casemodule.services;
|
||||
|
||||
import java.awt.EventQueue;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import javax.swing.DefaultListModel;
|
||||
@@ -26,6 +29,7 @@ import javax.swing.event.ListSelectionEvent;
|
||||
import org.netbeans.spi.options.OptionsPanelController;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.corecomponents.OptionsPanel;
|
||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||
import org.sleuthkit.datamodel.TagName;
|
||||
import org.sleuthkit.datamodel.TskData;
|
||||
|
||||
@@ -37,15 +41,16 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final String DEFAULT_DESCRIPTION = "";
|
||||
private static final TagName.HTML_COLOR DEFAULT_COLOR = TagName.HTML_COLOR.NONE;
|
||||
private final DefaultListModel<TagNameDefiniton> tagTypesListModel;
|
||||
private Set<TagNameDefiniton> tagTypes;
|
||||
private final DefaultListModel<TagNameDefinition> tagTypesListModel;
|
||||
private Set<TagNameDefinition> tagTypes;
|
||||
private IngestJobEventPropertyChangeListener ingestJobEventsListener;
|
||||
|
||||
/**
|
||||
* Creates new form TagsManagerOptionsPanel
|
||||
*/
|
||||
TagOptionsPanel() {
|
||||
tagTypesListModel = new DefaultListModel<>();
|
||||
tagTypes = new TreeSet<>(TagNameDefiniton.getTagNameDefinitions());
|
||||
tagTypes = new TreeSet<>(TagNameDefinition.getTagNameDefinitions());
|
||||
initComponents();
|
||||
customizeComponents();
|
||||
}
|
||||
@@ -53,8 +58,20 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
private void customizeComponents() {
|
||||
tagNamesList.setModel(tagTypesListModel);
|
||||
tagNamesList.addListSelectionListener((ListSelectionEvent event) -> {
|
||||
enableButtons();
|
||||
updatePanel();
|
||||
});
|
||||
addIngestJobEventsListener();
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a property change listener that listens to ingest job events to
|
||||
* disable the buttons on the panel if ingest is running. This is done to
|
||||
* prevent changes to user-defined types while the type definitions are in
|
||||
* use.
|
||||
*/
|
||||
private void addIngestJobEventsListener() {
|
||||
ingestJobEventsListener = new IngestJobEventPropertyChangeListener();
|
||||
IngestManager.getInstance().addIngestJobEventListener(ingestJobEventsListener);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -67,7 +84,6 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
private void initComponents() {
|
||||
|
||||
jPanel1 = new javax.swing.JPanel();
|
||||
panelDescriptionLabel = new javax.swing.JLabel();
|
||||
jScrollPane2 = new javax.swing.JScrollPane();
|
||||
jSplitPane1 = new javax.swing.JSplitPane();
|
||||
modifyTagTypesListPanel = new javax.swing.JPanel();
|
||||
@@ -76,14 +92,24 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
tagNamesList = new javax.swing.JList<>();
|
||||
newTagNameButton = new javax.swing.JButton();
|
||||
deleteTagNameButton = new javax.swing.JButton();
|
||||
editTagNameButton = new javax.swing.JButton();
|
||||
jScrollPane3 = new javax.swing.JScrollPane();
|
||||
jTextArea1 = new javax.swing.JTextArea();
|
||||
tagTypesAdditionalPanel = new javax.swing.JPanel();
|
||||
descriptionLabel = new javax.swing.JLabel();
|
||||
descriptionScrollPane = new javax.swing.JScrollPane();
|
||||
descriptionTextArea = new javax.swing.JTextArea();
|
||||
isNotableLabel = new javax.swing.JLabel();
|
||||
notableYesOrNoLabel = new javax.swing.JLabel();
|
||||
ingestRunningWarningLabel = new javax.swing.JLabel();
|
||||
|
||||
jPanel1.setPreferredSize(new java.awt.Dimension(750, 500));
|
||||
jPanel1.setPreferredSize(new java.awt.Dimension(750, 490));
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(panelDescriptionLabel, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.panelDescriptionLabel.text")); // NOI18N
|
||||
jScrollPane2.setPreferredSize(new java.awt.Dimension(750, 490));
|
||||
|
||||
jSplitPane1.setDividerLocation(400);
|
||||
jSplitPane1.setDividerLocation(365);
|
||||
jSplitPane1.setDividerSize(1);
|
||||
jSplitPane1.setPreferredSize(new java.awt.Dimension(748, 488));
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(tagTypesListLabel, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.tagTypesListLabel.text")); // NOI18N
|
||||
|
||||
@@ -92,6 +118,9 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
|
||||
newTagNameButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/add-tag.png"))); // NOI18N
|
||||
org.openide.awt.Mnemonics.setLocalizedText(newTagNameButton, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.newTagNameButton.text")); // NOI18N
|
||||
newTagNameButton.setMaximumSize(new java.awt.Dimension(111, 25));
|
||||
newTagNameButton.setMinimumSize(new java.awt.Dimension(111, 25));
|
||||
newTagNameButton.setPreferredSize(new java.awt.Dimension(111, 25));
|
||||
newTagNameButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
newTagNameButtonActionPerformed(evt);
|
||||
@@ -100,12 +129,37 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
|
||||
deleteTagNameButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/delete-tag.png"))); // NOI18N
|
||||
org.openide.awt.Mnemonics.setLocalizedText(deleteTagNameButton, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.deleteTagNameButton.text")); // NOI18N
|
||||
deleteTagNameButton.setMaximumSize(new java.awt.Dimension(111, 25));
|
||||
deleteTagNameButton.setMinimumSize(new java.awt.Dimension(111, 25));
|
||||
deleteTagNameButton.setPreferredSize(new java.awt.Dimension(111, 25));
|
||||
deleteTagNameButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
deleteTagNameButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
editTagNameButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/images/edit-tag.png"))); // NOI18N
|
||||
org.openide.awt.Mnemonics.setLocalizedText(editTagNameButton, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.editTagNameButton.text")); // NOI18N
|
||||
editTagNameButton.setMaximumSize(new java.awt.Dimension(111, 25));
|
||||
editTagNameButton.setMinimumSize(new java.awt.Dimension(111, 25));
|
||||
editTagNameButton.setPreferredSize(new java.awt.Dimension(111, 25));
|
||||
editTagNameButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
editTagNameButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
jTextArea1.setEditable(false);
|
||||
jTextArea1.setBackground(new java.awt.Color(240, 240, 240));
|
||||
jTextArea1.setColumns(20);
|
||||
jTextArea1.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
|
||||
jTextArea1.setLineWrap(true);
|
||||
jTextArea1.setRows(3);
|
||||
jTextArea1.setText(org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.jTextArea1.text")); // NOI18N
|
||||
jTextArea1.setWrapStyleWord(true);
|
||||
jTextArea1.setFocusable(false);
|
||||
jScrollPane3.setViewportView(jTextArea1);
|
||||
|
||||
javax.swing.GroupLayout modifyTagTypesListPanelLayout = new javax.swing.GroupLayout(modifyTagTypesListPanel);
|
||||
modifyTagTypesListPanel.setLayout(modifyTagTypesListPanelLayout);
|
||||
modifyTagTypesListPanelLayout.setHorizontalGroup(
|
||||
@@ -113,40 +167,98 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
.addGroup(modifyTagTypesListPanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(modifyTagTypesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(tagTypesListLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGroup(modifyTagTypesListPanelLayout.createSequentialGroup()
|
||||
.addComponent(newTagNameButton)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(deleteTagNameButton)
|
||||
.addGap(0, 113, Short.MAX_VALUE)))
|
||||
.addContainerGap())
|
||||
);
|
||||
modifyTagTypesListPanelLayout.setVerticalGroup(
|
||||
modifyTagTypesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(modifyTagTypesListPanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(tagTypesListLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 381, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(modifyTagTypesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(newTagNameButton)
|
||||
.addComponent(deleteTagNameButton))
|
||||
.addGroup(modifyTagTypesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(modifyTagTypesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, modifyTagTypesListPanelLayout.createSequentialGroup()
|
||||
.addComponent(newTagNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(editTagNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(deleteTagNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
||||
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 345, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addGap(0, 0, Short.MAX_VALUE)))
|
||||
.addContainerGap())
|
||||
);
|
||||
|
||||
modifyTagTypesListPanelLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {deleteTagNameButton, editTagNameButton, newTagNameButton});
|
||||
|
||||
modifyTagTypesListPanelLayout.setVerticalGroup(
|
||||
modifyTagTypesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(modifyTagTypesListPanelLayout.createSequentialGroup()
|
||||
.addGap(10, 10, 10)
|
||||
.addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(tagTypesListLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 355, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||
.addGroup(modifyTagTypesListPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(newTagNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(editTagNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(deleteTagNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addContainerGap())
|
||||
);
|
||||
|
||||
modifyTagTypesListPanelLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {deleteTagNameButton, editTagNameButton, newTagNameButton});
|
||||
|
||||
jSplitPane1.setLeftComponent(modifyTagTypesListPanel);
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(descriptionLabel, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.descriptionLabel.text")); // NOI18N
|
||||
|
||||
descriptionTextArea.setEditable(false);
|
||||
descriptionTextArea.setBackground(new java.awt.Color(240, 240, 240));
|
||||
descriptionTextArea.setColumns(20);
|
||||
descriptionTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
|
||||
descriptionTextArea.setLineWrap(true);
|
||||
descriptionTextArea.setRows(5);
|
||||
descriptionTextArea.setWrapStyleWord(true);
|
||||
descriptionTextArea.setFocusable(false);
|
||||
descriptionScrollPane.setViewportView(descriptionTextArea);
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(isNotableLabel, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.isNotableLabel.text")); // NOI18N
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(notableYesOrNoLabel, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.notableYesOrNoLabel.text")); // NOI18N
|
||||
|
||||
ingestRunningWarningLabel.setFont(ingestRunningWarningLabel.getFont().deriveFont(ingestRunningWarningLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
|
||||
ingestRunningWarningLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/modules/filetypeid/warning16.png"))); // NOI18N
|
||||
org.openide.awt.Mnemonics.setLocalizedText(ingestRunningWarningLabel, org.openide.util.NbBundle.getMessage(TagOptionsPanel.class, "TagOptionsPanel.ingestRunningWarningLabel.text")); // NOI18N
|
||||
|
||||
javax.swing.GroupLayout tagTypesAdditionalPanelLayout = new javax.swing.GroupLayout(tagTypesAdditionalPanel);
|
||||
tagTypesAdditionalPanel.setLayout(tagTypesAdditionalPanelLayout);
|
||||
tagTypesAdditionalPanelLayout.setHorizontalGroup(
|
||||
tagTypesAdditionalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 354, Short.MAX_VALUE)
|
||||
.addGroup(tagTypesAdditionalPanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(tagTypesAdditionalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(descriptionScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 361, Short.MAX_VALUE)
|
||||
.addGroup(tagTypesAdditionalPanelLayout.createSequentialGroup()
|
||||
.addGroup(tagTypesAdditionalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(descriptionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGroup(tagTypesAdditionalPanelLayout.createSequentialGroup()
|
||||
.addComponent(isNotableLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 150, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(notableYesOrNoLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addComponent(ingestRunningWarningLabel))
|
||||
.addGap(0, 0, Short.MAX_VALUE)))
|
||||
.addContainerGap())
|
||||
);
|
||||
tagTypesAdditionalPanelLayout.setVerticalGroup(
|
||||
tagTypesAdditionalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 454, Short.MAX_VALUE)
|
||||
.addGroup(tagTypesAdditionalPanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(descriptionLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(descriptionScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(tagTypesAdditionalPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(isNotableLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addComponent(notableYesOrNoLabel))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 304, Short.MAX_VALUE)
|
||||
.addComponent(ingestRunningWarningLabel)
|
||||
.addGap(31, 31, 31))
|
||||
);
|
||||
|
||||
jSplitPane1.setRightComponent(tagTypesAdditionalPanel);
|
||||
@@ -158,27 +270,23 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
jPanel1Layout.setHorizontalGroup(
|
||||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(panelDescriptionLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(jScrollPane2))
|
||||
.addContainerGap())
|
||||
.addGap(0, 0, 0)
|
||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGap(0, 0, 0))
|
||||
);
|
||||
jPanel1Layout.setVerticalGroup(
|
||||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(panelDescriptionLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 458, Short.MAX_VALUE)
|
||||
.addContainerGap())
|
||||
.addGap(0, 0, 0)
|
||||
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addGap(0, 0, 0))
|
||||
);
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 778, Short.MAX_VALUE)
|
||||
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
@@ -187,11 +295,11 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void newTagNameButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newTagNameButtonActionPerformed
|
||||
NewTagNameDialog dialog = new NewTagNameDialog();
|
||||
NewTagNameDialog.BUTTON_PRESSED result = dialog.getResult();
|
||||
if (result == NewTagNameDialog.BUTTON_PRESSED.OK) {
|
||||
String newTagDisplayName = dialog.getTagName();
|
||||
TagNameDefiniton newTagType = new TagNameDefiniton(newTagDisplayName, DEFAULT_DESCRIPTION, DEFAULT_COLOR, TskData.FileKnown.UNKNOWN);
|
||||
TagNameDialog dialog = new TagNameDialog();
|
||||
TagNameDialog.BUTTON_PRESSED result = dialog.getResult();
|
||||
if (result == TagNameDialog.BUTTON_PRESSED.OK) {
|
||||
TskData.FileKnown status = dialog.isTagNotable() ? TskData.FileKnown.BAD : TskData.FileKnown.UNKNOWN;
|
||||
TagNameDefinition newTagType = new TagNameDefinition(dialog.getTagName(), dialog.getTagDesciption(), DEFAULT_COLOR, status);
|
||||
/*
|
||||
* If tag name already exists, don't add the tag name.
|
||||
*/
|
||||
@@ -199,7 +307,7 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
tagTypes.add(newTagType);
|
||||
updateTagNamesListModel();
|
||||
tagNamesList.setSelectedValue(newTagType, true);
|
||||
enableButtons();
|
||||
updatePanel();
|
||||
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(null,
|
||||
@@ -211,23 +319,52 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
}//GEN-LAST:event_newTagNameButtonActionPerformed
|
||||
|
||||
private void deleteTagNameButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteTagNameButtonActionPerformed
|
||||
TagNameDefiniton tagName = tagNamesList.getSelectedValue();
|
||||
TagNameDefinition tagName = tagNamesList.getSelectedValue();
|
||||
tagTypes.remove(tagName);
|
||||
updateTagNamesListModel();
|
||||
enableButtons();
|
||||
updatePanel();
|
||||
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
|
||||
|
||||
}//GEN-LAST:event_deleteTagNameButtonActionPerformed
|
||||
|
||||
private void editTagNameButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editTagNameButtonActionPerformed
|
||||
TagNameDefinition originalTagName = tagNamesList.getSelectedValue();
|
||||
TagNameDialog dialog = new TagNameDialog(originalTagName);
|
||||
TagNameDialog.BUTTON_PRESSED result = dialog.getResult();
|
||||
if (result == TagNameDialog.BUTTON_PRESSED.OK) {
|
||||
TskData.FileKnown status = dialog.isTagNotable() ? TskData.FileKnown.BAD : TskData.FileKnown.UNKNOWN;
|
||||
TagNameDefinition newTagType = new TagNameDefinition(dialog.getTagName(), dialog.getTagDesciption(), DEFAULT_COLOR, status);
|
||||
/*
|
||||
* If tag name already exists, don't add the tag name.
|
||||
*/
|
||||
|
||||
tagTypes.remove(originalTagName);
|
||||
tagTypes.add(newTagType);
|
||||
updateTagNamesListModel();
|
||||
tagNamesList.setSelectedValue(newTagType, true);
|
||||
updatePanel();
|
||||
firePropertyChange(OptionsPanelController.PROP_CHANGED, null, null);
|
||||
}
|
||||
}//GEN-LAST:event_editTagNameButtonActionPerformed
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton deleteTagNameButton;
|
||||
private javax.swing.JLabel descriptionLabel;
|
||||
private javax.swing.JScrollPane descriptionScrollPane;
|
||||
private javax.swing.JTextArea descriptionTextArea;
|
||||
private javax.swing.JButton editTagNameButton;
|
||||
private javax.swing.JLabel ingestRunningWarningLabel;
|
||||
private javax.swing.JLabel isNotableLabel;
|
||||
private javax.swing.JPanel jPanel1;
|
||||
private javax.swing.JScrollPane jScrollPane1;
|
||||
private javax.swing.JScrollPane jScrollPane2;
|
||||
private javax.swing.JScrollPane jScrollPane3;
|
||||
private javax.swing.JSplitPane jSplitPane1;
|
||||
private javax.swing.JTextArea jTextArea1;
|
||||
private javax.swing.JPanel modifyTagTypesListPanel;
|
||||
private javax.swing.JButton newTagNameButton;
|
||||
private javax.swing.JLabel panelDescriptionLabel;
|
||||
private javax.swing.JList<org.sleuthkit.autopsy.casemodule.services.TagNameDefiniton> tagNamesList;
|
||||
private javax.swing.JLabel notableYesOrNoLabel;
|
||||
private javax.swing.JList<org.sleuthkit.autopsy.casemodule.services.TagNameDefinition> tagNamesList;
|
||||
private javax.swing.JPanel tagTypesAdditionalPanel;
|
||||
private javax.swing.JLabel tagTypesListLabel;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
@@ -237,7 +374,7 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
*/
|
||||
private void updateTagNamesListModel() {
|
||||
tagTypesListModel.clear();
|
||||
for (TagNameDefiniton tagName : tagTypes) {
|
||||
for (TagNameDefinition tagName : tagTypes) {
|
||||
tagTypesListModel.addElement(tagName);
|
||||
}
|
||||
}
|
||||
@@ -247,9 +384,9 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
*/
|
||||
@Override
|
||||
public void load() {
|
||||
tagTypes = new TreeSet<>(TagNameDefiniton.getTagNameDefinitions());
|
||||
tagTypes = new TreeSet<>(TagNameDefinition.getTagNameDefinitions());
|
||||
updateTagNamesListModel();
|
||||
enableButtons();
|
||||
updatePanel();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -257,19 +394,62 @@ final class TagOptionsPanel extends javax.swing.JPanel implements OptionsPanel {
|
||||
*/
|
||||
@Override
|
||||
public void store() {
|
||||
TagNameDefiniton.setTagNameDefinitions(tagTypes);
|
||||
TagNameDefinition.setTagNameDefinitions(tagTypes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables the button components based on the state of the tag types list
|
||||
* component.
|
||||
*/
|
||||
private void enableButtons() {
|
||||
private void updatePanel() {
|
||||
boolean ingestIsRunning = IngestManager.getInstance().isIngestRunning();
|
||||
/*
|
||||
* Only enable the delete button when there is a tag type selected in
|
||||
* the tag types JList.
|
||||
*/
|
||||
deleteTagNameButton.setEnabled(tagNamesList.getSelectedIndex() != -1);
|
||||
ingestRunningWarningLabel.setVisible(ingestIsRunning);
|
||||
boolean isSelected = tagNamesList.getSelectedIndex() != -1;
|
||||
boolean enableEdit = !ingestIsRunning && isSelected;
|
||||
editTagNameButton.setEnabled(enableEdit);
|
||||
boolean enableDelete = enableEdit && !TagNameDefinition.getStandardTagNames().contains(tagNamesList.getSelectedValue().getDisplayName());
|
||||
deleteTagNameButton.setEnabled(enableDelete);
|
||||
if (isSelected) {
|
||||
|
||||
descriptionTextArea.setText(tagNamesList.getSelectedValue().getDescription());
|
||||
if (tagNamesList.getSelectedValue().isNotable()) {
|
||||
notableYesOrNoLabel.setText("Yes");
|
||||
} else {
|
||||
notableYesOrNoLabel.setText("No");
|
||||
}
|
||||
} else {
|
||||
descriptionTextArea.setText("");
|
||||
notableYesOrNoLabel.setText("");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("FinalizeDeclaration")
|
||||
protected void finalize() throws Throwable {
|
||||
IngestManager.getInstance().removeIngestJobEventListener(ingestJobEventsListener);
|
||||
super.finalize();
|
||||
}
|
||||
|
||||
/**
|
||||
* A property change listener that listens to ingest job events.
|
||||
*/
|
||||
private class IngestJobEventPropertyChangeListener implements PropertyChangeListener {
|
||||
|
||||
@Override
|
||||
public void propertyChange(PropertyChangeEvent evt) {
|
||||
EventQueue.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
updatePanel();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ public class TagsManager implements Closeable {
|
||||
*/
|
||||
public static Set<String> getTagDisplayNames() throws TskCoreException {
|
||||
Set<String> tagDisplayNames = new HashSet<>();
|
||||
Set<TagNameDefiniton> customNames = TagNameDefiniton.getTagNameDefinitions();
|
||||
Set<TagNameDefinition> customNames = TagNameDefinition.getTagNameDefinitions();
|
||||
customNames.forEach((tagType) -> {
|
||||
tagDisplayNames.add(tagType.getDisplayName());
|
||||
});
|
||||
@@ -102,7 +102,7 @@ public class TagsManager implements Closeable {
|
||||
|
||||
public static List<String> getNotableTagDisplayNames() {
|
||||
List<String> tagDisplayNames = new ArrayList<>();
|
||||
for (TagNameDefiniton tagDef : TagNameDefiniton.getTagNameDefinitions()) {
|
||||
for (TagNameDefinition tagDef : TagNameDefinition.getTagNameDefinitions()) {
|
||||
if (tagDef.isNotable()) {
|
||||
tagDisplayNames.add(tagDef.getDisplayName());
|
||||
}
|
||||
@@ -170,8 +170,8 @@ public class TagsManager implements Closeable {
|
||||
* map.
|
||||
*/
|
||||
Map<String, TagName> tagNames = new HashMap<>();
|
||||
Set<TagNameDefiniton> customTypes = TagNameDefiniton.getTagNameDefinitions();
|
||||
for (TagNameDefiniton tagType : customTypes) {
|
||||
Set<TagNameDefinition> customTypes = TagNameDefinition.getTagNameDefinitions();
|
||||
for (TagNameDefinition tagType : customTypes) {
|
||||
tagNames.put(tagType.getDisplayName(), null);
|
||||
}
|
||||
for (TagName tagName : caseDb.getAllTagNames()) {
|
||||
@@ -256,9 +256,9 @@ public class TagsManager implements Closeable {
|
||||
public synchronized TagName addTagName(String displayName, String description, TagName.HTML_COLOR color, TskData.FileKnown knownStatus) throws TagNameAlreadyExistsException, TskCoreException {
|
||||
try {
|
||||
TagName tagName = caseDb.addOrUpdateTagName(displayName, description, color, knownStatus);
|
||||
Set<TagNameDefiniton> customTypes = TagNameDefiniton.getTagNameDefinitions();
|
||||
customTypes.add(new TagNameDefiniton(displayName, description, color, knownStatus));
|
||||
TagNameDefiniton.setTagNameDefinitions(customTypes);
|
||||
Set<TagNameDefinition> customTypes = TagNameDefinition.getTagNameDefinitions();
|
||||
customTypes.add(new TagNameDefinition(displayName, description, color, knownStatus));
|
||||
TagNameDefinition.setTagNameDefinitions(customTypes);
|
||||
return tagName;
|
||||
} catch (TskCoreException ex) {
|
||||
List<TagName> existingTagNames = caseDb.getAllTagNames();
|
||||
|
||||
Regular → Executable
-3
@@ -21,9 +21,6 @@ ImportHashDatabaseDialog.tfDatabaseName.tooltip=Name for this database
|
||||
ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=Database Version Number
|
||||
ImportHashDatabaseDialog.tfDatabaseName.tooltip=Name for this database
|
||||
ImportHashDatabaseDialog.tfDatabaseVersion.tooltip.text=Database Version Number
|
||||
GlobalSettingsPanel.bnManageTags.actionCommand=
|
||||
GlobalSettingsPanel.bnManageTags.toolTipText=
|
||||
GlobalSettingsPanel.bnManageTags.text=Manage Tags
|
||||
GlobalSettingsPanel.tbOops.text=
|
||||
GlobalSettingsPanel.lbDatabaseSettings.text=Database Settings
|
||||
GlobalSettingsPanel.bnImportDatabase.label=Import Hash Database
|
||||
|
||||
+1
-107
@@ -28,7 +28,6 @@
|
||||
<Component id="organizationPanel" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="lbCentralRepository" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="pnCorrelationProperties" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="pnTagManagement" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="pnDatabaseConfiguration" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="cbUseCentralRepo" alignment="0" min="-2" pref="186" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
@@ -47,14 +46,12 @@
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Component id="pnDatabaseConfiguration" min="-2" pref="119" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||
<Component id="pnTagManagement" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||
<Component id="pnCorrelationProperties" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||
<Component id="organizationPanel" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="0" max="-2" attributes="0"/>
|
||||
<Component id="tbOops" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" pref="36" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
@@ -174,109 +171,6 @@
|
||||
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cbUseCentralRepoActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Container class="javax.swing.JPanel" name="pnTagManagement">
|
||||
<Properties>
|
||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
|
||||
<TitledBorder title="<GlobalSettingsPanel.pnTagManagement.border.title>">
|
||||
<ResourceString PropertyName="titleX" bundle="org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties" key="GlobalSettingsPanel.pnTagManagement.border.title" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<Font PropertyName="font" name="Tahoma" size="12" style="0"/>
|
||||
</TitledBorder>
|
||||
</Border>
|
||||
</Property>
|
||||
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||
<Dimension value="[674, 97]"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AccessibilityProperties>
|
||||
<Property name="AccessibleContext.accessibleName" type="java.lang.String" value=""/>
|
||||
</AccessibilityProperties>
|
||||
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<Component id="bnManageTags" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace min="0" pref="555" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" attributes="0">
|
||||
<Component id="manageTagsScrollPane" max="32767" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="0" attributes="0">
|
||||
<EmptySpace min="-2" pref="7" max="-2" attributes="0"/>
|
||||
<Component id="manageTagsScrollPane" min="-2" pref="31" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="bnManageTags" min="-2" pref="25" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" pref="8" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
</Layout>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JButton" name="bnManageTags">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties" key="GlobalSettingsPanel.bnManageTags.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="toolTipText" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties" key="GlobalSettingsPanel.bnManageTags.toolTipText" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="actionCommand" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties" key="GlobalSettingsPanel.bnManageTags.actionCommand" 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="bnManageTagsActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Container class="javax.swing.JScrollPane" name="manageTagsScrollPane">
|
||||
<Properties>
|
||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||
<Border info="null"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JTextArea" name="manageTagsTextArea">
|
||||
<Properties>
|
||||
<Property name="editable" type="boolean" value="false"/>
|
||||
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||
<Color blue="f0" green="f0" red="f0" type="rgb"/>
|
||||
</Property>
|
||||
<Property name="columns" type="int" value="20"/>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
<Font name="Tahoma" size="11" style="0"/>
|
||||
</Property>
|
||||
<Property name="lineWrap" type="boolean" value="true"/>
|
||||
<Property name="rows" type="int" value="2"/>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties" key="GlobalSettingsPanel.manageTagsTextArea.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
<Property name="toolTipText" type="java.lang.String" value=""/>
|
||||
<Property name="wrapStyleWord" type="boolean" value="true"/>
|
||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||
<Border info="null"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
<Component class="javax.swing.JTextField" name="tbOops">
|
||||
<Properties>
|
||||
<Property name="editable" type="boolean" value="false"/>
|
||||
|
||||
+1
-73
@@ -96,10 +96,6 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
|
||||
lbDbNameValue = new javax.swing.JLabel();
|
||||
lbDbLocationValue = new javax.swing.JLabel();
|
||||
cbUseCentralRepo = new javax.swing.JCheckBox();
|
||||
pnTagManagement = new javax.swing.JPanel();
|
||||
bnManageTags = new javax.swing.JButton();
|
||||
manageTagsScrollPane = new javax.swing.JScrollPane();
|
||||
manageTagsTextArea = new javax.swing.JTextArea();
|
||||
tbOops = new javax.swing.JTextField();
|
||||
pnCorrelationProperties = new javax.swing.JPanel();
|
||||
bnManageTypes = new javax.swing.JButton();
|
||||
@@ -176,56 +172,6 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
|
||||
}
|
||||
});
|
||||
|
||||
pnTagManagement.setBorder(javax.swing.BorderFactory.createTitledBorder(null, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.pnTagManagement.border.title"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 0, 12))); // NOI18N
|
||||
pnTagManagement.setPreferredSize(new java.awt.Dimension(674, 97));
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(bnManageTags, org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.bnManageTags.text")); // NOI18N
|
||||
bnManageTags.setToolTipText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.bnManageTags.toolTipText")); // NOI18N
|
||||
bnManageTags.setActionCommand(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.bnManageTags.actionCommand")); // NOI18N
|
||||
bnManageTags.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
bnManageTagsActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
manageTagsScrollPane.setBorder(null);
|
||||
|
||||
manageTagsTextArea.setEditable(false);
|
||||
manageTagsTextArea.setBackground(new java.awt.Color(240, 240, 240));
|
||||
manageTagsTextArea.setColumns(20);
|
||||
manageTagsTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
|
||||
manageTagsTextArea.setLineWrap(true);
|
||||
manageTagsTextArea.setRows(2);
|
||||
manageTagsTextArea.setText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.manageTagsTextArea.text")); // NOI18N
|
||||
manageTagsTextArea.setToolTipText("");
|
||||
manageTagsTextArea.setWrapStyleWord(true);
|
||||
manageTagsTextArea.setBorder(null);
|
||||
manageTagsScrollPane.setViewportView(manageTagsTextArea);
|
||||
|
||||
javax.swing.GroupLayout pnTagManagementLayout = new javax.swing.GroupLayout(pnTagManagement);
|
||||
pnTagManagement.setLayout(pnTagManagementLayout);
|
||||
pnTagManagementLayout.setHorizontalGroup(
|
||||
pnTagManagementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(pnTagManagementLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(pnTagManagementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(pnTagManagementLayout.createSequentialGroup()
|
||||
.addComponent(bnManageTags)
|
||||
.addGap(0, 555, Short.MAX_VALUE))
|
||||
.addGroup(pnTagManagementLayout.createSequentialGroup()
|
||||
.addComponent(manageTagsScrollPane)
|
||||
.addContainerGap())))
|
||||
);
|
||||
pnTagManagementLayout.setVerticalGroup(
|
||||
pnTagManagementLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(pnTagManagementLayout.createSequentialGroup()
|
||||
.addGap(7, 7, 7)
|
||||
.addComponent(manageTagsScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(bnManageTags, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(8, 8, 8))
|
||||
);
|
||||
|
||||
tbOops.setEditable(false);
|
||||
tbOops.setFont(tbOops.getFont().deriveFont(tbOops.getFont().getStyle() | java.awt.Font.BOLD, 12));
|
||||
tbOops.setText(org.openide.util.NbBundle.getMessage(GlobalSettingsPanel.class, "GlobalSettingsPanel.tbOops.text")); // NOI18N
|
||||
@@ -338,7 +284,6 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
|
||||
.addComponent(organizationPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(lbCentralRepository, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(pnCorrelationProperties, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(pnTagManagement, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(pnDatabaseConfiguration, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(cbUseCentralRepo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 186, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addContainerGap())))
|
||||
@@ -352,25 +297,15 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(pnDatabaseConfiguration, javax.swing.GroupLayout.PREFERRED_SIZE, 119, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(0, 0, 0)
|
||||
.addComponent(pnTagManagement, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(0, 0, 0)
|
||||
.addComponent(pnCorrelationProperties, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(0, 0, 0)
|
||||
.addComponent(organizationPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(0, 0, 0)
|
||||
.addComponent(tbOops, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(36, 36, 36))
|
||||
.addContainerGap())
|
||||
);
|
||||
|
||||
pnTagManagement.getAccessibleContext().setAccessibleName("");
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void bnManageTagsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnManageTagsActionPerformed
|
||||
store();
|
||||
ManageTagsDialog dialog = new ManageTagsDialog();
|
||||
firePropertyChange(OptionsPanelController.PROP_VALID, null, null);
|
||||
}//GEN-LAST:event_bnManageTagsActionPerformed
|
||||
|
||||
private void bnManageTypesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnManageTypesActionPerformed
|
||||
store();
|
||||
ManageCorrelationPropertiesDialog dialog = new ManageCorrelationPropertiesDialog();
|
||||
@@ -543,10 +478,7 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
|
||||
private boolean enableButtonSubComponents(Boolean enable) {
|
||||
boolean ingestRunning = IngestManager.getInstance().isIngestRunning();
|
||||
pnCorrelationProperties.setEnabled(enable && !ingestRunning);
|
||||
pnTagManagement.setEnabled(enable && !ingestRunning);
|
||||
bnManageTypes.setEnabled(enable && !ingestRunning);
|
||||
bnManageTags.setEnabled(enable && !ingestRunning);
|
||||
manageTagsTextArea.setEnabled(enable && !ingestRunning);
|
||||
correlationPropertiesTextArea.setEnabled(enable && !ingestRunning);
|
||||
organizationPanel.setEnabled(enable && !ingestRunning);
|
||||
organizationTextArea.setEnabled(enable && !ingestRunning);
|
||||
@@ -556,7 +488,6 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton bnDbConfigure;
|
||||
private javax.swing.JButton bnManageTags;
|
||||
private javax.swing.JButton bnManageTypes;
|
||||
private javax.swing.JCheckBox cbUseCentralRepo;
|
||||
private javax.swing.JScrollPane correlationPropertiesScrollPane;
|
||||
@@ -569,14 +500,11 @@ public final class GlobalSettingsPanel extends IngestModuleGlobalSettingsPanel i
|
||||
private javax.swing.JLabel lbDbPlatformTypeLabel;
|
||||
private javax.swing.JLabel lbDbPlatformValue;
|
||||
private javax.swing.JButton manageOrganizationButton;
|
||||
private javax.swing.JScrollPane manageTagsScrollPane;
|
||||
private javax.swing.JTextArea manageTagsTextArea;
|
||||
private javax.swing.JPanel organizationPanel;
|
||||
private javax.swing.JScrollPane organizationScrollPane;
|
||||
private javax.swing.JTextArea organizationTextArea;
|
||||
private javax.swing.JPanel pnCorrelationProperties;
|
||||
private javax.swing.JPanel pnDatabaseConfiguration;
|
||||
private javax.swing.JPanel pnTagManagement;
|
||||
private javax.swing.JTextField tbOops;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
|
||||
@@ -1,147 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<Form version="1.5" maxVersion="1.8" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
|
||||
<NonVisualComponents>
|
||||
<Component class="javax.swing.ButtonGroup" name="buttonGroup1">
|
||||
</Component>
|
||||
</NonVisualComponents>
|
||||
<Properties>
|
||||
<Property name="defaultCloseOperation" type="int" value="2"/>
|
||||
</Properties>
|
||||
<SyntheticProperties>
|
||||
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||
<SyntheticProperty name="generateCenter" type="boolean" value="false"/>
|
||||
</SyntheticProperties>
|
||||
<AuxValues>
|
||||
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
|
||||
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
|
||||
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout>
|
||||
<DimensionLayout dim="0">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" attributes="0">
|
||||
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
|
||||
<Component id="okButton" linkSize="1" min="-2" max="-2" attributes="0"/>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
<Component id="cancelButton" linkSize="1" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<Group type="103" groupAlignment="1" attributes="0">
|
||||
<Component id="helpScrollPane" alignment="0" max="32767" attributes="0"/>
|
||||
<Component id="tagScrollArea" alignment="0" pref="328" max="32767" attributes="0"/>
|
||||
<Component id="lbWarnings" alignment="0" max="32767" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="-2" pref="2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
<EmptySpace max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
<DimensionLayout dim="1">
|
||||
<Group type="103" groupAlignment="0" attributes="0">
|
||||
<Group type="102" alignment="1" attributes="0">
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Component id="helpScrollPane" min="-2" pref="42" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" pref="0" max="-2" attributes="0"/>
|
||||
<Component id="tagScrollArea" pref="341" max="32767" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Component id="lbWarnings" min="-2" pref="18" max="-2" attributes="0"/>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
<Group type="103" groupAlignment="3" attributes="0">
|
||||
<Component id="okButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
<Component id="cancelButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
<EmptySpace min="-2" max="-2" attributes="0"/>
|
||||
</Group>
|
||||
</Group>
|
||||
</DimensionLayout>
|
||||
</Layout>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JButton" name="okButton">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties" key="ManageTagsDialog.okButton.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="okButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Component class="javax.swing.JButton" name="cancelButton">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/centralrepository/optionspanel/Bundle.properties" key="ManageTagsDialog.cancelButton.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="cancelButtonActionPerformed"/>
|
||||
</Events>
|
||||
</Component>
|
||||
<Container class="javax.swing.JScrollPane" name="tagScrollArea">
|
||||
<AuxValues>
|
||||
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JTable" name="tblTagNames">
|
||||
<Properties>
|
||||
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
|
||||
<Table columnCount="2" rowCount="0">
|
||||
<Column editable="false" title="" type="java.lang.Object"/>
|
||||
<Column editable="true" title="" type="java.lang.Boolean"/>
|
||||
</Table>
|
||||
</Property>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
<Component class="javax.swing.JLabel" name="lbWarnings">
|
||||
</Component>
|
||||
<Container class="javax.swing.JScrollPane" name="helpScrollPane">
|
||||
<Properties>
|
||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||
<Border info="null"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<AuxValues>
|
||||
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
|
||||
</AuxValues>
|
||||
|
||||
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
|
||||
<SubComponents>
|
||||
<Component class="javax.swing.JTextArea" name="helpTextArea">
|
||||
<Properties>
|
||||
<Property name="editable" type="boolean" value="false"/>
|
||||
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
|
||||
<Color blue="f0" green="f0" red="f0" type="rgb"/>
|
||||
</Property>
|
||||
<Property name="columns" type="int" value="20"/>
|
||||
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
|
||||
<Font name="Tahoma" size="11" style="0"/>
|
||||
</Property>
|
||||
<Property name="lineWrap" type="boolean" value="true"/>
|
||||
<Property name="rows" type="int" value="3"/>
|
||||
<Property name="wrapStyleWord" type="boolean" value="true"/>
|
||||
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
|
||||
<Border info="null"/>
|
||||
</Property>
|
||||
<Property name="focusable" type="boolean" value="false"/>
|
||||
</Properties>
|
||||
</Component>
|
||||
</SubComponents>
|
||||
</Container>
|
||||
</SubComponents>
|
||||
</Form>
|
||||
@@ -1,364 +0,0 @@
|
||||
/*
|
||||
* Central Repository
|
||||
*
|
||||
* Copyright 2015-2017 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.centralrepository.optionspanel;
|
||||
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Toolkit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.table.DefaultTableModel;
|
||||
import javax.swing.event.TableModelEvent;
|
||||
import javax.swing.event.TableModelListener;
|
||||
import javax.swing.JOptionPane;
|
||||
import org.openide.util.NbBundle.Messages;
|
||||
import org.openide.windows.WindowManager;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.EamDb;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.EamDbException;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CorrelationAttribute;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.EamArtifactUtil;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifactTag;
|
||||
import org.sleuthkit.datamodel.TagName;
|
||||
import org.sleuthkit.datamodel.ContentTag;
|
||||
import org.sleuthkit.datamodel.TskData;
|
||||
|
||||
/**
|
||||
* Instances of this class allow a user to select an existing hash database and
|
||||
* add it to the set of hash databases used to classify files as unknown, known,
|
||||
* or notable.
|
||||
*/
|
||||
final class ManageTagsDialog extends javax.swing.JDialog {
|
||||
|
||||
private static final Logger LOGGER = Logger.getLogger(ManageTagsDialog.class.getName());
|
||||
|
||||
/**
|
||||
* Displays a dialog that allows a user to select an existing hash database
|
||||
* and add it to the set of hash databases used to classify files as
|
||||
* unknown, known, or notable.
|
||||
*/
|
||||
@Messages({"ManageTagDialog.title=Manage Tags",
|
||||
"ManageTagDialog.tagInfo.text=Select the tags that cause files and results to be recorded in the central repository. Additional tags can be created in the Tags options panel."})
|
||||
ManageTagsDialog() {
|
||||
super((JFrame) WindowManager.getDefault().getMainWindow(),
|
||||
Bundle.ManageTagDialog_title(),
|
||||
true); // NON-NLS
|
||||
initComponents();
|
||||
customizeComponents();
|
||||
setupHelpTextArea();
|
||||
display();
|
||||
}
|
||||
|
||||
|
||||
@Messages({"ManageTagsDialog.init.failedConnection.msg=Cannot connect to central cepository.",
|
||||
"ManageTagsDialog.init.failedGettingTags.msg=Unable to retrieve list of tags.",
|
||||
"ManageTagsDialog.tagColumn.header.text=Tags",
|
||||
"ManageTagsDialog.notableColumn.header.text=Notable"})
|
||||
private void setupHelpTextArea() {
|
||||
helpTextArea.setText(Bundle.ManageTagDialog_tagInfo_text());
|
||||
}
|
||||
|
||||
private void customizeComponents() {
|
||||
lbWarnings.setText("");
|
||||
EamDb dbManager;
|
||||
try {
|
||||
dbManager = EamDb.getInstance();
|
||||
} catch (EamDbException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to connect to central repository database.");
|
||||
lbWarnings.setText(Bundle.ManageTagsDialog_init_failedConnection_msg());
|
||||
return;
|
||||
}
|
||||
List<String> badTags = TagsManager.getNotableTagDisplayNames();
|
||||
|
||||
List<String> tagNames = new ArrayList<>();
|
||||
try {
|
||||
tagNames.addAll(TagsManager.getTagDisplayNames());
|
||||
} catch (TskCoreException ex) {
|
||||
LOGGER.log(Level.WARNING, "Could not get list of tags in case", ex);
|
||||
lbWarnings.setText(Bundle.ManageTagsDialog_init_failedGettingTags_msg());
|
||||
}
|
||||
|
||||
Collections.sort(tagNames);
|
||||
|
||||
DefaultTableModel model = (DefaultTableModel) tblTagNames.getModel();
|
||||
model.setColumnIdentifiers(new String[] {Bundle.ManageTagsDialog_tagColumn_header_text(), Bundle.ManageTagsDialog_notableColumn_header_text()});
|
||||
for (String tagName : tagNames) {
|
||||
boolean enabled = badTags.contains(tagName);
|
||||
model.addRow(new Object[]{tagName, enabled});
|
||||
}
|
||||
CheckBoxModelListener listener = new CheckBoxModelListener(this);
|
||||
model.addTableModelListener(listener);
|
||||
}
|
||||
|
||||
private void display() {
|
||||
Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
|
||||
setLocation((screenDimension.width - getSize().width) / 2, (screenDimension.height - getSize().height) / 2);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
@SuppressWarnings({"unchecked", "rawtypes"})
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
buttonGroup1 = new javax.swing.ButtonGroup();
|
||||
okButton = new javax.swing.JButton();
|
||||
cancelButton = new javax.swing.JButton();
|
||||
tagScrollArea = new javax.swing.JScrollPane();
|
||||
tblTagNames = new javax.swing.JTable();
|
||||
lbWarnings = new javax.swing.JLabel();
|
||||
helpScrollPane = new javax.swing.JScrollPane();
|
||||
helpTextArea = new javax.swing.JTextArea();
|
||||
|
||||
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(okButton, org.openide.util.NbBundle.getMessage(ManageTagsDialog.class, "ManageTagsDialog.okButton.text")); // NOI18N
|
||||
okButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
okButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
org.openide.awt.Mnemonics.setLocalizedText(cancelButton, org.openide.util.NbBundle.getMessage(ManageTagsDialog.class, "ManageTagsDialog.cancelButton.text")); // NOI18N
|
||||
cancelButton.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
cancelButtonActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
tblTagNames.setModel(new javax.swing.table.DefaultTableModel(
|
||||
new Object [][] {
|
||||
|
||||
},
|
||||
new String [] {
|
||||
"", ""
|
||||
}
|
||||
) {
|
||||
Class[] types = new Class [] {
|
||||
java.lang.Object.class, java.lang.Boolean.class
|
||||
};
|
||||
boolean[] canEdit = new boolean [] {
|
||||
false, true
|
||||
};
|
||||
|
||||
public Class getColumnClass(int columnIndex) {
|
||||
return types [columnIndex];
|
||||
}
|
||||
|
||||
public boolean isCellEditable(int rowIndex, int columnIndex) {
|
||||
return canEdit [columnIndex];
|
||||
}
|
||||
});
|
||||
tagScrollArea.setViewportView(tblTagNames);
|
||||
|
||||
helpScrollPane.setBorder(null);
|
||||
|
||||
helpTextArea.setEditable(false);
|
||||
helpTextArea.setBackground(new java.awt.Color(240, 240, 240));
|
||||
helpTextArea.setColumns(20);
|
||||
helpTextArea.setFont(new java.awt.Font("Tahoma", 0, 11)); // NOI18N
|
||||
helpTextArea.setLineWrap(true);
|
||||
helpTextArea.setRows(3);
|
||||
helpTextArea.setWrapStyleWord(true);
|
||||
helpTextArea.setBorder(null);
|
||||
helpTextArea.setFocusable(false);
|
||||
helpScrollPane.setViewportView(helpTextArea);
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||
getContentPane().setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(layout.createSequentialGroup()
|
||||
.addGap(0, 0, Short.MAX_VALUE)
|
||||
.addComponent(okButton)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(cancelButton))
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(helpScrollPane, javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(tagScrollArea, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
|
||||
.addComponent(lbWarnings, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||
.addGap(2, 2, 2)))
|
||||
.addContainerGap())
|
||||
);
|
||||
|
||||
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {cancelButton, okButton});
|
||||
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(helpScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(0, 0, 0)
|
||||
.addComponent(tagScrollArea, javax.swing.GroupLayout.DEFAULT_SIZE, 341, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(lbWarnings, javax.swing.GroupLayout.PREFERRED_SIZE, 18, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(okButton)
|
||||
.addComponent(cancelButton))
|
||||
.addContainerGap())
|
||||
);
|
||||
|
||||
pack();
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed
|
||||
dispose();
|
||||
}//GEN-LAST:event_cancelButtonActionPerformed
|
||||
|
||||
|
||||
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
|
||||
if (setBadTags()) {
|
||||
dispose();
|
||||
}
|
||||
}//GEN-LAST:event_okButtonActionPerformed
|
||||
|
||||
private boolean setBadTags() {
|
||||
List<String> badTags = new ArrayList<>();
|
||||
|
||||
DefaultTableModel model = (DefaultTableModel) tblTagNames.getModel();
|
||||
for (int i = 0; i < model.getRowCount(); ++i) {
|
||||
String tagName = (String) model.getValueAt(i, 0);
|
||||
boolean enabled = (boolean) model.getValueAt(i, 1);
|
||||
|
||||
if (enabled) {
|
||||
badTags.add(tagName);
|
||||
}
|
||||
}
|
||||
try {
|
||||
EamDb dbManager = EamDb.getInstance();
|
||||
dbManager.saveSettings();
|
||||
} catch (EamDbException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to connect to central repository database."); // NON-NLS
|
||||
lbWarnings.setText(Bundle.ManageTagsDialog_init_failedConnection_msg());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the user sets a tag to "Notable", give them the option to update
|
||||
* any existing tagged items (in the current case only) in the central repo.
|
||||
*/
|
||||
public class CheckBoxModelListener implements TableModelListener {
|
||||
@Messages({"ManageTagsDialog.updateCurrentCase.msg=Mark as notable any files/results in the current case that have this tag?",
|
||||
"ManageTagsDialog.updateCurrentCase.title=Update current case?",
|
||||
"ManageTagsDialog.updateCurrentCase.error=Error updating existing central repository entries"})
|
||||
|
||||
javax.swing.JDialog dialog;
|
||||
public CheckBoxModelListener(javax.swing.JDialog dialog){
|
||||
this.dialog = dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tableChanged(TableModelEvent e) {
|
||||
int row = e.getFirstRow();
|
||||
int column = e.getColumn();
|
||||
if (column == 1) {
|
||||
DefaultTableModel model = (DefaultTableModel) e.getSource();
|
||||
String tagName = (String) model.getValueAt(row, 0);
|
||||
Boolean checked = (Boolean) model.getValueAt(row, column);
|
||||
if (checked) {
|
||||
|
||||
// Don't do anything if there's no case open
|
||||
if(Case.isCaseOpen()){
|
||||
int dialogButton = JOptionPane.YES_NO_OPTION;
|
||||
int dialogResult = JOptionPane.showConfirmDialog (
|
||||
null,
|
||||
Bundle.ManageTagsDialog_updateCurrentCase_msg(),
|
||||
Bundle.ManageTagsDialog_updateCurrentCase_title(),
|
||||
dialogButton);
|
||||
if(dialogResult == JOptionPane.YES_OPTION){
|
||||
try{
|
||||
dialog.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
setArtifactsKnownBadByTag(tagName, Case.getCurrentCase());
|
||||
} catch (EamDbException ex) {
|
||||
LOGGER.log(Level.SEVERE, "Failed to apply notable status to artifacts in current case", ex);
|
||||
JOptionPane.showMessageDialog(null, Bundle.ManageTagsDialog_updateCurrentCase_error());
|
||||
} finally {
|
||||
dialog.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set knownBad status for all files/artifacts in the given case that
|
||||
* are tagged with the given tag name.
|
||||
* Files/artifacts that are not already in the database will be added.
|
||||
* @param tagName The name of the tag to search for
|
||||
* @param curCase The case to search in
|
||||
*/
|
||||
public void setArtifactsKnownBadByTag(String tagNameString, Case curCase) throws EamDbException{
|
||||
try{
|
||||
TagName tagName = curCase.getServices().getTagsManager().getDisplayNamesToTagNamesMap().get(tagNameString);
|
||||
|
||||
// First find any matching artifacts
|
||||
List<BlackboardArtifactTag> artifactTags = curCase.getSleuthkitCase().getBlackboardArtifactTagsByTagName(tagName);
|
||||
|
||||
for(BlackboardArtifactTag bbTag:artifactTags){
|
||||
List<CorrelationAttribute> convertedArtifacts = EamArtifactUtil.getCorrelationAttributeFromBlackboardArtifact(bbTag.getArtifact(), true, true);
|
||||
for (CorrelationAttribute eamArtifact : convertedArtifacts) {
|
||||
EamDb.getInstance().setArtifactInstanceKnownStatus(eamArtifact,TskData.FileKnown.BAD);
|
||||
}
|
||||
}
|
||||
|
||||
// Now search for files
|
||||
List<ContentTag> fileTags = curCase.getSleuthkitCase().getContentTagsByTagName(tagName);
|
||||
for(ContentTag contentTag:fileTags){
|
||||
final CorrelationAttribute eamArtifact = EamArtifactUtil.getEamArtifactFromContent(contentTag.getContent(),
|
||||
TskData.FileKnown.BAD, "");
|
||||
if(eamArtifact != null){
|
||||
EamDb.getInstance().setArtifactInstanceKnownStatus(eamArtifact, TskData.FileKnown.BAD);
|
||||
}
|
||||
}
|
||||
} catch (TskCoreException ex){
|
||||
throw new EamDbException("Error updating artifacts", ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.ButtonGroup buttonGroup1;
|
||||
private javax.swing.JButton cancelButton;
|
||||
private javax.swing.JScrollPane helpScrollPane;
|
||||
private javax.swing.JTextArea helpTextArea;
|
||||
private javax.swing.JLabel lbWarnings;
|
||||
private javax.swing.JButton okButton;
|
||||
private javax.swing.JScrollPane tagScrollArea;
|
||||
private javax.swing.JTable tblTagNames;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
Reference in New Issue
Block a user