+ private void sortTreeNodes(DefaultMutableTreeNode root)
+ {
+ if (root.getChildCount()==0)
+ {
+ return;
+ }
+ int count=root.getChildCount();
+ String[] names=new String[count];
+ DefaultMutableTreeNode[] nodes=new DefaultMutableTreeNode[count];
+ for (int i=0;i<count;i++)
+ {
+ TreeNode node = root.getChildAt(i);
+ if (node instanceof DefaultMutableTreeNode)
+ {
+ DefaultMutableTreeNode child=(DefaultMutableTreeNode) node;
+ nodes[i]=child;
+ if (child.getUserObject() instanceof DbSourceProxy) {
+ names[i]=((DbSourceProxy)child.getUserObject()).getDbName().toLowerCase();
+ } else {
+ names[i] = ((String) child.getUserObject()).toLowerCase();
+ sortTreeNodes(child);
+ }
+ } else {
+ throw new Error("Implementation Error: Can't reorder this tree. Not DefaultMutableTreeNode.");
+ }
+ }
+ jalview.util.QuickSort.sort(names, nodes);
+ root.removeAllChildren();
+ for (int i=count-1;i>=0;i--)
+ {
+ root.add(nodes[i]);
+ }
+ }
+