repaint();
}
+ @Override
public void update(Graphics g)
{
paint(g);
}
+ @Override
public void paint(Graphics g)
{
if (getSize().height < 0 || getSize().width < 0)
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);
return true;
* @param g
* DOCUMENT ME!
*/
+ @Override
public void paintComponent(Graphics g)
{
g.setColor(Color.white);
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);
}
}
String string;
- int maxX = 0;
-
+ boolean isrgap = false;
+ char rc;
+ int maxX = 0, refN, iadj;
+ SequenceI refSeq = av.getAlignment().getSeqrep();
+ int refSp = -1, refEp = -1;
+ if (refSeq != null)
+ {
+ refSp = refSeq.findIndex(refSeq.getStart()) - 1;
+ refEp = refSeq.findIndex(refSeq.getEnd()) - 1;
+ }
+ // todo: add a 'reference origin column' to set column number relative to
for (int i = scalestartx; i < endx; i += 5)
{
if ((i % 10) == 0)
{
- string = String.valueOf(av.getColumnSelection()
- .adjustForHiddenColumns(i));
+ iadj = av.getColumnSelection().adjustForHiddenColumns(i) - 1;
+ if (refSeq == null)
+ {
+ string = String.valueOf(iadj + 1);
+ }
+ else
+ {
+ refN = refSeq.findPosition(iadj);
+ // TODO show bounds if position is a gap
+ // - ie L--R -> "1L|2R" for
+ // marker
+ if (iadj < refSp)
+ {
+ string = String.valueOf(iadj - refSp);
+ }
+ else if (iadj > refEp)
+ {
+ string = "+" + String.valueOf(iadj - refEp);
+ }
+ else
+ {
+ string = String.valueOf(refN) + refSeq.getCharAt(iadj);
+ }
+ }
if ((i - startx - 1) * avCharWidth > maxX)
{
gg.drawString(string, (i - startx - 1) * avCharWidth, y);
}
+ /**
+ *
+ * @return null or the current reference sequence
+ */
+ public SequenceI getReferenceSeq()
+ {
+ return alignment.getSeqrep();
+ }
+
+ /**
+ * @param seq
+ * @return true iff seq is the reference for the alignment
+ */
+ public boolean isReferenceSeq(SequenceI seq)
+ {
+ return alignment.getSeqrep() == seq;
+ }
+
+ /**
+ *
+ * @param seq
+ * @return true if there are sequences represented by this sequence that are
+ * currently hidden
+ */
public boolean isHiddenRepSequence(SequenceI seq)
{
- return alignment.getSeqrep() == seq
- || (hiddenRepSequences != null && hiddenRepSequences
+ return (hiddenRepSequences != null && hiddenRepSequences
.containsKey(seq));
}
+ /**
+ *
+ * @param seq
+ * @return null or a sequence group containing the sequences that seq
+ * represents
+ */
public SequenceGroup getRepresentedSequences(SequenceI seq)
{
return (SequenceGroup) (hiddenRepSequences == null ? null