JAL-3551 pull up Close Viewer dialog to base class
[jalview.git] / src / jalview / gui / PymolViewer.java
index 8f7f2c1..98582b2 100644 (file)
@@ -1,5 +1,13 @@
 package jalview.gui;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JInternalFrame;
+import javax.swing.event.InternalFrameAdapter;
+import javax.swing.event.InternalFrameEvent;
+
 import jalview.api.AlignmentViewPanel;
 import jalview.api.FeatureRenderer;
 import jalview.bin.Cache;
@@ -11,14 +19,6 @@ import jalview.io.StructureFile;
 import jalview.structures.models.AAStructureBindingModel;
 import jalview.util.MessageManager;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.JInternalFrame;
-import javax.swing.event.InternalFrameAdapter;
-import javax.swing.event.InternalFrameEvent;
-
 public class PymolViewer extends StructureViewerBase
 {
   private static final int myWidth = 500;
@@ -57,6 +57,40 @@ public class PymolViewer extends StructureViewerBase
     openNewPymol(ap, pe, seqs);
   }
 
+  /**
+   * Constructor given a session file to be restored
+   * 
+   * @param sessionFile
+   * @param alignPanel
+   * @param pdbArray
+   * @param seqsArray
+   * @param colourByPymol
+   * @param colourBySequence
+   * @param newViewId
+   */
+  public PymolViewer(String sessionFile, AlignmentPanel alignPanel,
+          PDBEntry[] pdbArray, SequenceI[][] seqsArray,
+          boolean colourByPymol, boolean colourBySequence, String newViewId)
+  {
+    // TODO convert to base/factory class method
+    this();
+    setViewId(newViewId);
+    this.pymolSessionFile = sessionFile;
+    openNewPymol(alignPanel, pdbArray, seqsArray);
+    if (colourByPymol)
+    {
+      binding.setColourBySequence(false);
+      seqColour.setSelected(false);
+      viewerColour.setSelected(true);
+    }
+    else if (colourBySequence)
+    {
+      binding.setColourBySequence(true);
+      seqColour.setSelected(true);
+      viewerColour.setSelected(false);
+    }
+  }
+
   private void openNewPymol(AlignmentPanel ap, PDBEntry[] pe,
           SequenceI[][] seqs)
   {
@@ -256,7 +290,8 @@ public class PymolViewer extends StructureViewerBase
     if (!binding.launchPymol())
     {
       JvOptionPane.showMessageDialog(Desktop.desktop,
-              MessageManager.getString("label.pymol_failed"),
+              MessageManager.formatMessage("label.open_viewer_failed",
+                      getViewerName()),
               MessageManager.getString("label.error_loading_file"),
               JvOptionPane.ERROR_MESSAGE);
       this.dispose();
@@ -282,50 +317,6 @@ public class PymolViewer extends StructureViewerBase
   }
 
   @Override
-  public void closeViewer(boolean closePymol)
-  {
-    if (binding != null && binding.isPymolRunning())
-    {
-      if (!closePymol)
-      {
-        // TODO i18n (and pull up)
-        String prompt = MessageManager
-                .formatMessage("label.confirm_close_pymol", new Object[]
-                { binding.getViewerTitle(getViewerName(), false) });
-        prompt = JvSwingUtils.wrapTooltip(true, prompt);
-        int confirm = JvOptionPane.showConfirmDialog(this, prompt,
-                MessageManager.getString("label.close_viewer"),
-                JvOptionPane.YES_NO_CANCEL_OPTION);
-        /*
-         * abort closure if user hits escape or Cancel
-         */
-        if (confirm == JvOptionPane.CANCEL_OPTION
-                || confirm == JvOptionPane.CLOSED_OPTION)
-        {
-          return;
-        }
-        closePymol = confirm == JvOptionPane.YES_OPTION;
-      }
-      binding.closeViewer(closePymol);
-    }
-    setAlignmentPanel(null);
-    _aps.clear();
-    _alignwith.clear();
-    _colourwith.clear();
-    // TODO: check for memory leaks where instance isn't finalised because
-    // binding
-    // holds a reference to the window
-    binding = null;
-    dispose();
-  }
-
-  @Override
-  public String getStateInfo()
-  {
-    return null;
-  }
-
-  @Override
   public ViewerType getViewerType()
   {
     return ViewerType.PYMOL;