JAL-3493 clear search highlights when escape/deselect all
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index d99bd1d..08843aa 100644 (file)
@@ -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));
@@ -594,14 +602,9 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
   /**
    * update alignment layout for viewport settings
-   * 
-   * @param wrap
-   *          DOCUMENT ME!
    */
   public void updateLayout()
   {
-    if (getTopLevelAncestor() == null)
-      return;
     ViewportRanges ranges = av.getRanges();
     fontChanged();
     setAnnotationVisible(av.isShowAnnotation());
@@ -620,9 +623,24 @@ public class AlignmentPanel extends GAlignmentPanel implements
     {
       annotationScroller.setVisible(true);
       annotationSpaceFillerHolder.setVisible(true);
-      validateAnnotationDimensions(false);
     }
 
+    idSpaceFillerPanel1.setVisible(!wrap);
+
+    /*
+     * defer dimension calculations if panel not yet added to a Window
+     * BH 2020.06.09
+     */
+    if (getTopLevelAncestor() == null)
+    {
+      repaint();
+      return;
+    }
+
+    if (!wrap && av.isShowAnnotation())
+    {
+      validateAnnotationDimensions(false);
+    }
     int canvasWidth = getSeqPanel().seqCanvas.getWidth();
     if (canvasWidth > 0)
     { // may not yet be laid out
@@ -643,10 +661,12 @@ public class AlignmentPanel extends GAlignmentPanel implements
       }
     }
 
-    idSpaceFillerPanel1.setVisible(!wrap);
+    // 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());
 
-    
-// BH not added to anything yet!    repaint();
+    repaint();
   }
 
   /**
@@ -660,8 +680,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 +697,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 +862,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 +875,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();
@@ -1933,7 +1942,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     }
     av.setSelectionGroup(null);
     av.getColumnSelection().clear();
-    av.setSelectionGroup(null);
+    viewport.setSearchResults(null);
     getIdPanel().getIdCanvas().searchResults = null;
     av.sendSelection();
     // JAL-2034 - should delegate to