Class ContainerHierarchicalWrapper
- java.lang.Object
-
- com.vaadin.data.util.ContainerHierarchicalWrapper
-
- All Implemented Interfaces:
Container
,Container.Hierarchical
,Container.ItemSetChangeNotifier
,Container.PropertySetChangeNotifier
,Serializable
public class ContainerHierarchicalWrapper extends Object implements Container.Hierarchical, Container.ItemSetChangeNotifier, Container.PropertySetChangeNotifier
A wrapper class for adding external hierarchy to containers not implementing the
Container.Hierarchical
interface.If the wrapped container is changed directly (that is, not through the wrapper), and does not implement Container.ItemSetChangeNotifier and/or Container.PropertySetChangeNotifier the hierarchy information must be updated with the
updateHierarchicalWrapper()
method.- Since:
- 3.0
- Author:
- Vaadin Ltd.
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.vaadin.data.Container
Container.Editor, Container.Filter, Container.Filterable, Container.Hierarchical, Container.Indexed, Container.ItemSetChangeEvent, Container.ItemSetChangeListener, Container.ItemSetChangeNotifier, Container.Ordered, Container.PropertySetChangeEvent, Container.PropertySetChangeListener, Container.PropertySetChangeNotifier, Container.SimpleFilterable, Container.Sortable, Container.Viewer
-
-
Constructor Summary
Constructors Constructor Description ContainerHierarchicalWrapper(Container toBeWrapped)
Constructs a new hierarchical wrapper for an existing Container.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description boolean
addContainerProperty(Object propertyId, Class<?> type, Object defaultValue)
Adds a new Property to all Items in the Container.Object
addItem()
Creates a new Item into the Container, assigns it an automatic ID, and adds it to the hierarchy.Item
addItem(Object itemId)
Adds a new Item by its ID to the underlying container and to the hierarchy.void
addItemSetChangeListener(Container.ItemSetChangeListener listener)
Adds an Item set change listener for the object.void
addListener(Container.ItemSetChangeListener listener)
Deprecated.As of 7.0, replaced byaddItemSetChangeListener(Container.ItemSetChangeListener)
void
addListener(Container.PropertySetChangeListener listener)
Deprecated.As of 7.0, replaced byaddPropertySetChangeListener(Container.PropertySetChangeListener)
void
addPropertySetChangeListener(Container.PropertySetChangeListener listener)
Registers a new Property set change listener for this Container.boolean
areChildrenAllowed(Object itemId)
Tests if the Item with given ID can have children.boolean
containsId(Object itemId)
Tests if the Container contains the specified Item.Collection<?>
getChildren(Object itemId)
Gets the IDs of all Items that are children of the specified Item.Property
getContainerProperty(Object itemId, Object propertyId)
Gets the Property identified by the given itemId and propertyId from the Container.Collection<?>
getContainerPropertyIds()
Gets the ID's of all Properties stored in the Container.Item
getItem(Object itemId)
Gets theItem
with the given Item ID from the Container.Collection<?>
getItemIds()
Gets the ID's of all visible (after filtering and sorting) Items stored in the Container.Object
getParent(Object itemId)
Gets the ID of the parent Item of the specified Item.Class<?>
getType(Object propertyId)
Gets the data type of all Properties identified by the given Property ID.boolean
hasChildren(Object itemId)
Tests if the Item specified withitemId
has child Items or if it is a leaf.boolean
isRoot(Object itemId)
Tests if the Item specified withitemId
is a root Item.boolean
removeAllItems()
Removes all items from the underlying container and from the hierarcy.boolean
removeContainerProperty(Object propertyId)
Removes the specified Property from the underlying container and from the hierarchy.boolean
removeItem(Object itemId)
Removes an Item specified by the itemId from the underlying container and from the hierarchy.boolean
removeItemRecursively(Object itemId)
Removes the Item identified by given itemId and all its children.void
removeItemSetChangeListener(Container.ItemSetChangeListener listener)
Removes the Item set change listener from the object.void
removeListener(Container.ItemSetChangeListener listener)
Deprecated.As of 7.0, replaced byremoveItemSetChangeListener(Container.ItemSetChangeListener)
void
removeListener(Container.PropertySetChangeListener listener)
Deprecated.As of 7.0, replaced byremovePropertySetChangeListener(Container.PropertySetChangeListener)
void
removePropertySetChangeListener(Container.PropertySetChangeListener listener)
Removes a previously registered Property set change listener.Collection<?>
rootItemIds()
Gets the IDs of all Items in the container that don't have a parent.boolean
setChildrenAllowed(Object itemId, boolean childrenAllowed)
Sets the given Item's capability to have children.boolean
setParent(Object itemId, Object newParentId)
Sets the parent of an Item.int
size()
Gets the number of visible Items in the Container.void
updateHierarchicalWrapper()
Updates the wrapper's internal hierarchy data to include all Items in the underlying container.
-
-
-
Constructor Detail
-
ContainerHierarchicalWrapper
public ContainerHierarchicalWrapper(Container toBeWrapped)
Constructs a new hierarchical wrapper for an existing Container. Works even if the to-be-wrapped container already implements theContainer.Hierarchical
interface.- Parameters:
toBeWrapped
- the container that needs to be accessed hierarchically- See Also:
updateHierarchicalWrapper()
-
-
Method Detail
-
updateHierarchicalWrapper
public void updateHierarchicalWrapper()
Updates the wrapper's internal hierarchy data to include all Items in the underlying container. If the contents of the wrapped container change without the wrapper's knowledge, this method needs to be called to update the hierarchy information of the Items.
-
areChildrenAllowed
public boolean areChildrenAllowed(Object itemId)
Description copied from interface:Container.Hierarchical
Tests if the Item with given ID can have children.- Specified by:
areChildrenAllowed
in interfaceContainer.Hierarchical
- Parameters:
itemId
- ID of the Item in the container whose child capability is to be tested- Returns:
true
if the specified Item exists in the Container and it can have children,false
if it's not found from the container or it can't have children.
-
getChildren
public Collection<?> getChildren(Object itemId)
Description copied from interface:Container.Hierarchical
Gets the IDs of all Items that are children of the specified Item. The returned collection is unmodifiable.- Specified by:
getChildren
in interfaceContainer.Hierarchical
- Parameters:
itemId
- ID of the Item whose children the caller is interested in- Returns:
- An unmodifiable
collection
containing the IDs of all other Items that are children in the container hierarchy;null
if item does not have any children.
-
getParent
public Object getParent(Object itemId)
Description copied from interface:Container.Hierarchical
Gets the ID of the parent Item of the specified Item.- Specified by:
getParent
in interfaceContainer.Hierarchical
- Parameters:
itemId
- ID of the Item whose parent the caller wishes to find out.- Returns:
- the ID of the parent Item. Will be
null
if the specified Item is a root element.
-
hasChildren
public boolean hasChildren(Object itemId)
Description copied from interface:Container.Hierarchical
Tests if the Item specified with
itemId
has child Items or if it is a leaf. TheContainer.Hierarchical.getChildren(Object itemId)
method always returnsnull
for leaf Items.Note that being a leaf does not imply whether or not an Item is allowed to have children.
- Specified by:
hasChildren
in interfaceContainer.Hierarchical
- Parameters:
itemId
- ID of the Item to be tested- Returns:
true
if the specified Item has children,false
if not (is a leaf)
-
isRoot
public boolean isRoot(Object itemId)
Description copied from interface:Container.Hierarchical
Tests if the Item specified withitemId
is a root Item. The hierarchical container can have more than one root and must have at least one unless it is empty. TheContainer.Hierarchical.getParent(Object itemId)
method always returnsnull
for root Items.- Specified by:
isRoot
in interfaceContainer.Hierarchical
- Parameters:
itemId
- ID of the Item whose root status is to be tested- Returns:
true
if the specified Item is a root,false
if not
-
rootItemIds
public Collection<?> rootItemIds()
Description copied from interface:Container.Hierarchical
Gets the IDs of all Items in the container that don't have a parent. Such items are calledroot
Items. The returned collection is unmodifiable.- Specified by:
rootItemIds
in interfaceContainer.Hierarchical
- Returns:
- An unmodifiable
collection
containing IDs of all root elements of the container
-
setChildrenAllowed
public boolean setChildrenAllowed(Object itemId, boolean childrenAllowed)
Sets the given Item's capability to have children. If the Item identified with the itemId already has children and the areChildrenAllowed is false this method fails and
false
is returned; the children must be first explicitly removed withsetParent(Object itemId, Object newParentId)
orContainer.removeItem(Object itemId)
.- Specified by:
setChildrenAllowed
in interfaceContainer.Hierarchical
- Parameters:
itemId
- the ID of the Item in the container whose child capability is to be set.childrenAllowed
- the boolean value specifying if the Item can have children or not.- Returns:
true
if the operation succeeded,false
if not
-
setParent
public boolean setParent(Object itemId, Object newParentId)
Sets the parent of an Item. The new parent item must exist and be able to have children. (
canHaveChildren(newParentId) == true
). It is also possible to detach a node from the hierarchy (and thus make it root) by setting the parentnull
.- Specified by:
setParent
in interfaceContainer.Hierarchical
- Parameters:
itemId
- the ID of the item to be set as the child of the Item identified with newParentId.newParentId
- the ID of the Item that's to be the new parent of the Item identified with itemId.- Returns:
true
if the operation succeeded,false
if not
-
addItem
public Object addItem() throws UnsupportedOperationException
Creates a new Item into the Container, assigns it an automatic ID, and adds it to the hierarchy.- Specified by:
addItem
in interfaceContainer
- Returns:
- the autogenerated ID of the new Item or
null
if the operation failed - Throws:
UnsupportedOperationException
- if the addItem is not supported.
-
addItem
public Item addItem(Object itemId) throws UnsupportedOperationException
Adds a new Item by its ID to the underlying container and to the hierarchy.- Specified by:
addItem
in interfaceContainer
- Parameters:
itemId
- the ID of the Item to be created.- Returns:
- the added Item or
null
if the operation failed. - Throws:
UnsupportedOperationException
- if the addItem is not supported.
-
removeAllItems
public boolean removeAllItems() throws UnsupportedOperationException
Removes all items from the underlying container and from the hierarcy.- Specified by:
removeAllItems
in interfaceContainer
- Returns:
true
if the operation succeeded,false
if not- Throws:
UnsupportedOperationException
- if the removeAllItems is not supported.
-
removeItem
public boolean removeItem(Object itemId) throws UnsupportedOperationException
Removes an Item specified by the itemId from the underlying container and from the hierarchy.- Specified by:
removeItem
in interfaceContainer
- Specified by:
removeItem
in interfaceContainer.Hierarchical
- Parameters:
itemId
- the ID of the Item to be removed.- Returns:
true
if the operation succeeded,false
if not- Throws:
UnsupportedOperationException
- if the removeItem is not supported.
-
removeItemRecursively
public boolean removeItemRecursively(Object itemId)
Removes the Item identified by given itemId and all its children.- Parameters:
itemId
- the identifier of the Item to be removed- Returns:
- true if the operation succeeded
- See Also:
removeItem(Object)
-
addContainerProperty
public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException
Adds a new Property to all Items in the Container.- Specified by:
addContainerProperty
in interfaceContainer
- Parameters:
propertyId
- the ID of the new Property.type
- the Data type of the new Property.defaultValue
- the value all created Properties are initialized to.- Returns:
true
if the operation succeeded,false
if not- Throws:
UnsupportedOperationException
- if the addContainerProperty is not supported.
-
removeContainerProperty
public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException
Removes the specified Property from the underlying container and from the hierarchy.Note : The Property will be removed from all Items in the Container.
- Specified by:
removeContainerProperty
in interfaceContainer
- Parameters:
propertyId
- the ID of the Property to remove.- Returns:
true
if the operation succeeded,false
if not- Throws:
UnsupportedOperationException
- if the removeContainerProperty is not supported.
-
containsId
public boolean containsId(Object itemId)
Description copied from interface:Container
Tests if the Container contains the specified Item.Filtering can hide items so that they will not be visible through the container API, and this method should respect visibility of items (i.e. only indicate visible items as being in the container) if feasible for the container.
- Specified by:
containsId
in interfaceContainer
- Parameters:
itemId
- ID the of Item to be tested- Returns:
- boolean indicating if the Container holds the specified Item
-
getItem
public Item getItem(Object itemId)
Description copied from interface:Container
Gets theItem
with the given Item ID from the Container. If the Container does not contain the requested Item,null
is returned.Containers should not return Items that are filtered out.
-
getItemIds
public Collection<?> getItemIds()
Description copied from interface:Container
Gets the ID's of all visible (after filtering and sorting) Items stored in the Container. The ID's cannot be modified through the returned collection.If the container is
Container.Ordered
, the collection returned by this method should follow that order. If the container isContainer.Sortable
, the items should be in the sorted order.Calling this method for large lazy containers can be an expensive operation and should be avoided when practical.
- Specified by:
getItemIds
in interfaceContainer
- Returns:
- unmodifiable collection of Item IDs
-
getContainerProperty
public Property getContainerProperty(Object itemId, Object propertyId)
Description copied from interface:Container
Gets the Property identified by the given itemId and propertyId from the Container. If the Container does not contain the item or it is filtered out, or the Container does not have the Property,null
is returned.- Specified by:
getContainerProperty
in interfaceContainer
- Parameters:
itemId
- ID of the visible Item which contains the PropertypropertyId
- ID of the Property to retrieve- Returns:
- Property with the given ID or
null
-
getContainerPropertyIds
public Collection<?> getContainerPropertyIds()
Description copied from interface:Container
Gets the ID's of all Properties stored in the Container. The ID's cannot be modified through the returned collection.- Specified by:
getContainerPropertyIds
in interfaceContainer
- Returns:
- unmodifiable collection of Property IDs
-
getType
public Class<?> getType(Object propertyId)
Description copied from interface:Container
Gets the data type of all Properties identified by the given Property ID.
-
size
public int size()
Description copied from interface:Container
Gets the number of visible Items in the Container.Filtering can hide items so that they will not be visible through the container API.
-
addItemSetChangeListener
public void addItemSetChangeListener(Container.ItemSetChangeListener listener)
Description copied from interface:Container.ItemSetChangeNotifier
Adds an Item set change listener for the object.- Specified by:
addItemSetChangeListener
in interfaceContainer.ItemSetChangeNotifier
- Parameters:
listener
- listener to be added
-
addListener
@Deprecated public void addListener(Container.ItemSetChangeListener listener)
Deprecated.As of 7.0, replaced byaddItemSetChangeListener(Container.ItemSetChangeListener)
- Specified by:
addListener
in interfaceContainer.ItemSetChangeNotifier
-
removeItemSetChangeListener
public void removeItemSetChangeListener(Container.ItemSetChangeListener listener)
Description copied from interface:Container.ItemSetChangeNotifier
Removes the Item set change listener from the object.- Specified by:
removeItemSetChangeListener
in interfaceContainer.ItemSetChangeNotifier
- Parameters:
listener
- listener to be removed
-
removeListener
@Deprecated public void removeListener(Container.ItemSetChangeListener listener)
Deprecated.As of 7.0, replaced byremoveItemSetChangeListener(Container.ItemSetChangeListener)
- Specified by:
removeListener
in interfaceContainer.ItemSetChangeNotifier
-
addPropertySetChangeListener
public void addPropertySetChangeListener(Container.PropertySetChangeListener listener)
Description copied from interface:Container.PropertySetChangeNotifier
Registers a new Property set change listener for this Container.- Specified by:
addPropertySetChangeListener
in interfaceContainer.PropertySetChangeNotifier
- Parameters:
listener
- The new Listener to be registered
-
addListener
@Deprecated public void addListener(Container.PropertySetChangeListener listener)
Deprecated.As of 7.0, replaced byaddPropertySetChangeListener(Container.PropertySetChangeListener)
- Specified by:
addListener
in interfaceContainer.PropertySetChangeNotifier
-
removePropertySetChangeListener
public void removePropertySetChangeListener(Container.PropertySetChangeListener listener)
Description copied from interface:Container.PropertySetChangeNotifier
Removes a previously registered Property set change listener.- Specified by:
removePropertySetChangeListener
in interfaceContainer.PropertySetChangeNotifier
- Parameters:
listener
- Listener to be removed
-
removeListener
@Deprecated public void removeListener(Container.PropertySetChangeListener listener)
Deprecated.As of 7.0, replaced byremovePropertySetChangeListener(Container.PropertySetChangeListener)
- Specified by:
removeListener
in interfaceContainer.PropertySetChangeNotifier
-
-