Skip to content
Snippets Groups Projects
Commit 3061d7d2 authored by Carsten Stocklöw's avatar Carsten Stocklöw
Browse files

use SwingUtilities.invokeLater

parent 8960b8f9
No related branches found
No related tags found
No related merge requests found
......@@ -76,7 +76,7 @@
</plugins>
</build>
<properties>
<maven.compile.source>1.5</maven.compile.source>
<maven.compile.target>1.5</maven.compile.target>
<maven.compile.source>1.6</maven.compile.source>
<maven.compile.target>1.6</maven.compile.target>
</properties>
</project>
......@@ -12,6 +12,7 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
......@@ -72,97 +73,105 @@ public class BusMemberGui extends JPanel implements TreeSelectionListener {
* @param m
* The MemberData.
*/
public void add(MemberData m) {
synchronized (this) {
boolean first = false;
// handle root = Space ID
if (!tree.isRootVisible()) {
// first element -> create root
root.setUserObject("Space: " + m.space);
tree.setRootVisible(true);
first = true;
public void add(final MemberData m) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
boolean first = false;
// handle root = Space ID
if (!tree.isRootVisible()) {
// first element -> create root
root.setUserObject("Space: " + m.space);
tree.setRootVisible(true);
first = true;
}
// handle peers
DefaultMutableTreeNode peerNode = peers.get(m.peer);
if (peerNode == null) {
// peer not yet available
peerNode = new DefaultMutableTreeNode("Peer: " + m.peer);
root.add(peerNode);
treeModel.reload(root);
// add(peerNode, root);
peers.put(m.peer, peerNode);
}
// handle module
DefaultMutableTreeNode moduleNode = modules.get(m.peer + "#"
+ m.module);
if (moduleNode == null) {
// module not yet available
moduleNode = new DefaultMutableTreeNode("Module: "
+ m.module);
peerNode.add(moduleNode);
treeModel.reload(peerNode);
modules.put(m.peer + "#" + m.module, moduleNode);
}
// handle member
DefaultMutableTreeNode memberNode = members.get(m.id);
if (memberNode == null) {
// member not yet available (this should always be the
// case?)
memberNode = new DefaultMutableTreeNode("Member: "
+ m.busType.name() + "-" + m.type + " - "
+ m.number);
moduleNode.add(memberNode);
// treeModel.reload(moduleNode);
treeModel.nodesWereInserted(moduleNode,
new int[] { moduleNode.getChildCount() - 1 });
members.put(m.id, memberNode);
}
if (first)
expand(moduleNode);
}
// handle peers
DefaultMutableTreeNode peerNode = peers.get(m.peer);
if (peerNode == null) {
// peer not yet available
peerNode = new DefaultMutableTreeNode("Peer: " + m.peer);
root.add(peerNode);
treeModel.reload(root);
// add(peerNode, root);
peers.put(m.peer, peerNode);
}
// handle module
DefaultMutableTreeNode moduleNode = modules.get(m.peer + "#"
+ m.module);
if (moduleNode == null) {
// module not yet available
moduleNode = new DefaultMutableTreeNode("Module: " + m.module);
peerNode.add(moduleNode);
treeModel.reload(peerNode);
modules.put(m.peer + "#" + m.module, moduleNode);
}
// handle member
DefaultMutableTreeNode memberNode = members.get(m.id);
if (memberNode == null) {
// member not yet available (this should always be the case?)
memberNode = new DefaultMutableTreeNode("Member: "
+ m.busType.name() + "-" + m.type + " - " + m.number);
moduleNode.add(memberNode);
// treeModel.reload(moduleNode);
treeModel.nodesWereInserted(moduleNode,
new int[] { moduleNode.getChildCount() - 1 });
members.put(m.id, memberNode);
}
if (first)
expand(moduleNode);
}
});
}
public void remove(MemberData m) {
synchronized (this) {
// get module (= parent of this member)
final DefaultMutableTreeNode moduleNode = modules.get(m.peer + "#"
+ m.module);
if (moduleNode == null) {
System.out
.println("ERROR: module node not found while removing");
return;
}
// get member
final DefaultMutableTreeNode memberNode = members.get(m.id);
if (memberNode == null) {
System.out
.println("ERROR: member node not found while removing");
return;
}
// remove node (from node and from internal map)
final int idx = moduleNode.getIndex(memberNode);
if (idx == -1) {
System.out
.println("ERROR: member node not indexed while removing");
return;
public void remove(final MemberData m) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// get module (= parent of this member)
final DefaultMutableTreeNode moduleNode = modules.get(m.peer
+ "#" + m.module);
if (moduleNode == null) {
System.out
.println("ERROR: module node not found while removing");
return;
}
// get member
final DefaultMutableTreeNode memberNode = members.get(m.id);
if (memberNode == null) {
System.out
.println("ERROR: member node not found while removing");
return;
}
// remove node (from node and from internal map)
final int idx = moduleNode.getIndex(memberNode);
if (idx == -1) {
System.out
.println("ERROR: member node not indexed while removing");
return;
}
moduleNode.remove(idx);
members.remove(m.id);
// update view
// SwingUtilities.invokeLater(new Runnable() {
// public void run() {
treeModel.nodesWereRemoved(moduleNode, new int[] { idx },
new Object[] { memberNode });
// }
// });
// TODO: if this is the last member for a module, should we
// remove
// the module as well?
}
moduleNode.remove(idx);
members.remove(m.id);
// update view
// SwingUtilities.invokeLater(new Runnable() {
// public void run() {
treeModel.nodesWereRemoved(moduleNode, new int[] { idx },
new Object[] { memberNode });
// }
// });
// TODO: if this is the last member for a module, should we remove
// the module as well?
}
});
}
private void expand(DefaultMutableTreeNode node) {
......@@ -171,18 +180,21 @@ public class BusMemberGui extends JPanel implements TreeSelectionListener {
tree.expandPath(treePath);
}
@Override
public void valueChanged(TreeSelectionEvent e) {
synchronized (this) {
JTree tree = (JTree) e.getSource();
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
// String selectedNodeName = selectedNode.toString();
if (members.containsValue(node)) {
} else if (modules.containsValue(node)) {
} else if (peers.containsValue(node)) {
} else if (node == root) {
final JTree tree = (JTree) e.getSource();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent();
// String selectedNodeName = selectedNode.toString();
if (members.containsValue(node)) {
} else if (modules.containsValue(node)) {
} else if (peers.containsValue(node)) {
} else if (node == root) {
}
}
}
});
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment