Added fix to ensure DataResultPanel sets up activated tabs on the EDT. Cleaned up NodeListener logic.

This commit is contained in:
Jeff Wallace 2013-09-20 15:08:36 -04:00
parent 4b6d257760
commit 81b5761684
2 changed files with 51 additions and 40 deletions

View File

@ -26,6 +26,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
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
int drvC = 0;
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
boolean hasViewerEnabled = true;
int currentActiveTab = this.dataResultTabbedPanel.getSelectedIndex();
int currentActiveTab = dataResultTabbedPanel.getSelectedIndex();
if ((currentActiveTab == -1) || (dataResultTabbedPanel.isEnabledAt(currentActiveTab) == false)) {
hasViewerEnabled = false;
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);
}
}
});
}
@Override
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 static final String DUMMY_NODE_DISPLAY_NAME = "Please Wait...";
@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());
}

View File

@ -481,20 +481,18 @@ public class DataResultViewerTable extends AbstractDataResultViewer {
@Override
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
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