X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fappletgui%2FAlignFrame.java;h=db1f9c9e84c326e0dc94f13f5a6f84c86c3178eb;hb=92c253b4b037e45afffeb1e34f89d0b825ba3225;hp=2783f2613964f13843e8a2e25912a90d8f2e6186;hpb=588042b69abf8e60bcc950b24c283933c7dd422f;p=jalview.git diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 2783f26..db1f9c9 100755 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -80,6 +80,7 @@ public class AlignFrame } } + } public void inputText_actionPerformed(ActionEvent e) @@ -278,30 +279,55 @@ public class AlignFrame orderedSeqs.put(index + "", seq); } - int index = 0; + int index = 0, startRes, endRes; + char ch; + for (int i = 0; i < sg.getSize(); i++) { - SequenceI seq = null; - while (seq == null) - { - if (orderedSeqs.containsKey(index + "")) + SequenceI seq = null; + + while (seq == null) { - seq = (SequenceI) orderedSeqs.get(index + ""); - index++; - break; + if (orderedSeqs.containsKey(index + "")) + { + seq = (SequenceI) orderedSeqs.get(index + ""); + index++; + + break; + } + else + { + index++; + } } - else + + //FIND START RES + //Returns residue following index if gap + startRes = seq.findPosition(sg.getStartRes()); + + //FIND END RES + //Need to find the residue preceeding index if gap + endRes = 0; + + for (int j = 0; j < sg.getEndRes()+1 && j < seq.getLength(); j++) { - index++; + ch = seq.getCharAt(j); + if (!jalview.util.Comparison.isGap( (ch))) + { + endRes++; + } } - } - copiedSequences.append(seq.getName() + "\t" + - seq.findPosition(sg.getStartRes()) + "\t" - + seq.findPosition(sg.getEndRes()) + "\t" - + - sg.getSequenceAt(i).getSequence(sg.getStartRes(), - sg.getEndRes() + 1) + "\n"); + if(endRes>0) + { + endRes += seq.getStart() -1; + } + + copiedSequences.append(seq.getName() + "\t" + + startRes + "\t" + + endRes + "\t" + + seq.getSequence(sg.getStartRes(), + sg.getEndRes() + 1) + "\n"); } } @@ -397,13 +423,26 @@ public class AlignFrame return; } + SequenceGroup sg = viewport.getSelectionGroup(); + boolean allSequences = false; + if(sg.sequences.size()==viewport.alignment.getHeight()) + allSequences = true; + for (int i = 0; i < sg.sequences.size(); i++) { SequenceI seq = sg.getSequenceAt(i); int index = viewport.getAlignment().findIndex(seq); seq.deleteChars(sg.getStartRes(), sg.getEndRes() + 1); + // If the cut affects all sequences, remove highlighted columns + if (allSequences) + { + viewport.getColumnSelection().removeElements(sg.getStartRes(), + sg.getEndRes() + 1); + } + + if (seq.getSequence().length() < 1) { viewport.getAlignment().deleteSequence(seq); @@ -445,7 +484,7 @@ public class AlignFrame SequenceGroup sg = new SequenceGroup(); for (int i = 0; i < viewport.getAlignment().getSequences().size(); i++) { - sg.addSequence(viewport.getAlignment().getSequenceAt(i)); + sg.addSequence(viewport.getAlignment().getSequenceAt(i), false); } sg.setEndRes(viewport.alignment.getWidth()); viewport.setSelectionGroup(sg); @@ -466,7 +505,7 @@ public class AlignFrame SequenceGroup sg = viewport.getSelectionGroup(); for (int i = 0; i < viewport.getAlignment().getSequences().size(); i++) { - sg.addOrRemove(viewport.getAlignment().getSequenceAt(i)); + sg.addOrRemove(viewport.getAlignment().getSequenceAt(i), false); } PaintRefresher.Refresh(null); @@ -544,16 +583,34 @@ public class AlignFrame public void removeAllGapsMenuItem_actionPerformed(ActionEvent e) { - addHistoryItem(new HistoryItem("Remove Gaps", - viewport.alignment, + addHistoryItem(new HistoryItem("Remove Gaps", viewport.alignment, HistoryItem.HIDE)); + SequenceI current; int jSize; - for (int i = 0; i < viewport.getAlignment().getSequences().size(); i++) + + Vector seqs=null; + + int start=0, end = viewport.alignment.getWidth(); + + if (viewport.getSelectionGroup() != null + && viewport.getSelectionGroup().sequences != null + && viewport.getSelectionGroup().sequences.size()>0) + { + seqs = viewport.getSelectionGroup().sequences; + start = viewport.getSelectionGroup().getStartRes(); + end = viewport.getSelectionGroup().getEndRes(); + } + else + seqs = viewport.alignment.getSequences(); + + for (int i = 0; i