JAL-674 register PDB IDs when ever they are resolved on file IO
authorJim Procter <jprocter@dundee.ac.uk>
Thu, 30 Oct 2014 15:50:30 +0000 (15:50 +0000)
committerJim Procter <jprocter@dundee.ac.uk>
Thu, 30 Oct 2014 15:50:30 +0000 (15:50 +0000)
src/jalview/appletgui/AlignFrame.java
src/jalview/bin/JalviewLite.java
src/jalview/gui/AlignFrame.java
src/jalview/gui/AssociatePdbFileWithSeq.java
src/jalview/gui/Jalview2XML.java
src/jalview/gui/Jalview2XML_V1.java
src/jalview/gui/PopupMenu.java
src/jalview/io/FileLoader.java

index 8449a53..34ec2cf 100644 (file)
@@ -3684,6 +3684,8 @@ public class AlignFrame extends EmbmenuFrame implements ActionListener,
         }
         pdbentry.getProperty().put("protocol", protocol);
         toaddpdb.addPDBId(pdbentry);
+        alignPanel.getStructureSelectionManager()
+                .registerPDBEntry(pdbentry);
       }
     }
     return true;
index d3f03be..0abd31b 100644 (file)
@@ -2141,6 +2141,8 @@ public class JalviewLite extends Applet implements
                 if (seqs[i] != null)
                 {
                   ((Sequence) seqs[i]).addPDBId(pdb);
+                  StructureSelectionManager.getStructureSelectionManager(
+                          applet).registerPDBEntry(pdb);
                 }
                 else
                 {
index 6b4aa1f..6d8fe6d 100644 (file)
@@ -5051,7 +5051,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener,
               {
                 PDBEntry pe = new AssociatePdbFileWithSeq()
                         .associatePdbWithSeq((String) fm[0],
-                                (String) fm[1], toassoc, false);
+                                (String) fm[1], toassoc, false,
+                                Desktop.instance);
                 if (pe != null)
                 {
                   System.err.println("Associated file : "
index ce75821..a854bdf 100644 (file)
  */
 package jalview.gui;
 
-import javax.swing.JOptionPane;
+import jalview.api.StructureSelectionManagerProvider;
 import jalview.datamodel.PDBEntry;
 import jalview.datamodel.SequenceI;
+import jalview.structure.StructureSelectionManager;
 import jalview.util.MessageManager;
 
+import javax.swing.JOptionPane;
+
 /**
  * GUI related routines for associating PDB files with sequences
  * 
@@ -41,46 +44,50 @@ public class AssociatePdbFileWithSeq
    * @param sequence
    */
   public PDBEntry associatePdbWithSeq(String choice, String protocol,
-          SequenceI sequence, boolean prompt)
+          SequenceI sequence, boolean prompt,
+          StructureSelectionManagerProvider ssmp)
   {
     PDBEntry entry = new PDBEntry();
     MCview.PDBfile pdbfile = null;
-    try
+    pdbfile = StructureSelectionManager.getStructureSelectionManager(ssmp)
+            .setMapping(false, new SequenceI[]
+            { sequence }, null, choice, protocol);
+    if (pdbfile == null)
     {
-      // TODO JAL-674 extract secondary structure and transfer it to associated
-      // sequence
-      pdbfile = new MCview.PDBfile(false, false, choice, protocol);
-      if (pdbfile.id == null)
-      {
-        String reply = null;
-
-        if (prompt)
-        {
-          reply = JOptionPane.showInternalInputDialog(Desktop.desktop,
-                  MessageManager
-                          .getString("label.couldnt_find_pdb_id_in_file"),
-                  MessageManager.getString("label.no_pdb_id_in_file"),
-                  JOptionPane.QUESTION_MESSAGE);
-        }
-        if (reply == null)
-        {
-          return null;
-        }
+      // stacktrace already thrown so just return
+      return null;
+    }
+    if (pdbfile.id == null)
+    {
+      String reply = null;
 
-        entry.setId(reply);
+      if (prompt)
+      {
+        reply = JOptionPane.showInternalInputDialog(Desktop.desktop,
+                MessageManager
+                        .getString("label.couldnt_find_pdb_id_in_file"),
+                MessageManager.getString("label.no_pdb_id_in_file"),
+                JOptionPane.QUESTION_MESSAGE);
       }
-      else
+      if (reply == null)
       {
-        entry.setId(pdbfile.id);
+        return null;
       }
 
-    } catch (java.io.IOException ex)
+      entry.setId(reply);
+    }
+    else
     {
-      ex.printStackTrace();
+      entry.setId(pdbfile.id);
     }
 
-    entry.setFile(choice);
-    sequence.getDatasetSequence().addPDBId(entry);
+    if (pdbfile != null)
+    {
+      entry.setFile(choice);
+      sequence.getDatasetSequence().addPDBId(entry);
+      StructureSelectionManager.getStructureSelectionManager(ssmp)
+              .registerPDBEntry(entry);
+    }
     return entry;
   }
 }
index a19e1db..dfacd54 100644 (file)
@@ -2367,7 +2367,9 @@ public class Jalview2XML
                 entry.setFile(pdbloaded.get(ids[p].getId()).toString());
               }
             }
