JAL-1690 scaleProteinAsCdna new optional attribute on Viewport in
[jalview.git] / src / jalview / gui / Jalview2XML.java
index 91d6aa8..2f90e91 100644 (file)
@@ -20,6 +20,7 @@
  */
 package jalview.gui;
 
+import jalview.api.ViewStyleI;
 import jalview.api.structures.JalviewStructureDisplayI;
 import jalview.bin.Cache;
 import jalview.datamodel.AlignedCodonFrame;
@@ -776,9 +777,9 @@ public class Jalview2XML
         }
       }
 
-      if (jdatasq.getPDBId() != null)
+      if (jdatasq.getAllPDBEntries() != null)
       {
-        Enumeration en = jdatasq.getPDBId().elements();
+        Enumeration en = jdatasq.getAllPDBEntries().elements();
         while (en.hasMoreElements())
         {
           Pdbids pdb = new Pdbids();
@@ -1149,6 +1150,7 @@ public class Jalview2XML
       view.setFontName(av.font.getName());
       view.setFontSize(av.font.getSize());
       view.setFontStyle(av.font.getStyle());
+      view.setScaleProteinAsCdna(av.getViewStyle().isScaleProteinAsCdna());
       view.setRenderGaps(av.isRenderGaps());
       view.setShowAnnotation(av.isShowAnnotation());
       view.setShowBoxes(av.getShowBoxes());
@@ -1367,6 +1369,10 @@ public class Jalview2XML
           final SequenceI jds, List<String> viewIds, AlignmentPanel ap,
           boolean storeDataset)
   {
+    if (Desktop.desktop == null)
+    {
+      return;
+    }
     JInternalFrame[] frames = Desktop.desktop.getAllFrames();
     for (int f = frames.length - 1; f > -1; f--)
     {
@@ -3801,16 +3807,23 @@ public class Jalview2XML
       newFileLoc.append(";");
     }
 
-    if (newFileLoc.length() > 0)
+    if (newFileLoc.length() == 0)
     {
-      int histbug = newFileLoc.indexOf("history = ");
+      return;
+    }
+    int histbug = newFileLoc.indexOf("history = ");
+    if (histbug > -1)
+    {
+      /*
+       * change "history = [true|false];" to "history = [1|0];"
+       */
       histbug += 10;
       int diff = histbug == -1 ? -1 : newFileLoc.indexOf(";", histbug);
       String val = (diff == -1) ? null : newFileLoc
               .substring(histbug, diff);
       if (val != null && val.length() >= 4)
       {
-        if (val.contains("e"))
+        if (val.contains("e")) // eh? what can it be?
         {
           if (val.trim().equals("true"))
           {
@@ -3823,54 +3836,55 @@ public class Jalview2XML
           newFileLoc.replace(histbug, diff, val);
         }
       }
+    }
 
-      final String[] pdbf = pdbfilenames.toArray(new String[pdbfilenames
-              .size()]);
-      final String[] id = pdbids.toArray(new String[pdbids.size()]);
-      final SequenceI[][] sq = seqmaps
-              .toArray(new SequenceI[seqmaps.size()][]);
-      final String fileloc = newFileLoc.toString();
-      final String sviewid = viewerData.getKey();
-      final AlignFrame alf = af;
-      final Rectangle rect = new Rectangle(svattrib.getX(),
-              svattrib.getY(), svattrib.getWidth(), svattrib.getHeight());
-      try
+    final String[] pdbf = pdbfilenames.toArray(new String[pdbfilenames
+            .size()]);
+    final String[] id = pdbids.toArray(new String[pdbids.size()]);
+    final SequenceI[][] sq = seqmaps
+            .toArray(new SequenceI[seqmaps.size()][]);
+    final String fileloc = newFileLoc.toString();
+    final String sviewid = viewerData.getKey();
+    final AlignFrame alf = af;
+    final Rectangle rect = new Rectangle(svattrib.getX(), svattrib.getY(),
+            svattrib.getWidth(), svattrib.getHeight());
+    try
+    {
+      javax.swing.SwingUtilities.invokeAndWait(new Runnable()
       {
-        javax.swing.SwingUtilities.invokeAndWait(new Runnable()
+        @Override
+        public void run()
         {
-          @Override
-          public void run()
+          JalviewStructureDisplayI sview = null;
+          try
           {
-            JalviewStructureDisplayI sview = null;
-            try
-            {
-              sview = new StructureViewer(alf.alignPanel
-                      .getStructureSelectionManager()).createView(
-                      StructureViewer.ViewerType.JMOL, pdbf, id, sq,
-                      alf.alignPanel, svattrib, fileloc, rect, sviewid);
-              addNewStructureViewer(sview);
-            } catch (OutOfMemoryError ex)
+            sview = new StructureViewer(alf.alignPanel
+                    .getStructureSelectionManager()).createView(
+                    StructureViewer.ViewerType.JMOL, pdbf, id, sq,
+                    alf.alignPanel, svattrib, fileloc, rect, sviewid);
+            addNewStructureViewer(sview);
+          } catch (OutOfMemoryError ex)
+          {
+            new OOMWarning("restoring structure view for PDB id " + id,
+                    (OutOfMemoryError) ex.getCause());
+            if (sview != null && sview.isVisible())
             {
-              new OOMWarning("restoring structure view for PDB id " + id,
-                      (OutOfMemoryError) ex.getCause());
-              if (sview != null && sview.isVisible())
-              {
-                sview.closeViewer(false);
-                sview.setVisible(false);
-                sview.dispose();
-              }
+              sview.closeViewer(false);
+              sview.setVisible(false);
+              sview.dispose();
             }
           }
-        });
-      } catch (InvocationTargetException ex)
-      {
-        warn("Unexpected error when opening Jmol view.", ex);
+        }
+      });
+    } catch (InvocationTargetException ex)
+    {
+      warn("Unexpected error when opening Jmol view.", ex);
 
-      } catch (InterruptedException e)
-      {
-        // e.printStackTrace();
-      }
+    } catch (InterruptedException e)
+    {
+      // e.printStackTrace();
     }
+
   }
 
   /**
@@ -4182,6 +4196,9 @@ public class Jalview2XML
     af.viewport.setFont(
             new java.awt.Font(view.getFontName(), view.getFontStyle(), view
                     .getFontSize()), true);
+    ViewStyleI vs = af.viewport.getViewStyle();
+    vs.setScaleProteinAsCdna(view.isScaleProteinAsCdna());
+    af.viewport.setViewStyle(vs);
     // TODO: allow custom charWidth/Heights to be restored by updating them
     // after setting font - which means set above to false
     af.viewport.setRenderGaps(view.getRenderGaps());