X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FAnnotationPanel.java;h=d0af0a549fc101d7b048addd9e50e9893f495dd2;hb=f6a7e5514230be7ea8c2d4cccb504b4ed95f80ef;hp=411c2448e579498bdcf2b96f2eab28179c923e66;hpb=ddc7f53dd8398442e2025d11330fa8dfe2f8dd35;p=jalview.git diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index 411c244..d0af0a5 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -1,18 +1,18 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) - * Copyright (C) 2011 J Procter, AM Waterhouse, J Engelhardt, LM Lui, G Barton, M Clamp, S Searle - * + * 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 + * * 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 + * 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. - * - * 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 + * + * 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 . */ package jalview.gui; @@ -27,7 +27,9 @@ import jalview.renderer.AnnotationRenderer; import jalview.renderer.AwtRenderPanelI; /** - * AnnotationPanel displays visible portion of annotation rows below unwrapped alignment + * AnnotationPanel displays visible portion of annotation rows below unwrapped + * alignment + * * @author $author$ * @version $Revision$ */ @@ -99,7 +101,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * Creates a new AnnotationPanel object. - * + * * @param ap * DOCUMENT ME! */ @@ -118,7 +120,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, addMouseMotionListener(this); ap.annotationScroller.getVerticalScrollBar() .addAdjustmentListener(this); - // save any wheel listeners on the scroller, so we can propagate scroll events to them. + // save any wheel listeners on the scroller, so we can propagate scroll + // events to them. _mwl = ap.annotationScroller.getMouseWheelListeners(); // and then set our own listener to consume all mousewheel events ap.annotationScroller.addMouseWheelListener(this); @@ -148,7 +151,8 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } else { - // TODO: find the correct way to let the event bubble up to ap.annotationScroller + // TODO: find the correct way to let the event bubble up to + // ap.annotationScroller for (MouseWheelListener mwl : _mwl) { if (mwl != null) @@ -197,7 +201,10 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /* * (non-Javadoc) - * @see java.awt.event.AdjustmentListener#adjustmentValueChanged(java.awt.event.AdjustmentEvent) + * + * @see + * java.awt.event.AdjustmentListener#adjustmentValueChanged(java.awt.event + * .AdjustmentEvent) */ @Override public void adjustmentValueChanged(AdjustmentEvent evt) @@ -210,7 +217,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, * Calculates the height of the annotation displayed in the annotation panel. * Callers should normally call the ap.adjustAnnotationHeight method to ensure * all annotation associated components are updated correctly. - * + * */ public int adjustPanelHeight() { @@ -227,7 +234,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * DOCUMENT ME! - * + * * @param evt * DOCUMENT ME! */ @@ -383,7 +390,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, { String collatedInput = ""; String last = ""; - ColumnSelection viscols=av.getColumnSelection(); + ColumnSelection viscols = av.getColumnSelection(); // TODO: refactor and save av.getColumnSelection for efficiency for (int i = 0; i < columnSelection.size(); i++) { @@ -426,7 +433,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * DOCUMENT ME! - * + * * @param evt * DOCUMENT ME! */ @@ -519,7 +526,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * DOCUMENT ME! - * + * * @param evt * DOCUMENT ME! */ @@ -534,7 +541,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * DOCUMENT ME! - * + * * @param evt * DOCUMENT ME! */ @@ -546,7 +553,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * DOCUMENT ME! - * + * * @param evt * DOCUMENT ME! */ @@ -558,7 +565,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * DOCUMENT ME! - * + * * @param evt * DOCUMENT ME! */ @@ -585,7 +592,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * DOCUMENT ME! - * + * * @param evt * DOCUMENT ME! */ @@ -685,7 +692,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, /** * DOCUMENT ME! - * + * * @param evt * DOCUMENT ME! */ @@ -725,10 +732,12 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } } - private volatile boolean imageFresh=false; + + private volatile boolean imageFresh = false; + /** * DOCUMENT ME! - * + * * @param g * DOCUMENT ME! */ @@ -754,8 +763,24 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, if (image == null || imgWidth != image.getWidth() || image.getHeight(this) != getHeight()) { - image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(), - BufferedImage.TYPE_INT_RGB); + try + { + image = new BufferedImage(imgWidth, ap.annotationPanel.getHeight(), + BufferedImage.TYPE_INT_RGB); + } catch (OutOfMemoryError oom) + { + try + { + System.gc(); + } catch (Exception x) + { + } + ; + new OOMWarning( + "Couldn't allocate memory to redraw screen. Please restart Jalview", + oom); + return; + } gg = (Graphics2D) image.getGraphics(); if (av.antiAlias) @@ -768,17 +793,17 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, fm = gg.getFontMetrics(); gg.setColor(Color.white); gg.fillRect(0, 0, imgWidth, image.getHeight()); - imageFresh=true; + imageFresh = true; } drawComponent(gg, av.startRes, av.endRes + 1); - imageFresh=false; + imageFresh = false; g.drawImage(image, 0, 0, this); } /** * non-Thread safe repaint - * + * * @param horizontal * repaint with horizontal shift in alignment */ @@ -819,10 +844,12 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, repaint(); } - private volatile boolean lastImageGood=false; + + private volatile boolean lastImageGood = false; + /** * DOCUMENT ME! - * + * * @param g * DOCUMENT ME! * @param startRes @@ -832,21 +859,23 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, */ public void drawComponent(Graphics g, int startRes, int endRes) { - BufferedImage oldFaded=fadedImage; + BufferedImage oldFaded = fadedImage; if (av.isCalcInProgress()) { if (image == null) { - lastImageGood=false; + lastImageGood = false; return; } // We'll keep a record of the old image, // and draw a faded image until the calculation // has completed - if (lastImageGood && (fadedImage == null || fadedImage.getWidth() != imgWidth - || fadedImage.getHeight() != image.getHeight())) + if (lastImageGood + && (fadedImage == null || fadedImage.getWidth() != imgWidth || fadedImage + .getHeight() != image.getHeight())) { -// System.err.println("redraw faded image ("+(fadedImage==null ? "null image" : "") + " lastGood="+lastImageGood+")"); + // System.err.println("redraw faded image ("+(fadedImage==null ? + // "null image" : "") + " lastGood="+lastImageGood+")"); fadedImage = new BufferedImage(imgWidth, image.getHeight(), BufferedImage.TYPE_INT_RGB); @@ -860,15 +889,16 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, fadedG.drawImage(image, 0, 0, this); } - // make sure we don't overwrite the last good faded image until all calculations have finished - lastImageGood=false; + // make sure we don't overwrite the last good faded image until all + // calculations have finished + lastImageGood = false; } else { - if (fadedImage!=null) + if (fadedImage != null) { - oldFaded=fadedImage; + oldFaded = fadedImage; } fadedImage = null; } @@ -895,10 +925,11 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, return; } - lastImageGood = renderer.drawComponent(this, av, g, activeRow, startRes, endRes); - if (!lastImageGood && fadedImage==null) + lastImageGood = renderer.drawComponent(this, av, g, activeRow, + startRes, endRes); + if (!lastImageGood && fadedImage == null) { - fadedImage=oldFaded; + fadedImage = oldFaded; } }