org.apache.myfaces.trinidad.change
Class MoveChildComponentChange

java.lang.Object
  extended by org.apache.myfaces.trinidad.change.ComponentChange
      extended by org.apache.myfaces.trinidad.change.MoveChildComponentChange
All Implemented Interfaces:
Serializable, DocumentChange

public final class MoveChildComponentChange
extends ComponentChange
implements DocumentChange

Change specialization for moving a child from one container to another. MoveChildComponent should be registered on a parent component that is common to the child being moved and the container component at destination. In other words, while calling addComponentChange() or addDocumentChange() methods on the ChangeManager to add a MoveChildComponentChange, the common parent component instance must be passed as an argument. The add() utility method in this class can be alternatively used to conveniently register the change against the common parent. While applying this change, if a child with the same id as the movable child were to be already present in the destination container, the move operation is aborted.

See Also:
add(FacesContext, ChangeManager), ChangeManager.addComponentChange(FacesContext, UIComponent, ComponentChange), ChangeManager.addDocumentChange(FacesContext, UIComponent, DocumentChange), Serialized Form

Constructor Summary
MoveChildComponentChange(javax.faces.component.UIComponent movableChild, javax.faces.component.UIComponent destinationContainer)
          Constructs a MoveChildComponentChange.
MoveChildComponentChange(javax.faces.component.UIComponent movableChild, javax.faces.component.UIComponent destinationContainer, javax.faces.component.UIComponent insertBeforeComponent)
          Constructs a MoveChildComponentChange.
 
Method Summary
 javax.faces.component.UIComponent add(javax.faces.context.FacesContext facesContext, ChangeManager changeManager)
          Convenience method to add this MoveChildComponentChange to the supplied ChangeManager.
 void changeComponent(javax.faces.component.UIComponent changeTargetComponent)
          Apply this change to the specified component.
 void changeDocument(Node changeTargetNode)
          Given the DOM Node representing a Component, apply any necessary DOM changes.
 boolean equals(Object o)
           
 String getDestinationLogicalScopedId()
          Returns the absolute logical scopedId of the source component at its destination
 String getDestinationScopedId()
          Returns the absolute scopedId of the source component at its destination
 boolean getForcesDocumentReload()
          Returns true if adding the DocumentChange should force the JSP Document to reload
 String getSourceLogicalScopedId()
          Returns the absolute logical scopedId of the source component
 String getSourceScopedId()
          Returns the absolute scopedId of the source component
 int hashCode()
           
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MoveChildComponentChange

public MoveChildComponentChange(javax.faces.component.UIComponent movableChild,
                                javax.faces.component.UIComponent destinationContainer)
Constructs a MoveChildComponentChange. The child will be appended to the list of children of the destinationContainer.

Parameters:
movableChild - The child component to be moved.
destinationContainer - The destination component into which the child component is to be moved.
Throws:
IllegalArgumentException - If movableChild or destinationContainer is null

MoveChildComponentChange

public MoveChildComponentChange(javax.faces.component.UIComponent movableChild,
                                javax.faces.component.UIComponent destinationContainer,
                                javax.faces.component.UIComponent insertBeforeComponent)
Constructs a MoveChildComponentChange. The child will be inserted to the list of children of the destinationContainer, before the supplied insertBeforecomponent. If the supplied insertBeforeComponent is null, the child will be appended to the list of children of the destinationContainer. If the insertBeforeComponent is non-null, and if it were not to be found while applying this change, the movableChild will not be moved.

Parameters:
movableChild - The child component to be moved.
destinationContainer - The destination component into which the child component is to be moved.
insertBeforeComponent - The component before which the moved child is to be inserted. This can be null, in which case the movableChild is appended.
Throws:
IllegalArgumentException - If movableChild or destinationContainer is null, or if a parent component common to movableChild and destinationContainer could not be found.
Method Detail

add

public javax.faces.component.UIComponent add(javax.faces.context.FacesContext facesContext,
                                             ChangeManager changeManager)
Convenience method to add this MoveChildComponentChange to the supplied ChangeManager. The change will be registered against a parent component that is common to the child being moved and the container component at destination.

Parameters:
facesContext - The FacesContext instance for the current request
changeManager - The ChangeManager instance on which this MoveChildComponentChange is to be added.
Returns:
The common parent component against which this MoveChildComponentChange was registered.

changeComponent

public void changeComponent(javax.faces.component.UIComponent changeTargetComponent)
Apply this change to the specified component.

Specified by:
changeComponent in class ComponentChange
Parameters:
changeTargetComponent - The component that is a common parent to the movable child and the destination container.
Throws:
IllegalArgumentException - If the supplied changeTargetComponent is null.

changeDocument

public void changeDocument(Node changeTargetNode)
Given the DOM Node representing a Component, apply any necessary DOM changes. The node passed will be the Node that is a common parent for the movable child and the destination container. There is a limitation with the document change, that the movable child Node, destination container Node, and the common parent Node have to belong to the same document.

Specified by:
changeDocument in interface DocumentChange
Parameters:
changeTargetNode - DOM Node that is a common parent for the movable child and the destination container.
Throws:
IllegalArgumentException - If changeTargeNode were to be null.

getForcesDocumentReload

public boolean getForcesDocumentReload()
Returns true if adding the DocumentChange should force the JSP Document to reload

Specified by:
getForcesDocumentReload in interface DocumentChange
Returns:
true Since moving of components should force the document to reload

getSourceScopedId

public String getSourceScopedId()
Returns the absolute scopedId of the source component


getDestinationScopedId

public String getDestinationScopedId()
Returns the absolute scopedId of the source component at its destination


getSourceLogicalScopedId

public String getSourceLogicalScopedId()
Returns the absolute logical scopedId of the source component


getDestinationLogicalScopedId

public String getDestinationLogicalScopedId()
Returns the absolute logical scopedId of the source component at its destination


equals

public boolean equals(Object o)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2001-2012 The Apache Software Foundation. All Rights Reserved.