/*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
- * Copyright (C) 2014 The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
+ * Copyright (C) $$Year-Rel$$ The Jalview Authors
*
* This file is part of Jalview.
*
package jalview.gui;
import jalview.analysis.AnnotationSorter;
+import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
import jalview.bin.Cache;
import jalview.datamodel.AlignmentI;
setScrollValues(0, 0);
- setAnnotationVisible(av.isShowAnnotation());
-
hscroll.addAdjustmentListener(this);
vscroll.addAdjustmentListener(this);
});
fontChanged();
adjustAnnotationHeight();
-
+ updateLayout();
}
+ @Override
+ public AlignViewportI getAlignViewport()
+ {
+ return av;
+ }
public void alignmentChanged()
{
av.alignmentChanged(this);
// to prevent drawing old image
FontMetrics fm = getFontMetrics(av.getFont());
- scalePanelHolder.setPreferredSize(new Dimension(10, av.charHeight
+ scalePanelHolder.setPreferredSize(new Dimension(10, av.getCharHeight()
+ fm.getDescent()));
- idSpaceFillerPanel1.setPreferredSize(new Dimension(10, av.charHeight
+ idSpaceFillerPanel1.setPreferredSize(new Dimension(10, av
+ .getCharHeight()
+ fm.getDescent()));
getIdPanel().getIdCanvas().gg = null;
getAnnotationPanel().adjustPanelHeight();
Dimension d = calculateIdWidth();
+
d.setSize(d.width + 4, d.height);
getIdPanel().getIdCanvas().setPreferredSize(d);
hscrollFillerPanel.setPreferredSize(d);
public Dimension calculateIdWidth()
{
// calculate sensible default width when no preference is available
-
- int afwidth = (alignFrame != null ? alignFrame.getWidth() : 300);
- int maxwidth = Math.max(20,
- Math.min(afwidth - 200, 2 * afwidth / 3));
- return calculateIdWidth(maxwidth);
+ Dimension r = null;
+ if (av.getIdWidth() < 0)
+ {
+ int afwidth = (alignFrame != null ? alignFrame.getWidth() : 300);
+ int maxwidth = Math.max(20, Math.min(afwidth - 200, 2 * afwidth / 3));
+ r = calculateIdWidth(maxwidth);
+ av.setIdWidth(r.width);
+ }
+ else
+ {
+ r = new Dimension();
+ r.width = av.getIdWidth();
+ r.height = 0;
+ }
+ return r;
}
/**
}
}
}
- if (!av.wrapAlignment)
+ if (!av.getWrapAlignment())
{
if ((startv = av.getStartRes()) >= start)
{
*/
public void setAnnotationVisible(boolean b)
{
- if (!av.wrapAlignment)
+ if (!av.getWrapAlignment())
{
annotationSpaceFillerHolder.setVisible(b);
annotationScroller.setVisible(b);
}
/**
- * DOCUMENT ME!
+ * update alignment layout for viewport settings
*
* @param wrap
* DOCUMENT ME!
*/
- public void setWrapAlignment(boolean wrap)
+ public void updateLayout()
{
+ fontChanged();
+ setAnnotationVisible(av.isShowAnnotation());
+ boolean wrap = av.getWrapAlignment();
av.startSeq = 0;
scalePanelHolder.setVisible(!wrap);
hscroll.setVisible(!wrap);
width = av.getColumnSelection().findColumnPosition(width);
}
- av.setEndRes((x + (getSeqPanel().seqCanvas.getWidth() / av.charWidth)) - 1);
+ av.setEndRes((x + (getSeqPanel().seqCanvas.getWidth() / av
+ .getCharWidth())) - 1);
- hextent = getSeqPanel().seqCanvas.getWidth() / av.charWidth;
- vextent = getSeqPanel().seqCanvas.getHeight() / av.charHeight;
+ hextent = getSeqPanel().seqCanvas.getWidth() / av.getCharWidth();
+ vextent = getSeqPanel().seqCanvas.getHeight() / av.getCharHeight();
if (hextent > width)
{
{
int idWidth = getVisibleIdWidth(false);
FontMetrics fm = getFontMetrics(av.getFont());
- int scaleHeight = av.charHeight + fm.getDescent();
+ int scaleHeight = av.getCharHeight() + fm.getDescent();
pg.setColor(Color.white);
pg.fillRect(0, 0, pwidth, pheight);
}
pg.setColor(currentColor);
- pg.fillRect(0, (i - startSeq) * av.charHeight, idWidth,
+ pg.fillRect(0, (i - startSeq) * av.getCharHeight(), idWidth,
av.getCharHeight());
pg.setColor(currentTextColor);
pg.drawString(
seq.getDisplayId(av.getShowJVSuffix()),
xPos,
- (((i - startSeq) * av.charHeight) + av.getCharHeight())
+ (((i - startSeq) * av.getCharHeight()) + av.getCharHeight())
- (av.getCharHeight() / 5));
}
// draw annotation - need to offset for current scroll position
int offset = -getAlabels().getScrollOffset();
pg.translate(0, offset);
- pg.translate(-idWidth - 3, (endSeq - startSeq) * av.charHeight + 3);
+ pg.translate(-idWidth - 3, (endSeq - startSeq) * av.getCharHeight()
+ + 3);
getAlabels().drawComponent(pg, idWidth);
pg.translate(idWidth + 3, 0);
getAnnotationPanel().renderer.drawComponent(getAnnotationPanel(), av,
public int printWrappedAlignment(Graphics pg, int pwidth, int pheight,
int pi) throws PrinterException
{
-
int annotationHeight = 0;
AnnotationLabels labels = null;
if (av.isShowAnnotation())
labels = new AnnotationLabels(av);
}
- int hgap = av.charHeight;
- if (av.scaleAboveWrapped)
+ int hgap = av.getCharHeight();
+ if (av.getScaleAboveWrapped())
{
- hgap += av.charHeight;
+ hgap += av.getCharHeight();
}
- int cHeight = av.getAlignment().getHeight() * av.charHeight + hgap
+ int cHeight = av.getAlignment().getHeight() * av.getCharHeight() + hgap
+ annotationHeight;
int idWidth = getVisibleIdWidth(false);
xPos = idWidth - fm.stringWidth(string) - 4;
}
pg.drawString(string, xPos,
- ((i * av.charHeight) + ypos + av.charHeight)
- - (av.charHeight / 5));
+ ((i * av.getCharHeight()) + ypos + av.getCharHeight())
+ - (av.getCharHeight() / 5));
}
if (labels != null)
{
pg.translate(-3, ypos
- + (av.getAlignment().getHeight() * av.charHeight));
+ + (av.getAlignment().getHeight() * av.getCharHeight()));
pg.setFont(av.getFont());
labels.drawComponent(pg, idWidth);
pg.translate(+3, -ypos
- - (av.getAlignment().getHeight() * av.charHeight));
+ - (av.getAlignment().getHeight() * av
+ .getCharHeight()));
}
ypos += cHeight;
maxwidth = av.getColumnSelection().findColumnPosition(maxwidth);
}
- int height = ((av.getAlignment().getHeight() + 1) * av.charHeight)
+ int height = ((av.getAlignment().getHeight() + 1) * av.getCharHeight())
+ getScalePanel().getHeight();
- int width = getVisibleIdWidth(false) + (maxwidth * av.charWidth);
+ int width = getVisibleIdWidth(false) + (maxwidth * av.getCharWidth());
if (av.getWrapAlignment())
{
// ////////////////////////////////////////////
int idWidth = getVisibleIdWidth(false);
FontMetrics fm = getFontMetrics(av.getFont());
- int scaleHeight = av.charHeight + fm.getDescent();
+ int scaleHeight = av.getCharHeight() + fm.getDescent();
// Gen image map
// ////////////////////////////////
for (s = 0; s < sSize; s++)
{
- sy = s * av.charHeight + scaleHeight;
+ sy = s * av.getCharHeight() + scaleHeight;
SequenceI seq = av.getAlignment().getSequenceAt(s);
SequenceFeature[] features = seq.getDatasetSequence()
for (res = 0; res < alwidth; res++)
{
text = new StringBuffer();
- Object obj = null;
+ String triplet = null;
if (av.getAlignment().isNucleotide())
{
- obj = ResidueProperties.nucleotideName.get(seq.getCharAt(res)
+ triplet = ResidueProperties.nucleotideName.get(seq
+ .getCharAt(res)
+ "");
}
else
{
- obj = ResidueProperties.aa2Triplet.get(seq.getCharAt(res)
+ triplet = ResidueProperties.aa2Triplet.get(seq.getCharAt(res)
+ "");
}
- if (obj == null)
+ if (triplet == null)
{
continue;
}
- String triplet = obj.toString();
int alIndex = seq.findPosition(res);
gSize = groups.length;
for (g = 0; g < gSize; g++)
if (text.length() < 1)
{
text.append("<area shape=\"rect\" coords=\""
- + (idWidth + res * av.charWidth) + "," + sy + ","
- + (idWidth + (res + 1) * av.charWidth) + ","
- + (av.charHeight + sy) + "\""
+ + (idWidth + res * av.getCharWidth()) + "," + sy
+ + "," + (idWidth + (res + 1) * av.getCharWidth())
+ + ","
+ + (av.getCharHeight() + sy) + "\""
+ " onMouseOver=\"toolTip('" + alIndex + " "
+ triplet);
}
if (text.length() < 1)
{
text.append("<area shape=\"rect\" coords=\""
- + (idWidth + res * av.charWidth) + "," + sy + ","
- + (idWidth + (res + 1) * av.charWidth) + ","
- + (av.charHeight + sy) + "\""
+ + (idWidth + res * av.getCharWidth()) + "," + sy
+ + "," + (idWidth + (res + 1) * av.getCharWidth())
+ + ","
+ + (av.getCharHeight() + sy) + "\""
+ " onMouseOver=\"toolTip('" + alIndex + " "
+ triplet);
}
int chunkWidth = getSeqPanel().seqCanvas
.getWrappedCanvasWidth(seqPanelWidth);
- int hgap = av.charHeight;
- if (av.scaleAboveWrapped)
+ int hgap = av.getCharHeight();
+ if (av.getScaleAboveWrapped())
{
- hgap += av.charHeight;
+ hgap += av.getCharHeight();
}
int annotationHeight = 0;
annotationHeight = getAnnotationPanel().adjustPanelHeight();
}
- int cHeight = av.getAlignment().getHeight() * av.charHeight + hgap
+ int cHeight = av.getAlignment().getHeight() * av.getCharHeight() + hgap
+ annotationHeight;
int maxwidth = av.getAlignment().getWidth();
.getStructureSelectionManager();
ssm.removeStructureViewerListener(getSeqPanel(), null);
ssm.removeSelectionListener(getSeqPanel());
- ssm.removeEditListener(av);
+ ssm.removeCommandListener(av);
ssm.removeStructureViewerListener(getSeqPanel(), null);
ssm.removeSelectionListener(getSeqPanel());
av.setAlignment(null);