/* * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) * Copyright (C) $$Year-Rel$$ The Jalview Authors * * This file is part of Jalview. * * Jalview is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation, either version 3 * of the License, or (at your option) any later version. * * Jalview is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty * of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Jalview. If not, see . * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.gui; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; import jalview.io.DataSourceType; import jalview.io.StructureFile; import jalview.util.MessageManager; /** * GUI related routines for associating PDB files with sequences. A single * static method. * * @author JimP * */ public class AssociatePdbFileWithSeq { private AssociatePdbFileWithSeq() { // inaccessible } /** * Associate the given PDB file name or URL with a sequence. Do not map * mouse-over events. * * @param fileName * or URL * @param type * will be DataType.FILE or DataType.URL * @param sequence * to associate * @param prompt * true if the user should be asked what to do if the specified file * does not seem to contain PDB information (StructureChooser only) * @return null if file is not found */ public static PDBEntry associatePdbWithSeq(String fileName, DataSourceType type, SequenceI sequence, boolean prompt) { PDBEntry entry = new PDBEntry(); StructureFile pdbfile = null; pdbfile = Desktop.getStructureSelectionManager() .setMapping(false, new SequenceI[] { sequence }, null, fileName, type); if (pdbfile == null) { // stacktrace already thrown so just return return null; } String id = pdbfile.getId(); if (id == null && (id = (prompt ? JvOptionPane.showInternalInputDialog(Desktop.getDesktopPane(), MessageManager .getString("label.couldnt_find_pdb_id_in_file"), MessageManager.getString("label.no_pdb_id_in_file"), JvOptionPane.QUESTION_MESSAGE) : null)) == null) { return null; } entry.setId(id); entry.setType(PDBEntry.Type.FILE); entry.setFile(fileName); sequence.getDatasetSequence().addPDBId(entry); Desktop.getStructureSelectionManager() .registerPDBEntry(entry); return entry; } }