X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSeqPanel.java;h=53562cb7d5df91598c7d26b8c186a6c7a1670f42;hb=4f8907121d304b0f9b499578578c3381b815db9d;hp=67b049a4f25f8f2773ea06e8f4c4e7d96325da63;hpb=ce66c3a512ba0d21dca3f389afc50b4a39ea5e1f;p=jalview.git diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index 67b049a..53562cb 100755 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -445,42 +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 instanceof ConservationColourScheme) + + //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) { - ConservationColourScheme ccs = (ConservationColourScheme) cs; - if (ccs.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 cxs = (ClustalxColourScheme) ccs.cs; - cxs.resetClustalX(av.alignment.getSequences(), av.alignment.getWidth()); - ccs = new ConservationColourScheme(c, cxs); - av.setGlobalColourScheme(ccs); + 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 + ////////////////////////////////////////// + + + // Y O Y CLUSTALX + ColourSchemeI cs = av.getGlobalColourScheme(); - if (cs instanceof ClustalxColourScheme) + 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); + } + } } ////////////////////////////////////////// @@ -566,7 +633,7 @@ public class SeqPanel else if ( (evt.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) { - APopupMenu popup = new APopupMenu(ap, null); + APopupMenu popup = new APopupMenu(ap, null, null); this.add(popup); popup.show(this, evt.getX(), evt.getY()); } @@ -604,19 +671,19 @@ public class SeqPanel return; } - if (stretchGroup.cs instanceof ConservationColourScheme) - { - ConservationColourScheme ccs = (ConservationColourScheme) stretchGroup.cs; - stretchGroup.cs = ccs; - SliderPanel.setConservationSlider(ap, stretchGroup.cs, - stretchGroup.getName()); - } - else + if(stretchGroup.cs!=null) { + if (stretchGroup.cs.conservationApplied()) + { + SliderPanel.setConservationSlider(ap, stretchGroup.cs, + stretchGroup.getName()); + } + else + { SliderPanel.setPIDSliderSource(ap, stretchGroup.cs, stretchGroup.getName()); + } } - changeEndRes = false; changeStartRes = false; stretchGroup = null; @@ -698,7 +765,6 @@ public class SeqPanel if (stretchGroup.sequences.contains(nextSeq)) { stretchGroup.deleteSequence(seq, false); - stretchGroup.deleteSequence(nextSeq, false); } else {