+ /*
+ * show residues used for superposition as ribbon
+ */
+ sb.append("select ").append(getAtomSpec(atomSpec, false)).append("|");
+ sb.append(getAtomSpec(refAtoms, false)).append(getCommandSeparator())
+ .append("cartoons");
+
+ return Arrays.asList(new StructureCommand(sb.toString()));
+ }
+
+ @Override
+ public StructureCommandI openCommandFile(String path)
+ {
+ /*
+ * https://chemapps.stolaf.edu/jmol/docs/#script
+ * not currently used in Jalview
+ */
+ return new StructureCommand("script " + path);
+ }
+
+ @Override
+ public StructureCommandI saveSession(String filepath)
+ {
+ /*
+ * https://chemapps.stolaf.edu/jmol/docs/#writemodel
+ */
+ return new StructureCommand("write STATE \"" + filepath + "\"");
+ }
+
+ @Override
+ protected StructureCommandI colourResidues(String atomSpec, Color colour)
+ {
+ StringBuilder sb = new StringBuilder(atomSpec.length()+20);
+ sb.append("select ").append(atomSpec).append(getCommandSeparator())
+ .append("color").append(getColourString(colour));
+ return new StructureCommand(sb.toString());
+ }
+
+ @Override
+ protected String getResidueSpec(String residue)
+ {
+ return residue;
+ }
+
+ /**
+ * Generates a Jmol atomspec string like
+ *
+ * <pre>
+ * 2-5:A/1.1,8:A/1.1,5-10:B/2.1
+ * </pre>
+ *
+ * Parameter {@code alphaOnly} is not used here - this restriction is made by
+ * a separate clause in the {@code compare} (superposition) command.
+ */
+ @Override
+ public String getAtomSpec(AtomSpecModel model, boolean alphaOnly)
+ {
+ StringBuilder sb = new StringBuilder(128);
+
+ boolean first = true;
+ for (String modelNo : model.getModels())
+ {
+ for (String chain : model.getChains(modelNo))
+ {
+ for (int[] range : model.getRanges(modelNo, chain))
+ {
+ if (!first)
+ {
+ sb.append(PIPE);
+ }
+ first = false;
+ if (range[0] == range[1])
+ {
+ sb.append(range[0]);
+ }
+ else
+ {
+ sb.append(range[0]).append(HYPHEN).append(range[1]);
+ }
+ sb.append(COLON).append(chain.trim()).append(SLASH);
+ sb.append(String.valueOf(modelNo)).append(".1");
+ }
+ }
+ }
+
+ return sb.toString();
+ }
+
+ @Override
+ public List<StructureCommandI> showBackbone()
+ {
+ return Arrays.asList(SHOW_BACKBONE);
+ }
+
+ @Override
+ public StructureCommandI loadFile(String file)
+ {
+ // https://chemapps.stolaf.edu/jmol/docs/#loadfiles
+ return new StructureCommand("load FILES \"" +
+ Platform.escapeBackslashes(file) + "\"");
+ }
+
+ /**
+ * Obsolete method, only referenced from
+ * jalview.javascript.MouseOverStructureListener
+ *
+ * @param ssm
+ * @param files
+ * @param sequence
+ * @param sr
+ * @param viewPanel
+ * @return
+ */
+ @Deprecated
+ public String[] colourBySequence(StructureSelectionManager ssm,
+ String[] files, SequenceI[][] sequence, SequenceRenderer sr,
+ AlignmentViewPanel viewPanel)
+ {
+ // TODO delete method
+
+ FeatureRenderer fr = viewPanel.getFeatureRenderer();
+ FeatureColourFinder finder = new FeatureColourFinder(fr);
+ AlignViewportI viewport = viewPanel.getAlignViewport();
+ HiddenColumns cs = viewport.getAlignment().getHiddenColumns();
+ AlignmentI al = viewport.getAlignment();
+ List<String> cset = new ArrayList<>();