Merge branch 'bug/JAL-1726_External-integration-test_PDB' into Release_2_9_Branch
[jalview.git] / src / jalview / gui / SplitFrame.java
index 5c4e4d2..a665f5c 100644 (file)
@@ -65,8 +65,8 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
     // about 50 pixels for the SplitFrame's title bar etc
     int height = ((AlignFrame) getTopFrame()).getHeight()
             + ((AlignFrame) getBottomFrame()).getHeight() + 50;
-    height = Math.min(height, Desktop.instance.getHeight() - 20);
-    // setSize(AlignFrame.DEFAULT_WIDTH, Desktop.instance.getHeight() - 20);
+    // about 65 pixels for Desktop decorators on Windows
+    height = Math.min(height, Desktop.instance.getHeight() - 65);
     setSize(width, height);
 
     adjustLayout();
@@ -100,7 +100,7 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
   public void adjustLayout()
   {
     /*
-     * Ensure sequence ids are the same width for good alignment.
+     * Ensure sequence ids are the same width so sequences line up
      */
     int w1 = ((AlignFrame) getTopFrame()).getViewport().getIdWidth();
     int w2 = ((AlignFrame) getBottomFrame()).getViewport().getIdWidth();
@@ -115,26 +115,22 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
     }
 
     /*
-     * Set the character width for protein to 3 times that for dna.
+     * Scale protein to either 1 or 3 times character width of dna
      */
-    boolean scaleThreeToOne = true; // TODO a new Preference option?
-    if (scaleThreeToOne)
+    final AlignViewport topViewport = ((AlignFrame) getTopFrame()).viewport;
+    final AlignViewport bottomViewport = ((AlignFrame) getBottomFrame()).viewport;
+    final AlignmentI topAlignment = topViewport.getAlignment();
+    final AlignmentI bottomAlignment = bottomViewport.getAlignment();
+    AlignmentViewport cdna = topAlignment.isNucleotide() ? topViewport
+            : (bottomAlignment.isNucleotide() ? bottomViewport : null);
+    AlignmentViewport protein = !topAlignment.isNucleotide() ? topViewport
+            : (!bottomAlignment.isNucleotide() ? bottomViewport : null);
+    if (protein != null && cdna != null)
     {
-      final AlignViewport topViewport = ((AlignFrame) getTopFrame()).viewport;
-      final AlignViewport bottomViewport = ((AlignFrame) getBottomFrame()).viewport;
-      final AlignmentI topAlignment = topViewport.getAlignment();
-      final AlignmentI bottomAlignment = bottomViewport.getAlignment();
-      AlignmentViewport cdna = topAlignment.isNucleotide() ? topViewport
-              : (bottomAlignment.isNucleotide() ? bottomViewport : null);
-      AlignmentViewport protein = !topAlignment.isNucleotide() ? topViewport
-              : (!bottomAlignment.isNucleotide() ? bottomViewport : null);
-      if (protein != null && cdna != null)
-      {
-        ViewStyleI vs = cdna.getViewStyle();
-        ViewStyleI vs2 = protein.getViewStyle();
-        vs2.setCharWidth(3 * vs.getCharWidth());
-        protein.setViewStyle(vs2);
-      }
+      ViewStyleI vs = protein.getViewStyle();
+      int scale = vs.isScaleProteinAsCdna() ? 3 : 1;
+      vs.setCharWidth(scale * cdna.getViewStyle().getCharWidth());
+      protein.setViewStyle(vs);
     }
   }
 
@@ -396,6 +392,8 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
   {
     AlignFrame topFrame = (AlignFrame) getTopFrame();
     AlignFrame bottomFrame = (AlignFrame) getBottomFrame();
+    final boolean scaleProteinAsCdna = topFrame.viewport
+            .isScaleProteinAsCdna();
 
     AlignmentPanel newTopPanel = topFrame.newView(null, true);
     AlignmentPanel newBottomPanel = bottomFrame.newView(null, true);
@@ -414,6 +412,19 @@ public class SplitFrame extends GSplitFrame implements SplitContainerI
     newBottomPanel.av.viewName = newTopPanel.av.viewName;
     newTopPanel.av.setCodingComplement(newBottomPanel.av);
 
+    /*
+     * These lines can be removed once scaleProteinAsCdna is added to element
+     * Viewport in jalview.xsd, as Jalview2XML.copyAlignPanel will then take
+     * care of it
+     */
+    newTopPanel.av.setScaleProteinAsCdna(scaleProteinAsCdna);
+    newBottomPanel.av.setScaleProteinAsCdna(scaleProteinAsCdna);
+
+    /*
+     * Line up id labels etc
+     */
+    adjustLayout();
+
     final StructureSelectionManager ssm = StructureSelectionManager
             .getStructureSelectionManager(Desktop.instance);
     ssm.addCommandListener(newTopPanel.av);