Merge remote-tracking branch
[jalview.git] / src / jalview / gui / Jalview2XML.java
index ce81e1c..80cff07 100644 (file)
@@ -783,7 +783,7 @@ public class Jalview2XML
                 viewIds.add(viewId);
                 try
                 {
-                  writeJarEntry(jout, "viewer_" + viewId,
+                  writeJarEntry(jout, getViewerJarEntryName(viewId),
                           viewFrame.getStateInfo().getBytes());
                 } catch (IOException e)
                 {
@@ -1455,9 +1455,7 @@ public class Jalview2XML
           state.setAlignwithAlignPanel(viewFrame.isUsedforaligment(ap));
           state.setColourwithAlignPanel(viewFrame.isUsedforcolourby(ap));
           state.setColourByJmol(viewFrame.isColouredByViewer());
-          // FIXME add attribute to schema and enable next line
-          // state.setType(viewFrame.getViewerType().toString());
-          state.setContent(viewFrame.getViewerType().toString());
+          state.setType(viewFrame.getViewerType().toString());
           pdb.addStructureState(state);
         }
       }
@@ -3311,7 +3309,8 @@ public class Jalview2XML
             {
               structureViewers.put(sviewid,
                       new StructureViewerModel(x, y, width, height, false,
-                              false, true, structureState.getViewId()));
+                              false, true, structureState.getViewId(),
+                              structureState.getType()));
               // Legacy pre-2.7 conversion JAL-823 :
               // do not assume any view has to be linked for colour by
               // sequence
@@ -3420,20 +3419,18 @@ public class Jalview2XML
     }
 
     /*
-     * 2.8.2: stateData contains "chimera..." (session file name), or JMOL state
-     * string
-     * 
-     * 2.9: stateData.type contains JMOL or CHIMERA, data is in jar entry
+     * From 2.9: stateData.type contains JMOL or CHIMERA, data is in jar entry
      * "viewer_"+stateData.viewId
      */
-    // FIXME use stateData.getType() instead once schema updated
-    if (ViewerType.CHIMERA.toString().equals(stateData.getStateData())
-            || stateData.getStateData().indexOf("chimera") > -1)
+    if (ViewerType.CHIMERA.toString().equals(stateData.getType()))
     {
       createChimeraViewer(viewerData, af, jprovider);
     }
     else
     {
+      /*
+       * else Jmol (if pre-2.9, stateData contains JMOL state string)
+       */
       createJmolViewer(viewerData, af, jprovider);
     }
   }
@@ -3459,7 +3456,7 @@ public class Jalview2XML
      * 'uniquified' sviewid used to reconstruct the viewer here
      */
     chimeraSessionFile = copyJarEntry(jprovider,
-            "viewer_" + data.getViewId(), "chimera");
+            getViewerJarEntryName(data.getViewId()), "chimera");
 
     Set<Entry<File, StructureData>> fileData = data.getFileData()
             .entrySet();
@@ -3510,10 +3507,10 @@ public class Jalview2XML
      * 2.9+: @type is "JMOL", state data is in a Jar file member named "viewer_"
      * + viewId
      */
-    // FIXME use getType once Castor regenerated for new attribute
-    if (ViewerType.JMOL.toString().equals(state /* svattrib.getType() */))
+    if (ViewerType.JMOL.toString().equals(svattrib.getType()))
     {
-      state = readJarEntry(jprovider, "viewer_" + svattrib.getViewId());
+      state = readJarEntry(jprovider,
+              getViewerJarEntryName(svattrib.getViewId()));
     }
 
     List<String> pdbfilenames = new ArrayList<String>();
@@ -3645,6 +3642,18 @@ public class Jalview2XML
   }
 
   /**
+   * Generates a name for the entry in the project jar file to hold state
+   * information for a structure viewer
+   * 
+   * @param viewId
+   * @return
+   */
+  protected String getViewerJarEntryName(String viewId)
+  {
+    return "viewer_" + viewId;
+  }
+
+  /**
    * Returns any open frame that matches given structure viewer data. The match
    * is based on the unique viewId, or (for older project versions) the frame's
    * geometry.