## org.eclipse.emf.edit.provider
Class DelegatingWrapperItemProvider

    java.lang.Object
      org.eclipse.emf.edit.provider.WrapperItemProvider
          org.eclipse.emf.edit.provider.DelegatingWrapperItemProvider

All Implemented Interfaces:
  IChangeNotifier, IDisposable, IEditingDomainItemProvider, IItemLabelProvider, IItemPropertySource, INotifyChangedListener, IStructuredItemContentProvider, ITreeItemContentProvider, IWrapperItemProvider

Direct Known Subclasses:
  FeatureMapEntryWrapperItemProvider

    public class DelegatingWrapperItemProvider

extends WrapperItemProvider
implements IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource, IEditingDomainItemProvider, IChangeNotifier, INotifyChangedListener

A wrapper for model objects and other wrappers. This handles most of the item provider methods by delegating to the item provider returned by adapting on the value, but it returns the `owner` as the parent, and it has to decorate the children, property descriptors, and commands that it returns.

Nested Class Summary
`protected class` `DelegatingWrapperItemProvider.AffectedObjectsWrappingCommand` An `AffectedObjectsWrappingCommand` wraps another command to substitute this wrapper for its value and child wrappers for their corresponding child values, whenever they appear in the affected objects.
`protected class` `DelegatingWrapperItemProvider.AffectedObjectsWrappingCommandActionDelegate` An `AffectedObjectsWrappingCommandActionDelegate` wraps another command that also implements `CommandActionDelegate`, to substitute this wrapper for its value and child wrappers for their corresponding child values, whenever they appear in the affected objects.
`protected class` `DelegatingWrapperItemProvider.DelegatingWrapperItemPropertyDescriptor` A `DelegatingWrapperItemPropertyDescriptor` decorates an `ItemPropertyDescriptor` and manages a command owner override.

Nested classes/interfaces inherited from class org.eclipse.emf.edit.provider.WrapperItemProvider
`WrapperItemProvider.ReplacementAffectedObjectCommand, WrapperItemProvider.SimpleCopyCommand, WrapperItemProvider.WrapperItemPropertyDescriptor, WrapperItemProvider.WrappingCopyCommand`

Field Summary
`protected IChangeNotifier` `changeNotifier` Records any listeners for this wrapper and fires notifications to them.
`protected java.util.Map<java.lang.Object,IWrapperItemProvider>` `childrenMap` The wrapped children are cached here, keyed by the children returned by the delegate item provider.
`protected java.util.Collection<?>` `delegateChildren` The collection of children last returned by the delegate item provider is cached here.
`protected java.lang.Object` `delegateItemProvider` The wrapped value's item provider, to which most methods are delegated.
`protected java.util.List<IItemPropertyDescriptor>` `propertyDescriptors` The decorated property descriptors are cached here.

Fields inherited from class org.eclipse.emf.edit.provider.WrapperItemProvider
`adapterFactory, COPY_COMMAND_DESCRIPTION, COPY_COMMAND_LABEL, feature, index, owner, value`

Constructor Summary
`DelegatingWrapperItemProvider(java.lang.Object value, java.lang.Object owner, AdapterFactory adapterFactory)` Deprecated. As of EMF 2.0.1, replaced by `this form`. This constructor will be removed as public API, but remain available as a protected method.
`DelegatingWrapperItemProvider(java.lang.Object value, java.lang.Object owner, EStructuralFeature feature, int index, AdapterFactory adapterFactory)` Creates an instance for the given value.

