package jalview.appletgui;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.Panel;
+
import jalview.analysis.AlignmentUtils;
+import jalview.api.AlignmentViewPanel;
import jalview.api.ViewStyleI;
import jalview.bin.JalviewLite;
import jalview.datamodel.AlignmentI;
import jalview.structure.StructureSelectionManager;
-
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.GridLayout;
-import java.awt.Panel;
+import jalview.viewmodel.AlignmentViewport;
public class SplitFrame extends EmbmenuFrame
{
final AlignViewport bottomViewport = bottomFrame.viewport;
final AlignmentI topAlignment = topViewport.getAlignment();
final AlignmentI bottomAlignment = bottomViewport.getAlignment();
- AlignViewport cdna = topAlignment.isNucleotide() ? topViewport
+ AlignmentViewport cdna = topAlignment.isNucleotide() ? topViewport
: (bottomAlignment.isNucleotide() ? bottomViewport : null);
- AlignViewport protein = !topAlignment.isNucleotide() ? topViewport
+ AlignmentViewport protein = !topAlignment.isNucleotide() ? topViewport
: (!bottomAlignment.isNucleotide() ? bottomViewport : null);
boolean mapped = AlignmentUtils.mapProteinToCdna(
ssm.addCommandListener(protein);
}
+ /*
+ * Now mappings exist, can compute cDNA consensus on protein alignment
+ */
+ protein.initComplementConsensus();
+ AlignmentViewPanel ap = topAlignment.isNucleotide() ? bottomFrame.alignPanel
+ : topFrame.alignPanel;
+ protein.updateConsensus(ap);
+
adjustLayout();
}
*/
protected void adjustLayout()
{
- AlignViewport cdna = topFrame.getAlignViewport().getAlignment()
+ AlignmentViewport cdna = topFrame.getAlignViewport().getAlignment()
.isNucleotide() ? topFrame.viewport : bottomFrame.viewport;
- AlignViewport protein = cdna == topFrame.viewport ? bottomFrame.viewport
+ AlignmentViewport protein = cdna == topFrame.viewport ? bottomFrame.viewport
: topFrame.viewport;
/*
}
/*
- * Expand protein to 3 times character width of dna
+ * Scale protein to either 1 or 3 times character width of dna
*/
if (protein != null && cdna != null)
{
ViewStyleI vs = protein.getViewStyle();
- vs.setCharWidth(3 * vs.getCharWidth());
+ int scale = vs.isScaleProteinAsCdna() ? 3 : 1;
+ vs.setCharWidth(scale * cdna.getViewStyle().getCharWidth());
protein.setViewStyle(vs);
}
}
panel.add(menuPanel, BorderLayout.NORTH);
panel.add(af.statusBar, BorderLayout.SOUTH);
panel.add(af.alignPanel, BorderLayout.CENTER);
+
+ af.setSplitFrame(this);
}
/**
else
{
this.add(outermost);
- int width = Math.max(topFrame.DEFAULT_WIDTH,
- bottomFrame.DEFAULT_WIDTH);
- int height = topFrame.DEFAULT_HEIGHT + bottomFrame.DEFAULT_HEIGHT;
+ int width = Math.max(topFrame.frameWidth, bottomFrame.frameWidth);
+ int height = topFrame.frameHeight + bottomFrame.frameHeight;
jalview.bin.JalviewLite
.addFrame(this, this.getTitle(), width, height);
}
}
+
+ /**
+ * Returns the contained AlignFrame complementary to the one given (or null if
+ * no match to top or bottom component).
+ *
+ * @param af
+ * @return
+ */
+ public AlignFrame getComplement(AlignFrame af)
+ {
+ if (topFrame == af)
+ {
+ return bottomFrame;
+ }
+ else if (bottomFrame == af)
+ {
+ return topFrame;
+ }
+ return null;
+ }
}