2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.2)
3 * Copyright (C) 2014 The Jalview Authors
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3
10 * of the License, or (at your option) any later version.
12 * Jalview is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty
14 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19 * The Jalview Authors are detailed in the 'AUTHORS' file.
23 import jalview.api.structures.JalviewStructureDisplayI;
24 import jalview.bin.Cache;
25 import jalview.datamodel.PDBEntry;
26 import jalview.datamodel.SequenceI;
27 import jalview.structure.StructureSelectionManager;
29 import java.awt.Rectangle;
32 * proxy for handling structure viewers.
34 * this allows new views to be created with the currently configured viewer, the
35 * preferred viewer to be set/read and existing views created previously with a
36 * particular viewer to be recovered
40 public class StructureViewer
42 StructureSelectionManager ssm;
49 public Viewer getViewerType()
51 String viewType = Cache.getDefault(Preferences.STRUCTURE_DISPLAY,
53 return Viewer.valueOf(viewType);
56 public void setViewerType(Viewer type)
58 Cache.setProperty(Preferences.STRUCTURE_DISPLAY, type.name());
61 public StructureViewer(StructureSelectionManager structureSelectionManager)
63 ssm = structureSelectionManager;
66 public JalviewStructureDisplayI viewStructures(AlignmentPanel ap,
67 PDBEntry[] pr, SequenceI[][] collateForPDB)
69 return viewStructures(getViewerType(), ap, pr, collateForPDB);
72 public JalviewStructureDisplayI viewStructures(Viewer viewerType,
73 AlignmentPanel ap, PDBEntry[] pr, SequenceI[][] collateForPDB)
75 JalviewStructureDisplayI sview = null;
76 if (viewerType.equals(Viewer.JMOL))
78 sview = new AppJmol(ap, pr, ap.av.collateForPDB(pr));
80 else if (viewerType.equals(Viewer.CHIMERA))
82 sview = new ChimeraViewFrame(ap, pr, ap.av.collateForPDB(pr));
86 Cache.log.error("Unknown structure viewer type "
87 + getViewerType().toString());
92 public JalviewStructureDisplayI viewStructures(Viewer viewerType,
93 AlignmentPanel ap, PDBEntry pr, SequenceI[] collateForPDB)
95 JalviewStructureDisplayI sview = null;
96 if (viewerType.equals(Viewer.JMOL))
98 sview = new AppJmol(pr, collateForPDB, null, ap);
100 else if (viewerType.equals(Viewer.CHIMERA))
102 sview = new ChimeraViewFrame(pr, collateForPDB, null, ap);
106 Cache.log.error("Unknown structure viewer type "
107 + getViewerType().toString());
112 public JalviewStructureDisplayI viewStructures(PDBEntry pdb,
113 SequenceI[] sequenceIs, Object object, AlignmentPanel ap)
115 return viewStructures(getViewerType(), ap, pdb, sequenceIs);
118 public JalviewStructureDisplayI createView(Viewer viewer, String[] pdbf,
119 String[] id, SequenceI[][] sq, AlignmentPanel alignPanel,
120 boolean useinJmolsuperpos, boolean usetoColourbyseq,
121 boolean jmolColouring, String fileloc, Rectangle rect, String vid)
123 JalviewStructureDisplayI sview = null;
127 sview = new AppJmol(pdbf, id, sq, alignPanel, useinJmolsuperpos,
128 usetoColourbyseq, jmolColouring, fileloc, rect, vid);
131 Cache.log.error("Unsupported structure viewer type "
132 + viewer.toString());
135 Cache.log.error("Unknown structure viewer type " + viewer.toString());