/* * @(#)IIOMetadataController.java 1.9 03/12/19 * * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ package javax.imageio.metadata; /** * 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 IIOMetadata#setController * @see IIOMetadata#getController * @see IIOMetadata#getDefaultController * @see IIOMetadata#hasController * @see IIOMetadata#activateController * * @version 0.5 */ public interface IIOMetadataController { /** * 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). * * @param metadata the IIOMetadata object to be modified. * * @return true if the IIOMetadata has been * modified, false otherwise. * * @exception IllegalArgumentException if metadata is * null or is not an instance of the correct class. */ boolean activate(IIOMetadata metadata); }