X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=a84a468a3e2ffee694724b9eed9ceb60110d1c4e;hb=7da6bb344aa00724c0e5223cf3e1b21451881098;hp=d99bd1d1358baa6658b616de14cff231db28da7a;hpb=edeca22444e251f45ce730542b4dc2187bb95b63;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index d99bd1d..a84a468 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -123,6 +123,7 @@ public class AlignmentPanel extends GAlignmentPanel implements */ public AlignmentPanel(AlignFrame af, final AlignViewport av) { + setName("AligmentPanel"); // setBackground(Color.white); // BH 2019 alignFrame = af; this.av = av; @@ -568,17 +569,24 @@ public class AlignmentPanel extends GAlignmentPanel implements { // BH 2018.04.18 comment: addNotify() is not appropriate here. We // are not changing ancestors, and keyboard action listeners do - // not need to be reset. addNotify() is a very expensive operation, + // not need to be reset, and most importantly, we can't be sure we are actually + // connected to resources. + + // addNotify() is a very expensive operation, // requiring a full re-layout of all parents and children. + // Note in JComponent: + // This method is called by the toolkit internally and should // not be called directly by programs. + // I note that addNotify() is called in several areas of Jalview. int annotationHeight = getAnnotationPanel().adjustPanelHeight(); annotationHeight = getAnnotationPanel() .adjustForAlignFrame(adjustPanelHeight, annotationHeight); + // BH no!! hscroll.addNotify(); annotationScroller.setPreferredSize( new Dimension(annotationScroller.getWidth(), annotationHeight)); @@ -600,8 +608,13 @@ public class AlignmentPanel extends GAlignmentPanel implements */ public void updateLayout() { - if (getTopLevelAncestor() == null) - return; + // BH 2020.06.09 avoiding negative values for SequencePanel and SeqCanvas + // dimensions. + + if (getTopLevelAncestor() == null) + return; + + ViewportRanges ranges = av.getRanges(); fontChanged(); setAnnotationVisible(av.isShowAnnotation()); @@ -645,8 +658,14 @@ public class AlignmentPanel extends GAlignmentPanel implements idSpaceFillerPanel1.setVisible(!wrap); - -// BH not added to anything yet! repaint(); + // System.out.println("ap dim = " + getSize()); + + // these values will go negative if getSize() returns (0,0): + + // System.out.println("seqpan dim = " + getSeqPanel().getSize()); + // System.out.println("seqcan dim = " + getSeqPanel().seqCanvas.getSize()); + + repaint(); } /** @@ -660,8 +679,6 @@ public class AlignmentPanel extends GAlignmentPanel implements */ public void setScrollValues(int x, int y) { - - System.out.println("AlignmentPanel.setScrollValues " + x + "_" + y); if (av == null || av.getAlignment() == null) { @@ -679,20 +696,10 @@ public class AlignmentPanel extends GAlignmentPanel implements hextent = Math.min(getSeqPanel().seqCanvas.getWidth() / av.getCharWidth(), width); vextent = Math.min(getSeqPanel().seqCanvas.getHeight() / av.getCharHeight(), height); - - if (hextent < 0) - System.out.println("AlignmentPanel.setScrollValues found hext=" + hextent + " vext=" + vextent + " width=" + width + " height=" + height - ); - x = Math.max(0, Math.min(x, width - hextent)); y = Math.max(0, Math.min(y, height - vextent)); - - System.out.println("AlignmentPanel.setScrollValues resetting these to " + x + "_" + y - + " based on hext=" + hextent + " vext=" + vextent + " width=" + width + " height=" + height - ); - updateRanges(x, y); updateScrollBars(x, y, width, height); } @@ -854,12 +861,12 @@ public class AlignmentPanel extends GAlignmentPanel implements if (updateOverview) { alignFrame.repaint(); - if (overviewPanel != null) { overviewPanel.updateOverviewImage(); } } else { + invalidate(); // needed so that the id width adjuster works correctly repaint(); } } @@ -867,6 +874,7 @@ public class AlignmentPanel extends GAlignmentPanel implements @Override public void paintComponent(Graphics g) { + // BH OUCH! invalidate(); // needed so that the id width adjuster works correctly Dimension d = getIdPanel().getIdCanvas().getPreferredSize();