19 package org.sleuthkit.autopsy.actions;
21 import java.awt.event.ActionEvent;
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import java.util.Collections;
25 import java.util.HashMap;
26 import java.util.HashSet;
27 import java.util.List;
29 import java.util.TreeMap;
30 import java.util.logging.Level;
31 import javax.swing.AbstractAction;
32 import javax.swing.JMenu;
33 import javax.swing.JMenuItem;
34 import org.openide.util.NbBundle;
35 import org.openide.util.actions.Presenter;
50 abstract class AddTagAction
extends AbstractAction implements Presenter.Popup {
52 private static final long serialVersionUID = 1L;
53 private static final String NO_COMMENT =
"";
54 private final Collection<Content> content =
new HashSet<>();
56 AddTagAction(String menuText) {
61 public JMenuItem getPopupPresenter() {
72 Collection<Content> getContentToTag() {
73 return Collections.unmodifiableCollection(content);
85 public JMenuItem getMenuForContent(Collection<? extends Content> contentToTag) {
87 content.addAll(contentToTag);
98 @SuppressWarnings(
"NoopMethodInAbstractClass")
99 public
void actionPerformed(ActionEvent event) {
106 abstract protected String getActionDisplayName();
112 abstract protected void addTag(TagName tagName, String comment);
123 private static final long serialVersionUID = 1L;
126 super(getActionDisplayName());
129 Map<String, TagName> tagNamesMap = null;
131 Map<String, JMenu> tagSetMenuMap =
new HashMap<>();
132 List<JMenuItem> standardTagMenuitems =
new ArrayList<>();
139 if (!tagNamesMap.isEmpty()) {
140 for (Map.Entry<String, TagName> entry : tagNamesMap.entrySet()) {
141 TagName tagName = entry.getValue();
142 TagSet tagSet = tagsManager.
getTagSet(tagName);
145 if (tagSet != null) {
146 JMenu menu = tagSetMenuMap.get(tagSet.getName());
149 tagSetMenuMap.put(tagSet.getName(), menu);
151 }
else if (standardTagNames.contains(tagName.getDisplayName())) {
162 if (getItemCount() > 0) {
166 standardTagMenuitems.forEach((menuItem) -> {
170 tagSetMenuMap.values().forEach((menu) -> {
179 JMenuItem tagAndCommentItem =
new JMenuItem(
180 NbBundle.getMessage(
this.getClass(),
"AddTagAction.tagAndComment"));
181 tagAndCommentItem.addActionListener((ActionEvent e) -> {
183 if (null != tagNameAndComment) {
184 addTag(tagNameAndComment.getTagName(), tagNameAndComment.getComment());
187 add(tagAndCommentItem);
192 JMenuItem newTagMenuItem =
new JMenuItem(NbBundle.getMessage(
this.getClass(),
"AddTagAction.newTag"));
193 newTagMenuItem.addActionListener((ActionEvent e) -> {
195 if (null != tagName) {
196 addTag(tagName, NO_COMMENT);
211 JMenu menu =
new JMenu(tagSet.getName());
212 List<TagName> tagNameList = tagSet.getTagNames();
214 for (TagName tagName : tagNameList) {
229 String tagDisplayName = tagName.getDisplayName();
231 JMenuItem tagNameItem =
new JMenuItem(tagDisplayName + notableString);
237 tagNameItem.addActionListener((ActionEvent e) -> {
238 addTag(tagName, NO_COMMENT);
static final KeyStroke BOOKMARK_SHORTCUT
TagsManager getTagsManager()
synchronized static Logger getLogger(String name)
static Case getCurrentCaseThrows()
static TagName doDialog()