Merge branch 'develop' into features/JAL-845splitPaneMergeDevelop
[jalview.git] / src / jalview / appletgui / AlignFrame.java
index cd6c9e5..ba90075 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -23,6 +23,7 @@ package jalview.appletgui;
 import jalview.analysis.AlignmentSorter;
 import jalview.api.AlignViewControllerGuiI;
 import jalview.api.AlignViewControllerI;
+import jalview.api.AlignViewportI;
 import jalview.api.FeatureRenderer;
 import jalview.api.SequenceStructureBinding;
 import jalview.bin.JalviewLite;
@@ -64,6 +65,7 @@ import jalview.schemes.TurnColourScheme;
 import jalview.schemes.ZappoColourScheme;
 import jalview.structure.StructureSelectionManager;
 import jalview.structures.models.AAStructureBindingModel;
+import jalview.util.MappingUtils;
 import jalview.util.MessageManager;
 
 import java.awt.BorderLayout;
@@ -1217,7 +1219,7 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     Frame frame = new Frame();
     frame.add(cap);
     jalview.bin.JalviewLite.addFrame(frame, MessageManager.formatMessage(
-            "label.alignment_output_command", new String[]
+            "label.alignment_output_command", new Object[]
             { e.getActionCommand() }), 600, 500);
     cap.setText(new AppletFormatAdapter().formatSequences(
             e.getActionCommand(), viewport.getAlignment(),
@@ -1316,7 +1318,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
   {
     StringBuffer url = new StringBuffer(jalviewServletURL);
 
-    url.append("?open="
+    // allow servlet parameters to be passed in applet parameter
+    String firstSep = url.lastIndexOf("?") > url.lastIndexOf("/") ? "&"
+            : "?";
+    url.append(firstSep);
+
+    url.append("open="
             + appendProtocol(viewport.applet.getParameter("file")));
 
     if (viewport.applet.getParameter("features") != null)
@@ -1585,6 +1592,12 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     return originalSource;
   }
 
+  /**
+   * Move the currently selected sequences up or down one position in the
+   * alignment
+   * 
+   * @param up
+   */
   public void moveSelectedSequences(boolean up)
   {
     SequenceGroup sg = viewport.getSelectionGroup();
@@ -1595,6 +1608,21 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
     viewport.getAlignment().moveSelectedSequencesByOne(sg,
             up ? null : viewport.getHiddenRepSequences(), up);
     alignPanel.paintAlignment(true);
+
+    /*
+     * Also move cDNA/protein complement sequences
+     */
+    AlignViewportI complement = viewport.getCodingComplement();
+    if (complement != null)
+    {
+      SequenceGroup mappedSelection = MappingUtils.mapSequenceGroup(sg,
+              viewport, complement);
+      complement.getAlignment().moveSelectedSequencesByOne(mappedSelection,
+              up ? null : complement.getHiddenRepSequences(), up);
+      // TODO need to trigger a repaint of the complementary panel - how?
+      // would prefer to handle in SplitFrame but it is not overriding key
+      // listener chiz
+    }
   }
 
   synchronized void slideSequences(boolean right, int size)