19 package org.sleuthkit.autopsy.datamodel;
21 import java.beans.PropertyChangeEvent;
22 import java.beans.PropertyChangeListener;
23 import java.util.Collections;
24 import java.util.EnumSet;
25 import java.util.List;
26 import java.util.Objects;
27 import java.util.Observable;
28 import java.util.Observer;
30 import java.util.logging.Level;
31 import org.openide.nodes.ChildFactory;
32 import org.openide.nodes.Children;
33 import org.openide.nodes.Node;
34 import org.openide.nodes.Sheet;
35 import org.openide.util.NbBundle;
36 import org.openide.util.lookup.Lookups;
60 private final static String
DISPLAY_NAME = NbBundle.getMessage(
RootNode.class,
"TagsNode.displayName.text");
62 private final String
ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
71 this.datasourceObjId = dsObjId;
83 long filteringDataSourceObjId() {
88 public <T> T accept(AutopsyItemVisitor<T> visitor) {
89 return visitor.visit(
this);
114 super(Children.create(
new TagNameNodeFactory(objId),
true), Lookups.singleton(DISPLAY_NAME));
115 super.setName(DISPLAY_NAME);
116 super.setDisplayName(DISPLAY_NAME);
117 this.setIconBaseWithExtension(ICON_PATH);
127 return visitor.
visit(
this);
132 Sheet propertySheet = super.createSheet();
133 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
134 if (properties == null) {
135 properties = Sheet.createPropertiesSet();
136 propertySheet.put(properties);
138 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"TagsNode.createSheet.name.name"),
139 NbBundle.getMessage(
this.getClass(),
"TagsNode.createSheet.name.displayName"),
"", getName()));
140 return propertySheet;
145 return getClass().getName();
167 private final PropertyChangeListener
pcl =
new PropertyChangeListener() {
169 public void propertyChange(PropertyChangeEvent evt) {
170 String eventType = evt.getPropertyName();
209 if (evt.getNewValue() == null) {
222 this.datasourceObjId = objId;
232 tagResults.addObserver(
this);
240 tagResults.deleteObserver(
this);
246 List<TagName> tagNamesInUse;
248 String userName = System.getProperty(USER_NAME_PROPERTY);
257 Collections.sort(tagNamesInUse);
258 keys.addAll(tagNamesInUse);
271 public void update(Observable o, Object arg) {
283 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
288 super(Children.create(
new TagTypeNodeFactory(tagName),
true), Lookups.singleton(NbBundle.getMessage(
TagNameNode.class,
"TagNameNode.namePlusTags.text", tagName.getDisplayName())));
290 setName(tagName.getDisplayName());
292 if (tagName.getDisplayName().equals(NbBundle.getMessage(
this.getClass(),
"TagNameNode.bookmark.text"))) {
293 setIconBaseWithExtension(BOOKMARK_TAG_ICON_PATH);
295 setIconBaseWithExtension(ICON_PATH);
297 tagResults.addObserver(
this);
305 String userName = System.getProperty(USER_NAME_PROPERTY);
323 Logger.
getLogger(
TagNameNode.class.getName()).log(Level.SEVERE,
"Failed to get tags count for " + tagName.getDisplayName() +
" tag name", ex);
325 setDisplayName(tagName.getDisplayName() +
" \u200E(\u200E" + tagsCount +
")\u200E");
330 Sheet propertySheet = super.createSheet();
331 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
332 if (properties == null) {
333 properties = Sheet.createPropertiesSet();
334 propertySheet.put(properties);
336 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"TagNameNode.createSheet.name.name"),
337 NbBundle.getMessage(
this.getClass(),
"TagNameNode.createSheet.name.displayName"), tagName.getDescription(), getName()));
338 return propertySheet;
345 return visitor.
visit(
this);
354 public void update(Observable o, Object arg) {
360 return getClass().getName();
381 keys.add(CONTENT_TAG_TYPE_NODE_KEY);
382 keys.add(BLACKBOARD_ARTIFACT_TAG_TYPE_NODE_KEY);
388 if (CONTENT_TAG_TYPE_NODE_KEY.equals(key)) {
390 }
else if (BLACKBOARD_ARTIFACT_TAG_TYPE_NODE_KEY.equals(key)) {
409 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
415 super.setName(CONTENT_DISPLAY_NAME);
417 this.setIconBaseWithExtension(ICON_PATH);
418 tagResults.addObserver(
this);
426 String userName = System.getProperty(USER_NAME_PROPERTY);
438 super.setDisplayName(CONTENT_DISPLAY_NAME +
" (" + tagsCount +
")");
443 Sheet propertySheet = super.createSheet();
444 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
445 if (properties == null) {
446 properties = Sheet.createPropertiesSet();
447 propertySheet.put(properties);
449 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"ContentTagTypeNode.createSheet.name.name"),
450 NbBundle.getMessage(
this.getClass(),
"ContentTagTypeNode.createSheet.name.displayName"),
"", getName()));
451 return propertySheet;
456 return visitor.
visit(
this);
465 public void update(Observable o, Object arg) {
471 return getClass().getName();
482 tagResults.addObserver(
this);
493 String userName = System.getProperty(USER_NAME_PROPERTY);
494 for (ContentTag tag : contentTags) {
495 if (userName.equals(tag.getUserName())) {
500 keys.addAll(contentTags);
511 return new ContentTagNode(key);
515 public void update(Observable o, Object arg) {
531 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
536 super.setName(ARTIFACT_DISPLAY_NAME);
537 this.setIconBaseWithExtension(ICON_PATH);
539 tagResults.addObserver(
this);
546 String userName = System.getProperty(USER_NAME_PROPERTY);
558 super.setDisplayName(ARTIFACT_DISPLAY_NAME +
" (" + tagsCount +
")");
563 Sheet propertySheet = super.createSheet();
564 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
565 if (properties == null) {
566 properties = Sheet.createPropertiesSet();
567 propertySheet.put(properties);
569 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"BlackboardArtifactTagTypeNode.createSheet.name.name"),
570 NbBundle.getMessage(
this.getClass(),
"BlackboardArtifactTagTypeNode.createSheet.name.displayName"),
"", getName()));
571 return propertySheet;
576 return visitor.
visit(
this);
585 public void update(Observable o, Object arg) {
591 return getClass().getName();
602 tagResults.addObserver(
this);
606 protected boolean createKeys(List<BlackboardArtifactTag> keys) {
613 String userName = System.getProperty(USER_NAME_PROPERTY);
614 for (BlackboardArtifactTag tag : artifactTags) {
615 if (userName.equals(tag.getUserName())) {
620 keys.addAll(artifactTags);
635 public void update(Observable o, Object arg) {
void removeIngestModuleEventListener(final PropertyChangeListener listener)
void update(Observable o, Object arg)
static synchronized IngestManager getInstance()
Node createNodeForKey(ContentTag key)
ContentTagTypeNode(TagName tagName)
void update(Observable o, Object arg)
T visit(DataSourcesNode in)
void removeIngestJobEventListener(final PropertyChangeListener listener)
boolean createKeys(List< ContentTag > keys)
static boolean showOnlyCurrentUserTags()
TagsManager getTagsManager()
void addIngestJobEventListener(final PropertyChangeListener listener)
static Boolean getGroupItemsInTreeByDataSource()
BLACKBOARD_ARTIFACT_TAG_ADDED
void addIngestModuleEventListener(final PropertyChangeListener listener)
synchronized static Logger getLogger(String name)
static Case getCurrentCaseThrows()
static void addEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
static void removeEventTypeSubscriber(Set< Events > eventTypes, PropertyChangeListener subscriber)
BLACKBOARD_ARTIFACT_TAG_DELETED