Merge branch 'develop' into update_212_Dec_merge_with_21125_chamges
[jalview.git] / src / jalview / gui / AlignmentPanel.java
index b57bc08..fd53faf 100644 (file)
  */
 package jalview.gui;
 
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.FontMetrics;
-import java.awt.Graphics;
-import java.awt.Graphics2D;
-import java.awt.event.AdjustmentEvent;
-import java.awt.event.AdjustmentListener;
-import java.awt.event.ComponentAdapter;
-import java.awt.event.ComponentEvent;
-import java.awt.print.PageFormat;
-import java.awt.print.Printable;
-import java.awt.print.PrinterException;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.PrintWriter;
-import java.util.List;
-
-import javax.swing.SwingUtilities;
-
 import jalview.analysis.AnnotationSorter;
 import jalview.api.AlignViewportI;
 import jalview.api.AlignmentViewPanel;
 import jalview.bin.Cache;
+import jalview.bin.Console;
 import jalview.bin.Jalview;
 import jalview.datamodel.AlignmentI;
 import jalview.datamodel.HiddenColumns;
@@ -68,6 +45,30 @@ import jalview.viewmodel.AlignmentViewport;
 import jalview.viewmodel.ViewportListenerI;
 import jalview.viewmodel.ViewportRanges;
 
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Container;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.event.AdjustmentEvent;
+import java.awt.event.AdjustmentListener;
+import java.awt.event.ComponentAdapter;
+import java.awt.event.ComponentEvent;
+import java.awt.print.PageFormat;
+import java.awt.print.Printable;
+import java.awt.print.PrinterException;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintWriter;
+import java.util.List;
+
+import javax.swing.SwingUtilities;
+
 /**
  * DOCUMENT ME!
  * 
@@ -123,6 +124,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;
@@ -313,6 +315,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
   public Dimension calculateIdWidth(int maxwidth)
   {
     Container c = this;// new Container();
+
     FontMetrics fm = c.getFontMetrics(
             new Font(av.font.getName(), Font.ITALIC, av.font.getSize()));
 
@@ -321,7 +324,6 @@ public class AlignmentPanel extends GAlignmentPanel implements
     int idWidth = 0;
 
     boolean withSuffix = av.getShowJVSuffix();
-
     while ((i < al.getHeight()) && (al.getSequenceAt(i) != null))
     {
       SequenceI s = al.getSequenceAt(i);
@@ -593,6 +595,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     Dimension e = idPanel.getSize();
     alabels.setSize(new Dimension(e.width, annotationHeight));
 
+
     annotationSpaceFillerHolder.setPreferredSize(new Dimension(
             annotationSpaceFillerHolder.getWidth(), annotationHeight));
     annotationScroller.validate();
@@ -601,19 +604,9 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
   /**
    * update alignment layout for viewport settings
-   * 
-   * @param wrap
-   *          DOCUMENT ME!
    */
   public void updateLayout()
   {
-    // BH 2020.06.09 avoiding negative values for SequencePanel and SeqCanvas
-    // dimensions.
-    
-     if (getTopLevelAncestor() == null)
-     return;
-
-    
     ViewportRanges ranges = av.getRanges();
     fontChanged();
     setAnnotationVisible(av.isShowAnnotation());
@@ -632,6 +625,22 @@ public class AlignmentPanel extends GAlignmentPanel implements
     {
       annotationScroller.setVisible(true);
       annotationSpaceFillerHolder.setVisible(true);
+    }
+
+    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);
     }
 
@@ -655,16 +664,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();
   }
 
   /**
@@ -692,6 +697,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     {
       int width = av.getAlignment().getVisibleWidth();
       int height = av.getAlignment().getHeight();
+
       
       hextent = Math.min(getSeqPanel().seqCanvas.getWidth() / av.getCharWidth(),  width);
       vextent = Math.min(getSeqPanel().seqCanvas.getHeight() / av.getCharHeight(),  height);
@@ -709,7 +715,6 @@ public class AlignmentPanel extends GAlignmentPanel implements
     hscroll.setValues(x, hextent, 0, width);
     vscroll.setValues(y, vextent, 0, height);
   }
-
   /**
    * Respond to adjustment event when horizontal or vertical scrollbar is
    * changed
@@ -726,6 +731,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
       return;
     }
 
+
     if (evt.getSource() == hscroll)
     {
       if (!updateRanges(hscroll.getValue(), Integer.MIN_VALUE))
@@ -829,7 +835,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
           // could not be validated and it is not clear if it is now being
           // called. Log warning here in case it is called and unforeseen
           // problems occur
-          Cache.log.warn(
+          Console.warn(
                   "Unexpected path through code: Wrapped jar file opened with wrap alignment set in preferences");
 
           // scroll to start of panel
@@ -859,13 +865,14 @@ public class AlignmentPanel extends GAlignmentPanel implements
     }
     if (updateOverview)
     {
-      alignFrame.repaint();
 
+      alignFrame.repaint();
       if (overviewPanel != null)
       {
         overviewPanel.updateOverviewImage();
       }
     } else {
+      invalidate(); // needed so that the id width adjuster works correctly
       repaint();
     }
   }
@@ -873,6 +880,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();
@@ -1490,9 +1498,9 @@ public class AlignmentPanel extends GAlignmentPanel implements
     }
     else
     {
-      if (Cache.log.isDebugEnabled())
+      if (Console.isDebugEnabled())
       {
-        Cache.log.warn("Closing alignment panel which is already closed.");
+        Console.warn("Closing alignment panel which is already closed.");
       }
     }
   }
@@ -1570,10 +1578,15 @@ public class AlignmentPanel extends GAlignmentPanel implements
 
     if (b)
     {
-      alignFrame.setDisplayedView(this);
+      setAlignFrameView();
     }
   }
 
+  public void setAlignFrameView()
+  {
+    alignFrame.setDisplayedView(this);
+  }
+
   @Override
   public StructureSelectionManager getStructureSelectionManager()
   {
@@ -1745,7 +1758,6 @@ public class AlignmentPanel extends GAlignmentPanel implements
     ViewportRanges ranges = av.getRanges();
     setScrollValues(ranges.getStartRes(), ranges.getStartSeq());
   }
-
   /**
    * Set the reference to the PCA/Tree chooser dialog for this panel. This
    * reference should be nulled when the dialog is closed.
@@ -1939,7 +1951,7 @@ public class AlignmentPanel extends GAlignmentPanel implements
     }
     av.setSelectionGroup(null);
     av.getColumnSelection().clear();
-    av.setSelectionGroup(null);
+    av.setSearchResults(null);
     getIdPanel().getIdCanvas().searchResults = null;
     av.sendSelection();
     // JAL-2034 - should delegate to