{
synchronized (sequences)
{
- List<SequenceI> before = sequences;
sequences.remove(s);
changeSupport.firePropertyChange(SEQ_GROUP_CHANGED,
sequences.size() + 1, sequences.size());
{
synchronized (sequences)
{
- List<SequenceI> before = sequences;
+ int before = sequences.size();
sequences.clear();
changeSupport.firePropertyChange(SEQ_GROUP_CHANGED, before,
- sequences);
+ sequences.size());
}
}
* single graphics context), then reset to (0, scale height)
*/
alignmentGraphics.translate(alignmentGraphicsOffset, scaleHeight);
- getSeqPanel().seqCanvas.drawPanel(alignmentGraphics, startRes, endRes,
- startSeq, endSeq, 0);
+ getSeqPanel().seqCanvas.drawPanelForPrint(alignmentGraphics, startRes,
+ endRes, startSeq, endSeq);
alignmentGraphics.translate(-alignmentGraphicsOffset, 0);
if (av.isShowAnnotation() && (endSeq == alignmentHeight))
ranges.getStartRes(), ranges.getEndRes(),
ranges.getStartSeq(), ranges.getEndSeq());
- if (fastPaint || (getVisibleRect().width != g.getClipBounds().width)
- || (getVisibleRect().height != g.getClipBounds().height))
+ if ((img != null) && (fastPaint
+ || (getVisibleRect().width != g.getClipBounds().width)
+ || (getVisibleRect().height != g.getClipBounds().height)))
{
BufferedImage lcimg = buildLocalImage(selectImage);
g.drawImage(lcimg, 0, 0, this);
}
}
+ /**
+ * Draw an alignment panel for printing
+ *
+ * @param g1
+ * Graphics object to draw with
+ * @param startRes
+ * start residue of print area
+ * @param endRes
+ * end residue of print area
+ * @param startSeq
+ * start sequence of print area
+ * @param endSeq
+ * end sequence of print area
+ */
+ public void drawPanelForPrint(Graphics g1, int startRes, int endRes,
+ int startSeq, int endSeq)
+ {
+ BufferedImage selectImage = drawSelectionGroup(startRes, endRes,
+ startSeq, endSeq);
+ drawPanel(g1, startRes, endRes, startSeq, endSeq, 0);
+ ((Graphics2D) g1).setComposite(
+ AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
+ g1.drawImage(selectImage, 0, 0, this);
+ }
+
/*
* Make a local image by combining the cached image img
* with any selection
return annotations.adjustPanelHeight();
}
- /**
- * DOCUMENT ME!
+ /*
+ * Draw an alignment panel for printing
*
* @param g1
- * DOCUMENT ME!
+ * Graphics object to draw with
* @param startRes
- * DOCUMENT ME!
+ * start residue of print area
* @param endRes
- * DOCUMENT ME!
+ * end residue of print area
* @param startSeq
- * DOCUMENT ME!
+ * start sequence of print area
* @param endSeq
- * DOCUMENT ME!
+ * end sequence of print area
* @param offset
- * DOCUMENT ME!
+ * vertical offset
*/
- public void drawPanel(Graphics g1, int startRes, int endRes,
+ private void drawPanel(Graphics g1, int startRes, int endRes,
int startSeq, int endSeq, int offset)
{
updateViewport();
if (stretchGroup == null)
{
- // Only if left mouse button do we want to change group sizes
-
- // define a new group here
- SequenceGroup sg = new SequenceGroup();
- sg.setStartRes(res);
- sg.setEndRes(res);
- sg.addSequence(sequence, false);
- av.setSelectionGroup(sg);
- stretchGroup = sg;
-
- if (av.getConservationSelected())
- {
- SliderPanel.setConservationSlider(ap, av.getResidueShading(),
- ap.getViewName());
- }
-
- if (av.getAbovePIDThreshold())
- {
- SliderPanel.setPIDSliderSource(ap, av.getResidueShading(),
- ap.getViewName());
- }
- // TODO: stretchGroup will always be not null. Is this a merge error ?
- if ((stretchGroup != null) && (stretchGroup.getEndRes() == res))
- {
- // Edit end res position of selected group
- changeEndRes = true;
- }
- else if ((stretchGroup != null)
- && (stretchGroup.getStartRes() == res))
- {
- // Edit end res position of selected group
- changeStartRes = true;
- }
- stretchGroup.getWidth();
+ createStretchGroup(res, sequence);
}
if (stretchGroup != null)
seqCanvas.repaint();
}
+ private void createStretchGroup(int res, SequenceI sequence)
+ {
+ // Only if left mouse button do we want to change group sizes
+ // define a new group here
+ SequenceGroup sg = new SequenceGroup();
+ sg.setStartRes(res);
+ sg.setEndRes(res);
+ sg.addSequence(sequence, false);
+ av.setSelectionGroup(sg);
+ stretchGroup = sg;
+
+ if (av.getConservationSelected())
+ {
+ SliderPanel.setConservationSlider(ap, av.getResidueShading(),
+ ap.getViewName());
+ }
+
+ if (av.getAbovePIDThreshold())
+ {
+ SliderPanel.setPIDSliderSource(ap, av.getResidueShading(),
+ ap.getViewName());
+ }
+ // TODO: stretchGroup will always be not null. Is this a merge error ?
+ // or is there a threading issue here?
+ if ((stretchGroup != null) && (stretchGroup.getEndRes() == res))
+ {
+ // Edit end res position of selected group
+ changeEndRes = true;
+ }
+ else if ((stretchGroup != null) && (stretchGroup.getStartRes() == res))
+ {
+ // Edit end res position of selected group
+ changeStartRes = true;
+ }
+ stretchGroup.getWidth();
+
+ }
+
/**
* Build and show a pop-up menu at the right-click mouse position
*