Merge branch 'develop' into features/r2_11_2_alphafold/JAL-2349_JAL-3855
[jalview.git] / src / jalview / gui / AnnotationLabels.java
index 4702f2a..804ab7b 100755 (executable)
@@ -1055,7 +1055,7 @@ public class AnnotationLabels extends JPanel
 
     g.translate(0, getScrollOffset());
     g.setColor(Color.black);
-
+    SequenceI lastSeqRef = null;
     AlignmentAnnotation[] aa = av.getAlignment().getAlignmentAnnotation();
     int fontHeight = g.getFont().getSize();
     int y = 0;
@@ -1134,8 +1134,22 @@ public class AnnotationLabels extends JPanel
         {
           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)
         {
@@ -1203,16 +1217,26 @@ public class AnnotationLabels extends JPanel
         }
         else
         {
-          g.drawString(aa[i].label, x, y + offset);
+          if (vertBar)
+          {
+            g.drawLine(20, y + offset, 20, y - aa[i].height);
+            g.drawLine(20, y + offset, x - 20, y + offset);
+
+          }
+          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)))