Autopsy  4.4.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  */
19 package org.sleuthkit.autopsy.directorytree;
20 
21 import java.util.ArrayList;
22 import java.util.Collection;
23 import java.util.Collections;
24 import java.util.HashSet;
25 import java.util.List;
26 import javax.swing.AbstractAction;
27 import javax.swing.Action;
28 import org.openide.util.NbBundle;
29 import org.openide.util.Utilities;
33 import org.sleuthkit.datamodel.AbstractFile;
34 import org.sleuthkit.datamodel.Content;
35 import org.sleuthkit.datamodel.ContentVisitor;
36 import org.sleuthkit.datamodel.DerivedFile;
37 import org.sleuthkit.datamodel.Directory;
38 import org.sleuthkit.datamodel.FileSystem;
39 import org.sleuthkit.datamodel.Image;
40 import org.sleuthkit.datamodel.LocalFile;
41 import org.sleuthkit.datamodel.LocalDirectory;
42 import org.sleuthkit.datamodel.VirtualDirectory;
43 import org.sleuthkit.datamodel.Volume;
44 
45 public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? extends Action>> {
46 
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  //TODO lst.add(new ExtractAction("Extract Image", img));
74  lst.add(new ExtractUnallocAction(
75  NbBundle.getMessage(this.getClass(), "ExplorerNodeActionVisitor.action.extUnallocToSingleFiles"), img));
76  return lst;
77  }
78 
79  @Override
80  public List<? extends Action> visit(final FileSystem fs) {
81  return new ArrayList<>();
82  }
83 
84  @Override
85  public List<? extends Action> visit(final Volume vol) {
86  List<AbstractAction> lst = new ArrayList<>();
87  lst.add(new ExtractUnallocAction(
88  NbBundle.getMessage(this.getClass(), "ExplorerNodeActionVisitor.action.extUnallocToSingleFile"), vol));
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.addAll(ContextMenuExtensionPoint.getActions());
121  return actionsList;
122  }
123 
124  @Override
125  public List<? extends Action> visit(final LocalDirectory d) {
126  List<Action> actionsList = new ArrayList<>();
127  if (!d.isDataSource()) {
128  actionsList.add(AddContentTagAction.getInstance());
129 
130  final Collection<AbstractFile> selectedFilesList =
131  new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
132  if(selectedFilesList.size() == 1) {
133  actionsList.add(DeleteFileContentTagAction.getInstance());
134  }
135  }
136  actionsList.add(ExtractAction.getInstance());
137  actionsList.addAll(ContextMenuExtensionPoint.getActions());
138  return actionsList;
139  }
140 
141  @Override
142  public List<? extends Action> visit(final DerivedFile d) {
143  List<Action> actionsList = new ArrayList<>();
144  actionsList.add(ExtractAction.getInstance());
145  actionsList.add(AddContentTagAction.getInstance());
146 
147  final Collection<AbstractFile> selectedFilesList =
148  new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
149  if(selectedFilesList.size() == 1) {
150  actionsList.add(DeleteFileContentTagAction.getInstance());
151  }
152 
153  actionsList.addAll(ContextMenuExtensionPoint.getActions());
154  return actionsList;
155  }
156 
157  @Override
158  public List<? extends Action> visit(final LocalFile d) {
159  List<Action> actionsList = new ArrayList<>();
160  actionsList.add(ExtractAction.getInstance());
161  actionsList.add(AddContentTagAction.getInstance());
162 
163  final Collection<AbstractFile> selectedFilesList =
164  new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
165  if(selectedFilesList.size() == 1) {
166  actionsList.add(DeleteFileContentTagAction.getInstance());
167  }
168 
169  actionsList.addAll(ContextMenuExtensionPoint.getActions());
170  return actionsList;
171  }
172 
173  @Override
174  public List<? extends Action> visit(final org.sleuthkit.datamodel.File d) {
175  List<Action> actionsList = new ArrayList<>();
176  actionsList.add(ExtractAction.getInstance());
177  actionsList.add(AddContentTagAction.getInstance());
178 
179  final Collection<AbstractFile> selectedFilesList =
180  new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
181  if(selectedFilesList.size() == 1) {
182  actionsList.add(DeleteFileContentTagAction.getInstance());
183  }
184 
185  actionsList.addAll(ContextMenuExtensionPoint.getActions());
186  return actionsList;
187  }
188 
189  @Override
190  protected List<? extends Action> defaultVisit(Content di) {
191  return Collections.<Action>emptyList();
192  }
193 
194 }
static synchronized ExtractAction getInstance()
static synchronized DeleteFileContentTagAction getInstance()
List<?extends Action > visit(final org.sleuthkit.datamodel.File d)
static synchronized AddContentTagAction getInstance()

Copyright © 2012-2016 Basis Technology. Generated on: Fri Sep 29 2017
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.