+ public Color getSequenceColour(SequenceI seq)\r
+ {\r
+ if (sequenceColours == null || !sequenceColours.containsKey(seq))\r
+ return Color.white;\r
+ else\r
+ return (Color) sequenceColours.get(seq);\r
+ }\r
+\r
+ public void setSequenceColour(SequenceI seq, Color col)\r
+ {\r
+ if (sequenceColours == null)\r
+ sequenceColours = new Hashtable();\r
+\r
+ if (col == null)\r
+ sequenceColours.remove(seq);\r
+ else\r
+ sequenceColours.put(seq, col);\r
+ }\r
+\r
+ public String getSequenceSetId()\r
+ {\r
+ if (sequenceSetID == null)\r
+ sequenceSetID = alignment.hashCode() + "";\r
+\r
+ return sequenceSetID;\r
+ }\r
+\r
+ public void alignmentChanged(AlignmentPanel ap)\r
+ {\r
+ alignment.padGaps();\r
+\r
+ if (hconsensus != null && autocalculateConsensus)\r
+ {\r
+ updateConsensus(ap);\r
+ updateConservation(ap);\r
+ }\r
+\r
+ //Reset endRes of groups if beyond alignment width\r
+ int alWidth = alignment.getWidth();\r
+ Vector groups = alignment.getGroups();\r
+ if(groups!=null)\r
+ {\r
+ for(int i=0; i<groups.size(); i++)\r
+ {\r
+ SequenceGroup sg = (SequenceGroup)groups.elementAt(i);\r
+ if(sg.getEndRes()>alWidth)\r
+ sg.setEndRes(alWidth-1);\r
+ }\r
+ }\r
+\r
+ if(selectionGroup!=null && selectionGroup.getEndRes()>alWidth)\r
+ selectionGroup.setEndRes(alWidth-1);\r
+\r
+ resetAllColourSchemes();\r
+\r
+ alignment.adjustSequenceAnnotations();\r
+ }\r
+\r
+ void resetAllColourSchemes()\r
+ {\r
+ ColourSchemeI cs = globalColourScheme;\r
+ if(cs!=null)\r
+ {\r
+ if (cs instanceof ClustalxColourScheme)\r
+ {\r
+ ( (ClustalxColourScheme) cs).\r
+ resetClustalX(alignment.getSequences(),\r
+ alignment.getWidth());\r
+ }\r
+\r
+ cs.setConsensus(hconsensus);\r
+ if (cs.conservationApplied())\r
+ {\r
+ Alignment al = (Alignment) alignment;\r
+ Conservation c = new Conservation("All",\r
+ ResidueProperties.propHash, 3,\r
+ al.getSequences(), 0,\r
+ al.getWidth() - 1);\r
+ c.calculate();\r
+ c.verdict(false, ConsPercGaps);\r
+\r
+ cs.setConservation(c);\r
+ }\r
+ }\r
+\r
+ int s, sSize = alignment.getGroups().size();\r
+ for(s=0; s<sSize; s++)\r
+ {\r
+ SequenceGroup sg = (SequenceGroup)alignment.getGroups().elementAt(s);\r
+ if(sg.cs!=null && sg.cs instanceof ClustalxColourScheme)\r
+ {\r
+ ((ClustalxColourScheme)sg.cs).resetClustalX(\r
+ sg.getSequences(true), sg.getWidth());\r
+ }\r
+ sg.recalcConservation();\r
+ }\r
+ }\r
+\r