X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSplitFrame.java;h=82558508bffc1cc71dd0128969825a02e2cacb39;hb=9876fdccf311378e690c1f9e18db52675d427b89;hp=59b66c6fddd5cba879f4d05ef75f0e6ae895033d;hpb=c640b1c17cbfbc41723b0441f049cd416267dcc3;p=jalview.git diff --git a/src/jalview/appletgui/SplitFrame.java b/src/jalview/appletgui/SplitFrame.java index 59b66c6..8255850 100644 --- a/src/jalview/appletgui/SplitFrame.java +++ b/src/jalview/appletgui/SplitFrame.java @@ -1,16 +1,37 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9) + * Copyright (C) 2015 The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ 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 jalview.viewmodel.AlignmentViewport; + +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.Panel; public class SplitFrame extends EmbmenuFrame { @@ -49,9 +70,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( @@ -60,7 +81,7 @@ public class SplitFrame extends EmbmenuFrame { final StructureSelectionManager ssm = StructureSelectionManager .getStructureSelectionManager(topViewport.applet); - ssm.addMappings(protein.getAlignment().getCodonFrames()); + ssm.registerMappings(protein.getAlignment().getCodonFrames()); topViewport.setCodingComplement(bottomViewport); ssm.addCommandListener(cdna); ssm.addCommandListener(protein); @@ -99,9 +120,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; /* @@ -126,12 +147,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); } } @@ -152,6 +174,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); } /** @@ -187,11 +211,30 @@ public class SplitFrame extends EmbmenuFrame else { this.add(outermost); - int width = Math.max(topFrame.frameWidth, - bottomFrame.frameWidth); + 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; + } }