historyitem added
[jalview.git] / src / jalview / gui / SeqPanel.java
index c43acf9..ca09c97 100755 (executable)
@@ -15,6 +15,8 @@ public class SeqPanel extends JPanel
 \r
   protected int lastres;\r
   protected int startseq;\r
+  int startEdit=-1;\r
+  int endEdit=-1;\r
 \r
   protected AlignViewport av;\r
 \r
@@ -24,6 +26,9 @@ public class SeqPanel extends JPanel
   ScrollThread scrollThread = null;\r
   boolean mouseDragging = false;\r
 \r
+  boolean editingSeqs = false;\r
+  boolean groupEditing = false;\r
+\r
 \r
   public SeqPanel(AlignViewport avp, AlignmentPanel p) {\r
     this.av         = avp;\r
@@ -46,7 +51,7 @@ public class SeqPanel extends JPanel
       {\r
         if(av.getWrapAlignment())\r
          return;\r
-        if(evt.isShiftDown() || evt.isAltDown() || evt.isControlDown())\r
+        if( editingSeqs )\r
           doMouseDragged(evt);\r
         else\r
           doMouseDraggedDefineMode(evt);\r
@@ -59,32 +64,37 @@ public class SeqPanel extends JPanel
       {\r
         if(av.getWrapAlignment())\r
          return;\r
-        if(evt.isShiftDown() || evt.isAltDown() || evt.isControlDown())\r
+        if(editingSeqs)\r
           doMouseReleased(evt);\r
         else\r
           doMouseReleasedDefineMode(evt);\r
+\r
       }\r
       public void mousePressed(MouseEvent evt)\r
       {\r
         if(av.getWrapAlignment())\r
          return;\r
         if(evt.isShiftDown() || evt.isAltDown() || evt.isControlDown())\r
+        {\r
+          if(evt.isAltDown() || evt.isControlDown())\r
+            groupEditing = true;\r
+\r
+          editingSeqs = true;\r
           doMousePressed(evt);\r
+        }\r
         else\r
           doMousePressedDefineMode(evt);\r
       }\r
       public void mouseExited(MouseEvent evt)\r
       {\r
-        if (av.getWrapAlignment() || evt.isShiftDown() || evt.isAltDown() ||\r
-                  evt.isControlDown())\r
+        if (av.getWrapAlignment() || editingSeqs)\r
                 return;\r
               doMouseExitedDefineMode(evt);\r
 \r
       }\r
       public void mouseEntered(MouseEvent evt)\r
       {\r
-        if (av.getWrapAlignment() || evt.isShiftDown() || evt.isAltDown() ||\r
-            evt.isControlDown())\r
+        if (av.getWrapAlignment() || editingSeqs)\r
           return;\r
         doMouseEnteredDefineMode(evt);\r
       }\r
@@ -96,18 +106,23 @@ public class SeqPanel extends JPanel
 \r
   public void doMouseReleased(MouseEvent evt) {\r
 \r
-    startseq = -1;\r
-    lastres  = -1;\r
     if(seqEditOccurred>-1)\r
-      updateConservation(seqEditOccurred);\r
+      editOccurred(seqEditOccurred);\r
 \r
+    startseq = -1;\r
+    lastres  = -1;\r
     seqEditOccurred = -1;\r
+    editingSeqs  = false;\r
+    groupEditing = false;\r
 \r
     ap.repaint();\r
   }\r
 \r
   public void doMousePressed(MouseEvent evt) {\r
-    ap.alignFrame.addHistoryItem("sequence edit");\r
+\r
+    ap.alignFrame.addHistoryItem( new HistoryItem(\r
+        "Edit Sequence",av.alignment, HistoryItem.EDIT));\r
+\r
     int seq;\r
     int res;\r
 \r
@@ -120,14 +135,8 @@ public class SeqPanel extends JPanel
     if (seq < av.getAlignment().getHeight() &&\r
         res < av.getAlignment().getSequenceAt(seq).getLength())\r
     {\r
-      //char resstr = align.getSequenceAt(seq).getSequence().charAt(res);\r
-      // Find the residue's position in the sequence (res is the position\r
-      // in the alignment\r
-\r
       startseq = seq;\r
-\r
       lastres = res;\r
-\r
     }\r
     else\r
     {\r
@@ -135,6 +144,9 @@ public class SeqPanel extends JPanel
       lastres = -1;\r
     }\r
 \r
+    startEdit = lastres;\r
+    endEdit = lastres;\r
+\r
     return;\r
   }\r
 \r
@@ -227,10 +239,10 @@ public class SeqPanel extends JPanel
 \r
     if (res != lastres)\r
     {\r
-       // Group editing\r
-       if (evt.isAltDown() || evt.isControlDown())\r
+        // Group editing\r
+        if (groupEditing)\r
         {\r
-         SequenceGroup sg = av.getSelectionGroup();\r
+          SequenceGroup sg = av.getSelectionGroup();\r
           if(sg==null)\r
           {\r
             lastres=-1;\r
@@ -310,13 +322,22 @@ public class SeqPanel extends JPanel
             // dragging to the left\r
             for (int j = lastres; j > res; j--)\r
             {\r
+              if( jalview.util.Comparison.isGap(\r
+                av.alignment.getSequenceAt(startseq).getSequence().charAt(res)))\r
+\r
               deleteChar(res, startseq);\r
+              else\r
+              {\r
+\r
+                break;\r
+              }\r
             }\r
-         }\r
+          }\r
 \r
-       }\r
+        }\r
     }\r
 \r
+    endEdit = res;\r
     lastres = res;\r
     repaint();\r
   }\r
@@ -334,21 +355,22 @@ public class SeqPanel extends JPanel
 \r
   public void deleteChar(int j, int seq)\r
   {\r
+    av.alignment.getSequenceAt(seq).deleteCharAt(j);\r
+    seqEditOccurred=seq;\r
 \r
-    if ( jalview.util.Comparison.isGap( av.alignment.getSequenceAt(seq).getSequence().charAt(j)))\r
-    {  av.alignment.getSequenceAt(seq).deleteCharAt(j);\r
-\r
-    }\r
-    else System.out.println("err "+seq+" "+j);\r
     av.alignment.getWidth();\r
     repaint();\r
-    seqEditOccurred=seq;\r
-\r
   }\r
 \r
 \r
-  void updateConservation(int i)\r
+  void editOccurred(int i)\r
   {\r
+    if(endEdit==startEdit)\r
+    {\r
+      ap.alignFrame.historyList.pop();\r
+      ap.alignFrame.updateEditMenuBar();\r
+    }\r
+\r
     av.updateConservation();\r
     av.updateConsensus();\r
 \r
@@ -440,6 +462,7 @@ public class SeqPanel extends JPanel
       // Edit end res position of selected group\r
       changeStartRes = true;\r
 \r
+    stretchGroup.getWidth();\r
 \r
     repaint();\r
 \r