X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fcommands%2FEditCommand.java;h=21ff841fca39214d2d3a76bac50f28f9dce79673;hb=37de9310bec3501cbc6381e0c3dcb282fcaad812;hp=2d3a8d807f0319d5119287c0307e5e3dbf6758c1;hpb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;p=jalview.git diff --git a/src/jalview/commands/EditCommand.java b/src/jalview/commands/EditCommand.java index 2d3a8d8..21ff841 100644 --- a/src/jalview/commands/EditCommand.java +++ b/src/jalview/commands/EditCommand.java @@ -307,8 +307,7 @@ public class EditCommand implements CommandI * @param performEdit */ final public void appendEdit(Action command, SequenceI[] seqs, - int position, - int number, AlignmentI al, boolean performEdit) + int position, int number, AlignmentI al, boolean performEdit) { appendEdit(command, seqs, position, number, al, performEdit, null); } @@ -326,8 +325,8 @@ public class EditCommand implements CommandI * @param views */ final public void appendEdit(Action command, SequenceI[] seqs, - int position, - int number, AlignmentI al, boolean performEdit, AlignmentI[] views) + int position, int number, AlignmentI al, boolean performEdit, + AlignmentI[] views) { Edit edit = new Edit(command, seqs, position, number, al.getGapCharacter()); @@ -432,7 +431,7 @@ public class EditCommand implements CommandI */ @Override final public void undoCommand(AlignmentI[] views) - { + { ListIterator iterator = edits.listIterator(edits.size()); while (iterator.hasPrevious()) { @@ -474,8 +473,8 @@ public class EditCommand implements CommandI for (int s = 0; s < command.seqs.length; s++) { - command.seqs[s].insertCharAt(command.position, - command.number, command.gapChar); + command.seqs[s].insertCharAt(command.position, command.number, + command.gapChar); // System.out.println("pos: "+command.position+" number: "+command.number); } @@ -560,8 +559,8 @@ public class EditCommand implements CommandI command, i, sequence.findPosition(command.position), - sequence.findPosition(command.position - + command.number), false); + sequence.findPosition(command.position + command.number), + false); } } } @@ -1045,7 +1044,7 @@ public class EditCommand implements CommandI int copylen = Math.min(command.position, annotations[a].annotations.length); if (copylen > 0) - { + { System.arraycopy(annotations[a].annotations, 0, temp, 0, copylen); // command.position); } @@ -1117,8 +1116,7 @@ public class EditCommand implements CommandI if (command.editedFeatures != null && command.editedFeatures.containsKey(seq)) { - sequence.setSequenceFeatures(command.editedFeatures - .get(seq)); + sequence.setSequenceFeatures(command.editedFeatures.get(seq)); } return; @@ -1222,10 +1220,15 @@ public class EditCommand implements CommandI for (SequenceI seq : e.getSequences()) { SequenceI ds = seq.getDatasetSequence(); - SequenceI preEdit = result.get(ds); - if (preEdit == null) + // SequenceI preEdit = result.get(ds); + if (!result.containsKey(ds)) { - preEdit = new Sequence("", seq.getSequenceAsString()); + /* + * copy sequence including start/end (but don't use copy constructor + * as we don't need annotations) + */ + SequenceI preEdit = new Sequence("", seq.getSequenceAsString(), + seq.getStart(), seq.getEnd()); preEdit.setDatasetSequence(ds); result.put(ds, preEdit); } @@ -1238,10 +1241,10 @@ public class EditCommand implements CommandI * Work backwards through the edit list, deriving the sequences before each * was applied. The final result is the sequence set before any edits. */ - Iterator edits = new ReverseListIterator(getEdits()); - while (edits.hasNext()) + Iterator editList = new ReverseListIterator(getEdits()); + while (editList.hasNext()) { - Edit oldEdit = edits.next(); + Edit oldEdit = editList.next(); Action action = oldEdit.getAction(); int position = oldEdit.getPosition(); int number = oldEdit.getNumber(); @@ -1252,7 +1255,8 @@ public class EditCommand implements CommandI SequenceI preEdit = result.get(ds); if (preEdit == null) { - preEdit = new Sequence("", seq.getSequenceAsString()); + preEdit = new Sequence("", seq.getSequenceAsString(), + seq.getStart(), seq.getEnd()); preEdit.setDatasetSequence(ds); result.put(ds, preEdit); } @@ -1265,8 +1269,7 @@ public class EditCommand implements CommandI if (action == Action.DELETE_GAP) { preEdit.setSequence(new String(StringUtils.insertCharAt( - preEdit.getSequence(), position, - number, gap))); + preEdit.getSequence(), position, number, gap))); } else if (action == Action.INSERT_GAP) {