*/
package jalview.gui;
-import java.util.Locale;
-
-import jalview.analysis.AlignSeq;
-import jalview.analysis.AlignmentUtils;
-import jalview.datamodel.Alignment;
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.Annotation;
-import jalview.datamodel.HiddenColumns;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.io.FileFormat;
-import jalview.io.FormatAdapter;
-import jalview.util.Comparison;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.util.Arrays;
import java.util.Collections;
import java.util.Iterator;
+import java.util.Locale;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenuItem;
import javax.swing.SwingUtilities;
import javax.swing.ToolTipManager;
+import jalview.analysis.AlignSeq;
+import jalview.analysis.AlignmentUtils;
+import jalview.datamodel.Alignment;
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Annotation;
+import jalview.datamodel.HiddenColumns;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.io.FileFormat;
+import jalview.io.FormatAdapter;
+import jalview.util.Comparison;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+
/**
* The panel that holds the labels for alignment annotations, providing
* tooltips, context menus, drag to reorder rows, and drag to adjust panel
g.translate(0, getScrollOffset());
g.setColor(Color.black);
-
+ SequenceI lastSeqRef = null;
AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
int fontHeight = g.getFont().getSize();
int y = 0;
{
offset += fm.getDescent();
}
-
- x = width - fm.stringWidth(aa[i].label) - 3;
+ String label = aa[i].label;
+ boolean vertBar = false;
+ if (aa[i].sequenceRef != null)
+ {
+ if (aa[i].sequenceRef != lastSeqRef)
+ {
+ label = aa[i].sequenceRef.getName() + " " + label;
+ // TODO record relationship between sequence and this annotation and
+ // display it here
+ }
+ else
+ {
+ vertBar = true;
+ }
+ }
+ x = width - fm.stringWidth(label) - 3;
if (aa[i].graphGroup > -1)
{
}
else
{
- g.drawString(aa[i].label, x, y + offset);
+ if (vertBar)
+ {
+ g.drawLine(x - 40, y, x - 40, y - aa[i].height);
+ }
+ g.drawString(label, x, y + offset);
}
+ lastSeqRef = aa[i].sequenceRef;
}
}
if (!resizePanel && dragEvent != null && aa != null)
{
g.setColor(Color.lightGray);
- g.drawString(aa[selectedRow].label, dragEvent.getX(),
- dragEvent.getY() - getScrollOffset());
+ g.drawString(
+ (aa[selectedRow].sequenceRef == null ? ""
+ : aa[selectedRow].sequenceRef.getName())
+ + aa[selectedRow].label,
+ dragEvent.getX(), dragEvent.getY() - getScrollOffset());
}
if (!av.getWrapAlignment() && ((aa == null) || (aa.length < 1)))