X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=6bfe4bd167207310af5db01b126e185b3b568323;hb=a9f80616357f04492852a963a610f98657c63533;hp=4a679b69f673c7233bebce5e60e295d3a3164dd0;hpb=b29af5fd04101b37e81fa247be34dcbbaec2b9eb;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index 4a679b6..6bfe4bd 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) - * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) + * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * @@ -14,6 +14,7 @@ * 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.gui; @@ -421,16 +422,30 @@ public class AlignmentPanel extends GAlignmentPanel implements protected void validateAnnotationDimensions(boolean adjustPanelHeight) { int height = annotationPanel.adjustPanelHeight(); - - if (hscroll.isVisible()) - { - height += hscroll.getPreferredSize().height; - } - if (height > alignFrame.getHeight() / 2) - { - height = alignFrame.getHeight() / 2; + + int theight = av.getCharHeight() * (av.getAlignment().getHeight() + (!av.hasHiddenRows() ? 0 : av.getAlignment().getHiddenSequences().getSize())); + float sscaling = (float) (theight/(1.0*theight+height)); + float ascaling=(float)(height*1.0/alignFrame.getHeight()); + int rheight = alignFrame.getHeight() - height - av.getCharHeight(); + if (adjustPanelHeight) + { + // NOTE: this logic is different in the applet. Need a better algorithm to define behaviour + // try and set height according to alignment + if (ascaling>0 && sscaling < 0.5) + { + // if the alignment is too big then + // default is 0.5 split + height = alignFrame.getHeight() / 2; + } + else + { + // if space for more than one sequence row left when annotation is fully displayed then set height to annotation height + // otherwise, leave at least two lines of sequence shown. + height = (rheight>av.getCharHeight()) ? height : (-av.getCharHeight() * 3 + + (int) (alignFrame.getHeight() * (1 - sscaling))); + } } - if (!adjustPanelHeight) + else { // maintain same window layout whilst updating sliders height = annotationScroller.getSize().height;