JAL-4305 Isolate and unify the Jalview object from all the gubbins in jalview.bin...
[jalview.git] / src / jalview / project / Jalview2XML.java
index 400465d..cc20fce 100644 (file)
@@ -631,7 +631,7 @@ public class Jalview2XML
    */
   public void saveState(JarOutputStream jout)
   {
-    AlignFrame[] frames = Desktop.getAlignFrames();
+    AlignFrame[] frames = Desktop.getDesktopAlignFrames();
 
     setStateSavedUpToDate(true);
 
@@ -1140,51 +1140,52 @@ public class Jalview2XML
            * only view *should* be coped with sensibly.
            */
           // This must have been loaded, is it still visible?
-          JInternalFrame[] frames = null;
+          List<JalviewStructureDisplayI> viewFrames = new ArrayList<>();
           if (Desktop.desktop != null)
           {
-            frames = Desktop.desktop.getAllFrames();
+            JInternalFrame[] jifs = Desktop.desktop.getAllFrames();
+            if (jifs != null)
+            {
+              for (JInternalFrame jif : jifs)
+              {
+                if (jif instanceof JalviewStructureDisplayI)
+                {
+                  viewFrames.add((JalviewStructureDisplayI) jif);
+                }
+              }
+            }
           }
           else if (Jalview.isHeadlessMode()
                   && Jalview.getInstance().getCommands() != null)
           {
-            // TODO
-          }
-          else
-          {
-            frames = null;
+            viewFrames.addAll(
+                    StructureViewerBase.getAllStructureViewerBases());
           }
+
           String matchedFile = null;
-          if (frames != null)
+          for (JalviewStructureDisplayI viewFrame : viewFrames)
           {
-            for (int f = frames.length - 1; f > -1; f--)
+            matchedFile = saveStructureViewer(ap, jds, pdb, entry, viewIds,
+                    matchedFile, viewFrame);
+            /*
+             * Only store each structure viewer's state once in the project
+             * jar. First time through only (storeDS==false)
+             */
+            String viewId = viewFrame.getViewId();
+            String viewerType = viewFrame.getViewerType().toString();
+            if (!storeDS && !viewIds.contains(viewId))
             {
-              if (frames[f] instanceof StructureViewerBase)
+              viewIds.add(viewId);
+              File viewerState = viewFrame.saveSession();
+              if (viewerState != null)
               {
-                StructureViewerBase viewFrame = (StructureViewerBase) frames[f];
-                matchedFile = saveStructureViewer(ap, jds, pdb, entry,
-                        viewIds, matchedFile, viewFrame);
-                /*
-                 * Only store each structure viewer's state once in the project
-                 * jar. First time through only (storeDS==false)
-                 */
-                String viewId = viewFrame.getViewId();
-                String viewerType = viewFrame.getViewerType().toString();
-                if (!storeDS && !viewIds.contains(viewId))
-                {
-                  viewIds.add(viewId);
-                  File viewerState = viewFrame.saveSession();
-                  if (viewerState != null)
-                  {
-                    copyFileToJar(jout, viewerState.getPath(),
-                            getViewerJarEntryName(viewId), viewerType);
-                  }
-                  else
-                  {
-                    Console.error("Failed to save viewer state for "
-                            + viewerType);
-                  }
-                }
+                copyFileToJar(jout, viewerState.getPath(),
+                        getViewerJarEntryName(viewId), viewerType);
+              }
+              else
+              {
+                Console.error(
+                        "Failed to save viewer state for " + viewerType);
               }
             }
           }
@@ -2164,7 +2165,7 @@ public class Jalview2XML
    */
   protected String saveStructureViewer(AlignmentPanel ap, SequenceI jds,
           Pdbids pdb, PDBEntry entry, List<String> viewIds,
-          String matchedFile, StructureViewerBase viewFrame)
+          String matchedFile, JalviewStructureDisplayI viewFrame)
   {
     final AAStructureBindingModel bindingModel = viewFrame.getBinding();
 
@@ -2209,7 +2210,7 @@ public class Jalview2XML
         {
           StructureState state = new StructureState();
           state.setVisible(true);
-          state.setXpos(viewFrame.getX());
+          state.setXpos(viewFrame.getY());
           state.setYpos(viewFrame.getY());
           state.setWidth(viewFrame.getWidth());
           state.setHeight(viewFrame.getHeight());
@@ -6918,7 +6919,7 @@ public class Jalview2XML
     if (stateSavedUpToDate()) // nothing happened since last project save
       return true;
 
-    AlignFrame[] frames = Desktop.getAlignFrames();
+    AlignFrame[] frames = Desktop.getDesktopAlignFrames();
     if (frames != null)
     {
       for (int i = 0; i < frames.length; i++)