Method Summary
`void` `addListener(INotifyChangedListener listener)` Adds a listener to receive this wrapper's repeated notifications.
`Command` `createCommand(java.lang.Object object, EditingDomain domain, java.lang.Class<? extends Command> commandClass, CommandParameter commandParameter)` Uses the delegate item provider to create a command for the delegate value, and then calls `wrapCommand` to return an appropriate wrapper-substituting command wrapper for it.
`protected IWrapperItemProvider` `createWrapper(java.lang.Object value, java.lang.Object owner, AdapterFactory adapterFactory)` Creates a new instance of this wrapper for the given value, owner, and adapter factory.
`void` `dispose()` Deactivates notification repeating and disposes any wrappers it is maintaining for its children.
`void` `fireNotifyChanged(Notification notification)` Fires a notification to the adapter factory and any registered listeners.
`java.util.Collection<?>` `getChildren(java.lang.Object object)` Uses the delegate item provider to return the delegate value's children, with appropriate wrappers to ensure that this wrapper is considered their parent.
`protected java.lang.Object` `getDelegateValue()` Returns the value from which to obtain and which to pass to a delegate item provider.
`java.lang.Object` `getEditableValue(java.lang.Object object)` Uses the delegate item provider to return an editable value.
`java.util.Collection<?>` `getElements(java.lang.Object object)` Uses the delegate item provider to return the delegate value's elements.
`java.lang.Object` `getImage(java.lang.Object object)` Uses the delegate item provider to return the delegate value's image.
`java.util.Collection<?>` `getNewChildDescriptors(java.lang.Object object, EditingDomain editingDomain, java.lang.Object sibling)` Uses the delegate item provider to return the delegate value's new child descriptors.
`java.util.List<IItemPropertyDescriptor>` `getPropertyDescriptors(java.lang.Object object)` Wraps the property descriptors returned by the delegate item provider, caching and returning them.
`protected java.lang.Object` `getRefreshElement(Notification notification)` Returns the operative object of this notification, from which the viewer would be refreshed.
`java.lang.String` `getText(java.lang.Object object)` Uses the delegate item provider to return the delegate value's text.
`boolean` `hasChildren(java.lang.Object object)` Uses the delegate item provider to test whether the delegate vlaue has children.
`void` `notifyChanged(Notification notification)` Called by `delegateItemProvider` when it normally fires a notification to it's adapter factory; if the notification originated from the delegate value, this repeats the notification, using `wrapNotification` to substitute this wrapper as the operative object.
`void` `removeListener(INotifyChangedListener listener)` Removes a notification listener.
`protected void` `updateChildren()` Uses the delegate item provider to get the delegate value's children, assigning the collection to `delegateChildren`, and to update the `childrenMap`.
`protected Command` `wrapCommand(Command command, java.lang.Class<? extends Command> commandClass)` Wraps the given command in an appropriate command that will substitute the delegating wrapper for its value and child wrappers for their corresponding values, whenever they appear in the affected objects.
`protected Notification` `wrapNotification(Notification notification)` Wraps the given notification, substituting this wrapper as the operative object, by calling `ViewerNotification.wrapNotification`.

Methods inherited from class org.eclipse.emf.edit.provider.WrapperItemProvider
`baseCreateCommand, createCopyCommand, createDragAndDropCommand, createSetCommand, getFeature, getIndex, getOwner, getParent, getPropertyCategory, getPropertyDescription, getPropertyDescriptor, getPropertyFilterFlags, getPropertyImage, getPropertyImage, getPropertyName, getRootAdapterFactory, getUpdateableText, getValue, isPropertyMultiLine, isPropertySettable, isPropertySortChoices, setIndex`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Methods inherited from interface org.eclipse.emf.edit.provider.ITreeItemContentProvider
`getParent`

Methods inherited from interface org.eclipse.emf.edit.provider.IItemPropertySource
`getPropertyDescriptor`

Methods inherited from interface org.eclipse.emf.edit.provider.IEditingDomainItemProvider
`getParent`

Field Detail

### delegateItemProvider

    protected java.lang.Object delegateItemProvider

  The wrapped value's item provider, to which most methods are delegated.

### childrenMap

    protected java.util.Map<java.lang.Object,IWrapperItemProvider> childrenMap

  The wrapped children are cached here, keyed by the children returned by the delegate item provider.

