Interface PropertySuggestionSourceRegistry

  • All Known Implementing Classes:
    PropertySuggestionSourceRegistryImpl

    public interface PropertySuggestionSourceRegistry

    Registry for dynamic suggestion sources for perspective component properties. This system allows 3rd parties to register SuggestionSource implementations and then mark component properties using the JSON-schema to use that suggestion source. The end result being that in the Designer, the property will have a dropdown displayed in the editor that allows the user to pick from the suggested values.

    To use this system, perform the following two steps:

    1. Annotate the property in question in your JSON schema using the "suggestion-source" extension. For example:
                   "myProperty": {
                     "type": "string",
                     "default": "foo",
                     "description": "This property will have dynamic suggestions",
                     "extension": {
                       "suggestion-source": "my-suggestion-source-key"
                     }
                   }
               
    2. Register your suggestion source implementation using the matching key from the schema. This will probably be done in your designer hook's startup method. For exmaple:
                   PerspectiveDesignerInterface perspectiveDesigner = PerspectiveDesignerInterface.get(designerContext);
                   perspectiveDesigner.getSuggestionSourceRegistry().registerSuggestionSource(
                     "my-suggestion-source-key",
                     (node, schema) -> CompletableFuture.completedFuture(loadSuggestions())
                   );