/* * 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.api.structures.JalviewStructureDisplayI; import jalview.bin.Cache; import jalview.datamodel.PDBEntry; import jalview.datamodel.SequenceI; import jalview.datamodel.StructureViewerModel; import jalview.structure.StructureSelectionManager; import java.awt.Rectangle; /** * proxy for handling structure viewers. * * this allows new views to be created with the currently configured viewer, the * preferred viewer to be set/read and existing views created previously with a * particular viewer to be recovered * * @author jprocter */ public class StructureViewer { StructureSelectionManager ssm; public enum ViewerType { JMOL, CHIMERA }; public ViewerType getViewerType() { String viewType = Cache.getDefault(Preferences.STRUCTURE_DISPLAY, ViewerType.JMOL.name()); return ViewerType.valueOf(viewType); } public void setViewerType(ViewerType type) { Cache.setProperty(Preferences.STRUCTURE_DISPLAY, type.name()); } public StructureViewer(StructureSelectionManager structureSelectionManager) { ssm = structureSelectionManager; } public JalviewStructureDisplayI viewStructures(AlignmentPanel ap, PDBEntry[] pr, SequenceI[][] collateForPDB) { return viewStructures(getViewerType(), ap, pr, collateForPDB); } public JalviewStructureDisplayI viewStructures(ViewerType viewerType, AlignmentPanel ap, PDBEntry[] pr, SequenceI[][] collateForPDB) { JalviewStructureDisplayI sview = null; if (viewerType.equals(ViewerType.JMOL)) { sview = new AppJmol(ap, pr, ap.av.collateForPDB(pr)); } else if (viewerType.equals(ViewerType.CHIMERA)) { sview = new ChimeraViewFrame(ap, pr, ap.av.collateForPDB(pr)); } else { Cache.log.error("Unknown structure viewer type " + getViewerType().toString()); } return sview; } public JalviewStructureDisplayI viewStructures(ViewerType viewerType, AlignmentPanel ap, PDBEntry pr, SequenceI[] collateForPDB) { JalviewStructureDisplayI sview = null; if (viewerType.equals(ViewerType.JMOL)) { sview = new AppJmol(pr, collateForPDB, null, ap); } else if (viewerType.equals(ViewerType.CHIMERA)) { sview = new ChimeraViewFrame(pr, collateForPDB, null, ap); } else { Cache.log.error("Unknown structure viewer type " + getViewerType().toString()); } return sview; } public JalviewStructureDisplayI viewStructures(PDBEntry pdb, SequenceI[] sequenceIs, Object object, AlignmentPanel ap) { return viewStructures(getViewerType(), ap, pdb, sequenceIs); } /** * Create a new panel controlling a structure viewer. * * @param type * @param pdbf * @param id * @param sq * @param alignPanel * @param viewerData * @param fileloc * @param rect * @param vid * @return */ public JalviewStructureDisplayI createView(ViewerType type, String[] pdbf, String[] id, SequenceI[][] sq, AlignmentPanel alignPanel, StructureViewerModel viewerData, String fileloc, Rectangle rect, String vid) { final boolean useinViewerSuperpos = viewerData.isAlignWithPanel(); final boolean usetoColourbyseq = viewerData.isColourWithAlignPanel(); final boolean viewerColouring = viewerData.isColourByViewer(); JalviewStructureDisplayI sview = null; switch (type) { case JMOL: sview = new AppJmol(pdbf, id, sq, alignPanel, usetoColourbyseq, useinViewerSuperpos, viewerColouring, fileloc, rect, vid); break; case CHIMERA: Cache.log.error("Unsupported structure viewer type " + type.toString()); break; default: Cache.log.error("Unknown structure viewer type " + type.toString()); } return sview; } }