From 28c13a67af0d57c53de532d0d50add7ab83f7d42 Mon Sep 17 00:00:00 2001 From: jprocter Date: Fri, 7 Jan 2011 13:16:24 +0000 Subject: [PATCH] refactored guts of pdb file association code --- src/jalview/gui/AssociatePdbFileWithSeq.java | 61 ++++++++++++++++++++++++++ src/jalview/gui/PopupMenu.java | 37 ++-------------- 2 files changed, 64 insertions(+), 34 deletions(-) create mode 100644 src/jalview/gui/AssociatePdbFileWithSeq.java diff --git a/src/jalview/gui/AssociatePdbFileWithSeq.java b/src/jalview/gui/AssociatePdbFileWithSeq.java new file mode 100644 index 0000000..cbfbbc4 --- /dev/null +++ b/src/jalview/gui/AssociatePdbFileWithSeq.java @@ -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; + } + +} diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index 94d22ef..7a82a96 100755 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -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); } } -- 1.7.10.2