// 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();
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();
}
/*
- * 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);
}
}
{
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);
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);