mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 16:06:15 +00:00
Always select table viewer if child node selected
This commit is contained in:
parent
7f94c769f4
commit
bbeb967bea
@ -39,6 +39,7 @@ import org.sleuthkit.autopsy.casemodule.Case;
|
|||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContent;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataContent;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResult;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResult;
|
||||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||||
|
import org.sleuthkit.autopsy.datamodel.NodeSelectionInfo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Swing JPanel with a JTabbedPane child component. The tabbed pane contains
|
* A Swing JPanel with a JTabbedPane child component. The tabbed pane contains
|
||||||
@ -66,6 +67,7 @@ import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
|||||||
public class DataResultPanel extends javax.swing.JPanel implements DataResult, ChangeListener {
|
public class DataResultPanel extends javax.swing.JPanel implements DataResult, ChangeListener {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
private static final int NO_TAB_SELECTED = -1;
|
||||||
private static final String PLEASE_WAIT_NODE_DISPLAY_NAME = NbBundle.getMessage(DataResultPanel.class, "DataResultPanel.pleasewaitNodeDisplayName");
|
private static final String PLEASE_WAIT_NODE_DISPLAY_NAME = NbBundle.getMessage(DataResultPanel.class, "DataResultPanel.pleasewaitNodeDisplayName");
|
||||||
private final List<DataResultViewer> resultViewers = new ArrayList<>();
|
private final List<DataResultViewer> resultViewers = new ArrayList<>();
|
||||||
private boolean isMain;
|
private boolean isMain;
|
||||||
@ -264,7 +266,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
|
|||||||
});
|
});
|
||||||
return viewers;
|
return viewers;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the content view for this panel. Needs to be called before the first
|
* Sets the content view for this panel. Needs to be called before the first
|
||||||
* call to open.
|
* call to open.
|
||||||
@ -408,45 +410,53 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
|
|||||||
*/
|
*/
|
||||||
private void setupTabs(Node selectedNode) {
|
private void setupTabs(Node selectedNode) {
|
||||||
/*
|
/*
|
||||||
* Enable or disable the child tabs based on whether or not the
|
* Enable or disable the result viewer tabs based on whether or not the
|
||||||
* corresponding results viewer supports display of the selected node.
|
* corresponding results viewer supports display of the selected node.
|
||||||
*/
|
*/
|
||||||
int tabIndex = 0;
|
for (int i = 0; i < dataResultTabbedPanel.getTabCount(); i++) {
|
||||||
for (DataResultViewer viewer : resultViewers) {
|
if (resultViewers.get(i).isSupported(selectedNode)) {
|
||||||
if (viewer.isSupported(selectedNode)) {
|
dataResultTabbedPanel.setEnabledAt(i, true);
|
||||||
dataResultTabbedPanel.setEnabledAt(tabIndex, true);
|
|
||||||
} else {
|
} else {
|
||||||
dataResultTabbedPanel.setEnabledAt(tabIndex, false);
|
dataResultTabbedPanel.setEnabledAt(i, false);
|
||||||
}
|
}
|
||||||
++tabIndex;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the current tab is not enabled for the selected node, try to
|
* If the selected node has a child to be selected, default the selected
|
||||||
* select a tab that is enabled.
|
* tab to the table result viewer. Otherwise, use the last selected tab,
|
||||||
|
* if it is enabled. If not, select the first enabled tab that can be
|
||||||
|
* found.
|
||||||
*/
|
*/
|
||||||
boolean hasViewerEnabled = true;
|
int tabToSelect = NO_TAB_SELECTED;
|
||||||
int currentActiveTab = dataResultTabbedPanel.getSelectedIndex();
|
if (selectedNode instanceof TableFilterNode) {
|
||||||
if ((currentActiveTab == -1) || (dataResultTabbedPanel.isEnabledAt(currentActiveTab) == false)) {
|
NodeSelectionInfo selectedChildInfo = ((TableFilterNode) selectedNode).getChildNodeSelectionInfo();
|
||||||
hasViewerEnabled = false;
|
if (null != selectedChildInfo) {
|
||||||
for (int i = 0; i < dataResultTabbedPanel.getTabCount(); i++) {
|
for (int i = 0; i < resultViewers.size(); ++i) {
|
||||||
if (dataResultTabbedPanel.isEnabledAt(i)) {
|
if (resultViewers.get(i) instanceof DataResultViewerTable && dataResultTabbedPanel.isEnabledAt(i)) {
|
||||||
currentActiveTab = i;
|
tabToSelect = i;
|
||||||
hasViewerEnabled = true;
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
if (hasViewerEnabled) {
|
if (NO_TAB_SELECTED == tabToSelect) {
|
||||||
dataResultTabbedPanel.setSelectedIndex(currentActiveTab);
|
tabToSelect = dataResultTabbedPanel.getSelectedIndex();
|
||||||
|
if ((NO_TAB_SELECTED == tabToSelect) || (!dataResultTabbedPanel.isEnabledAt(tabToSelect))) {
|
||||||
|
for (int i = 0; i < dataResultTabbedPanel.getTabCount(); ++i) {
|
||||||
|
if (dataResultTabbedPanel.isEnabledAt(i)) {
|
||||||
|
tabToSelect = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Push the node to the selected results viewer.
|
* If there is a tab to sele3ct, do so, and push the selected node to
|
||||||
|
* the corresponding result viewer.
|
||||||
*/
|
*/
|
||||||
if (hasViewerEnabled) {
|
if (NO_TAB_SELECTED != tabToSelect) {
|
||||||
resultViewers.get(currentActiveTab).setNode(selectedNode);
|
dataResultTabbedPanel.setSelectedIndex(tabToSelect);
|
||||||
|
resultViewers.get(tabToSelect).setNode(selectedNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user