From 9c37999eb4b461a5c7a94e10ac39583c1c29200a Mon Sep 17 00:00:00 2001 From: Jim Procter Date: Thu, 30 Oct 2014 15:50:30 +0000 Subject: [PATCH] JAL-674 register PDB IDs when ever they are resolved on file IO --- src/jalview/appletgui/AlignFrame.java | 2 + src/jalview/bin/JalviewLite.java | 2 + src/jalview/gui/AlignFrame.java | 3 +- src/jalview/gui/AssociatePdbFileWithSeq.java | 65 ++++++++++++++------------ src/jalview/gui/Jalview2XML.java | 4 +- src/jalview/gui/Jalview2XML_V1.java | 2 + src/jalview/gui/PopupMenu.java | 3 +- src/jalview/io/FileLoader.java | 21 ++++++++- 8 files changed, 69 insertions(+), 33 deletions(-) diff --git a/src/jalview/appletgui/AlignFrame.java b/src/jalview/appletgui/AlignFrame.java index 8449a53..34ec2cf 100644 --- a/src/jalview/appletgui/AlignFrame.java +++ b/src/jalview/appletgui/AlignFrame.java @@ -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; diff --git a/src/jalview/bin/JalviewLite.java b/src/jalview/bin/JalviewLite.java index d3f03be..0abd31b 100644 --- a/src/jalview/bin/JalviewLite.java +++ b/src/jalview/bin/JalviewLite.java @@ -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 { diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index 6b4aa1f..6d8fe6d 100644 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -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 : " diff --git a/src/jalview/gui/AssociatePdbFileWithSeq.java b/src/jalview/gui/AssociatePdbFileWithSeq.java index ce75821..a854bdf 100644 --- a/src/jalview/gui/AssociatePdbFileWithSeq.java +++ b/src/jalview/gui/AssociatePdbFileWithSeq.java @@ -20,11 +20,14 @@ */ 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; } } diff --git a/src/jalview/gui/Jalview2XML.java b/src/jalview/gui/Jalview2XML.java index a19e1db..dfacd54 100644 --- a/src/jalview/gui/Jalview2XML.java +++ b/src/jalview/gui/Jalview2XML.java @@ -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); } } diff --git a/src/jalview/gui/Jalview2XML_V1.java b/src/jalview/gui/Jalview2XML_V1.java index b426914..9263cd9 100755 --- a/src/jalview/gui/Jalview2XML_V1.java +++ b/src/jalview/gui/Jalview2XML_V1.java @@ -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); } } diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index ad7726d..fe0ae1c 100644 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -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); } } diff --git a/src/jalview/io/FileLoader.java b/src/jalview/io/FileLoader.java index 1d9655b..82b94c3 100755 --- a/src/jalview/io/FileLoader.java +++ b/src/jalview/io/FileLoader.java @@ -21,15 +21,19 @@ 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) sq.getPDBId()) + { + StructureSelectionManager.getStructureSelectionManager( + Desktop.instance).registerPDBEntry(pdbe); + } + } + } if (viewport != null) { // TODO: create undo object for this JAL-1101 -- 1.7.10.2