JAL-3551 save structure viewer session refactorings, PyMol added
[jalview.git] / src / jalview / gui / StructureViewerBase.java
index 25d9998..0c5c5f0 100644 (file)
  */
 package jalview.gui;
 
-import jalview.api.AlignmentViewPanel;
-import jalview.bin.Cache;
-import jalview.datamodel.AlignmentI;
-import jalview.datamodel.PDBEntry;
-import jalview.datamodel.SequenceI;
-import jalview.gui.StructureViewer.ViewerType;
-import jalview.gui.ViewSelectionMenu.ViewSetProvider;
-import jalview.io.DataSourceType;
-import jalview.io.JalviewFileChooser;
-import jalview.io.JalviewFileView;
-import jalview.jbgui.GStructureViewer;
-import jalview.schemes.ColourSchemeI;
-import jalview.schemes.ColourSchemes;
-import jalview.structure.StructureMapping;
-import jalview.structures.models.AAStructureBindingModel;
-import jalview.util.MessageManager;
-import jalview.ws.dbsources.Pdb;
-
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.event.ActionEvent;
@@ -64,6 +46,24 @@ import javax.swing.JRadioButtonMenuItem;
 import javax.swing.event.MenuEvent;
 import javax.swing.event.MenuListener;
 
+import jalview.api.AlignmentViewPanel;
+import jalview.bin.Cache;
+import jalview.datamodel.AlignmentI;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceI;
+import jalview.gui.StructureViewer.ViewerType;
+import jalview.gui.ViewSelectionMenu.ViewSetProvider;
+import jalview.io.DataSourceType;
+import jalview.io.JalviewFileChooser;
+import jalview.io.JalviewFileView;
+import jalview.jbgui.GStructureViewer;
+import jalview.schemes.ColourSchemeI;
+import jalview.schemes.ColourSchemes;
+import jalview.structure.StructureMapping;
+import jalview.structures.models.AAStructureBindingModel;
+import jalview.util.MessageManager;
+import jalview.ws.dbsources.Pdb;
+
 /**
  * Base class with common functionality for JMol, Chimera or other structure
  * viewers.
@@ -198,8 +198,6 @@ public abstract class StructureViewerBase extends GStructureViewer
     this.viewId = viewId;
   }
 
-  public abstract String getStateInfo();
-
   protected void buildActionMenu()
   {
     if (_alignwith == null)
@@ -1141,4 +1139,16 @@ public abstract class StructureViewerBase extends GStructureViewer
     return filePath;
   }
 
+  /**
+   * If supported, saves the state of the structure viewer to a temporary file
+   * and returns the file, else returns null
+   * 
+   * @return
+   */
+  public File saveSession()
+  {
+    // TODO: a wait loop to ensure the file is written fully before returning?
+    return getBinding() == null ? null : getBinding().saveSession();
+  }
+
 }