mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
4755 working multi-select context menu action for main window
This commit is contained in:
parent
27271d8942
commit
1fbc4fc373
@ -250,8 +250,7 @@ public final class DataResultTopComponent extends TopComponent implements DataRe
|
|||||||
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(AddBookmarkTagAction.BOOKMARK_SHORTCUT, "addBookmarkTag"); //NON-NLS
|
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(AddBookmarkTagAction.BOOKMARK_SHORTCUT, "addBookmarkTag"); //NON-NLS
|
||||||
getActionMap().put("addBookmarkTag", new AddBookmarkTagAction()); //NON-NLS
|
getActionMap().put("addBookmarkTag", new AddBookmarkTagAction()); //NON-NLS
|
||||||
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ExternalViewerShortcutAction.EXTERNAL_VIEWER_SHORTCUT, "useExternalViewer"); //NON-NLS
|
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ExternalViewerShortcutAction.EXTERNAL_VIEWER_SHORTCUT, "useExternalViewer"); //NON-NLS
|
||||||
|
getActionMap().put("useExternalViewer", ExternalViewerShortcutAction.getInstance()); //NON-NLS
|
||||||
getActionMap().put("useExternalViewer", new ExternalViewerShortcutAction()); //NON-NLS
|
|
||||||
putClientProperty(TopComponent.PROP_CLOSING_DISABLED, isMain);
|
putClientProperty(TopComponent.PROP_CLOSING_DISABLED, isMain);
|
||||||
putClientProperty(TopComponent.PROP_MAXIMIZATION_DISABLED, true);
|
putClientProperty(TopComponent.PROP_MAXIMIZATION_DISABLED, true);
|
||||||
putClientProperty(TopComponent.PROP_DRAGGING_DISABLED, true);
|
putClientProperty(TopComponent.PROP_DRAGGING_DISABLED, true);
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2013-2018 Basis Technology Corp.
|
* Copyright 2013-2018 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
@ -37,6 +37,7 @@ import org.sleuthkit.autopsy.actions.ReplaceContentTagAction;
|
|||||||
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
||||||
import org.sleuthkit.autopsy.datamodel.Reports.ReportNode;
|
import org.sleuthkit.autopsy.datamodel.Reports.ReportNode;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
|
||||||
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerShortcutAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
||||||
@ -82,7 +83,13 @@ public class DataModelActionsFactory {
|
|||||||
final FileNode fileNode = new FileNode(file);
|
final FileNode fileNode = new FileNode(file);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, fileNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, fileNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, fileNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, fileNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -90,24 +97,22 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Action> getActions(SlackFile slackFile, boolean isArtifactSource) {
|
public static List<Action> getActions(SlackFile slackFile, boolean isArtifactSource) {
|
||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), slackFile));
|
actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), slackFile));
|
||||||
@ -121,20 +126,20 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
final Collection<AbstractFile> selectedFilesList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
if(selectedFilesList.size() == 1) {
|
if (selectedFilesList.size() == 1) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -145,7 +150,13 @@ public class DataModelActionsFactory {
|
|||||||
LayoutFileNode layoutFileNode = new LayoutFileNode(file);
|
LayoutFileNode layoutFileNode = new LayoutFileNode(file);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, layoutFileNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, layoutFileNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, layoutFileNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, layoutFileNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());//
|
actionsList.add(ExtractAction.getInstance());//
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -153,20 +164,18 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -177,7 +186,13 @@ public class DataModelActionsFactory {
|
|||||||
DirectoryNode directoryNode = new DirectoryNode(directory);
|
DirectoryNode directoryNode = new DirectoryNode(directory);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -185,20 +200,18 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -209,7 +222,13 @@ public class DataModelActionsFactory {
|
|||||||
VirtualDirectoryNode directoryNode = new VirtualDirectoryNode(directory);
|
VirtualDirectoryNode directoryNode = new VirtualDirectoryNode(directory);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -217,31 +236,35 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Action> getActions(LocalDirectory directory, boolean isArtifactSource) {
|
public static List<Action> getActions(LocalDirectory directory, boolean isArtifactSource) {
|
||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), directory));
|
actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), directory));
|
||||||
LocalDirectoryNode directoryNode = new LocalDirectoryNode(directory);
|
LocalDirectoryNode directoryNode = new LocalDirectoryNode(directory);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, directoryNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, directoryNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -249,20 +272,18 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -273,7 +294,13 @@ public class DataModelActionsFactory {
|
|||||||
final LocalFileNode localFileNode = new LocalFileNode(file);
|
final LocalFileNode localFileNode = new LocalFileNode(file);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, localFileNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, localFileNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, localFileNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, localFileNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -281,20 +308,18 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -305,7 +330,13 @@ public class DataModelActionsFactory {
|
|||||||
final LocalFileNode localFileNode = new LocalFileNode(file);
|
final LocalFileNode localFileNode = new LocalFileNode(file);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, localFileNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, localFileNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, localFileNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, localFileNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -313,20 +344,18 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -354,13 +383,19 @@ public class DataModelActionsFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static List<Action> getActions(ContentTag contentTag, boolean isArtifactSource) {
|
public static List<Action> getActions(ContentTag contentTag, boolean isArtifactSource) {
|
||||||
|
|
||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), contentTag.getContent()));
|
actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), contentTag.getContent()));
|
||||||
final ContentTagNode tagNode = new ContentTagNode(contentTag);
|
final ContentTagNode tagNode = new ContentTagNode(contentTag);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, tagNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, tagNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, tagNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, tagNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -368,35 +403,38 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.add(DeleteContentTagAction.getInstance());
|
actionsList.add(DeleteContentTagAction.getInstance());
|
||||||
actionsList.add(ReplaceContentTagAction.getInstance());
|
actionsList.add(ReplaceContentTagAction.getInstance());
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static List<Action> getActions(BlackboardArtifactTag artifactTag, boolean isArtifactSource) {
|
public static List<Action> getActions(BlackboardArtifactTag artifactTag, boolean isArtifactSource) {
|
||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), artifactTag.getContent()));
|
actionsList.add(new ViewContextAction((isArtifactSource ? VIEW_SOURCE_FILE_IN_DIR : VIEW_FILE_IN_DIR), artifactTag.getContent()));
|
||||||
final BlackboardArtifactTagNode tagNode = new BlackboardArtifactTagNode(artifactTag);
|
final BlackboardArtifactTagNode tagNode = new BlackboardArtifactTagNode(artifactTag);
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, tagNode));
|
actionsList.add(new NewWindowViewAction(VIEW_IN_NEW_WINDOW, tagNode));
|
||||||
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, tagNode));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(OPEN_IN_EXTERNAL_VIEWER, tagNode));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
@ -404,27 +442,25 @@ public class DataModelActionsFactory {
|
|||||||
if (isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
if (selectedFilesList.size() == 1) {
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
if(isArtifactSource) {
|
if (isArtifactSource) {
|
||||||
final Collection<BlackboardArtifact> selectedArtifactsList =
|
final Collection<BlackboardArtifact> selectedArtifactsList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(BlackboardArtifact.class));
|
||||||
if(selectedArtifactsList.size() == 1) {
|
if (selectedArtifactsList.size() == 1) {
|
||||||
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteFileBlackboardArtifactTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.add(DeleteBlackboardArtifactTagAction.getInstance());
|
actionsList.add(DeleteBlackboardArtifactTagAction.getInstance());
|
||||||
actionsList.add(ReplaceBlackboardArtifactTagAction.getInstance());
|
actionsList.add(ReplaceBlackboardArtifactTagAction.getInstance());
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Action> getActions(Content content, boolean isArtifactSource) {
|
public static List<Action> getActions(Content content, boolean isArtifactSource) {
|
||||||
if (content instanceof File) {
|
if (content instanceof File) {
|
||||||
return getActions((File) content, isArtifactSource);
|
return getActions((File) content, isArtifactSource);
|
||||||
|
@ -28,6 +28,7 @@ import org.openide.util.Utilities;
|
|||||||
import org.sleuthkit.autopsy.actions.AddContentTagAction;
|
import org.sleuthkit.autopsy.actions.AddContentTagAction;
|
||||||
import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
|
import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
|
||||||
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
||||||
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerShortcutAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
||||||
@ -97,8 +98,7 @@ public class DirectoryNode extends AbstractFsContentNode<AbstractFile> {
|
|||||||
final Collection<AbstractFile> selectedFilesList = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
final Collection<AbstractFile> selectedFilesList = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
if (selectedFilesList.size() == 1) {
|
if (selectedFilesList.size() == 1) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList.toArray(new Action[actionsList.size()]);
|
return actionsList.toArray(new Action[actionsList.size()]);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2011-2018 Basis Technology Corp.
|
* Copyright 2011-2019 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -33,6 +33,7 @@ import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
|
|||||||
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
|
||||||
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerShortcutAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
||||||
@ -49,9 +50,9 @@ import org.sleuthkit.datamodel.TskData.TSK_FS_NAME_FLAG_ENUM;
|
|||||||
* children.
|
* children.
|
||||||
*/
|
*/
|
||||||
public class FileNode extends AbstractFsContentNode<AbstractFile> {
|
public class FileNode extends AbstractFsContentNode<AbstractFile> {
|
||||||
|
|
||||||
private static final Logger logger = Logger.getLogger(FileNode.class.getName());
|
private static final Logger logger = Logger.getLogger(FileNode.class.getName());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the path to the icon file that should be used to visually represent
|
* Gets the path to the icon file that should be used to visually represent
|
||||||
* an AbstractFile, using the file name extension to select the icon.
|
* an AbstractFile, using the file name extension to select the icon.
|
||||||
@ -160,7 +161,14 @@ public class FileNode extends AbstractFsContentNode<AbstractFile> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
actionsList.add(new NewWindowViewAction(Bundle.FileNode_getActions_viewInNewWin_text(), this));
|
actionsList.add(new NewWindowViewAction(Bundle.FileNode_getActions_viewInNewWin_text(), this));
|
||||||
actionsList.add(new ExternalViewerAction(Bundle.FileNode_getActions_openInExtViewer_text(), this));
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(
|
||||||
|
Bundle.FileNode_getActions_openInExtViewer_text(), this));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(ViewFileInTimelineAction.createViewFileAction(getContent()));
|
actionsList.add(ViewFileInTimelineAction.createViewFileAction(getContent()));
|
||||||
actionsList.add(null); // Creates an item separator
|
actionsList.add(null); // Creates an item separator
|
||||||
|
|
||||||
@ -168,12 +176,11 @@ public class FileNode extends AbstractFsContentNode<AbstractFile> {
|
|||||||
actionsList.add(null); // Creates an item separator
|
actionsList.add(null); // Creates an item separator
|
||||||
|
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
final Collection<AbstractFile> selectedFilesList = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if (1 == selectedFilesList.size()) {
|
if (1 == selectedFilesList.size()) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
if (FileTypeExtensions.getArchiveExtensions().contains("." + this.content.getNameExtension().toLowerCase())) {
|
if (FileTypeExtensions.getArchiveExtensions().contains("." + this.content.getNameExtension().toLowerCase())) {
|
||||||
try {
|
try {
|
||||||
if (this.content.getArtifacts(BlackboardArtifact.ARTIFACT_TYPE.TSK_ENCRYPTION_DETECTED).size() > 0) {
|
if (this.content.getArtifacts(BlackboardArtifact.ARTIFACT_TYPE.TSK_ENCRYPTION_DETECTED).size() > 0) {
|
||||||
actionsList.add(new ExtractArchiveWithPasswordAction(this.getContent()));
|
actionsList.add(new ExtractArchiveWithPasswordAction(this.getContent()));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2011-2018 Basis Technology Corp.
|
* Copyright 2011-2019 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -23,7 +23,6 @@ import java.util.Arrays;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.util.Utilities;
|
import org.openide.util.Utilities;
|
||||||
@ -31,6 +30,7 @@ import org.sleuthkit.autopsy.actions.AddContentTagAction;
|
|||||||
import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
|
import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
|
||||||
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
|
||||||
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerShortcutAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
@ -89,15 +89,19 @@ public class LayoutFileNode extends AbstractAbstractFileNode<LayoutFile> {
|
|||||||
actionsList.addAll(Arrays.asList(super.getActions(true)));
|
actionsList.addAll(Arrays.asList(super.getActions(true)));
|
||||||
actionsList.add(new NewWindowViewAction(
|
actionsList.add(new NewWindowViewAction(
|
||||||
NbBundle.getMessage(this.getClass(), "LayoutFileNode.getActions.viewInNewWin.text"), this));
|
NbBundle.getMessage(this.getClass(), "LayoutFileNode.getActions.viewInNewWin.text"), this));
|
||||||
actionsList.add(new ExternalViewerAction(
|
final Collection<AbstractFile> selectedFilesList
|
||||||
NbBundle.getMessage(this.getClass(), "LayoutFileNode.getActions.openInExtViewer.text"), this));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(
|
||||||
|
NbBundle.getMessage(this.getClass(), "LayoutFileNode.getActions.openInExtViewer.text"), this));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList
|
|
||||||
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if (selectedFilesList.size() == 1) {
|
if (selectedFilesList.size() == 1) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
|
|||||||
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerAction;
|
||||||
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerShortcutAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
||||||
@ -69,16 +70,20 @@ public class LocalFileNode extends AbstractAbstractFileNode<AbstractFile> {
|
|||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(
|
actionsList.add(new NewWindowViewAction(
|
||||||
NbBundle.getMessage(this.getClass(), "LocalFileNode.getActions.viewInNewWin.text"), this));
|
NbBundle.getMessage(this.getClass(), "LocalFileNode.getActions.viewInNewWin.text"), this));
|
||||||
actionsList.add(new ExternalViewerAction(
|
final Collection<AbstractFile> selectedFilesList
|
||||||
NbBundle.getMessage(this.getClass(), "LocalFileNode.getActions.openInExtViewer.text"), this));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
if (selectedFilesList.size() == 1) {
|
||||||
|
actionsList.add(new ExternalViewerAction(
|
||||||
|
NbBundle.getMessage(this.getClass(), "LocalFileNode.getActions.openInExtViewer.text"), this));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
|
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList
|
|
||||||
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if (selectedFilesList.size() == 1) {
|
if (selectedFilesList.size() == 1) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import org.openide.util.Utilities;
|
|||||||
import org.sleuthkit.autopsy.actions.AddContentTagAction;
|
import org.sleuthkit.autopsy.actions.AddContentTagAction;
|
||||||
import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
|
import org.sleuthkit.autopsy.actions.DeleteFileContentTagAction;
|
||||||
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
||||||
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerShortcutAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
import org.sleuthkit.autopsy.directorytree.ViewContextAction;
|
||||||
@ -87,13 +88,12 @@ public class SlackFileNode extends AbstractFsContentNode<AbstractFile> {
|
|||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
final Collection<AbstractFile> selectedFilesList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
if(selectedFilesList.size() == 1) {
|
if (selectedFilesList.size() == 1) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList.toArray(new Action[actionsList.size()]);
|
return actionsList.toArray(new Action[actionsList.size()]);
|
||||||
}
|
}
|
||||||
@ -112,7 +112,7 @@ public class SlackFileNode extends AbstractFsContentNode<AbstractFile> {
|
|||||||
// file based off it's extension
|
// file based off it's extension
|
||||||
static String getIconForFileType(AbstractFile file) {
|
static String getIconForFileType(AbstractFile file) {
|
||||||
|
|
||||||
return "org/sleuthkit/autopsy/images/file-icon.png"; //NON-NLS
|
return "org/sleuthkit/autopsy/images/file-icon.png"; //NON-NLS
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -122,7 +122,7 @@ public class SlackFileNode extends AbstractFsContentNode<AbstractFile> {
|
|||||||
// not will check if it has children using the Content API
|
// not will check if it has children using the Content API
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getItemType() {
|
public String getItemType() {
|
||||||
return getClass().getName();
|
return getClass().getName();
|
||||||
|
@ -19,16 +19,21 @@
|
|||||||
package org.sleuthkit.autopsy.datamodel;
|
package org.sleuthkit.autopsy.datamodel;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.swing.Action;
|
import javax.swing.Action;
|
||||||
import org.openide.util.NbBundle;
|
import org.openide.util.NbBundle;
|
||||||
|
import org.openide.util.Utilities;
|
||||||
import org.sleuthkit.autopsy.casemodule.datasourcesummary.ViewSummaryInformationAction;
|
import org.sleuthkit.autopsy.casemodule.datasourcesummary.ViewSummaryInformationAction;
|
||||||
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
import org.sleuthkit.autopsy.coreutils.ContextMenuExtensionPoint;
|
||||||
|
import org.sleuthkit.autopsy.directorytree.ExternalViewerShortcutAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
import org.sleuthkit.autopsy.directorytree.ExtractAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.FileSearchAction;
|
import org.sleuthkit.autopsy.directorytree.FileSearchAction;
|
||||||
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
import org.sleuthkit.autopsy.directorytree.NewWindowViewAction;
|
||||||
import org.sleuthkit.autopsy.ingest.runIngestModuleWizard.RunIngestModulesAction;
|
import org.sleuthkit.autopsy.ingest.runIngestModuleWizard.RunIngestModulesAction;
|
||||||
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
import org.sleuthkit.datamodel.SpecialDirectory;
|
import org.sleuthkit.datamodel.SpecialDirectory;
|
||||||
|
|
||||||
@ -36,7 +41,7 @@ import org.sleuthkit.datamodel.SpecialDirectory;
|
|||||||
* Parent class for special directory types (Local and Virtual)
|
* Parent class for special directory types (Local and Virtual)
|
||||||
*/
|
*/
|
||||||
public abstract class SpecialDirectoryNode extends AbstractAbstractFileNode<SpecialDirectory> {
|
public abstract class SpecialDirectoryNode extends AbstractAbstractFileNode<SpecialDirectory> {
|
||||||
|
|
||||||
public SpecialDirectoryNode(SpecialDirectory sd) {
|
public SpecialDirectoryNode(SpecialDirectory sd) {
|
||||||
super(sd);
|
super(sd);
|
||||||
}
|
}
|
||||||
|
@ -432,19 +432,23 @@ public class DataResultFilterNode extends FilterNode {
|
|||||||
actionsList.addAll(DataModelActionsFactory.getActions(c, false));
|
actionsList.addAll(DataModelActionsFactory.getActions(c, false));
|
||||||
}
|
}
|
||||||
if (n != null) {
|
if (n != null) {
|
||||||
|
final Collection<AbstractFile> selectedFilesList
|
||||||
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(new NewWindowViewAction(
|
actionsList.add(new NewWindowViewAction(
|
||||||
NbBundle.getMessage(this.getClass(), "DataResultFilterNode.action.viewInNewWin.text"), n));
|
NbBundle.getMessage(this.getClass(), "DataResultFilterNode.action.viewInNewWin.text"), n));
|
||||||
actionsList.add(new ExternalViewerAction(
|
if (selectedFilesList.size() == 1) {
|
||||||
NbBundle.getMessage(this.getClass(), "DataResultFilterNode.action.openInExtViewer.text"), n));
|
actionsList.add(new ExternalViewerAction(
|
||||||
|
NbBundle.getMessage(this.getClass(), "DataResultFilterNode.action.openInExtViewer.text"), n));
|
||||||
|
} else {
|
||||||
|
actionsList.add(ExternalViewerShortcutAction.getInstance());
|
||||||
|
}
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(null); // creates a menu separator
|
actionsList.add(null); // creates a menu separator
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
actionsList.add(AddBlackboardArtifactTagAction.getInstance());
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList
|
|
||||||
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
|
||||||
if (selectedFilesList.size() == 1) {
|
if (selectedFilesList.size() == 1) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
@ -61,8 +61,7 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
* (TskException ex) {
|
* (TskException ex) {
|
||||||
* Log.get(ExplorerNodeActionVisitor.class).log(Level.WARNING, "Error
|
* Log.get(ExplorerNodeActionVisitor.class).log(Level.WARNING, "Error
|
||||||
* getting show detail actions.", ex); return actions; }
|
* getting show detail actions.", ex); return actions; }
|
||||||
* actions.addAll(c.accept(instance));
|
* actions.addAll(c.accept(instance)); }
|
||||||
}
|
|
||||||
*/
|
*/
|
||||||
return actions;
|
return actions;
|
||||||
}
|
}
|
||||||
@ -76,8 +75,8 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
//TODO lst.add(new ExtractAction("Extract Image", img));
|
//TODO lst.add(new ExtractAction("Extract Image", img));
|
||||||
try {
|
try {
|
||||||
lst.add(new ExtractUnallocAction(
|
lst.add(new ExtractUnallocAction(
|
||||||
NbBundle.getMessage(this.getClass(), "ExplorerNodeActionVisitor.action.extUnallocToSingleFiles"), img));
|
NbBundle.getMessage(this.getClass(), "ExplorerNodeActionVisitor.action.extUnallocToSingleFiles"), img));
|
||||||
} catch (NoCurrentCaseException ex) {
|
} catch (NoCurrentCaseException ex) {
|
||||||
Logger.getLogger(ExplorerNodeActionVisitor.class.getName()).log(Level.SEVERE, "Exception while getting open case.", ex); //NON-NLS
|
Logger.getLogger(ExplorerNodeActionVisitor.class.getName()).log(Level.SEVERE, "Exception while getting open case.", ex); //NON-NLS
|
||||||
}
|
}
|
||||||
return lst;
|
return lst;
|
||||||
@ -92,8 +91,8 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
public List<? extends Action> visit(final Volume vol) {
|
public List<? extends Action> visit(final Volume vol) {
|
||||||
List<AbstractAction> lst = new ArrayList<>();
|
List<AbstractAction> lst = new ArrayList<>();
|
||||||
lst.add(new ExtractUnallocAction(
|
lst.add(new ExtractUnallocAction(
|
||||||
NbBundle.getMessage(this.getClass(), "ExplorerNodeActionVisitor.action.extUnallocToSingleFile"), vol));
|
NbBundle.getMessage(this.getClass(), "ExplorerNodeActionVisitor.action.extUnallocToSingleFile"), vol));
|
||||||
|
|
||||||
return lst;
|
return lst;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,13 +100,13 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
public List<? extends Action> visit(final Directory d) {
|
public List<? extends Action> visit(final Directory d) {
|
||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
final Collection<AbstractFile> selectedFilesList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
if(selectedFilesList.size() == 1) {
|
if (selectedFilesList.size() == 1) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -117,10 +116,10 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
if (!d.isDataSource()) {
|
if (!d.isDataSource()) {
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
final Collection<AbstractFile> selectedFilesList
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
if(selectedFilesList.size() == 1) {
|
if (selectedFilesList.size() == 1) {
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -128,16 +127,15 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<? extends Action> visit(final LocalDirectory d) {
|
public List<? extends Action> visit(final LocalDirectory d) {
|
||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
if (!d.isDataSource()) {
|
if (!d.isDataSource()) {
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
final Collection<AbstractFile> selectedFilesList
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
if (selectedFilesList.size() == 1) {
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -151,13 +149,11 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
final Collection<AbstractFile> selectedFilesList
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
if (selectedFilesList.size() == 1) {
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -167,13 +163,11 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
final Collection<AbstractFile> selectedFilesList
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
if (selectedFilesList.size() == 1) {
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
@ -183,13 +177,11 @@ public class ExplorerNodeActionVisitor extends ContentVisitor.Default<List<? ext
|
|||||||
List<Action> actionsList = new ArrayList<>();
|
List<Action> actionsList = new ArrayList<>();
|
||||||
actionsList.add(ExtractAction.getInstance());
|
actionsList.add(ExtractAction.getInstance());
|
||||||
actionsList.add(AddContentTagAction.getInstance());
|
actionsList.add(AddContentTagAction.getInstance());
|
||||||
|
final Collection<AbstractFile> selectedFilesList
|
||||||
final Collection<AbstractFile> selectedFilesList =
|
= new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
if (selectedFilesList.size() == 1) {
|
||||||
if(selectedFilesList.size() == 1) {
|
|
||||||
actionsList.add(DeleteFileContentTagAction.getInstance());
|
actionsList.add(DeleteFileContentTagAction.getInstance());
|
||||||
}
|
}
|
||||||
|
|
||||||
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
actionsList.addAll(ContextMenuExtensionPoint.getActions());
|
||||||
return actionsList;
|
return actionsList;
|
||||||
}
|
}
|
||||||
|
@ -39,10 +39,22 @@ public class ExternalViewerShortcutAction extends AbstractAction {
|
|||||||
|
|
||||||
public static final KeyStroke EXTERNAL_VIEWER_SHORTCUT = KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK);
|
public static final KeyStroke EXTERNAL_VIEWER_SHORTCUT = KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK);
|
||||||
|
|
||||||
public ExternalViewerShortcutAction() {
|
private ExternalViewerShortcutAction() {
|
||||||
super(Bundle.ExternalViewerShortcutAction_title_text());
|
super(Bundle.ExternalViewerShortcutAction_title_text());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This class is a singleton to support multi-selection of nodes, since
|
||||||
|
// org.openide.nodes.NodeOp.findActions(Node[] nodes) will only pick up an Action if every
|
||||||
|
// node in the array returns a reference to the same action object from Node.getActions(boolean).
|
||||||
|
private static ExternalViewerShortcutAction instance;
|
||||||
|
|
||||||
|
public static synchronized ExternalViewerShortcutAction getInstance() {
|
||||||
|
if (null == instance) {
|
||||||
|
instance = new ExternalViewerShortcutAction();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
final Collection<AbstractFile> selectedFiles = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
final Collection<AbstractFile> selectedFiles = new HashSet<>(Utilities.actionsGlobalContext().lookupAll(AbstractFile.class));
|
||||||
|
@ -263,7 +263,7 @@ public final class TimeLineTopComponent extends TopComponent implements Explorer
|
|||||||
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(AddBookmarkTagAction.BOOKMARK_SHORTCUT, "addBookmarkTag"); //NON-NLS
|
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(AddBookmarkTagAction.BOOKMARK_SHORTCUT, "addBookmarkTag"); //NON-NLS
|
||||||
getActionMap().put("addBookmarkTag", new AddBookmarkTagAction()); //NON-NLS
|
getActionMap().put("addBookmarkTag", new AddBookmarkTagAction()); //NON-NLS
|
||||||
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ExternalViewerShortcutAction.EXTERNAL_VIEWER_SHORTCUT, "useExternalViewer"); //NON-NLS
|
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ExternalViewerShortcutAction.EXTERNAL_VIEWER_SHORTCUT, "useExternalViewer"); //NON-NLS
|
||||||
getActionMap().put("useExternalViewer", new ExternalViewerShortcutAction()); //NON-NLS
|
getActionMap().put("useExternalViewer", ExternalViewerShortcutAction.getInstance()); //NON-NLS
|
||||||
this.controller = controller;
|
this.controller = controller;
|
||||||
|
|
||||||
//create linked result and content views
|
//create linked result and content views
|
||||||
|
@ -241,7 +241,7 @@ public final class ImageGalleryTopComponent extends TopComponent implements Expl
|
|||||||
setName(Bundle.CTL_ImageGalleryTopComponent());
|
setName(Bundle.CTL_ImageGalleryTopComponent());
|
||||||
initComponents();
|
initComponents();
|
||||||
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ExternalViewerShortcutAction.EXTERNAL_VIEWER_SHORTCUT, "useExternalViewer"); //NON-NLS
|
getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ExternalViewerShortcutAction.EXTERNAL_VIEWER_SHORTCUT, "useExternalViewer"); //NON-NLS
|
||||||
getActionMap().put("useExternalViewer", new ExternalViewerShortcutAction()); //NON-NLS
|
getActionMap().put("useExternalViewer", ExternalViewerShortcutAction.getInstance()); //NON-NLS
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -217,7 +217,7 @@ public abstract class DrawableTileBase extends DrawableUIBase {
|
|||||||
MenuItem externalViewer = new MenuItem("Open in External Viewer");
|
MenuItem externalViewer = new MenuItem("Open in External Viewer");
|
||||||
externalViewer.setOnAction(actionEvent
|
externalViewer.setOnAction(actionEvent
|
||||||
-> SwingUtilities.invokeLater(() -> {
|
-> SwingUtilities.invokeLater(() -> {
|
||||||
new ExternalViewerShortcutAction()
|
ExternalViewerShortcutAction.getInstance()
|
||||||
.actionPerformed(null);
|
.actionPerformed(null);
|
||||||
}));
|
}));
|
||||||
externalViewer.setAccelerator(OpenExternalViewerAction.EXTERNAL_VIEWER_SHORTCUT);
|
externalViewer.setAccelerator(OpenExternalViewerAction.EXTERNAL_VIEWER_SHORTCUT);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user