Interface Controller<T extends Model>

  • Type Parameters:
    T - the model class this controller handles

    public interface Controller<T extends Model>
    Singleton controllers that want to store data in workspaces can implement this interface.

    When a new workspace is created, the project controller will be requesting from this singleton a new model via newModel(Workspace) to be put in the workspace's lookup.

    Implementations should register themselves in the default lookup via the ServiceProvider annotation.

    See Also:
    Model
    • Method Detail

      • newModel

        T newModel​(Workspace workspace)
        Creates a new model instance for the given workspace.

        The model is not added to the workspace, it is the responsibility of the caller to do so.

        Parameters:
        workspace - the workspace to create the model for
        Returns:
        new instance of a model
      • getModelClass

        Class<T> getModelClass()
        Returns the model class this controller handles.
        Returns:
        the model class
      • getModel

        default T getModel​(Workspace workspace)
        Returns the model of the given workspace. If the model is not found, it returns null.

        This method is just a wrapper to workspace.getLookup().lookup(getModelClass()).

        Parameters:
        workspace - workspace to retrieve the model from
        Returns:
        the model of the given workspace or null if not found
      • getModel

        default T getModel()
        Returns the model of the current workspace, or null if no workspace is selected.
        Returns:
        model associated with the current workspace if it exists, or null otherwise