*/
package jalview.ext.jmol;
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
import jalview.api.AlignViewportI;
import jalview.api.AlignmentViewPanel;
import jalview.api.FeatureRenderer;
import jalview.datamodel.SequenceI;
import jalview.renderer.seqfeatures.FeatureColourFinder;
import jalview.structure.AtomSpecModel;
+import jalview.structure.StructureCommand;
+import jalview.structure.StructureCommandI;
import jalview.structure.StructureCommandsBase;
import jalview.structure.StructureMapping;
import jalview.structure.StructureSelectionManager;
import jalview.util.Comparison;
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
/**
* Routines for generating Jmol commands for Jalview/Jmol binding
*
*/
public class JmolCommands extends StructureCommandsBase
{
- private static final String CMD_COLOUR_BY_CHARGE = "select *;color white;select ASP,GLU;color red;"
- + "select LYS,ARG;color blue;select CYS;color yellow";
+ private static final StructureCommand SHOW_BACKBONE = new StructureCommand(
+ "select *; cartoons off; backbone");
+
+ private static final StructureCommand FOCUS_VIEW = new StructureCommand("zoom 0");
- private static final String CMD_COLOUR_BY_CHAIN = "select *;color chain";
+ private static final StructureCommand COLOUR_ALL_WHITE = new StructureCommand(
+ "select *;color white;");
+
+ private static final StructureCommandI COLOUR_BY_CHARGE = new StructureCommand(
+ "select *;color white;select ASP,GLU;color red;"
+ + "select LYS,ARG;color blue;select CYS;color yellow");
+
+ private static final StructureCommandI COLOUR_BY_CHAIN = new StructureCommand(
+ "select *;color chain");
private static final String PIPE = "|";
c.getBlue());
}
-
+ @Deprecated
public String[] colourBySequence(StructureSelectionManager ssm,
String[] files,
SequenceI[][] sequence, SequenceRenderer sr,
}
@Override
- public String colourByChain()
+ public StructureCommandI colourByChain()
{
- return CMD_COLOUR_BY_CHAIN;
+ return COLOUR_BY_CHAIN;
}
@Override
- public String colourByCharge()
+ public List<StructureCommandI> colourByCharge()
{
- return CMD_COLOUR_BY_CHARGE;
+ return Arrays.asList(COLOUR_BY_CHARGE);
}
@Override
- public String colourByResidues(Map<String, Color> colours)
+ public List<StructureCommandI> colourByResidues(Map<String, Color> colours)
{
- StringBuilder cmd = new StringBuilder(128);
- cmd.append("select *;color white;");
- cmd.append(super.colourByResidues(colours));
-
- return cmd.toString();
+ List<StructureCommandI> cmds = super.colourByResidues(colours);
+ cmds.add(0, COLOUR_ALL_WHITE);
+ return cmds;
}
@Override
- public String setBackgroundColour(Color col)
+ public StructureCommandI setBackgroundColour(Color col)
{
- return "background " + getColourString(col);
+ return new StructureCommand("background " + getColourString(col));
}
@Override
- public String focusView()
+ public StructureCommandI focusView()
{
- return "zoom 0";
+ return FOCUS_VIEW;
}
@Override
- public String showChains(List<String> toShow)
+ public List<StructureCommandI> showChains(List<String> toShow)
{
StringBuilder atomSpec = new StringBuilder(128);
boolean first = true;
String spec = atomSpec.toString();
String command = "select *;restrict " + spec + ";cartoon;center "
+ spec;
- return command;
+ return Arrays.asList(new StructureCommand(command));
}
/**
* @see https://chemapps.stolaf.edu/jmol/docs/#compare
*/
@Override
- public String superposeStructures(AtomSpecModel refAtoms,
+ public List<StructureCommandI> superposeStructures(AtomSpecModel refAtoms,
AtomSpecModel atomSpec)
{
StringBuilder sb = new StringBuilder(64);
- int refModel = refAtoms.getModels().iterator().next();
- int model2 = atomSpec.getModels().iterator().next();
- sb.append(String.format("compare {%d.1} {%d.1}", model2, refModel));
+ String refModel = refAtoms.getModels().iterator().next();
+ String model2 = atomSpec.getModels().iterator().next();
+ sb.append(String.format("compare {%s.1} {%s.1}", model2, refModel));
sb.append(" SUBSET {(*.CA | *.P) and conformation=1} ATOMS {");
/*
sb.append(getAtomSpec(refAtoms, false)).append(getCommandSeparator())
.append("cartoons");
- return sb.toString();
+ return Arrays.asList(new StructureCommand(sb.toString()));
}
@Override
- public String openCommandFile(String path)
+ public StructureCommandI openCommandFile(String path)
{
/*
* https://chemapps.stolaf.edu/jmol/docs/#script
* not currently used in Jalview
*/
- return "script " + path;
+ return new StructureCommand("script " + path);
}
@Override
- public String saveSession(String filepath)
+ public StructureCommandI saveSession(String filepath)
{
/*
- * https://chemapps.stolaf.edu/jmol/docs/#write
- * not currently used in Jalview
+ * https://chemapps.stolaf.edu/jmol/docs/#writemodel
*/
- return "write \"" + filepath + "\"";
+ return new StructureCommand("write STATE \"" + filepath + "\"");
}
@Override
- protected String getColourCommand(String atomSpec, Color colour)
+ protected StructureCommandI getColourCommand(String atomSpec, Color colour)
{
StringBuilder sb = new StringBuilder(atomSpec.length()+20);
sb.append("select ").append(atomSpec).append(getCommandSeparator())
.append("color").append(getColourString(colour));
- return sb.toString();
+ return new StructureCommand(sb.toString());
}
@Override
StringBuilder sb = new StringBuilder(128);
boolean first = true;
- for (int modelNo : model.getModels())
+ for (String modelNo : model.getModels())
{
for (String chain : model.getChains(modelNo))
{
}
@Override
- public String showBackbone()
+ public List<StructureCommandI> showBackbone()
+ {
+ return Arrays.asList(SHOW_BACKBONE);
+ }
+
+ @Override
+ public StructureCommandI loadFile(String file)
{
- return "select *; cartoons off; backbone";
+ return null;
}
}