Merge branch 'develop' of https://source.jalview.org/git/jalview.git into develop
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 29 Apr 2016 08:25:21 +0000 (09:25 +0100)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Fri, 29 Apr 2016 08:25:21 +0000 (09:25 +0100)
src/jalview/appletgui/IdCanvas.java
src/jalview/gui/IdCanvas.java
src/jalview/gui/ScalePanel.java
src/jalview/viewmodel/AlignmentViewport.java

index 16bba0b..d72e91f 100755 (executable)
@@ -138,11 +138,13 @@ public class IdCanvas extends Panel
     repaint();
   }
 
+  @Override
   public void update(Graphics g)
   {
     paint(g);
   }
 
+  @Override
   public void paint(Graphics g)
   {
     if (getSize().height < 0 || getSize().width < 0)
@@ -378,7 +380,7 @@ public class IdCanvas extends Panel
     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;
index c89a9d5..37be8bc 100755 (executable)
@@ -204,6 +204,7 @@ public class IdCanvas extends JPanel
    * @param g
    *          DOCUMENT ME!
    */
+  @Override
   public void paintComponent(Graphics g)
   {
     g.setColor(Color.white);
@@ -479,7 +480,7 @@ public class IdCanvas extends JPanel
     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);
     }
index 3ab681c..7c8a1d7 100755 (executable)
@@ -503,14 +503,45 @@ public class ScalePanel extends JPanel implements MouseMotionListener,
     }
 
     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);
index b70e92b..fbd1622 100644 (file)
@@ -1463,13 +1463,42 @@ public abstract class AlignmentViewport implements AlignViewportI,
 
   }
 
+  /**
+   * 
+   * @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