X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fcommands%2FOrderCommand.java;h=5758e19aa1e4a14dc0f2110f7774c9f77df8993f;hb=37de9310bec3501cbc6381e0c3dcb282fcaad812;hp=57097c01bf4a48cff1afad1ef910aa58caca43dc;hpb=7bc226b58110fa26d9dbd3f0c78095d06909ffc3;p=jalview.git diff --git a/src/jalview/commands/OrderCommand.java b/src/jalview/commands/OrderCommand.java index 57097c0..5758e19 100644 --- a/src/jalview/commands/OrderCommand.java +++ b/src/jalview/commands/OrderCommand.java @@ -1,62 +1,102 @@ -/* - * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle - * - * This program 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 2 - * of the License, or (at your option) any later version. - * - * This program 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 this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ -package jalview.commands; - -import jalview.analysis.*; -import jalview.datamodel.*; - -public class OrderCommand - implements CommandI -{ - String description; - SequenceI[] seqs; - SequenceI[] seqs2; - AlignmentI al; - - public OrderCommand(String description, - SequenceI[] seqs, - AlignmentI al) - { - this.description = description; - this.seqs = seqs; - this.seqs2 = al.getSequencesArray(); - this.al = al; - doCommand(); - } - - public String getDescription() - { - return description; - } - - public int getSize() - { - return 1; - } - - public void doCommand() - { - AlignmentSorter.setOrder(al, seqs2); - } - - public void undoCommand() - { - AlignmentSorter.setOrder(al, seqs); - } -} +/* + * 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 . + * 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; + } +}