X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FSplitFrame.java;h=a665f5c7e8a6844755b5a71e85fe8db6da39b3d6;hb=2503f4dfa319a2854d2cc8f7e07e7b979df6bff6;hp=5c4e4d24085a2652912ad8ee0732504e3ffe7669;hpb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;p=jalview.git diff --git a/src/jalview/gui/SplitFrame.java b/src/jalview/gui/SplitFrame.java index 5c4e4d2..a665f5c 100644 --- a/src/jalview/gui/SplitFrame.java +++ b/src/jalview/gui/SplitFrame.java @@ -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);