19 package org.sleuthkit.autopsy.directorytree;
21 import java.awt.event.ActionEvent;
22 import java.beans.PropertyVetoException;
23 import java.text.MessageFormat;
24 import java.util.ArrayList;
25 import java.util.Arrays;
26 import java.util.List;
27 import java.util.logging.Level;
28 import javax.swing.AbstractAction;
29 import javax.swing.Action;
30 import org.openide.explorer.ExplorerManager;
31 import org.openide.nodes.AbstractNode;
32 import org.openide.nodes.FilterNode;
33 import org.openide.nodes.Node;
34 import org.openide.nodes.Sheet;
35 import org.openide.util.NbBundle;
54 import org.
sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
109 List<Action> actions =
new ArrayList<>();
112 List<Action> accept = originalNode.
accept(getActionsDIV);
113 if (accept != null) {
114 actions.addAll(accept);
119 return actions.toArray(
new Action[actions.size()]);
130 final Node original = this.getOriginal();
136 final DisplayableItemNode originalNode = (DisplayableItemNode) this.getOriginal();
137 return originalNode.
accept(getPreferredActionsDIV);
142 Node.PropertySet[] propertySets = super.getPropertySets();
144 for (
int i = 0; i < propertySets.length; i++) {
145 Node.PropertySet ps = propertySets[i];
147 if (ps.getName().equals(Sheet.PROPERTIES)) {
148 Sheet.Set newPs =
new Sheet.Set();
149 newPs.setName(ps.getName());
150 newPs.setDisplayName(ps.getDisplayName());
151 newPs.setShortDescription(ps.getShortDescription());
153 newPs.put(ps.getProperties());
155 propertySets[i] = newPs;
183 return ((DisplayableItemNode) getOriginal()).getChildNodeSelectionInfo();
205 filterArtifacts = SelectionContext.getSelectionContext(arg).equals(SelectionContext.DATA_SOURCES);
217 BlackboardArtifact art = key.getLookup().lookup(BlackboardArtifact.class);
218 if (art != null && filterArtifacts
219 && ((FilterNodeUtils.showMessagesInDatasourceTree() ==
false)
220 || (FilterNodeUtils.showMessagesInDatasourceTree()
221 && art.getArtifactTypeID() != BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG.getTypeID()
222 && art.getArtifactTypeID() != BlackboardArtifact.ARTIFACT_TYPE.TSK_MESSAGE.getTypeID()))) {
230 @NbBundle.Messages(
"DataResultFilterNode.viewSourceArtifact.text=View Source Result")
255 return Arrays.asList(ditem.getActions(
true));
297 Action preferredAction = ban.getPreferredAction();
298 if (preferredAction instanceof AbstractAction) {
299 return (AbstractAction) preferredAction;
304 if ((artifact.getArtifactTypeID() == ARTIFACT_TYPE.TSK_EMAIL_MSG.getTypeID())
305 || (artifact.getArtifactTypeID() == ARTIFACT_TYPE.TSK_MESSAGE.getTypeID())) {
306 if (artifact.hasChildren()) {
310 }
catch (TskCoreException ex) {
311 LOGGER.log(Level.SEVERE, MessageFormat.format(
"Error getting children from blackboard artifact{0}.", artifact.getArtifactID()), ex);
314 NbBundle.getMessage(
this.getClass(),
"DataResultFilterNode.action.viewInDir.text"), ban);
330 if (fn.hasContentChildren()) {
339 if (dfn.hasContentChildren()) {
348 return reportNode.getPreferredAction();
369 private AbstractAction
openChild(
final AbstractNode dataModelNode) {
375 if (sourceEm == null || sourceEm.getSelectedNodes().length == 0) {
378 final Node currentSelectionInDirectoryTree = sourceEm.getSelectedNodes()[0];
380 return new AbstractAction() {
382 public void actionPerformed(ActionEvent e) {
383 if (currentSelectionInDirectoryTree != null) {
385 final org.openide.nodes.Children children = currentSelectionInDirectoryTree.getChildren();
387 Node newSelection = children.findChild(dataModelNode.getName());
396 if (newSelection != null) {
398 sourceEm.setExploredContextAndSelection(newSelection,
new Node[]{newSelection});
399 }
catch (PropertyVetoException ex) {
401 logger.log(Level.WARNING,
"Error: can't open the selected directory.", ex);
418 if (sourceEm == null) {
422 Node[] selectedFilterNodes = sourceEm.getSelectedNodes();
423 Node selectedFilterNode = selectedFilterNodes[0];
424 final Node parentNode = selectedFilterNode.getParentNode();
426 return new AbstractAction() {
428 public void actionPerformed(ActionEvent e) {
430 sourceEm.setSelectedNodes(
new Node[]{parentNode});
431 }
catch (PropertyVetoException ex) {
433 logger.log(Level.WARNING,
"Error: can't open the parent directory.", ex);
AbstractAction openChild(final AbstractNode dataModelNode)
AbstractAction defaultVisit(DisplayableItemNode c)
AbstractAction visit(BlackboardArtifactNode ban)
AbstractAction visit(InstanceCountNode icn)
static final String DOTDIR
abstract< T > T accept(DisplayableItemNodeVisitor< T > visitor)
DataResultFilterNode(Node node, ExplorerManager em)
NodeSelectionInfo getChildNodeSelectionInfo()
Node.PropertySet[] getPropertySets()
static final String DOTDOTDIR
static final DisplayableItemNodeVisitor< List< Action > > getActionsDIV
AbstractAction visit(CaseDBCommonAttributeInstanceNode fin)
DataResultFilterChildren(Node arg, ExplorerManager sourceEm)
AbstractAction visit(Reports.ReportNode reportNode)
Action[] getActions(boolean context)
void setChildNodeSelectionInfo(NodeSelectionInfo selectedChildNodeInfo)
AbstractAction visit(LocalFileNode dfn)
static final String HIDE_PARENT
Action getPreferredAction()
final ExplorerManager sourceEm
AbstractAction openParent(AbstractNode node)
final boolean filterArtifacts
AbstractAction visit(CommonAttributeValueNode md5n)
final DisplayableItemNodeVisitor< AbstractAction > getPreferredActionsDIV
Action[] getActions(boolean popup)
AbstractAction visit(InstanceDataSourceNode icn)
DataResultFilterNode(Node node)
AbstractAction visit(InstanceCaseNode icn)
AbstractAction visit(FileTypesNode fileTypes)
BlackboardArtifact getArtifact()
AbstractAction visit(FileNode fn)
synchronized static Logger getLogger(String name)
static final Logger LOGGER
AbstractAction visit(DirectoryNode dn)
AbstractAction visit(CentralRepoCommonAttributeInstanceNode iccan)
Node[] createNodes(Node key)
final ExplorerManager sourceEm