Merge branch 'patch/JAL-3874_newJmolAndGradleDedup' into develop
[jalview.git] / src / jalview / commands / EditCommand.java
index 385a33e..30595bc 100644 (file)
  */
 package jalview.commands;
 
+import java.util.Locale;
+
 import jalview.analysis.AlignSeq;
 import jalview.datamodel.AlignmentAnnotation;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.Annotation;
+import jalview.datamodel.ContiguousI;
 import jalview.datamodel.Range;
 import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceFeature;
@@ -526,8 +529,8 @@ public class EditCommand implements CommandI
         command.string[i] = sequence.getSequence(command.position,
                 command.position + command.number);
         SequenceI oldds = sequence.getDatasetSequence();
-        Range cutPositions = sequence.findPositions(command.position + 1,
-                command.position + command.number);
+        ContiguousI cutPositions = sequence.findPositions(
+                command.position + 1, command.position + command.number);
         boolean cutIsInternal = cutPositions != null
                 && sequence.getStart() != cutPositions
                 .getBegin() && sequence.getEnd() != cutPositions.getEnd();
@@ -763,9 +766,9 @@ public class EditCommand implements CommandI
        * EditCommand.PASTE, sequences, 0, alignment.getWidth(), alignment) );
        * 
        */
-
-      Range beforeEditedPositions = command.seqs[i].findPositions(1, start);
-      Range afterEditedPositions = command.seqs[i]
+      ContiguousI beforeEditedPositions = command.seqs[i].findPositions(1,
+              start);
+      ContiguousI afterEditedPositions = command.seqs[i]
               .findPositions(end + 1, command.seqs[i].getLength());
       
       oldstring = command.seqs[i].getSequenceAsString();
@@ -788,7 +791,7 @@ public class EditCommand implements CommandI
       String nogapold = AlignSeq.extractGaps(Comparison.GapChars,
               new String(command.string[i]));
 
-      if (!nogaprep.toLowerCase().equals(nogapold.toLowerCase()))
+      if (!nogaprep.toLowerCase(Locale.ROOT).equals(nogapold.toLowerCase(Locale.ROOT)))
       {
         // we may already have dataset and limits stashed...
         if (newDSWasNeeded || newStartEndWasNeeded)
@@ -837,7 +840,7 @@ public class EditCommand implements CommandI
             // old ds and edited ds are different, so
             // create the new dataset sequence
             SequenceI newds = new Sequence(oldds);
-            newds.setSequence(fullseq);
+            newds.setSequence(fullseq.toUpperCase(Locale.ROOT));
 
             if (command.oldds == null)
             {
@@ -890,7 +893,7 @@ public class EditCommand implements CommandI
               // new
               // start/end
               String nogapalseq = AlignSeq.extractGaps(Comparison.GapChars,
-                      command.seqs[i].getSequenceAsString().toUpperCase());
+                      command.seqs[i].getSequenceAsString().toUpperCase(Locale.ROOT));
               int newStart = command.seqs[i].getDatasetSequence()
                       .getSequenceAsString().indexOf(nogapalseq);
               if (newStart == -1)
@@ -1483,6 +1486,12 @@ public class EditCommand implements CommandI
 
     char gapChar;
 
+    /*
+     * flag that identifies edits inserted to balance 
+     * user edits in a 'locked editing' region
+     */
+    private boolean systemGenerated;
+
     public Edit(Action cmd, SequenceI[] sqs, int pos, int count,
             char gap)
     {
@@ -1555,6 +1564,16 @@ public class EditCommand implements CommandI
     {
       return gapChar;
     }
+
+    public void setSystemGenerated(boolean b)
+    {
+      systemGenerated = b;
+    }
+
+    public boolean isSystemGenerated()
+    {
+      return systemGenerated;
+    }
   }
 
   /**