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.List;
25 import java.util.Observable;
26 import java.util.Observer;
27 import java.util.logging.Level;
28 import org.openide.nodes.ChildFactory;
29 import org.openide.nodes.Children;
30 import org.openide.nodes.Node;
31 import org.openide.nodes.Sheet;
32 import org.openide.util.NbBundle;
33 import org.openide.util.lookup.Lookups;
50 public class Tags implements AutopsyVisitableItem {
57 private final String
ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
61 public <T> T accept(AutopsyItemVisitor<T> v) {
89 super(Children.create(
new TagNameNodeFactory(),
true), Lookups.singleton(DISPLAY_NAME));
90 super.setName(DISPLAY_NAME);
91 super.setDisplayName(DISPLAY_NAME);
92 this.setIconBaseWithExtension(ICON_PATH);
102 return v.
visit(
this);
107 Sheet propertySheet = super.createSheet();
108 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
109 if (properties == null) {
110 properties = Sheet.createPropertiesSet();
111 propertySheet.put(properties);
113 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"TagsNode.createSheet.name.name"), NbBundle.getMessage(
this.getClass(),
"TagsNode.createSheet.name.displayName"),
"", getName()));
114 return propertySheet;
120 private final PropertyChangeListener
pcl =
new PropertyChangeListener() {
122 @SuppressWarnings(
"deprecation")
123 public void propertyChange(PropertyChangeEvent evt) {
124 String eventType = evt.getPropertyName();
141 if (evt.getNewValue() == null) {
154 tagResults.addObserver(
this);
162 tagResults.deleteObserver(
this);
169 Collections.sort(tagNamesInUse);
170 keys.addAll(tagNamesInUse);
183 public void update(Observable o, Object arg) {
195 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
202 setName(tagName.getDisplayName());
204 if (tagName.getDisplayName().equals(NbBundle.getMessage(
this.getClass(),
"TagNameNode.bookmark.text"))) {
205 setIconBaseWithExtension(BOOKMARK_TAG_ICON_PATH);
207 setIconBaseWithExtension(ICON_PATH);
209 tagResults.addObserver(
this);
221 setDisplayName(tagName.
getDisplayName() +
" (" + tagsCount +
")");
226 Sheet propertySheet = super.createSheet();
227 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
228 if (properties == null) {
229 properties = Sheet.createPropertiesSet();
230 propertySheet.put(properties);
232 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"TagNameNode.createSheet.name.name"), NbBundle.getMessage(
this.getClass(),
"TagNameNode.createSheet.name.displayName"), tagName.
getDescription(), getName()));
233 return propertySheet;
240 return v.
visit(
this);
249 public void update(Observable o, Object arg) {
270 keys.add(CONTENT_TAG_TYPE_NODE_KEY);
271 keys.add(BLACKBOARD_ARTIFACT_TAG_TYPE_NODE_KEY);
277 if (CONTENT_TAG_TYPE_NODE_KEY.equals(key)) {
279 }
else if (BLACKBOARD_ARTIFACT_TAG_TYPE_NODE_KEY.equals(key)) {
298 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
303 super.setName(CONTENT_DISPLAY_NAME);
305 this.setIconBaseWithExtension(ICON_PATH);
306 tagResults.addObserver(
this);
316 super.setDisplayName(CONTENT_DISPLAY_NAME +
" (" + tagsCount +
")");
321 Sheet propertySheet = super.createSheet();
322 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
323 if (properties == null) {
324 properties = Sheet.createPropertiesSet();
325 propertySheet.put(properties);
327 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"ContentTagTypeNode.createSheet.name.name"), NbBundle.getMessage(
this.getClass(),
"ContentTagTypeNode.createSheet.name.displayName"),
"", getName()));
328 return propertySheet;
333 return v.
visit(
this);
342 public void update(Observable o, Object arg) {
353 tagResults.addObserver(
this);
370 return new ContentTagNode(key);
374 public void update(Observable o, Object arg) {
388 private final String ICON_PATH =
"org/sleuthkit/autopsy/images/tag-folder-blue-icon-16.png";
393 super.setName(ARTIFACT_DISPLAY_NAME);
394 this.setIconBaseWithExtension(ICON_PATH);
396 tagResults.addObserver(
this);
406 super.setDisplayName(ARTIFACT_DISPLAY_NAME +
" (" + tagsCount +
")");
411 Sheet propertySheet = super.createSheet();
412 Sheet.Set properties = propertySheet.get(Sheet.PROPERTIES);
413 if (properties == null) {
414 properties = Sheet.createPropertiesSet();
415 propertySheet.put(properties);
417 properties.put(
new NodeProperty<>(NbBundle.getMessage(
this.getClass(),
"BlackboardArtifactTagTypeNode.createSheet.name.name"), NbBundle.getMessage(
this.getClass(),
"BlackboardArtifactTagTypeNode.createSheet.name.displayName"),
"", getName()));
418 return propertySheet;
423 return v.
visit(
this);
432 public void update(Observable o, Object arg) {
446 protected boolean createKeys(List<BlackboardArtifactTag> keys) {
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)
TagsManager getTagsManager()
void addIngestJobEventListener(final PropertyChangeListener listener)
static synchronized void removePropertyChangeListener(PropertyChangeListener listener)
void addIngestModuleEventListener(final PropertyChangeListener listener)
static synchronized void addPropertyChangeListener(PropertyChangeListener listener)
static Case getCurrentCase()
static Logger getLogger(String name)