X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FStructureViewer.java;h=617706a9b73752f41e4b3c19b0dbb7d20d6d8517;hb=2e57729baa0bc97fc03ab1fb8eb4dbc1a12f3d9a;hp=19e0a225f5f9b08b0d2a397030a9fcd903877224;hpb=e06ef51ba3dd8cdae7632d71db162ff416b88256;p=jalview.git diff --git a/src/jalview/gui/StructureViewer.java b/src/jalview/gui/StructureViewer.java index 19e0a22..617706a 100644 --- a/src/jalview/gui/StructureViewer.java +++ b/src/jalview/gui/StructureViewer.java @@ -20,14 +20,6 @@ */ 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; import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; @@ -35,6 +27,13 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +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; + /** * A proxy for handling structure viewers, that orchestrates adding selected * structures, associated with sequences in Jalview, to an existing viewer, or @@ -56,7 +55,7 @@ public class StructureViewer public enum ViewerType { - JMOL, CHIMERA + JMOL, CHIMERA, CHIMERAX, PYMOL }; /** @@ -165,6 +164,15 @@ public class StructureViewer sview = new ChimeraViewFrame(pdbsForFile, superposeAdded, theSeqs, ap); } + else if (viewerType.equals(ViewerType.CHIMERAX)) + { + sview = new ChimeraXViewFrame(pdbsForFile, superposeAdded, theSeqs, + ap); + } + else if (viewerType.equals(ViewerType.PYMOL)) + { + sview = new PymolViewer(pdbsForFile, superposeAdded, theSeqs, ap); + } else { Cache.log.error(UNKNOWN_VIEWER_TYPE + getViewerType().toString()); @@ -287,11 +295,13 @@ public class StructureViewer if (sview != null) { sview.setAlignAddedStructures(superposeAdded); - if (!sview.addAlreadyLoadedFile(seqsForPdb, null, ap, pdb.getId())) + String pdbId = pdb.getId(); + if (!sview.addAlreadyLoadedFile(seqsForPdb, null, ap, pdbId)) { - sview.addToExistingViewer(pdb, seqsForPdb, null, ap, pdb.getId()); + sview.addToExistingViewer(pdb, seqsForPdb, null, ap, pdbId); } sview.updateTitleAndMenus(); + sview.raiseViewer(); return sview; } ViewerType viewerType = getViewerType(); @@ -303,6 +313,14 @@ public class StructureViewer { sview = new ChimeraViewFrame(pdb, seqsForPdb, null, ap); } + else if (viewerType.equals(ViewerType.CHIMERAX)) + { + sview = new ChimeraXViewFrame(pdb, seqsForPdb, null, ap); + } + else if (viewerType.equals(ViewerType.PYMOL)) + { + sview = new PymolViewer(pdb, seqsForPdb, null, ap); + } else { Cache.log.error(UNKNOWN_VIEWER_TYPE + getViewerType().toString()); @@ -311,42 +329,41 @@ public class StructureViewer } /** - * Create a new panel controlling a structure viewer. + * Creates a new panel controlling a structure viewer * * @param type - * @param pdbf - * @param id - * @param sq * @param alignPanel * @param viewerData - * @param fileloc - * @param rect + * @param sessionFile * @param vid * @return */ - public JalviewStructureDisplayI createView(ViewerType type, String[] pdbf, - String[] id, SequenceI[][] sq, AlignmentPanel alignPanel, - StructureViewerModel viewerData, String fileloc, Rectangle rect, - String vid) + public static JalviewStructureDisplayI createView(ViewerType type, + AlignmentPanel alignPanel, StructureViewerModel viewerData, + String sessionFile, String vid) { - final boolean useinViewerSuperpos = viewerData.isAlignWithPanel(); - final boolean usetoColourbyseq = viewerData.isColourWithAlignPanel(); - final boolean viewerColouring = viewerData.isColourByViewer(); - + JalviewStructureDisplayI viewer = null; switch (type) { case JMOL: - sview = new AppJmol(pdbf, id, sq, alignPanel, usetoColourbyseq, - useinViewerSuperpos, viewerColouring, fileloc, rect, vid); + viewer = new AppJmol(viewerData, alignPanel, sessionFile, vid); + // todo or construct and then openSession(sessionFile)? break; case CHIMERA: - Cache.log.error( - "Unsupported structure viewer type " + type.toString()); + viewer = new ChimeraViewFrame(viewerData, alignPanel, sessionFile, + vid); + break; + case CHIMERAX: + viewer = new ChimeraXViewFrame(viewerData, alignPanel, sessionFile, + vid); + break; + case PYMOL: + viewer = new PymolViewer(viewerData, alignPanel, sessionFile, vid); break; default: Cache.log.error(UNKNOWN_VIEWER_TYPE + type.toString()); } - return sview; + return viewer; } public boolean isBusy()