### delegateChildren

    protected java.util.Collection<?> delegateChildren

  The collection of children last returned by the delegate item provider is cached here.

### propertyDescriptors

    protected java.util.List<IItemPropertyDescriptor> propertyDescriptors

  The decorated property descriptors are cached here.

### changeNotifier

    protected IChangeNotifier changeNotifier

  Records any listeners for this wrapper and fires notifications to them.

Constructor Detail

### DelegatingWrapperItemProvider

    public DelegatingWrapperItemProvider(java.lang.Object value,
                                         java.lang.Object owner,
                                         EStructuralFeature feature,
                                         int index,
                                         AdapterFactory adapterFactory)

  Creates an instance for the given value. A decorator for the object's item provider is created, and set up to repeat notifications, decorating them, so that they will update this wrapper, rather than the model object they originate from.

  Throws:
    `java.lang.IllegalArgumentException` - If the specified value is null.

### DelegatingWrapperItemProvider

    @Deprecated
    public DelegatingWrapperItemProvider(java.lang.Object value,
                                                    java.lang.Object owner,
                                                    AdapterFactory adapterFactory)

  Deprecated. As of EMF 2.0.1, replaced by `this form`. This constructor will be removed as public API, but remain available as a protected method.

  Creates an instance for the given value, when the feature and index that specify the value are unknown.

  Throws:
    `java.lang.IllegalArgumentException` - If the specified value is null.

Method Detail

### dispose

    public void dispose()

  Deactivates notification repeating and disposes any wrappers it is maintaining for its children.

  Specified by:
    `dispose` in interface `IDisposable`
  Overrides:
    `dispose` in class `WrapperItemProvider`

### getDelegateValue

    protected java.lang.Object getDelegateValue()

  Returns the value from which to obtain and which to pass to a delegate item provider. If this returns null, no delegate item provider should ever be obtained. This implementation simply returns the value of the wrapper, though subclasses may override it to return something else.

### getElements

    public java.util.Collection<?> getElements(java.lang.Object object)

  Uses the delegate item provider to return the delegate value's elements.

  Specified by:
    `getElements` in interface `IStructuredItemContentProvider`
  Overrides:
    `getElements` in class `WrapperItemProvider`

### getChildren

    public java.util.Collection<?> getChildren(java.lang.Object object)

  Uses the delegate item provider to return the delegate value's children, with appropriate wrappers to ensure that this wrapper is considered their parent. Each child is replaced by the corresponding wrapper from `childrenMap`, after updating it by calling `updateChildren`.

  Specified by:
    `getChildren` in interface `IEditingDomainItemProvider`
  Specified by:
    `getChildren` in interface `ITreeItemContentProvider`
  Overrides:
    `getChildren` in class `WrapperItemProvider`

### updateChildren

    protected void updateChildren()

  Uses the delegate item provider to get the delegate value's children, assigning the collection to `delegateChildren`, and to update the `childrenMap`. New chidren are wrapped by calling `createWrapper` and added to the map; Wrappers for children that have been removed are disposed.

### createWrapper

    protected IWrapperItemProvider createWrapper(java.lang.Object value,
                                                 java.lang.Object owner,
                                                 AdapterFactory adapterFactory)

  Creates a new instance of this wrapper for the given value, owner, and adapter factory.

### hasChildren

    public boolean hasChildren(java.lang.Object object)

  Uses the delegate item provider to test whether the delegate vlaue has children.

  Specified by:
    `hasChildren` in interface `ITreeItemContentProvider`
  Overrides:
    `hasChildren` in class `WrapperItemProvider`

### getText

    public java.lang.String getText(java.lang.Object object)

  Uses the delegate item provider to return the delegate value's text.

  Specified by:
    `getText` in interface `IItemLabelProvider`
  Overrides:
    `getText` in class `WrapperItemProvider`

