From 87ed29e743f1c53e01878259a2c8ba1b352d3933 Mon Sep 17 00:00:00 2001 From: Bernard Normier Date: Thu, 4 May 2006 16:15:21 +0000 Subject: Better PropertySets support --- java/src/IceGridGUI/TreeNodeBase.java | 84 ++++++++++++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) (limited to 'java/src/IceGridGUI/TreeNodeBase.java') diff --git a/java/src/IceGridGUI/TreeNodeBase.java b/java/src/IceGridGUI/TreeNodeBase.java index 5dbed38db6a..4c6f4177acc 100755 --- a/java/src/IceGridGUI/TreeNodeBase.java +++ b/java/src/IceGridGUI/TreeNodeBase.java @@ -137,6 +137,17 @@ public class TreeNodeBase implements javax.swing.tree.TreeNode, TreeCellRenderer return null; } + protected String makeNewChildId(String base) + { + String id = base; + int i = 0; + while(findChild(id) != null) + { + id = base + "-" + (++i); + } + return id; + } + protected TreeNodeBase(TreeNodeBase parent, String id) { _parent = parent; @@ -173,7 +184,78 @@ public class TreeNodeBase implements javax.swing.tree.TreeNode, TreeCellRenderer } return true; } - + + protected String insertSortedChildren(java.util.List newChildren, + java.util.List intoChildren, + DefaultTreeModel treeModel) + { + TreeNodeBase[] children = (TreeNodeBase[])newChildren.toArray(new TreeNodeBase[0]); + java.util.Arrays.sort(children, _childComparator); + + int[] indices = new int[children.length]; + + int offset = -1; + + int i = 0; + boolean checkInsert = true; + for(int j = 0; j < children.length; ++j) + { + String id = children[j].getId(); + + if(checkInsert) + { + while(i < intoChildren.size()) + { + TreeNodeBase existingChild = (TreeNodeBase)intoChildren.get(i); + int cmp = id.compareTo(existingChild.getId()); + if(cmp == 0) + { + return id; + } + if(cmp < 0) + { + break; // while + } + i++; + } + + if(i < intoChildren.size()) + { + // Insert here, and increment i (since children is sorted) + intoChildren.add(i, children[j]); + if(offset == -1) + { + offset = getIndex((TreeNodeBase)intoChildren.get(0)); + } + + indices[j] = offset + i; + i++; continue; // for + } + else + { + checkInsert = false; + } + } + + // + // Append + // + intoChildren.add(children[j]); + if(offset == -1) + { + offset = getIndex((TreeNodeBase)intoChildren.get(0)); + } + indices[j] = offset + i; + i++; + } + + if(treeModel != null) + { + treeModel.nodesWereInserted(this, indices); + } + + return null; + } protected void removeSortedChildren(String[] childIds, java.util.List fromChildren, -- cgit v1.2.3