From 5eedbb315e861ef49368574842d8a8788b4231b4 Mon Sep 17 00:00:00 2001 From: amwaterhouse Date: Tue, 25 Jul 2006 09:37:53 +0000 Subject: [PATCH] Associate pdb files --- src/jalview/gui/PopupMenu.java | 119 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 1 deletion(-) diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java index 6fbd0ee..018c1c2 100755 --- a/src/jalview/gui/PopupMenu.java +++ b/src/jalview/gui/PopupMenu.java @@ -78,6 +78,10 @@ public class PopupMenu extends JPopupMenu JMenuItem lowerCase = new JMenuItem(); JMenuItem toggle = new JMenuItem(); JMenu outputMenu = new JMenu(); + JMenu pdbMenu = new JMenu(); + JMenuItem pdbFromFile = new JMenuItem(); + JMenuItem enterPDB = new JMenuItem(); + JMenuItem discoverPDB = new JMenuItem(); /** * Creates a new PopupMenu object. @@ -145,6 +149,7 @@ public class PopupMenu extends JPopupMenu { java.util.Enumeration e = seq.getDatasetSequence().getPDBId(). elements(); + while (e.hasMoreElements()) { final PDBEntry pdb = (PDBEntry) e.nextElement(); @@ -312,6 +317,7 @@ public class PopupMenu extends JPopupMenu if (seq == null) { sequenceMenu.setVisible(false); + pdbMenu.setVisible(false); } if(links != null && links.size()>0) @@ -476,10 +482,37 @@ public class PopupMenu extends JPopupMenu } }); outputMenu.setText("Output to Textbox..."); + pdbMenu.setText("Associate Structure with Sequence"); + pdbFromFile.setText("From File"); + pdbFromFile.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + pdbFromFile_actionPerformed(e); + } + }); + enterPDB.setText("Enter PDB Id"); + enterPDB.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + enterPDB_actionPerformed(e); + } + }); + discoverPDB.setText("Discover PDB ids"); + discoverPDB.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) + { + discoverPDB_actionPerformed(e); + } + }); add(groupMenu); - add(sequenceMenu); + this.add(editMenu); this.add(outputMenu); + add(sequenceMenu); + this.add(pdbMenu); groupMenu.add(groupName); groupMenu.addSeparator(); groupMenu.add(unGroupMenuItem); @@ -534,6 +567,9 @@ public class PopupMenu extends JPopupMenu editMenu.add(upperCase); editMenu.add(lowerCase); editMenu.add(toggle); + pdbMenu.add(pdbFromFile); + pdbMenu.add(enterPDB); + pdbMenu.add(discoverPDB); noColourmenuItem.setText("None"); noColourmenuItem.addActionListener(new java.awt.event.ActionListener() { @@ -1191,4 +1227,85 @@ public class PopupMenu extends JPopupMenu ap.av.getSelectionAsNewSequence(), omitHidden)); } + + + public void pdbFromFile_actionPerformed(ActionEvent e) + { + 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"); + + 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); + } + + } + + public void enterPDB_actionPerformed(ActionEvent e) + { + int size = (ap.av.getSelectionGroup() == null ? 0 : + ap.av.getSelectionGroup().getSize(false)); + + if (size == 0 || size > 1) + { + JOptionPane.showInternalMessageDialog( + Desktop.desktop, + "Select a single sequence to specify a PDB id for first", + "Select Single Selected", JOptionPane.WARNING_MESSAGE); + return; + } + + String id = JOptionPane.showInternalInputDialog(Desktop.desktop, + "Enter PDB Id", "Enter PDB Id", JOptionPane.QUESTION_MESSAGE); + + if (id != null && id.length() > 0) + { + PDBEntry entry = new PDBEntry(); + entry.setId(id); + ap.av.getSelectionGroup().getSequenceAt(0).getDatasetSequence() + .addPDBId(entry); + } + } + + public void discoverPDB_actionPerformed(ActionEvent e) + { + new jalview.io.DBRefFetcher( + ap.av.getAlignment(), ap.alignFrame).fetchDBRefs(false); + } } -- 1.7.10.2