/* ************************************************************************* IT Mill Toolkit Development of Browser User Interfaces Made Easy Copyright (C) 2000-2006 IT Mill Ltd ************************************************************************* This product is distributed under commercial license that can be found from the product package on license.pdf. Use of this product might require purchasing a commercial license from IT Mill Ltd. For guidelines on usage, see licensing-guidelines.html ************************************************************************* For more information, contact: IT Mill Ltd phone: +358 2 4802 7180 Ruukinkatu 2-4 fax: +358 2 4802 7181 20540, Turku email: info@itmill.com Finland company www: www.itmill.com Primary source for information and releases: www.itmill.com ********************************************************************** */ package com.itmill.toolkit.terminal; import java.util.Map; import java.util.Set; /** *

* Listener interface for UI variable changes. The user communicates with the * application using the so-called variables. When the user makes a * change using the UI the terminal trasmits the changed variables to the * application, and the components owning those variables may then process those * changes. *

* *

* The variable-owning components can be linked with dependency relationships. * A dependency between two components means that all variable change events to * the depended component will be handled before any such events to the * depending component. *

* *

* For example, the commit button for a text field will depend on that text * field. This is because we want to handle any pending changes the user makes * to the contents on the text field before we accept the click of the commit * button which starts processing the text field contents. *

* * @author IT Mill Ltd. * @version * @VERSION@ * @since 3.0 */ public interface VariableOwner { /** * Dependencies are not needed anymore as HTML-mode is deprecated in Toolkit * 5. * * * @return Set of VariableOwners this component directly * depend on, null if this component does not depend * on anybody. * @deprecated */ public Set getDirectDependencies(); /** * Called when one or more variables handled by the implementing class are * changed. * * @param source * the Source of the variable change. This is the origin of * the event. For example in Web Adapter this is the request. * @param variables * the Mapping from variable names to new variable values. */ public void changeVariables(Object source, Map variables); /** * Dependencies are not needed anymore as HTML-mode is deprecated in Toolkit * 5. * * @param depended * the VariableOwner component who this * component depends on. * @deprecated */ public void dependsOn(VariableOwner depended); /** * Dependencies are not needed anymore as HTML-mode is deprecated in Toolkit * 5. * * @param depended * the component to be removed from this component's * dependency list. * @deprecated */ public void removeDirectDependency(VariableOwner depended); /** *

* Tests if the variable owner is enabled or not. The terminal should not * send any variable changes to disabled variable owners. *

* * @return true if the variable owner is enabled, * false if not */ public boolean isEnabled(); /** *

* Tests if the variable owner is in immediate mode or not. Being in * immediate mode means that all variable changes are required to be sent * back from the terminal immediately when they occur. *

* *

* Note: VariableOwner does not include a * set- method for the immediateness property. This is because not all * VariableOwners wish to offer the functionality. Such VariableOwners are * never in the immediate mode, thus they always return false * in {@link #isImmediate()}. *

* * @return true if the component is in immediate mode, * false if not. */ public boolean isImmediate(); /** * VariableOwner error event. */ public interface ErrorEvent extends Terminal.ErrorEvent { /** * Gets the source VariableOwner. * * @return the variable owner. */ public VariableOwner getVariableOwner(); } }