Use EditCommand.Cut
authoramwaterhouse <Andrew Waterhouse>
Tue, 24 Oct 2006 11:36:59 +0000 (11:36 +0000)
committeramwaterhouse <Andrew Waterhouse>
Tue, 24 Oct 2006 11:36:59 +0000 (11:36 +0000)
src/jalview/gui/RedundancyPanel.java

index 50183eb..2d26245 100755 (executable)
 package jalview.gui;\r
 \r
 import jalview.datamodel.*;\r
-\r
 import jalview.jbgui.*;\r
+import jalview.util.Comparison;\r
+import jalview.commands.*;\r
 \r
 import java.awt.event.*;\r
 \r
 import java.util.*;\r
 \r
 import javax.swing.event.*;\r
-import jalview.util.Comparison;\r
+\r
 import javax.swing.*;\r
 \r
 \r
@@ -223,16 +224,6 @@ public class RedundancyPanel extends GSliderPanel implements Runnable
      */\r
     public void applyButton_actionPerformed(ActionEvent e)\r
     {\r
-        historyList.push(new HistoryItem("Remove redundancy",\r
-                    ap.av.alignment, HistoryItem.HIDE));\r
-\r
-        if ((historyList.size() == 1) ||\r
-                !af.historyList.contains(historyList.firstElement()))\r
-        {\r
-            af.addHistoryItem((HistoryItem) historyList.firstElement());\r
-            af.updateEditMenuBar();\r
-        }\r
-\r
         Vector del = new Vector();\r
 \r
         undoButton.setEnabled(true);\r
@@ -247,7 +238,7 @@ public class RedundancyPanel extends GSliderPanel implements Runnable
             SequenceI seq = originalSequences[i];\r
             ap.av.alignment.deleteSequence(seq);\r
             PaintRefresher.Refresh(this,ap.av.getSequenceSetId(),seq,null);\r
-            del.add(seq);\r
+            del.addElement(seq);\r
             if (sg != null)\r
             {\r
               sg.deleteSequence(seq, false);\r
@@ -260,15 +251,26 @@ public class RedundancyPanel extends GSliderPanel implements Runnable
         // actually restore these sequences.\r
         if (del.size() > 0)\r
         {\r
-            for (int i = 0, j = del.size(); i < j; i++)\r
-            {\r
-                SequenceI sq = (SequenceI) del.elementAt(i);\r
-                sq.deleteChars(0, sq.getLength());\r
-            }\r
+          SequenceI [] deleted = new SequenceI[del.size()];\r
+\r
+          int width = 0;\r
+\r
+          for (int i = 0, j = del.size(); i < j; i++)\r
+          {\r
+            deleted[i] = (SequenceI)del.elementAt(i);\r
+            if(deleted[i].getLength()>width)\r
+              width = deleted[i].getLength();\r
+          }\r
+\r
+          EditCommand cut = new EditCommand("Remove Redundancy",\r
+              EditCommand.CUT, deleted,0,width,ap.av.alignment);\r
+\r
+          historyList.push(cut);\r
+\r
+          ap.av.firePropertyChange("alignment", null, ap.av.getAlignment().getSequences());\r
         }\r
 \r
-        ap.av.firePropertyChange("alignment", null, ap.av.getAlignment().getSequences());\r
-        af.updateEditMenuBar();\r
+\r
     }\r
 \r
 \r
@@ -279,18 +281,12 @@ public class RedundancyPanel extends GSliderPanel implements Runnable
      */\r
     public void undoButton_actionPerformed(ActionEvent e)\r
     {\r
-      HistoryItem hi = (HistoryItem) historyList.pop();\r
-      af.restoreHistoryItem(hi);\r
+      CommandI command = (CommandI) historyList.pop();\r
+      command.undoCommand();\r
 \r
       if (historyList.size() == 0)\r
       {\r
         undoButton.setEnabled(false);\r
-\r
-        if (af.historyList.contains(hi))\r
-        {\r
-          af.historyList.remove(hi);\r
-          af.updateEditMenuBar();\r
-        }\r
       }\r
     }\r
 \r