JAL-1780 JAL-653 jim forgot to put the conditional action in!
[jalview.git] / src / jalview / io / JSONFile.java
index bbbc122..ce70ea5 100644 (file)
@@ -21,7 +21,7 @@
 
 package jalview.io;
 
-import jalview.api.AlignViewportI;
+import jalview.api.AlignmentViewPanel;
 import jalview.api.ComplexAlignFile;
 import jalview.api.FeatureRenderer;
 import jalview.api.FeaturesDisplayedI;
@@ -109,7 +109,6 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
     parse(getReader());
 
   }
-
   @Override
   public String print()
   {
@@ -117,15 +116,6 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
     try
     {
       AlignmentPojo jsonAlignmentPojo = new AlignmentPojo();
-      if (getViewport() != null)
-      {
-        globalColorScheme = ColourSchemeProperty
-                .getColourName(getViewport()
-                .getGlobalColourScheme());
-        setDisplayedFeatures(getViewport().getFeaturesDisplayed());
-        showSeqFeatures = getViewport().isShowSequenceFeatures();
-        fr = getViewport().getFeatureRenderer();
-      }
 
       int count = 0;
       for (SequenceI seq : seqs)
@@ -154,14 +144,14 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
       if (hiddenSections != null)
       {
         if (hiddenSections[0] != null
-                && getViewport().getExportSettings()
+                && getExportSettings()
                         .isExportHiddenColumns())
         {
           jsonAlignmentPojo.getAppSettings().put("hiddenCols",
                   String.valueOf(hiddenSections[0]));
         }
         if (hiddenSections[1] != null
-                && getViewport().getExportSettings()
+                && getExportSettings()
                         .isExportHiddenSequences())
         {
           jsonAlignmentPojo.getAppSettings().put("hiddenSeqs",
@@ -169,19 +159,19 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
         }
       }
 
-      if (getViewport().getExportSettings().isExportAnnotations())
+      if (getExportSettings().isExportAnnotations())
       {
         jsonAlignmentPojo
                 .setAlignAnnotation(annotationToJsonPojo(annotations));
       }
 
-      if (getViewport().getExportSettings().isExportFeatures())
+      if (getExportSettings().isExportFeatures())
       {
         jsonAlignmentPojo
                 .setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr));
       }
 
-      if (getViewport().getExportSettings().isExportGroups()
+      if (getExportSettings().isExportGroups()
               && seqGroups != null
               && seqGroups.size() > 0)
       {
@@ -600,32 +590,48 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
     this.displayedFeatures = displayedFeatures;
   }
 
-
-  public static String getJSONData(AlignViewportI av)
+  @Override
+  public void configureForView(AlignmentViewPanel avpanel)
   {
-    JSONFile jsonFile = new JSONFile();
-    jsonFile.setViewport(av);
-    jsonFile.seqGroups = av.getAlignment().getGroups();
-    jsonFile.setDisplayedFeatures(av.getFeaturesDisplayed());
-
-    for (SequenceI seq : av.getAlignment().getSequences())
-    {
-      jsonFile.seqs.add(seq);
-    }
-  
-    // Add non auto calculated annotation to AlignFile
-    for (AlignmentAnnotation annot : av.getAlignment()
-            .getAlignmentAnnotation())
+    super.configureForView(avpanel);
+    if (isExporting())
     {
-      if (annot != null && !annot.autoCalculated)
+      setViewport(avpanel.getAlignViewport());
+      seqGroups = avpanel.getAlignment().getGroups();
+      setDisplayedFeatures(getViewport().getFeaturesDisplayed());
+      fr = avpanel.cloneFeatureRenderer();
+
+      for (SequenceI seq : getViewport().getAlignment().getSequences())
+      {
+        seqs.add(seq);
+      }
+
+      // Add non auto calculated annotation to AlignFile
+      for (AlignmentAnnotation annot : getViewport().getAlignment()
+              .getAlignmentAnnotation())
       {
-        if (annot.label.equals("PDB.CATempFactor"))
+        if (annot != null && !annot.autoCalculated)
         {
-          continue;
+          if (annot.label.equals("PDB.CATempFactor"))
+          {
+            continue;
+          }
+          annotations.add(annot);
         }
-        jsonFile.annotations.add(annot);
       }
+
+      globalColorScheme = ColourSchemeProperty.getColourName(getViewport()
+              .getGlobalColourScheme());
+      setDisplayedFeatures(getViewport().getFeaturesDisplayed());
+      showSeqFeatures = getViewport().isShowSequenceFeatures();
     }
+  }
+
+
+  public static String getJSONData(AlignmentViewPanel av)
+  {
+    JSONFile jsonFile = new JSONFile();
+    jsonFile.configureForView(av);
     String jsonString = jsonFile.print();
     return jsonString;
   }