Autopsy 4.22.1
Graphical digital forensics platform for The Sleuth Kit and other tools.
ExplorerNodeActionVisitor.java
Go to the documentation of this file.
1/*
2 * Autopsy Forensic Browser
3 *
4 * Copyright 2011-2017 Basis Technology Corp.
5 * Contact: carrier <at> sleuthkit <dot> org
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 */
19package org.sleuthkit.autopsy.directorytree;
20
21import java.util.ArrayList;
22import java.util.Collection;
23import java.util.Collections;
24import java.util.HashSet;
25import java.util.List;
26import javax.swing.AbstractAction;
27import javax.swing.Action;
28import org.openide.util.NbBundle;
29import org.openide.util.Utilities;
30import org.sleuthkit.autopsy.actions.AddContentTagAction;
31import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
32import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
33import org.sleuthkit.datamodel.AbstractFile;
34import org.sleuthkit.datamodel.Content;
35import org.sleuthkit.datamodel.ContentVisitor;
36import org.sleuthkit.datamodel.DerivedFile;
37import org.sleuthkit.datamodel.Directory;
38import org.sleuthkit.datamodel.FileSystem;
39import org.sleuthkit.datamodel.Image;
40import org.sleuthkit.datamodel.LocalFile;
41import org.sleuthkit.datamodel.LocalDirectory;
42import org.sleuthkit.datamodel.VirtualDirectory;
43import org.sleuthkit.datamodel.Volume;
44
45public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? extends Action>> {
46
47 private final static ExplorerNodeActionVisitor instance = new ExplorerNodeActionVisitor();
48
49 public static List<Action> getActions(Content c) {
50 List<Action> actions = new ArrayList<>();
51
52 actions.addAll(c.accept(instance));
53 //TODO: fix this
54 /*
55 * while (c.isOnto()) { try { List<? extends Content> children =
56 * c.getChildren(); if (!children.isEmpty()) { c =
57 * c.getChildren().get(0); } else { return actions; } } catch
58 * (TskException ex) {
59 * Log.get(ExplorerNodeActionVisitor.class).log(Level.WARNING, "Error
60 * getting show detail actions.", ex); return actions; }
61 * actions.addAll(c.accept(instance));
62 }
63 */
64 return actions;
65 }
66
68 }
69
70 @Override
71 public List<? extends Action> visit(final Image img) {
72 List<Action> lst = new ArrayList<>();
73 lst.add(new ExtractUnallocAction(
74 NbBundle.getMessage(this.getClass(), "ExplorerNodeActionVisitor.action.extUnallocToSingleFiles"), img));
75 return lst;
76 }
77
78 @Override
79 public List<? extends Action> visit(final FileSystem fs) {
80 return new ArrayList<>();
81 }
82
83 @Override
84 public List<? extends Action> visit(final Volume vol) {
85 List<AbstractAction> lst = new ArrayList<>();
86 lst.add(new ExtractUnallocAction(
87 NbBundle.getMessage(this.getClass(), "ExplorerNodeActionVisitor.action.extUnallocToSingleFile"), vol));
88
89 return lst;
90 }
91
92 @Override
93 public List<? extends Action> visit(final Directory d) {
94 List<Action> actionsList = new ArrayList<>();
95 actionsList.add(AddContentTagAction.getInstance());
96
97 final Collection<AbstractFile> selectedFilesList =
98 new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
99 if(selectedFilesList.size() == 1) {
100 actionsList.add(DeleteFileContentTagAction.getInstance());
101 }
102
103 actionsList.addAll(ContextMenuExtensionPoint.getActions());
104 return actionsList;
105 }
106
107 @Override
108 public List<? extends Action> visit(final VirtualDirectory d) {
109 List<Action> actionsList = new ArrayList<>();
110 if (!d.isDataSource()) {
111 actionsList.add(AddContentTagAction.getInstance());
112
113 final Collection<AbstractFile> selectedFilesList =
114 new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
115 if(selectedFilesList.size() == 1) {
116 actionsList.add(DeleteFileContentTagAction.getInstance());
117 }
118 }
119 actionsList.add(ExtractAction.getInstance());
120 actionsList.add(ExportCSVAction.getInstance());
121 actionsList.addAll(ContextMenuExtensionPoint.getActions());
122 return actionsList;
123 }
124
125 @Override
126 public List<? extends Action> visit(final LocalDirectory d) {
127 List<Action> actionsList = new ArrayList<>();
128 if (!d.isDataSource()) {
129 actionsList.add(AddContentTagAction.getInstance());
130
131 final Collection<AbstractFile> selectedFilesList =
132 new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
133 if(selectedFilesList.size() == 1) {
134 actionsList.add(DeleteFileContentTagAction.getInstance());
135 }
136 }
137 actionsList.add(ExtractAction.getInstance());
138 actionsList.add(ExportCSVAction.getInstance());
139 actionsList.addAll(ContextMenuExtensionPoint.getActions());
140 return actionsList;
141 }
142
143 @Override
144 public List<? extends Action> visit(final DerivedFile d) {
145 List<Action> actionsList = new ArrayList<>();
146 actionsList.add(ExtractAction.getInstance());
147 actionsList.add(ExportCSVAction.getInstance());
148 actionsList.add(AddContentTagAction.getInstance());
149
150 final Collection<AbstractFile> selectedFilesList =
151 new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
152 if(selectedFilesList.size() == 1) {
153 actionsList.add(DeleteFileContentTagAction.getInstance());
154 }
155
156 actionsList.addAll(ContextMenuExtensionPoint.getActions());
157 return actionsList;
158 }
159
160 @Override
161 public List<? extends Action> visit(final LocalFile d) {
162 List<Action> actionsList = new ArrayList<>();
163 actionsList.add(ExtractAction.getInstance());
164 actionsList.add(ExportCSVAction.getInstance());
165 actionsList.add(AddContentTagAction.getInstance());
166
167 final Collection<AbstractFile> selectedFilesList =
168 new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
169 if(selectedFilesList.size() == 1) {
170 actionsList.add(DeleteFileContentTagAction.getInstance());
171 }
172
173 actionsList.addAll(ContextMenuExtensionPoint.getActions());
174 return actionsList;
175 }
176
177 @Override
178 public List<? extends Action> visit(final org.sleuthkit.datamodel.File d) {
179 List<Action> actionsList = new ArrayList<>();
180 actionsList.add(ExtractAction.getInstance());
181 actionsList.add(ExportCSVAction.getInstance());
182 actionsList.add(AddContentTagAction.getInstance());
183
184 final Collection<AbstractFile> selectedFilesList =
185 new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
186 if(selectedFilesList.size() == 1) {
187 actionsList.add(DeleteFileContentTagAction.getInstance());
188 }
189
190 actionsList.addAll(ContextMenuExtensionPoint.getActions());
191 return actionsList;
192 }
193
194 @Override
195 protected List<? extends Action> defaultVisit(Content di) {
196 return Collections.<Action>emptyList();
197 }
198
199}
static synchronized AddContentTagAction getInstance()
static synchronized DeleteFileContentTagAction getInstance()
List<? extends Action > visit(final org.sleuthkit.datamodel.File d)
static synchronized ExportCSVAction getInstance()
static synchronized ExtractAction getInstance()

Copyright © 2012-2024 Sleuth Kit Labs. Generated on:
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.