+/*
+ * 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 java.util.List;
+
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.ContiguousI;
+import jalview.datamodel.SequenceI;
+
+public class JustifyLeftOrRightCommand extends EditCommand
+{
+ /**
+ * Constructs and performs a trim alignment command
+ *
+ * @param description
+ * (to show in Undo/Redo menu)
+ * @param justifyLeft
+ * if true left justify, otherwise right
+ * @param seqs
+ * the sequences to justify
+ * @param start
+ * - leftmost column (base 0) to justify
+ *
+ * @param end
+ * - rightmost column (base 0) to justify
+ *
+ * @param al
+ */
+ public JustifyLeftOrRightCommand(String description, boolean left,
+ List<SequenceI> seqs, int from, int to, AlignmentI al)
+ {
+ this.description = description;
+
+ for (SequenceI seq : seqs)
+ {
+ ContiguousI cont = seq.findPositions(from + 1, to + 1);
+ if (cont == null)
+ {
+ continue;
+ }
+ int dsstart = seq.getDatasetSequence().getStart();
+ char[] sqchar = seq.getDatasetSequence().getSequence(
+ -dsstart + cont.getBegin(), -dsstart + cont.getEnd() + 1);
+ // debug
+ // println sqchar;
+ char[] alseq = new char[to - from + 1];
+ int sqstart = left ? 0 : alseq.length - sqchar.length;
+ int gaps = alseq.length - sqchar.length;
+ int gapstart = left ? sqchar.length : 0;
+ char gc = al.getGapCharacter();
+ for (int gp = 0; gp < gaps; gp++)
+ {
+ alseq[gapstart + gp] = gc;
+ }
+
+ for (int sqp = 0; sqp < sqchar.length; sqp++)
+ {
+ alseq[sqp + sqstart] = sqchar[sqp];
+ }
+ SequenceI[] sqa = new SequenceI[1];
+ sqa[0] = seq;
+
+ addEdit(new jalview.commands.EditCommand.Edit(
+ jalview.commands.EditCommand.Action.REPLACE, sqa, from,
+ to + 1, al, new String(alseq)));
+ // addEdit(new jalview.commands.EditCommand("justify",
+ // jalview.commands.EditCommand.Action.REPLACE,
+ // new String(alseq), sqa, from, to + 1, al).getEdit(0));
+ }
+
+ performEdit(0, null);
+ }
+}