JAL-3551 save structure viewer session refactorings, PyMol added
[jalview.git] / src / jalview / gui / JalviewChimeraXBindingModel.java
1 package jalview.gui;
2
3 import java.util.List;
4
5 import ext.edu.ucsf.rbvi.strucviz2.ChimeraModel;
6 import ext.edu.ucsf.rbvi.strucviz2.StructureManager;
7 import ext.edu.ucsf.rbvi.strucviz2.StructureManager.ModelType;
8 import jalview.datamodel.PDBEntry;
9 import jalview.datamodel.SequenceI;
10 import jalview.ext.rbvi.chimera.ChimeraXCommands;
11 import jalview.gui.StructureViewer.ViewerType;
12 import jalview.io.DataSourceType;
13 import jalview.structure.StructureCommand;
14 import jalview.structure.StructureSelectionManager;
15
16 public class JalviewChimeraXBindingModel extends JalviewChimeraBindingModel
17 {
18
19   public JalviewChimeraXBindingModel(ChimeraViewFrame chimeraViewFrame,
20           StructureSelectionManager ssm, PDBEntry[] pdbentry,
21           SequenceI[][] sequenceIs, DataSourceType protocol)
22   {
23     super(chimeraViewFrame, ssm, pdbentry, sequenceIs, protocol);
24     setStructureCommands(new ChimeraXCommands());
25   }
26
27   @Override
28   protected List<String> getChimeraPaths()
29   {
30     return StructureManager.getChimeraPaths(true);
31   }
32
33   @Override
34   protected void addChimeraModel(PDBEntry pe,
35           List<ChimeraModel> modelsToMap)
36   {
37     /*
38      * ChimeraX hack: force chimera model name to pdbId here
39      */
40     int modelNumber = chimeraMaps.size() + 1;
41     String command = "setattr #" + modelNumber + " models name "
42             + pe.getId();
43     executeCommand(new StructureCommand(command), false);
44     modelsToMap.add(new ChimeraModel(pe.getId(), ModelType.PDB_MODEL,
45             modelNumber, 0));
46   }
47
48   /**
49    * {@inheritDoc}
50    * 
51    * @return
52    */
53   @Override
54   protected String getCommandFileExtension()
55   {
56     return ".cxc";
57   }
58
59   /**
60    * Returns the file extension to use for a saved viewer session file (.cxs)
61    * 
62    * @return
63    * @see https://www.cgl.ucsf.edu/chimerax/docs/user/commands/save.html#sesformat
64    */
65   @Override
66   public String getSessionFileExtension()
67   {
68     return ".cxs";
69   }
70
71   @Override
72   public String getHelpURL()
73   {
74     return "http://www.rbvi.ucsf.edu/chimerax/docs/user/index.html";
75   }
76
77   @Override
78   protected ViewerType getViewerType()
79   {
80     return ViewerType.CHIMERAX;
81   }
82
83   @Override
84   protected String getModelId(int pdbfnum, String file)
85   {
86     return String.valueOf(pdbfnum + 1);
87   }
88
89 }