JAL-3081 restore annotation ordering from project (work in progress)
[jalview.git] / src / jalview / project / Jalview2XML.java
index 02b405e..e15bb1a 100644 (file)
@@ -24,6 +24,7 @@ import static jalview.math.RotatableMatrix.Axis.X;
 import static jalview.math.RotatableMatrix.Axis.Y;
 import static jalview.math.RotatableMatrix.Axis.Z;
 
+import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
 import jalview.analysis.Conservation;
 import jalview.analysis.PCA;
 import jalview.analysis.scoremodels.ScoreModels;
@@ -1479,6 +1480,8 @@ public class Jalview2XML
       view.setRenderGaps(av.isRenderGaps());
       view.setShowAnnotation(av.isShowAnnotation());
       view.setShowBoxes(av.getShowBoxes());
+      view.setShowAutocalcAbove(av.isShowAutocalculatedAbove());
+      view.setSortAnnotationsBy(av.getSortAnnotationsBy().name());
       view.setShowColourText(av.getColourText());
       view.setShowFullId(av.getShowJVSuffix());
       view.setRightAlignIds(av.isRightAlignIds());
@@ -4916,9 +4919,8 @@ public class Jalview2XML
 
     viewport.setColourText(safeBoolean(view.isShowColourText()));
 
-    viewport
-            .setConservationSelected(
-                    safeBoolean(view.isConservationSelected()));
+    viewport.setConservationSelected(
+            safeBoolean(view.isConservationSelected()));
     viewport.setIncrement(safeInt(view.getConsThreshold()));
     viewport.setShowJVSuffix(safeBoolean(view.isShowFullId()));
     viewport.setRightAlignIds(safeBoolean(view.isRightAlignIds()));
@@ -4934,10 +4936,27 @@ public class Jalview2XML
     viewport.setWrapAlignment(safeBoolean(view.isWrapAlignment()));
     viewport.setShowAnnotation(safeBoolean(view.isShowAnnotation()));
 
-    viewport.setShowBoxes(safeBoolean(view.isShowBoxes()));
+    Boolean autocalcFirst = view.isShowAutocalcAbove();
+    if (autocalcFirst != null)
+    {
+      af.setShowAutoCalculatedAbove(autocalcFirst.booleanValue());
+    }
+    String sortBy = view.getSortAnnotationsBy();
+    if (sortBy != null)
+    {
+      try
+      {
+        viewport.setSortAnnotationsBy(
+                SequenceAnnotationOrder.valueOf(sortBy));
+      } catch (IllegalArgumentException e)
+      {
+        Cache.log.error(
+                "Invalid annotation sort specifier in project: " + sortBy);
+      }
+    }
 
+    viewport.setShowBoxes(safeBoolean(view.isShowBoxes()));
     viewport.setShowText(safeBoolean(view.isShowText()));
-
     viewport.setTextColour(new Color(safeInt(view.getTextCol1())));
     viewport.setTextColour2(new Color(safeInt(view.getTextCol2())));
     viewport.setThresholdTextColour(safeInt(view.getTextColThreshold()));
@@ -5177,6 +5196,7 @@ public class Jalview2XML
       // recompute any autoannotation
       af.alignPanel.updateAnnotation(false, true);
       reorderAutoannotation(af, al, autoAlan);
+      af.sortAnnotations();
       af.alignPanel.alignmentChanged();
     }
     else