-
+            StructureSelectionManager.getStructureSelectionManager(
+                    Desktop.instance)
+                    .registerPDBEntry(entry);
             al.getSequenceAt(i).getDatasetSequence().addPDBId(entry);
           }
         }
index b426914..9263cd9 100755 (executable)
@@ -241,6 +241,8 @@ public class Jalview2XML_V1
           entry.setId(ids[p].getId());
           entry.setType(ids[p].getType());
           al.getSequenceAt(i).getDatasetSequence().addPDBId(entry);
+          StructureSelectionManager.getStructureSelectionManager(
+                  Desktop.instance).registerPDBEntry(entry);
         }
 
       }
index ad7726d..fe0ae1c 100644 (file)
@@ -2552,7 +2552,8 @@ public class PopupMenu extends JPopupMenu
       String choice = chooser.getSelectedFile().getPath();
       jalview.bin.Cache.setProperty("LAST_DIRECTORY", choice);
       new AssociatePdbFileWithSeq().associatePdbWithSeq(choice,
-              jalview.io.AppletFormatAdapter.FILE, sequence, true);
+              jalview.io.AppletFormatAdapter.FILE, sequence, true,
+              Desktop.instance);
     }
 
   }
index 1d9655b..82b94c3 100755 (executable)
 package jalview.io;
 
 import jalview.datamodel.AlignmentI;
+import jalview.datamodel.PDBEntry;
+import jalview.datamodel.SequenceI;
 import jalview.gui.AlignFrame;
 import jalview.gui.AlignViewport;
 import jalview.gui.Desktop;
 import jalview.gui.Jalview2XML;
+import jalview.structure.StructureSelectionManager;
+import jalview.util.MessageManager;
 
+import java.util.List;
 import java.util.StringTokenizer;
 import java.util.Vector;
 
-import jalview.util.MessageManager;
 import javax.swing.JOptionPane;
 import javax.swing.SwingUtilities;
 
@@ -310,6 +314,21 @@ public class FileLoader implements Runnable
 
         if ((al != null) && (al.getHeight() > 0))
         {
+          for (SequenceI sq : al.getSequences())
+          {
+            while (sq.getDatasetSequence() != null)
+            {
+              sq = sq.getDatasetSequence();
+            }
+            if (sq.getPDBId() != null)
+            {
+              for (PDBEntry pdbe : (List<PDBEntry>) sq.getPDBId())
+              {
+                StructureSelectionManager.getStructureSelectionManager(
+                        Desktop.instance).registerPDBEntry(pdbe);
+              }
+            }
+          }
           if (viewport != null)
           {
             // TODO: create undo object for this JAL-1101