X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSeqPanel.java;h=53562cb7d5df91598c7d26b8c186a6c7a1670f42;hb=f4e29edb6c448d35f80c0a47c09ae86578a27e24;hp=ebde2cfb8cb3b303592fbe0e610ca50d374786c5;hpb=6312ff96a7669b59327d583d1dc64b0b96647d67;p=jalview.git diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index ebde2cf..53562cb 100755 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -445,40 +445,109 @@ public class SeqPanel { if (endEdit == startEdit) { - ap.alignFrame.historyList.pop(); - ap.alignFrame.updateEditMenuBar(); + ap.alignFrame.historyList.pop(); + ap.alignFrame.updateEditMenuBar(); } av.updateConservation(); av.updateConsensus(); - // Y O Y CLUSTALX - ColourSchemeI cs = av.getGlobalColourScheme(); - if (cs.conservationApplied()) + + //Does the edit affect any groups? + ////////////////////////////// + Vector groupsToUpdate = new Vector(); + SequenceGroup sg = av.getSelectionGroup(); + + int s, g, gSize = av.alignment.getGroups().size(); + if (sg != null) { - if (cs instanceof ClustalxColourScheme) + groupsToUpdate.addElement(av.getSelectionGroup()); + int sSize = sg.getSize(); + for (s = 0; s < sSize; s++) { - jalview.analysis.Conservation c = new jalview.analysis.Conservation - ("All", - ResidueProperties.propHash, 3, - av.alignment.getSequences(), 0, - av.alignment.getWidth() - 1); - c.calculate(); - c.verdict(false, av.ConsPercGaps); + SequenceI seq = sg.getSequenceAt(s); - ((ClustalxColourScheme)cs).resetClustalX(av.alignment.getSequences(), av.alignment.getWidth()); - cs.setConservation(c); - av.setGlobalColourScheme(cs); + for (g = 0; g < gSize; g++) + { + SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups(). + elementAt( + g); + if (sg2.sequences.contains(seq)) + { + if (!groupsToUpdate.contains(sg2)) + groupsToUpdate.addElement(sg2); + continue; + } + } } } + else + { + SequenceI seq = av.alignment.getSequenceAt(startseq); + for (g = 0; g < gSize; g++) + { + SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().elementAt( + g); + if (sg2.sequences.contains(seq)) + { + if (!groupsToUpdate.contains(sg2)) + groupsToUpdate.addElement(sg2); + continue; + } + } + } + + gSize = groupsToUpdate.size(); + for (g = 0; g < gSize; g++) + { + ( (SequenceGroup) groupsToUpdate.elementAt(g)).recalcConservation(); + } + ////End of updating groups + ////////////////////////////////////////// - if (cs instanceof ClustalxColourScheme) + + // Y O Y CLUSTALX + ColourSchemeI cs = av.getGlobalColourScheme(); + + if (av.getSelectionGroup() != null) { - ( (ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(), - av.alignment.getWidth()); - av.setGlobalColourScheme(cs); + av.getSelectionGroup().recalcConservation(); } + if(cs!=null) + { + if (cs.conservationApplied()) + { + jalview.analysis.Conservation c = new jalview.analysis.Conservation("All", + ResidueProperties.propHash, 3, + av.alignment.getSequences(), + 0, av.alignment.getWidth() - 1); + c.calculate(); + c.verdict(false, av.ConsPercGaps); + + if (cs instanceof ClustalxColourScheme) + { + ClustalxColourScheme cxs = (ClustalxColourScheme) cs; + cxs.resetClustalX(av.alignment.getSequences(), + av.alignment.getWidth()); + cs.setConservation(c); + av.setGlobalColourScheme(cs); + } + else + { + cs.setConservation(c); + av.setGlobalColourScheme(cs); + } + + } + + if (cs instanceof ClustalxColourScheme) + { + ( (ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(), + av.alignment.getWidth()); + av.setGlobalColourScheme(cs); + } + } } //////////////////////////////////////////