X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSplitFrame.java;h=836d70c5fb1fb08dbf4df2b0edb3e368d3e2ec7e;hb=refs%2Fheads%2Ffeatures%2FJAL-1740_BioJsAutoUpdater;hp=cdd1605e3798a825724bd19403994b8337c220ec;hpb=be32c14cd8e48fe0a207cd7030cb9cd46f894678;p=jalview.git diff --git a/src/jalview/appletgui/SplitFrame.java b/src/jalview/appletgui/SplitFrame.java index cdd1605..836d70c 100644 --- a/src/jalview/appletgui/SplitFrame.java +++ b/src/jalview/appletgui/SplitFrame.java @@ -1,15 +1,17 @@ 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 { @@ -48,9 +50,9 @@ 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( @@ -65,6 +67,14 @@ public class SplitFrame extends EmbmenuFrame 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(); } @@ -90,9 +100,9 @@ public class SplitFrame extends EmbmenuFrame */ 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; /* @@ -117,12 +127,13 @@ public class SplitFrame extends EmbmenuFrame } /* - * 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); } } @@ -143,6 +154,8 @@ public class SplitFrame extends EmbmenuFrame panel.add(menuPanel, BorderLayout.NORTH); panel.add(af.statusBar, BorderLayout.SOUTH); panel.add(af.alignPanel, BorderLayout.CENTER); + + af.setSplitFrame(this); } /** @@ -178,11 +191,30 @@ public class SplitFrame extends EmbmenuFrame 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; + } }