gg.translate(0, transY);
- drawIds(gg, av, ss, es, searchResults);
+ drawIds(gg, av, ss, es, searchResults, true, getWidth());
gg.translate(0, -transY);
gg.fillRect(0, 0, getWidth(), imgHeight);
drawIds(gg, av, av.getRanges().getStartSeq(),
- av.getRanges().getEndSeq(), searchResults);
+ av.getRanges().getEndSeq(), searchResults,true, getWidth());
gg.dispose();
* @param startSeq
* @param endSeq
* @param selection
+ * @param forGUI when false rendering for print
+ * @param panelWidth width used to calculate righthand margin - usually idCanvas.getWidth()
+ *
*/
void drawIds(Graphics2D g, AlignViewport alignViewport,
- final int startSeq, final int endSeq, List<SequenceI> selection)
+ final int startSeq, final int endSeq, List<SequenceI> selection, boolean forGUI, int panelWidth)
{
Font font = alignViewport.getFont();
if (alignViewport.isSeqNameItalics())
if (alignViewport.getWrapAlignment())
{
- drawIdsWrapped(g, alignViewport, startSeq, getHeight());
+ drawIdsWrapped(g, alignViewport, startSeq, getHeight(), manuallyAdjusted ? panelWidth : -1,forGUI);
return;
}
// Now draw the id strings
- int panelWidth = getWidth();
int xPos = 0;
// Now draw the id strings
void drawIdsWrapped(Graphics2D g, AlignViewport alignViewport,
int startSeq, int pageHeight)
{
- drawIdsWrapped(g, alignViewport, startSeq, pageHeight, -1);
+ drawIdsWrapped(g, alignViewport, startSeq, pageHeight, -1, true);
}
- void drawIdsWrapped(Graphics2D g, AlignViewport alignViewport,
- int startSeq, int pageHeight, int idWidth)
+ /**
+ * render sequence IDs and annotation labels when wrapped - without GUI junk
+ * @param g
+ * @param av2
+ * @param i
+ * @param totalHeight
+ */
+ public void drawIdsWrappedNoGUI(Graphics2D g, AlignViewport av2, int i,
+ int totalHeight)
+ {
+ drawIdsWrapped(g, av2, totalHeight, totalHeight, i,false);
+ }
+
+ public void drawIdsWrapped(Graphics2D g, AlignViewport alignViewport,
+ int startSeq, int pageHeight, int idWidth, boolean forGUI)
{
int alignmentWidth = alignViewport.getAlignment().getWidth();
final int alheight = alignViewport.getAlignment().getHeight();
AnnotationLabels labels = null;
if (alignViewport.isShowAnnotation())
{
+ // in wrapped mode, no alignPanel reference is available
+ // FIXME: make the renderer not create a new object in wrapped mode everytime!
labels = new AnnotationLabels(alignViewport);
}
if (labels != null && alignViewport.isShowAnnotation())
{
+ int getWidth = getWidth();
+ int thisIdWidth = getWidth;
g.translate(0, ypos + (alheight * charHeight));
- int getAnnotationsIdWidth = labels.drawLabels(g, false, -1, false,
- null);
- int thisIdWidth = idWidth < 0 ? getAnnotationsIdWidth : idWidth;
- if (thisIdWidth > getWidth())
+ if (!manuallyAdjusted())
{
- this.setPreferredSize(
- new Dimension(this.getHeight(), thisIdWidth));
- this.repaint();
+ int getAnnotationsIdWidth = labels.drawLabels(g, false, -1, false,forGUI,
+ null, false);
+ thisIdWidth = idWidth < 0 ? getAnnotationsIdWidth : idWidth;
+ if (thisIdWidth > getWidth)
+ {
+ this.setPreferredSize(
+ new Dimension(thisIdWidth, this.getHeight()));
+ this.repaint();
+ alignViewport.setIdWidth(thisIdWidth);
+ }
}
- labels.drawComponent(g, false, thisIdWidth);
+ labels.drawComponent(g, false, thisIdWidth, forGUI);
g.translate(0, -ypos - (alheight * charHeight));
}
repaint();
}
}
+
+ private boolean manuallyAdjusted = false;
+
+ public boolean manuallyAdjusted()
+ {
+ return manuallyAdjusted;
+ }
+
+ public void setManuallyAdjusted(boolean b)
+ {
+ manuallyAdjusted = b;
+ }
+
}