JAL-2089 patch broken merge to master for Release 2.10.0b1
[jalview.git] / src / jalview / commands / OrderCommand.java
index 57097c0..5758e19 100644 (file)
-/*\r
- * Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
- *\r
- * This program is free software; you can redistribute it and/or\r
- * modify it under the terms of the GNU General Public License\r
- * as published by the Free Software Foundation; either version 2\r
- * of the License, or (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
- */\r
-package jalview.commands;\r
-\r
-import jalview.analysis.*;\r
-import jalview.datamodel.*;\r
-\r
-public class OrderCommand\r
-    implements CommandI\r
-{\r
-  String description;\r
-  SequenceI[] seqs;\r
-  SequenceI[] seqs2;\r
-  AlignmentI al;\r
-\r
-  public OrderCommand(String description,\r
-                      SequenceI[] seqs,\r
-                      AlignmentI al)\r
-  {\r
-    this.description = description;\r
-    this.seqs = seqs;\r
-    this.seqs2 = al.getSequencesArray();\r
-    this.al = al;\r
-    doCommand();\r
-  }\r
-\r
-  public String getDescription()\r
-  {\r
-    return description;\r
-  }\r
-\r
-  public int getSize()\r
-  {\r
-    return 1;\r
-  }\r
-\r
-  public void doCommand()\r
-  {\r
-    AlignmentSorter.setOrder(al, seqs2);\r
-  }\r
-\r
-  public void undoCommand()\r
-  {\r
-    AlignmentSorter.setOrder(al, seqs);\r
-  }\r
-}\r
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3
+ * of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
+package jalview.commands;
+
+import jalview.analysis.AlignmentSorter;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.SequenceI;
+
+/**
+ * An undoable command to reorder the sequences in an alignment.
+ * 
+ * @author gmcarstairs
+ *
+ */
+public class OrderCommand implements CommandI
+{
+  String description;
+
+  /*
+   * The sequence order before sorting (target order for an undo)
+   */
+  SequenceI[] seqs;
+
+  /*
+   * The sequence order specified by this command
+   */
+  SequenceI[] seqs2;
+
+  /*
+   * The alignment the command acts on
+   */
+  AlignmentI al;
+
+  /**
+   * Constructor given the 'undo' sequence order, and the (already) sorted
+   * alignment.
+   * 
+   * @param description
+   *          a text label for the 'undo' menu option
+   * @param seqs
+   *          the sequence order for undo
+   * @param al
+   *          the alignment as ordered by this command
+   */
+  public OrderCommand(String description, SequenceI[] seqs, AlignmentI al)
+  {
+    this.description = description;
+    this.seqs = seqs;
+    this.seqs2 = al.getSequencesArray();
+    this.al = al;
+    doCommand(null);
+  }
+
+  public String getDescription()
+  {
+    return description;
+  }
+
+  public int getSize()
+  {
+    return 1;
+  }
+
+  public void doCommand(AlignmentI[] views)
+  {
+    AlignmentSorter.setOrder(al, seqs2);
+  }
+
+  public void undoCommand(AlignmentI[] views)
+  {
+    AlignmentSorter.setOrder(al, seqs);
+  }
+
+  /**
+   * Returns the sequence order used to sort, or before sorting if undo=true.
+   * 
+   * @param undo
+   * @return
+   */
+  public SequenceI[] getSequenceOrder(boolean undo)
+  {
+    return undo ? seqs : seqs2;
+  }
+}