X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=134019de2fb51ad45a7b3e4323afa1131da88c68;hb=3640aa8bd3308650c499f631fb2922cde429c43b;hp=c392b1cb3f598f26e7e2675abd47122f9491b97c;hpb=618947a098219387b294a0c12aba8f0b7fc37fa3;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index c392b1c..134019d 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -1,19 +1,22 @@ /* - * 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.2) + * Copyright (C) 2014 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. + * 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 . + * 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; @@ -422,15 +425,33 @@ public class AlignmentPanel extends GAlignmentPanel implements { 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; @@ -485,7 +506,7 @@ public class AlignmentPanel extends GAlignmentPanel implements return false; } - //fastPaint = false; + fastPaint = false; vscroll.setValue(vscroll.getValue() - 1); } else @@ -495,11 +516,11 @@ public class AlignmentPanel extends GAlignmentPanel implements return false; } - //fastPaint = false; + fastPaint = false; vscroll.setValue(vscroll.getValue() + 1); } - //fastPaint = true; + fastPaint = true; return true; } @@ -521,7 +542,7 @@ public class AlignmentPanel extends GAlignmentPanel implements return false; } - //fastPaint = false; + fastPaint = false; hscroll.setValue(hscroll.getValue() - 1); } else @@ -531,11 +552,11 @@ public class AlignmentPanel extends GAlignmentPanel implements return false; } - //fastPaint = false; + fastPaint = false; hscroll.setValue(hscroll.getValue() + 1); } - //fastPaint = true; + fastPaint = true; return true; } @@ -688,7 +709,7 @@ public class AlignmentPanel extends GAlignmentPanel implements seqPanel.seqCanvas.fastPaint(scrollX, scrollY); scalePanel.repaint(); - if (av.getShowAnnotation() && scrollX!=0) + if (av.getShowAnnotation() && scrollX != 0) { annotationPanel.fastPaint(scrollX); } @@ -1094,7 +1115,9 @@ public class AlignmentPanel extends GAlignmentPanel implements void makeAlignmentImage(int type, File file) { long progress = System.currentTimeMillis(); - if (alignFrame != null) + boolean headless = (System.getProperty("java.awt.headless") != null && System + .getProperty("java.awt.headless").equals("true")); + if (alignFrame != null && !headless) { alignFrame.setProgressBar("Saving " + (type == jalview.util.ImageMaker.PNG ? "PNG image" @@ -1115,8 +1138,7 @@ public class AlignmentPanel extends GAlignmentPanel implements if (av.getWrapAlignment()) { height = getWrappedHeight(); - if (System.getProperty("java.awt.headless") != null - && System.getProperty("java.awt.headless").equals("true")) + if (headless) { // need to obtain default alignment width and then add in any // additional allowance for id margin @@ -1184,7 +1206,7 @@ public class AlignmentPanel extends GAlignmentPanel implements } } finally { - if (alignFrame != null) + if (alignFrame != null && !headless) { alignFrame.setProgressBar("Export complete.", progress); }