X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FAlignmentPanel.java;h=02ad0cd285473d6bd24ddef1ade55867197109c3;hb=9d139ca8d1af8f0f2d78193d418ae9e9168a3e8a;hp=4941b1154f0d067126b3f6062d4cd780c262c7b0;hpb=ad20cd92225f2ee8c251d39b00b90555d382a616;p=jalview.git diff --git a/src/jalview/appletgui/AlignmentPanel.java b/src/jalview/appletgui/AlignmentPanel.java index 4941b11..02ad0cd 100644 --- a/src/jalview/appletgui/AlignmentPanel.java +++ b/src/jalview/appletgui/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.appletgui; @@ -83,7 +86,6 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, annotationPanelHolder.add(annotationPanel, BorderLayout.CENTER); sequenceHolderPanel.add(annotationPanelHolder, BorderLayout.SOUTH); - alabels = new AnnotationLabels(this); setAnnotationVisible(av.showAnnotation); @@ -137,7 +139,6 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, } } }); - } public SequenceRenderer getSequenceRenderer() @@ -435,6 +436,11 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, annotationSpaceFillerHolder.setVisible(b); annotationPanelHolder.setVisible(b); } + else + { + annotationSpaceFillerHolder.setVisible(false); + annotationPanelHolder.setVisible(false); + } validate(); repaint(); } @@ -479,12 +485,29 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, int mheight = height; Dimension d = sequenceHolderPanel.getSize(), e = idPanel.getSize(); int seqandannot = d.height - scalePanelHolder.getSize().height; - // sets initial preferred height - if ((height + 40) > seqandannot / 2) + + if (adjustPanelHeight) { - height = seqandannot / 2; + // NOTE: this logic is different in the application. Need a better + // algorithm to define behaviour + // sets initial preferred height + // try and set height according to alignment + float sscaling = (float) ((av.getCharHeight() * av.getAlignment() + .getHeight()) / (1.0 * mheight)); + if (sscaling > 0.5) + { + // if the alignment is too big then + // default is 0.5 split + height = seqandannot / 2; + } + else + { + // otherwise just set the panel so that one row of sequence is visible + height = -av.getCharHeight() * 1 + + (int) (seqandannot * (1 - sscaling)); + } } - if (!adjustPanelHeight) + else { // maintain same window layout whilst updating sliders height = annotationPanelHolder.getSize().height; @@ -498,7 +521,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, alabels.setSize(new Dimension(e.width, height)); annotationSpaceFillerHolder.setSize(new Dimension(e.width, height)); annotationPanelHolder.setSize(new Dimension(d.width, height)); - seqPanelHolder.setSize(d.width, seqandannot - height); + // seqPanelHolder.setSize(d.width, seqandannot - height); seqPanel.seqCanvas .setSize(d.width, seqPanel.seqCanvas.getSize().height); int s = apvscroll.getValue(); @@ -507,8 +530,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, s = 0; } apvscroll.setValues(s, height, 0, mheight); - annotationPanel.setScrollOffset(apvscroll.getValue()); - alabels.setScrollOffset(apvscroll.getValue()); + annotationPanel.setScrollOffset(apvscroll.getValue(), false); + alabels.setScrollOffset(apvscroll.getValue(), false); } public void setWrapAlignment(boolean wrap) @@ -536,6 +559,7 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, fontChanged(); // This is so that the scalePanel is resized correctly validate(); + sequenceHolderPanel.validate(); repaint(); } @@ -672,8 +696,8 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, if (evt == null || evt.getSource() == apvscroll) { - annotationPanel.setScrollOffset(apvscroll.getValue()); - alabels.setScrollOffset(apvscroll.getValue()); + annotationPanel.setScrollOffset(apvscroll.getValue(), false); + alabels.setScrollOffset(apvscroll.getValue(), false); // annotationPanel.image=null; // alabels.image=null; // alabels.repaint(); @@ -803,12 +827,18 @@ public class AlignmentPanel extends Panel implements AdjustmentListener, setScrollValues(av.getStartRes(), av.getStartSeq()); } - alabels.repaint(); - seqPanel.seqCanvas.repaint(); - scalePanel.repaint(); - annotationPanel.repaint(); idPanel.idCanvas.repaint(); + if (!av.wrapAlignment) + { + if (av.showAnnotation) + { + alabels.repaint(); + annotationPanel.repaint(); + } + scalePanel.repaint(); + } + } protected Panel sequenceHolderPanel = new Panel();