### getImage

    public java.lang.Object getImage(java.lang.Object object)

  Uses the delegate item provider to return the delegate value's image.

  Specified by:
    `getImage` in interface `IItemLabelProvider`
  Overrides:
    `getImage` in class `WrapperItemProvider`

### getPropertyDescriptors

    public java.util.List<IItemPropertyDescriptor> getPropertyDescriptors(java.lang.Object object)

  Wraps the property descriptors returned by the delegate item provider, caching and returning them.

  Specified by:
    `getPropertyDescriptors` in interface `IItemPropertySource`
  Overrides:
    `getPropertyDescriptors` in class `WrapperItemProvider`

### getEditableValue

    public java.lang.Object getEditableValue(java.lang.Object object)

  Uses the delegate item provider to return an editable value.

  Specified by:
    `getEditableValue` in interface `IItemPropertySource`
  Overrides:
    `getEditableValue` in class `WrapperItemProvider`

### getNewChildDescriptors

    public java.util.Collection<?> getNewChildDescriptors(java.lang.Object object,
                                                          EditingDomain editingDomain,
                                                          java.lang.Object sibling)

  Uses the delegate item provider to return the delegate value's new child descriptors.

  Specified by:
    `getNewChildDescriptors` in interface `IEditingDomainItemProvider`
  Overrides:
    `getNewChildDescriptors` in class `WrapperItemProvider`

### createCommand

    public Command createCommand(java.lang.Object object,
                                 EditingDomain domain,
                                 java.lang.Class<? extends Command> commandClass,
                                 CommandParameter commandParameter)

  Uses the delegate item provider to create a command for the delegate value, and then calls `wrapCommand` to return an appropriate wrapper-substituting command wrapper for it. Drag and drop commands are created directly by calling `createDragAndDropCommand`.

  Specified by:
    `createCommand` in interface `IEditingDomainItemProvider`
  Overrides:
    `createCommand` in class `WrapperItemProvider`

### wrapCommand

    protected Command wrapCommand(Command command,
                                  java.lang.Class<? extends Command> commandClass)

  Wraps the given command in an appropriate command that will substitute the delegating wrapper for its value and child wrappers for their corresponding values, whenever they appear in the affected objects. This implementation returns an `DelegatingWrapperItemProvider.AffectedObjectsWrappingCommand` or an `DelegatingWrapperItemProvider.AffectedObjectsWrappingCommandActionDelegate`, depending on whether the given command implements `CommandActionDelegate`.

### addListener

    public void addListener(INotifyChangedListener listener)

  Adds a listener to receive this wrapper's repeated notifications.

  Specified by:
    `addListener` in interface `IChangeNotifier`

### removeListener

    public void removeListener(INotifyChangedListener listener)

  Removes a notification listener.

  Specified by:
    `removeListener` in interface `IChangeNotifier`

### fireNotifyChanged

    public void fireNotifyChanged(Notification notification)

  Fires a notification to the adapter factory and any registered listeners.

  Specified by:
    `fireNotifyChanged` in interface `IChangeNotifier`

### notifyChanged

    public void notifyChanged(Notification notification)

  Called by `delegateItemProvider` when it normally fires a notification to it's adapter factory; if the notification originated from the delegate value, this repeats the notification, using `wrapNotification` to substitute this wrapper as the operative object.

  Specified by:
    `notifyChanged` in interface `INotifyChangedListener`

### getRefreshElement

    protected java.lang.Object getRefreshElement(Notification notification)

  Returns the operative object of this notification, from which the viewer would be refreshed. If the notification is an `IViewerNotification`, the `element` is returned. Otherwise, the `notifier` is returned.

### wrapNotification

    protected Notification wrapNotification(Notification notification)

  Wraps the given notification, substituting this wrapper as the operative object, by calling `ViewerNotification.wrapNotification`.

Copyright 2001-2006 IBM Corporation and others. All Rights Reserved.