mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
Added fix to ensure DataResultPanel sets up activated tabs on the EDT. Cleaned up NodeListener logic.
This commit is contained in:
parent
4b6d257760
commit
81b5761684
@ -26,6 +26,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.JTabbedPane;
|
import javax.swing.JTabbedPane;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
import javax.swing.event.ChangeEvent;
|
import javax.swing.event.ChangeEvent;
|
||||||
import javax.swing.event.ChangeListener;
|
import javax.swing.event.ChangeListener;
|
||||||
import org.openide.explorer.ExplorerManager;
|
import org.openide.explorer.ExplorerManager;
|
||||||
@ -379,7 +380,10 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupTabs(Node selectedNode) {
|
private void setupTabs(final Node selectedNode) {
|
||||||
|
SwingUtilities.invokeLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
//update/disable tabs based on if supported for this node
|
//update/disable tabs based on if supported for this node
|
||||||
int drvC = 0;
|
int drvC = 0;
|
||||||
for (UpdateWrapper drv : viewers) {
|
for (UpdateWrapper drv : viewers) {
|
||||||
@ -394,7 +398,7 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
|
|||||||
|
|
||||||
// if the current tab is no longer enabled, then find one that is
|
// if the current tab is no longer enabled, then find one that is
|
||||||
boolean hasViewerEnabled = true;
|
boolean hasViewerEnabled = true;
|
||||||
int currentActiveTab = this.dataResultTabbedPanel.getSelectedIndex();
|
int currentActiveTab = dataResultTabbedPanel.getSelectedIndex();
|
||||||
if ((currentActiveTab == -1) || (dataResultTabbedPanel.isEnabledAt(currentActiveTab) == false)) {
|
if ((currentActiveTab == -1) || (dataResultTabbedPanel.isEnabledAt(currentActiveTab) == false)) {
|
||||||
hasViewerEnabled = false;
|
hasViewerEnabled = false;
|
||||||
for (int i = 0; i < dataResultTabbedPanel.getTabCount(); i++) {
|
for (int i = 0; i < dataResultTabbedPanel.getTabCount(); i++) {
|
||||||
@ -414,6 +418,9 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
|
|||||||
viewers.get(currentActiveTab).setNode(selectedNode);
|
viewers.get(currentActiveTab).setNode(selectedNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setTitle(String title) {
|
public void setTitle(String title) {
|
||||||
@ -604,9 +611,15 @@ public class DataResultPanel extends javax.swing.JPanel implements DataResult, C
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class DummyNodeListener implements NodeListener {
|
private class DummyNodeListener implements NodeListener {
|
||||||
|
private static final String DUMMY_NODE_DISPLAY_NAME = "Please Wait...";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void childrenAdded(NodeMemberEvent nme) {
|
public void childrenAdded(final NodeMemberEvent nme) {
|
||||||
|
Node added = nme.getNode();
|
||||||
|
if (added.getDisplayName().equals(DUMMY_NODE_DISPLAY_NAME)) {
|
||||||
|
// don't set up tabs if the new node is a waiting node
|
||||||
|
return;
|
||||||
|
}
|
||||||
setupTabs(nme.getNode());
|
setupTabs(nme.getNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,20 +481,18 @@ public class DataResultViewerTable extends AbstractDataResultViewer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void childrenAdded(NodeMemberEvent nme) {
|
public void childrenAdded(NodeMemberEvent nme) {
|
||||||
|
Node added = nme.getNode();
|
||||||
|
if (added.getDisplayName().equals(DUMMY_NODE_DISPLAY_NAME)) {
|
||||||
|
// If it's the dummy waiting node, we don't want
|
||||||
|
// to reload the table headers
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setupTable(added);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void childrenRemoved(NodeMemberEvent nme) {
|
public void childrenRemoved(NodeMemberEvent nme) {
|
||||||
Node removed = nme.getDelta()[0];
|
|
||||||
if (! removed.getDisplayName().equals(DUMMY_NODE_DISPLAY_NAME)) {
|
|
||||||
// If it's not the dummy waiting node, we don't want
|
|
||||||
// to reload the table headers
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// dummy node removed. Reset the table headers.
|
|
||||||
Node node = nme.getNode();
|
|
||||||
setupTable(node);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user