/*
- * 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 java.awt.*;
-import java.awt.image.*;
+import jalview.datamodel.SequenceI;
+import jalview.viewmodel.ViewportRanges;
+
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.Graphics;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.image.BufferedImage;
import java.util.List;
-import javax.swing.*;
-
-import jalview.datamodel.*;
+import javax.swing.JPanel;
/**
* DOCUMENT ME!
*
* @param gg
* DOCUMENT ME!
+ * @param hiddenRows
+ * true - check and display hidden row marker if need be
* @param s
* DOCUMENT ME!
* @param i
* @param ypos
* DOCUMENT ME!
*/
- public void drawIdString(Graphics2D gg, SequenceI s, int i, int starty,
- int ypos)
+ public void drawIdString(Graphics2D gg, boolean hiddenRows, SequenceI s,
+ int i, int starty, int ypos)
{
int xPos = 0;
int panelWidth = getWidth();
- int charHeight = av.charHeight;
+ int charHeight = av.getCharHeight();
if ((searchResults != null) && searchResults.contains(s))
{
gg.drawString(s.getDisplayId(av.getShowJVSuffix()), xPos,
(((i - starty + 1) * charHeight) + ypos) - (charHeight / 5));
- if (av.hasHiddenRows() && av.showHiddenMarkers)
+ if (hiddenRows)
{
drawMarker(i, starty, ypos);
}
return;
}
- gg.copyArea(0, 0, getWidth(), imgHeight, 0, -vertical * av.charHeight);
+ ViewportRanges ranges = av.getRanges();
+
+ gg.copyArea(0, 0, getWidth(), imgHeight, 0,
+ -vertical * av.getCharHeight());
- int ss = av.startSeq;
- int es = av.endSeq;
+ int ss = ranges.getStartSeq();
+ int es = ranges.getEndSeq();
int transY = 0;
if (vertical > 0) // scroll down
{
ss = es - vertical;
- if (ss < av.startSeq)
+ if (ss < ranges.getStartSeq())
{ // ie scrolling too fast, more than a page at a time
- ss = av.startSeq;
+ ss = ranges.getStartSeq();
}
else
{
- transY = imgHeight - (vertical * av.charHeight);
+ transY = imgHeight - ((vertical + 1) * av.getCharHeight());
}
}
- else if (vertical < 0)
+ else if (vertical < 0) // scroll up
{
es = ss - vertical;
- if (es > av.endSeq)
+ if (es > ranges.getEndSeq())
{
- es = av.endSeq;
+ es = ranges.getEndSeq();
}
}
* @param g
* DOCUMENT ME!
*/
+ @Override
public void paintComponent(Graphics g)
{
g.setColor(Color.white);
int oldHeight = imgHeight;
imgHeight = getHeight();
- imgHeight -= (imgHeight % av.charHeight);
+ imgHeight -= (imgHeight % av.getCharHeight());
if (imgHeight < 1)
{
gg.setColor(Color.white);
gg.fillRect(0, 0, getWidth(), imgHeight);
- drawIds(av.getStartSeq(), av.endSeq);
+ drawIds(av.getRanges().getStartSeq(), av.getRanges().getEndSeq());
g.drawImage(image, 0, 0, this);
}
*/
void drawIds(int starty, int endy)
{
- if (av.seqNameItalics)
+ if (av.isSeqNameItalics())
{
setIdfont(new Font(av.getFont().getName(), Font.ITALIC, av.getFont()
.getSize()));
Color currentColor = Color.white;
Color currentTextColor = Color.black;
+ final boolean doHiddenCheck = av.isDisplayReferenceSeq()
+ || av.hasHiddenRows(), hiddenRows = av.hasHiddenRows();
+
if (av.getWrapAlignment())
{
int maxwidth = av.getAlignment().getWidth();
}
}
- int hgap = av.charHeight;
- if (av.scaleAboveWrapped)
+ int hgap = av.getCharHeight();
+ if (av.getScaleAboveWrapped())
{
- hgap += av.charHeight;
+ hgap += av.getCharHeight();
}
- int cHeight = alheight * av.charHeight + hgap + annotationHeight;
+ int cHeight = alheight * av.getCharHeight() + hgap + annotationHeight;
- int rowSize = av.getEndRes() - av.getStartRes();
+ int rowSize = av.getRanges().getEndRes()
+ - av.getRanges().getStartRes();
// Draw the rest of the panels
- for (int ypos = hgap, row = av.startRes; (ypos <= getHeight())
+ for (int ypos = hgap, row = av.getRanges().getStartRes(); (ypos <= getHeight())
&& (row < maxwidth); ypos += cHeight, row += rowSize)
{
for (int i = starty; i < alheight; i++)
{
SequenceI s = av.getAlignment().getSequenceAt(i);
- if (av.isDisplayReferenceSeq() || av.hasHiddenRows())
+ if (doHiddenCheck)
{
setHiddenFont(s);
}
gg.setFont(getIdfont());
}
- drawIdString(gg, s, i, 0, ypos);
+ drawIdString(gg, hiddenRows, s, i, 0, ypos);
}
if (labels != null && av.isShowAnnotation())
{
- gg.translate(0, ypos + (alheight * av.charHeight));
+ gg.translate(0, ypos + (alheight * av.getCharHeight()));
labels.drawComponent(gg, getWidth());
- gg.translate(0, -ypos - (alheight * av.charHeight));
+ gg.translate(0, -ypos - (alheight * av.getCharHeight()));
}
}
}
SequenceI sequence;
// Now draw the id strings
- for (int i = starty; i < endy; i++)
+ for (int i = starty; i <= endy; i++)
{
sequence = av.getAlignment().getSequenceAt(i);
continue;
}
- if (av.isDisplayReferenceSeq() || av.hasHiddenRows())
+ if (doHiddenCheck)
{
setHiddenFont(sequence);
}
gg.setColor(currentColor);
- gg.fillRect(0, (i - starty) * av.charHeight, getWidth(),
- av.charHeight);
+ gg.fillRect(0, (i - starty) * av.getCharHeight(), getWidth(),
+ av.getCharHeight());
gg.setColor(currentTextColor);
}
gg.drawString(string, xPos,
- (((i - starty) * av.charHeight) + av.charHeight)
- - (av.charHeight / 5));
+ (((i - starty) * av.getCharHeight()) + av.getCharHeight())
+ - (av.getCharHeight() / 5));
- if (av.hasHiddenRows() && av.showHiddenMarkers)
+ if (hiddenRows)
{
drawMarker(i, starty, 0);
}
if (below)
{
gg.fillPolygon(
- new int[]
- { getWidth() - av.charHeight, getWidth() - av.charHeight,
- getWidth() }, new int[]
- {
- (i - starty) * av.charHeight + yoffset,
- (i - starty) * av.charHeight + yoffset + av.charHeight
- / 4, (i - starty) * av.charHeight + yoffset }, 3);
+ new int[] { getWidth() - av.getCharHeight(),
+ getWidth() - av.getCharHeight(), getWidth() },
+ new int[] {
+ (i - starty) * av.getCharHeight() + yoffset,
+ (i - starty) * av.getCharHeight() + yoffset
+ + av.getCharHeight() / 4,
+ (i - starty) * av.getCharHeight() + yoffset }, 3);
}
if (above)
{
gg.fillPolygon(
- new int[]
- { getWidth() - av.charHeight, getWidth() - av.charHeight,
- getWidth() }, new int[]
- {
- (i - starty + 1) * av.charHeight + yoffset,
- (i - starty + 1) * av.charHeight + yoffset
- - av.charHeight / 4,
- (i - starty + 1) * av.charHeight + yoffset }, 3);
+ new int[] { getWidth() - av.getCharHeight(),
+ getWidth() - av.getCharHeight(), getWidth() },
+ new int[] {
+ (i - starty + 1) * av.getCharHeight() + yoffset,
+ (i - starty + 1) * av.getCharHeight() + yoffset
+ - av.getCharHeight() / 4,
+ (i - starty + 1) * av.getCharHeight() + yoffset }, 3);
}
}
Font bold = new Font(av.getFont().getName(), Font.BOLD, av.getFont()
.getSize());
- if (av.isHiddenRepSequence(seq))
+ if (av.isReferenceSeq(seq) || av.isHiddenRepSequence(seq))
{
gg.setFont(bold);
}