X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAlignmentPanel.java;h=fd53faf9eb74e918ab01f10176010f83c05f7a7c;hb=d043ce47fc710d3eb2629ba926a8a7417bd67d8c;hp=b57bc0860f5eccf3141948dc43ea0627e16f2185;hpb=8594f8fc93ae2003f0587a5b3b01d56f41216fac;p=jalview.git diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index b57bc08..fd53faf 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -20,34 +20,11 @@ */ 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