From 4dd40d33a5becefd51c31a426f2501b21029f82c Mon Sep 17 00:00:00 2001 From: kiramt Date: Mon, 28 Aug 2017 11:56:33 +0100 Subject: [PATCH] JAL-2665 Changes for review comments; printing with selgroup working --- src/jalview/datamodel/SequenceGroup.java | 5 +- src/jalview/gui/AlignmentPanel.java | 4 +- src/jalview/gui/SeqCanvas.java | 48 +++++++++++++++----- src/jalview/gui/SeqPanel.java | 73 ++++++++++++++++-------------- 4 files changed, 80 insertions(+), 50 deletions(-) diff --git a/src/jalview/datamodel/SequenceGroup.java b/src/jalview/datamodel/SequenceGroup.java index 8ece1e5..c060ef0 100755 --- a/src/jalview/datamodel/SequenceGroup.java +++ b/src/jalview/datamodel/SequenceGroup.java @@ -712,7 +712,6 @@ public class SequenceGroup implements AnnotatedCollectionI { synchronized (sequences) { - List before = sequences; sequences.remove(s); changeSupport.firePropertyChange(SEQ_GROUP_CHANGED, sequences.size() + 1, sequences.size()); @@ -1375,10 +1374,10 @@ public class SequenceGroup implements AnnotatedCollectionI { synchronized (sequences) { - List before = sequences; + int before = sequences.size(); sequences.clear(); changeSupport.firePropertyChange(SEQ_GROUP_CHANGED, before, - sequences); + sequences.size()); } } diff --git a/src/jalview/gui/AlignmentPanel.java b/src/jalview/gui/AlignmentPanel.java index e62707f..c4eb26a 100644 --- a/src/jalview/gui/AlignmentPanel.java +++ b/src/jalview/gui/AlignmentPanel.java @@ -1107,8 +1107,8 @@ public class AlignmentPanel extends GAlignmentPanel implements * 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)) diff --git a/src/jalview/gui/SeqCanvas.java b/src/jalview/gui/SeqCanvas.java index b6153a8..955a9e6 100755 --- a/src/jalview/gui/SeqCanvas.java +++ b/src/jalview/gui/SeqCanvas.java @@ -371,8 +371,9 @@ public class SeqCanvas extends JComponent implements ViewportListenerI 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); @@ -419,6 +420,31 @@ public class SeqCanvas extends JComponent implements ViewportListenerI } } + /** + * 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 @@ -752,23 +778,23 @@ public class SeqCanvas extends JComponent implements ViewportListenerI 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(); diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 5dbd778..c863117 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -1710,40 +1710,7 @@ public class SeqPanel extends JPanel implements MouseListener, 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) @@ -1754,6 +1721,44 @@ public class SeqPanel extends JPanel implements MouseListener, 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 * -- 1.7.10.2