Merge branch 'develop' into Release_2_9_0b1_Branch
[jalview.git] / src / jalview / io / JSONFile.java
index 89518e5..5160316 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
- * Copyright (C) $$Year-Rel$$ The Jalview Authors
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.9)
+ * Copyright (C) 2015 The Jalview Authors
  * 
  * This file is part of Jalview.
  * 
@@ -37,13 +37,13 @@ import jalview.datamodel.Sequence;
 import jalview.datamodel.SequenceFeature;
 import jalview.datamodel.SequenceGroup;
 import jalview.datamodel.SequenceI;
-import jalview.json.binding.v1.AlignmentAnnotationPojo;
-import jalview.json.binding.v1.AlignmentPojo;
-import jalview.json.binding.v1.AlignmentPojo.JalviewBioJsColorSchemeMapper;
-import jalview.json.binding.v1.AnnotationPojo;
-import jalview.json.binding.v1.SequenceFeaturesPojo;
-import jalview.json.binding.v1.SequenceGrpPojo;
-import jalview.json.binding.v1.SequencePojo;
+import jalview.json.binding.biojson.v1.AlignmentAnnotationPojo;
+import jalview.json.binding.biojson.v1.AlignmentPojo;
+import jalview.json.binding.biojson.v1.AnnotationPojo;
+import jalview.json.binding.biojson.v1.JalviewBioJsColorSchemeMapper;
+import jalview.json.binding.biojson.v1.SequenceFeaturesPojo;
+import jalview.json.binding.biojson.v1.SequenceGrpPojo;
+import jalview.json.binding.biojson.v1.SequencePojo;
 import jalview.schemes.ColourSchemeI;
 import jalview.schemes.ColourSchemeProperty;
 import jalview.viewmodel.seqfeatures.FeaturesDisplayed;
@@ -93,7 +93,6 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
 
   private ArrayList<SequenceI> hiddenSequences;
 
-
   public JSONFile()
   {
     super();
@@ -115,6 +114,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
     parse(getReader());
 
   }
+
   @Override
   public String print()
   {
@@ -159,6 +159,12 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
           {
             return true;
           }
+
+          @Override
+          public boolean isCancelled()
+          {
+            return false;
+          }
         };
       }
 
@@ -188,15 +194,13 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
       if (hiddenSections != null)
       {
         if (hiddenSections[0] != null
-                && exportSettings
-                        .isExportHiddenColumns())
+                && exportSettings.isExportHiddenColumns())
         {
           jsonAlignmentPojo.getAppSettings().put("hiddenCols",
                   String.valueOf(hiddenSections[0]));
         }
         if (hiddenSections[1] != null
-                && exportSettings
-                        .isExportHiddenSequences())
+                && exportSettings.isExportHiddenSequences())
         {
           jsonAlignmentPojo.getAppSettings().put("hiddenSeqs",
                   String.valueOf(hiddenSections[1]));
@@ -215,8 +219,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
                 .setSeqFeatures(sequenceFeatureToJsonPojo(seqs, fr));
       }
 
