+
+ /**
+ * If supported by the structure viewer, queries it for all residue attributes
+ * with the given attribute name, and creates features on corresponding
+ * residues of the alignment. Returns the number of features added.
+ *
+ * @param attName
+ * @param alignmentPanel
+ * @return
+ */
+ public int copyStructureAttributesToFeatures(String attName,
+ AlignmentPanel alignmentPanel)
+ {
+ StructureCommandI cmd = getCommandGenerator()
+ .getResidueAttributes(attName);
+ if (cmd == null)
+ {
+ return 0;
+ }
+ List<String> residueAttributes = executeCommand(cmd, true);
+
+ int featuresAdded = createFeaturesForAttributes(attName,
+ residueAttributes);
+ if (featuresAdded > 0)
+ {
+ alignmentPanel.getFeatureRenderer().featuresAdded();
+ }
+ return featuresAdded;
+ }
+
+ /**
+ * Parses {@code residueAttributes} and creates sequence features on any
+ * mapped alignment residues. Returns the number of features created.
+ * <p>
+ * {@code residueAttributes} is the reply from the structure viewer to a
+ * command to list any residue attributes for the given attribute name. Syntax
+ * and parsing of this is viewer-specific.
+ *
+ * @param attName
+ * @param residueAttributes
+ * @return
+ */
+ protected int createFeaturesForAttributes(String attName,
+ List<String> residueAttributes)
+ {
+ return 0;
+ }