From f4e29edb6c448d35f80c0a47c09ae86578a27e24 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Wed, 24 Aug 2005 10:57:00 +0000 Subject: [PATCH] Does edit affect any groups? --- src/jalview/appletgui/SeqPanel.java | 109 ++++++++++++++++++++++++++++------- src/jalview/gui/SeqPanel.java | 103 ++++++++++++++++++++++++--------- 2 files changed, 166 insertions(+), 46 deletions(-) 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); + } + } } ////////////////////////////////////////// diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 4d5b080..cab15c4 100755 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -575,51 +575,102 @@ public class SeqPanel extends JPanel */ void editOccurred(int i) { - if (endEdit == startEdit) + if (endEdit == startEdit) + { + ap.alignFrame.historyList.pop(); + ap.alignFrame.updateEditMenuBar(); + } + + av.updateConservation(); + av.updateConsensus(); + + //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) + { + groupsToUpdate.addElement(av.getSelectionGroup()); + int sSize = sg.getSize(); + for (s = 0; s < sSize; s++) + { + SequenceI seq = sg.getSequenceAt(s); + + 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++) { - ap.alignFrame.historyList.pop(); - ap.alignFrame.updateEditMenuBar(); + SequenceGroup sg2 = (SequenceGroup) av.alignment.getGroups().elementAt( + g); + if (sg2.sequences.contains(seq)) + { + if (!groupsToUpdate.contains(sg2)) + groupsToUpdate.addElement(sg2); + continue; + } } + } - av.updateConservation(); - av.updateConsensus(); + 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 (av.getSelectionGroup() != null) - { - av.getSelectionGroup().recalcConservation(); - } - - if (cs.conservationApplied()) + if(cs!=null) { + if (cs.conservationApplied()) + { Conservation c = new Conservation("All", - ResidueProperties.propHash, 3, av.alignment.getSequences(), - 0, av.alignment.getWidth() - 1); + 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); + 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); + cs.setConservation(c); + av.setGlobalColourScheme(cs); } - } - if (cs instanceof ClustalxColourScheme) - { - ((ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(), - av.alignment.getWidth()); + } + + if (cs instanceof ClustalxColourScheme) + { + ( (ClustalxColourScheme) cs).resetClustalX(av.alignment.getSequences(), + av.alignment.getWidth()); av.setGlobalColourScheme(cs); + } } } -- 1.7.10.2