Module java.desktop
Package javax.imageio.metadata

## Interface IIOMetadataController

-     public interface IIOMetadataController

  An interface to be implemented by objects that can determine the settings of an `IIOMetadata` object, either by putting up a GUI to obtain values from a user, or by other means. This interface merely specifies a generic `activate` method that invokes the controller, without regard for how the controller obtains values (i.e., whether the controller puts up a GUI or merely computes a set of values is irrelevant to this interface).

  Within the `activate` method, a controller obtains initial values by querying the `IIOMetadata` object's settings, either using the XML DOM tree or a plug-in specific interface, modifies values by whatever means, then modifies the `IIOMetadata` object's settings, using either the `setFromTree` or `mergeTree` methods, or a plug-in specific interface. In general, applications may expect that when the `activate` method returns `true`, the `IIOMetadata` object is ready for use in a write operation.

  Vendors may choose to provide GUIs for the `IIOMetadata` subclasses they define for a particular plug-in. These can be set up as default controllers in the corresponding `IIOMetadata` subclasses.

  Alternatively, an algorithmic process such as a database lookup or the parsing of a command line could be used as a controller, in which case the `activate` method would simply look up or compute the settings, call methods on `IIOMetadata` to set its state, and return `true`.

  See Also:
    `IIOMetadata.setController(javax.imageio.metadata.IIOMetadataController)`, `IIOMetadata.getController()`, `IIOMetadata.getDefaultController()`, `IIOMetadata.hasController()`, `IIOMetadata.activateController()`

- - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `activate​(IIOMetadata metadata)` | Activates the controller.

- - ### Method Detail

    - #### activate

          boolean activate​(IIOMetadata metadata)

      Activates the controller. If `true` is returned, all settings in the `IIOMetadata` object should be ready for use in a write operation. If `false` is returned, no settings in the `IIOMetadata` object will be disturbed (i.e., the user canceled the operation).
      Parameters:
        `metadata` - the `IIOMetadata` object to be modified.
      Returns:
        `true` if the `IIOMetadata` has been modified, `false` otherwise.
      Throws:
        `IllegalArgumentException` - if `metadata` is `null` or is not an instance of the correct class.