refactored guts of pdb file association code
authorjprocter <Jim Procter>
Fri, 7 Jan 2011 13:16:24 +0000 (13:16 +0000)
committerjprocter <Jim Procter>
Fri, 7 Jan 2011 13:16:24 +0000 (13:16 +0000)
src/jalview/gui/AssociatePdbFileWithSeq.java [new file with mode: 0644]
src/jalview/gui/PopupMenu.java

diff --git a/src/jalview/gui/AssociatePdbFileWithSeq.java b/src/jalview/gui/AssociatePdbFileWithSeq.java
new file mode 100644 (file)
index 0000000..cbfbbc4
--- /dev/null
@@ -0,0 +1,61 @@
+package jalview.gui;
+
+import javax.swing.JOptionPane;
+
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceI;
+
+/**
+ * GUI related routines for associating PDB files with sequences
+ * @author JimP
+ *
+ */
+public class AssociatePdbFileWithSeq
+{
+
+/**
+ * assocate the given PDB file with 
+ * @param choice
+ * @param sequence
+ */
+  public PDBEntry associatePdbWithSeq(String choice, String protocol, SequenceI sequence, boolean prompt)
+  {
+    PDBEntry entry = new PDBEntry();
+    try
+    {
+      MCview.PDBfile pdbfile = new MCview.PDBfile(choice,
+              protocol);
+
+      if (pdbfile.id == null)
+      {
+        String reply = null;
+      
+        if (prompt) { reply = JOptionPane
+                .showInternalInputDialog(
+                        Desktop.desktop,
+                        "Couldn't find a PDB id in the file supplied."
+                                + "Please enter an Id to identify this structure.",
+                        "No PDB Id in File", JOptionPane.QUESTION_MESSAGE);}
+        if (reply == null)
+        {
+          return null;
+        }
+
+        entry.setId(reply);
+      }
+      else
+      {
+        entry.setId(pdbfile.id);
+      }
+    } catch (java.io.IOException ex)
+    {
+      ex.printStackTrace();
+    }
+
+    entry.setFile(choice);
+    sequence.getDatasetSequence().addPDBId(entry);
+    return entry;
+  }
+
+}
index 94d22ef..7a82a96 100755 (executable)
@@ -1730,47 +1730,16 @@ public class PopupMenu extends JPopupMenu
     jalview.io.JalviewFileChooser chooser = new jalview.io.JalviewFileChooser(
             jalview.bin.Cache.getProperty("LAST_DIRECTORY"));
     chooser.setFileView(new jalview.io.JalviewFileView());
-    chooser.setDialogTitle("Select a PDB file");
-    chooser.setToolTipText("Load a PDB file");
+    chooser.setDialogTitle("Select a PDB file for "+sequence.getDisplayId(false));
+    chooser.setToolTipText("Load a PDB file and associate it with sequence '"+sequence.getDisplayId(false)+"'");
 
     int value = chooser.showOpenDialog(null);
 
     if (value == jalview.io.JalviewFileChooser.APPROVE_OPTION)
     {
-      PDBEntry entry = new PDBEntry();
       String choice = chooser.getSelectedFile().getPath();
       jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice);
-      try
-      {
-        MCview.PDBfile pdbfile = new MCview.PDBfile(choice,
-                jalview.io.AppletFormatAdapter.FILE);
-
-        if (pdbfile.id == null)
-        {
-          String reply = JOptionPane
-                  .showInternalInputDialog(
-                          Desktop.desktop,
-                          "Couldn't find a PDB id in the file supplied."
-                                  + "Please enter an Id to identify this structure.",
-                          "No PDB Id in File", JOptionPane.QUESTION_MESSAGE);
-          if (reply == null)
-          {
-            return;
-          }
-
-          entry.setId(reply);
-        }
-        else
-        {
-          entry.setId(pdbfile.id);
-        }
-      } catch (java.io.IOException ex)
-      {
-        ex.printStackTrace();
-      }
-
-      entry.setFile(choice);
-      sequence.getDatasetSequence().addPDBId(entry);
+      new AssociatePdbFileWithSeq().associatePdbWithSeq(choice, jalview.io.AppletFormatAdapter.FILE, sequence, true);
     }
 
   }