+ return;\r
+ }\r
+ else if (ob instanceof SequenceNode)\r
+ {\r
+ SequenceNode tmpnode = (SequenceNode) ob;\r
+ tree.swapNodes(tmpnode);\r
+ tree.reCount(tree.getTopNode());\r
+ tree.findHeight(tree.getTopNode());\r
+ }\r
+ else\r
+ {\r
+ // Find threshold\r
+ if (tree.getMaxHeight() != 0)\r
+ {\r
+ threshold = (float) (x - offx) / (float) (getWidth() -\r
+ labelLength - (2 * offx));\r
+\r
+ tree.getGroups().removeAllElements();\r
+ tree.groupNodes(tree.getTopNode(), threshold);\r
+ setColor(tree.getTopNode(), Color.black);\r
+\r
+ av.setSelectionGroup(null);\r
+ av.alignment.deleteAllGroups();\r
+\r
+ for (int i = 0; i < tree.getGroups().size(); i++)\r
+ {\r
+ Color col = new Color((int) (Math.random() * 255),\r
+ (int) (Math.random() * 255),\r
+ (int) (Math.random() * 255));\r
+ setColor((SequenceNode) tree.getGroups().elementAt(i),\r
+ col.brighter());\r
+\r
+ Vector l = tree.findLeaves((SequenceNode) tree.getGroups()\r
+ .elementAt(i),\r
+ new Vector());\r
+\r
+ Vector sequences = new Vector();\r
+\r
+ for (int j = 0; j < l.size(); j++)\r
+ {\r
+ SequenceI s1 = (SequenceI) ((SequenceNode) l.elementAt(j)).element();\r
+\r
+ if (!sequences.contains(s1))\r
+ {\r
+ sequences.addElement(s1);\r
+ }\r
+ }\r
+\r
+ ColourSchemeI cs = null;\r
+\r
+ if (av.getGlobalColourScheme() != null)\r
+ {\r
+ if (av.getGlobalColourScheme() instanceof UserColourScheme)\r
+ {\r
+ cs = new UserColourScheme(\r
+ ( (UserColourScheme) av.getGlobalColourScheme()).getColours());\r
+\r
+ }\r
+ else\r
+ cs = ColourSchemeProperty.getColour(sequences,\r
+ av.alignment.getWidth(),\r
+ ColourSchemeProperty.getColourName(\r
+ av.getGlobalColourScheme()));\r
+\r
+ cs.setThreshold(av.getGlobalColourScheme().getThreshold(),\r
+ av.getIgnoreGapsConsensus());\r
+ }\r
+\r
+\r
+ SequenceGroup sg = new SequenceGroup(sequences,\r
+ "TreeGroup", cs, true, true, false, 0,\r
+ av.alignment.getWidth()-1);\r
+\r
+\r
+ if ( av.getGlobalColourScheme()!=null\r
+ && av.getGlobalColourScheme().conservationApplied())\r
+ {\r
+ Conservation c = new Conservation("Group",\r
+ ResidueProperties.propHash, 3,\r
+ sg.getSequences(false),\r
+ sg.getStartRes(), sg.getEndRes());\r
+\r
+ c.calculate();\r
+ c.verdict(false, av.ConsPercGaps);\r
+ sg.cs.setConservation(c);\r
+ }\r
+\r
+ av.alignment.addGroup(sg);\r
+ }\r
+ }\r
+ }\r