JAL-1369 mark reference sequence & view state and restore it
authorJim Procter <jprocter@issues.jalview.org>
Tue, 21 Jun 2016 09:22:57 +0000 (10:22 +0100)
committerJim Procter <jprocter@issues.jalview.org>
Tue, 21 Jun 2016 09:22:57 +0000 (10:22 +0100)
src/jalview/gui/Jalview2XML.java

index 701656d..2509f15 100644 (file)
@@ -739,6 +739,11 @@ public class Jalview2XML
             }
           }
         }
+        // mark sequence as reference - if it is the reference for this view
+        if (jal.hasSeqrep())
+        {
+          jseq.setViewreference(rjal.getSequenceAt(i) == jal.getSeqrep());
+        }
       }
 
       // TODO: omit sequence features from each alignment view's XML dump if we
@@ -2662,7 +2667,7 @@ public class Jalview2XML
     List<SequenceI> tmpseqs = new ArrayList<SequenceI>();
 
     boolean multipleView = false;
-
+    SequenceI referenceseqForView = null;
     JSeq[] jseqs = object.getJalviewModelSequence().getJSeq();
     int vi = 0; // counter in vamsasSeq array
     for (int i = 0; i < jseqs.length; i++)
@@ -2687,6 +2692,11 @@ public class Jalview2XML
         vi++;
       }
 
+      if (jseqs[i].hasViewreference() && jseqs[i].getViewreference())
+      {
+        referenceseqForView = tmpseqs.get(tmpseqs.size() - 1);
+      }
+
       if (jseqs[i].getHidden())
       {
         if (hiddenSeqs == null)
@@ -2696,7 +2706,6 @@ public class Jalview2XML
 
         hiddenSeqs.add(seqRefIds.get(seqId));
       }
-
     }
 
     // /
@@ -2707,6 +2716,10 @@ public class Jalview2XML
 
     Alignment al = new Alignment(orderedSeqs);
 
+    if (referenceseqForView != null)
+    {
+      al.setSeqrep(referenceseqForView);
+    }
     // / Add the alignment properties
     for (int i = 0; i < vamsasSet.getSequenceSetPropertiesCount(); i++)
     {
@@ -4100,6 +4113,12 @@ public class Jalview2XML
               .getSequenceAt(i), new java.awt.Color(JSEQ[i].getColour()));
     }
 
+    if (al.hasSeqrep())
+    {
+      af.getViewport().setColourByReferenceSeq(true);
+      af.getViewport().setDisplayReferenceSeq(true);
+    }
+
     af.viewport.setGatherViewsHere(view.getGatheredViews());
 
     if (view.getSequenceSetId() != null)