-      if (exportSettings.isExportGroups()
-              && seqGroups != null
+      if (exportSettings.isExportGroups() && seqGroups != null
               && seqGroups.size() > 0)
       {
         for (SequenceGroup seqGrp : seqGroups)
@@ -305,8 +308,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
   public List<SequenceFeaturesPojo> sequenceFeatureToJsonPojo(
           List<SequenceI> seqs, FeatureRenderer fr)
   {
-    displayedFeatures = (fr == null) ? null : fr
-            .getFeaturesDisplayed();
+    displayedFeatures = (fr == null) ? null : fr.getFeaturesDisplayed();
     List<SequenceFeaturesPojo> sequenceFeaturesPojo = new ArrayList<SequenceFeaturesPojo>();
     for (SequenceI seq : seqs)
     {
@@ -330,8 +332,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
                   String.valueOf(seq.hashCode()));
 
           String featureColour = (fr == null) ? null : jalview.util.Format
-                  .getHexString(fr
-                  .findFeatureColour(Color.white, seq,
+                  .getHexString(fr.findFeatureColour(Color.white, seq,
                           seq.findIndex(sf.getBegin())));
           jsonFeature.setXstart(seq.findIndex(sf.getBegin()) - 1);
           jsonFeature.setXend(seq.findIndex(sf.getEnd()));
@@ -473,8 +474,8 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
         }
         ColourSchemeI grpColourScheme = getJalviewColorScheme(colourScheme);
         SequenceGroup seqGrp = new SequenceGroup(grpSeqs, grpName,
-                grpColourScheme,
-                displayBoxes, displayText, colourText, startRes, endRes);
+                grpColourScheme, displayBoxes, displayText, colourText,
+                startRes, endRes);
         seqGrp.setShowNonconserved(showNonconserved);
         seqGrp.setDescription(description);
         this.seqGroups.add(seqGrp);
@@ -502,10 +503,12 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
                     .valueOf(annot.get("value").toString());
             String desc = annot.get("description") == null ? null : annot
                     .get("description").toString();
-
-            char ss = annot.get("secondaryStructure") == null ? ' '
-                    : annot.get("secondaryStructure").toString().charAt(0);
-            String displayChar = annot.get("displayCharacter").toString();
+            char ss = annot.get("secondaryStructure") == null
+                    || annot.get("secondaryStructure").toString()
+                            .equalsIgnoreCase("u0000") ? ' ' : annot
+                    .get("secondaryStructure").toString().charAt(0);
+            String displayChar = annot.get("displayCharacter") == null ? ""
+                    : annot.get("displayCharacter").toString();
 
             annotations[count] = new Annotation(displayChar, desc, ss, val);
           }
@@ -529,9 +532,11 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
   {
     hiddenSeqRefs = new ArrayList<String>();
     String hiddenSeqs = (String) jvSettingsJson.get("hiddenSeqs");
-    if(hiddenSeqs != null && !hiddenSeqs.isEmpty()){
+    if (hiddenSeqs != null && !hiddenSeqs.isEmpty())
+    {
       String[] seqRefs = hiddenSeqs.split(";");
-      for(String seqRef : seqRefs){
+      for (String seqRef : seqRefs)
+      {
         hiddenSeqRefs.add(seqRef);
       }
     }
@@ -540,10 +545,12 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
   public void parseHiddenCols(JSONObject jvSettingsJson)
   {
     String hiddenCols = (String) jvSettingsJson.get("hiddenCols");
-    if(hiddenCols != null && !hiddenCols.isEmpty()){
+    if (hiddenCols != null && !hiddenCols.isEmpty())
+    {
       columnSelection = new ColumnSelection();
       String[] rangeStrings = hiddenCols.split(";");
-      for(String rangeString : rangeStrings){
+      for (String rangeString : rangeStrings)
+      {
         String[] range = rangeString.split("-");
         columnSelection.hideColumns(Integer.valueOf(range[0]),
                 Integer.valueOf(range[1]));
@@ -600,7 +607,9 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
     for (JalviewBioJsColorSchemeMapper cs : JalviewBioJsColorSchemeMapper
             .values())
     {
-      if (cs.getBioJsName().equalsIgnoreCase(bioJsColourSchemeName))
+      if (cs.getBioJsName().equalsIgnoreCase(bioJsColourSchemeName)
+              || cs.getJalviewName()
+                      .equalsIgnoreCase(bioJsColourSchemeName))
       {
         jalviewColor = cs.getJvColourScheme();
         break;
@@ -640,7 +649,6 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
     this.displayedFeatures = displayedFeatures;
   }
 
-
   public void configureForView(AlignmentViewPanel avpanel)
   {
     super.configureForView(avpanel);
@@ -704,8 +712,7 @@ public class JSONFile extends AlignFile implements ComplexAlignFile
   {
     if (hiddenSequences == null || hiddenSequences.isEmpty())
     {
-      return new SequenceI[]
-      {};
+      return new SequenceI[] {};
     }
     synchronized (hiddenSequences)
     {