+
+ /**
+ * If supported by the external structure viewer, sends it commands to notify
+ * model or selection changes to the specified URL (where Jalview has started
+ * a listener)
+ *
+ * @param uri
+ */
+ protected void startListening(String uri)
+ {
+ List<StructureCommandI> commands = getCommandGenerator()
+ .startNotifications(uri);
+ if (commands != null)
+ {
+ executeCommands(commands, false, null);
+ }
+ }
+
+ /**
+ * If supported by the external structure viewer, sends it commands to stop
+ * notifying model or selection changes
+ */
+ protected void stopListening()
+ {
+ List<StructureCommandI> commands = getCommandGenerator()
+ .stopNotifications();
+ if (commands != null)
+ {
+ executeCommands(commands, false, null);
+ }
+ }
+
+ /**
+ * 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;
+ }