package jalview.appletgui;
import jalview.renderer.OverviewRenderer;
+import jalview.renderer.OverviewResColourFinder;
import jalview.viewmodel.OverviewDimensions;
import java.awt.Color;
+import java.awt.Component;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
-import java.awt.Panel;
-public class OverviewCanvas extends Panel
+public class OverviewCanvas extends Component
{
// This is set true if the alignment view changes whilst
// the overview is being calculated
private OverviewDimensions od;
+ private OverviewRenderer or = null;
+
private Image miniMe;
private Image offscreen;
private AlignViewport av;
- // Can set different properties in this seqCanvas than
- // main visible SeqCanvas
- private SequenceRenderer sr;
-
private jalview.renderer.seqfeatures.FeatureRenderer fr;
private Frame nullFrame;
nullFrame = new Frame();
nullFrame.addNotify();
- sr = new SequenceRenderer(av);
- sr.graphics = nullFrame.getGraphics();
- sr.renderGaps = false;
- sr.forOverview = true;
fr = new jalview.renderer.seqfeatures.FeatureRenderer(av);
}
if (updaterunning)
{
restart = true;
+ if (or != null)
+ {
+ or.setRedraw(true);
+ }
}
else
{
}
}
- /**
- * Draw the overview sequences
- *
- * @param showSequenceFeatures
- * true if sequence features are to be shown
- * @param showAnnotation
- * true if the annotation is to be shown
- * @param transferRenderer
- * the renderer to transfer feature colouring from
- */
public void draw(boolean showSequenceFeatures, boolean showAnnotation,
FeatureRenderer transferRenderer)
{
setPreferredSize(new Dimension(od.getWidth(), od.getHeight()));
- OverviewRenderer or = new OverviewRenderer(sr, fr, od);
+ or = new OverviewRenderer(fr, od, av.getAlignment(),
+ av.getResidueShading(), new OverviewResColourFinder());
miniMe = nullFrame.createImage(od.getWidth(), od.getHeight());
offscreen = nullFrame.createImage(od.getWidth(), od.getHeight());
miniMe = or.draw(od.getRows(av.getAlignment()),
- od.getColumns(av.getAlignment().getHiddenColumns()));
+ od.getColumns(av.getAlignment()));
Graphics mg = miniMe.getGraphics();
{
mg.translate(0, od.getSequencesHeight());
or.drawGraph(mg, av.getAlignmentConservationAnnotation(),
- av.getCharWidth(), od.getGraphHeight(),
- od.getColumns(av.getAlignment().getHiddenColumns()));
+ od.getGraphHeight(), od.getColumns(av.getAlignment()));
mg.translate(0, -od.getSequencesHeight());
}
- System.gc();
if (restart)
{
}
}
+ /**
+ * Nulls references to protect against potential memory leaks
+ */
+ void dispose()
+ {
+ od = null;
+ }
+
}