org.eclipse.emf.edit.provider
Class DelegatingWrapperItemProvider

java.lang.Object
  extended by org.eclipse.emf.edit.provider.WrapperItemProvider
      extended by org.eclipse.emf.edit.provider.DelegatingWrapperItemProvider
All Implemented Interfaces:
IChangeNotifier, IDisposable, IEditingDomainItemProvider, IItemColorProvider, IItemFontProvider, IItemLabelProvider, IItemPropertySource, INotifyChangedListener, IStructuredItemContentProvider, ITableItemColorProvider, ITableItemFontProvider, ITableItemLabelProvider, ITreeItemContentProvider, IWrapperItemProvider
Direct Known Subclasses:
FeatureMapEntryWrapperItemProvider

public class DelegatingWrapperItemProvider
extends WrapperItemProvider
implements IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemFontProvider, IItemColorProvider, ITableItemLabelProvider, ITableItemFontProvider, ITableItemColorProvider, 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
 
Fields inherited from interface org.eclipse.emf.edit.provider.IItemFontProvider
BOLD_FONT, BOLD_ITALIC_FONT, ITALIC_FONT, NORMAL_FONT
 
Fields inherited from interface org.eclipse.emf.edit.provider.IItemColorProvider
GRAYED_OUT_COLOR
 
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.lang.Object getBackground(java.lang.Object object)
          Uses the delegate item provider to return the delegate value's background color.
 java.lang.Object getBackground(java.lang.Object object, int columnIndex)
          Uses the delegate item provider to return the delegate value's background color.
 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.
 java.lang.Object getColumnImage(java.lang.Object object, int columnIndex)
          Uses the delegate item provider to return the delegate value's column image.
 java.lang.String getColumnText(java.lang.Object object, int columnIndex)
          Uses the delegate item provider to return the delegate value's column text.
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 getFont(java.lang.Object object)
          Uses the delegate item provider to return the delegate value's font.
 java.lang.Object getFont(java.lang.Object object, int columnIndex)
          Uses the delegate item provider to return the delegate value's font.
 java.lang.Object getForeground(java.lang.Object object)
          Uses the delegate item provider to return the delegate value's foreground color.
 java.lang.Object getForeground(java.lang.Object object, int columnIndex)
          Uses the delegate item provider to return the delegate value's foreground color.
 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 value 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. If the adapter factory is an IChangeNotifier, a listener is added to it, so it's important to call dispose().

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 children 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 value 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

getFont

public java.lang.Object getFont(java.lang.Object object)
Uses the delegate item provider to return the delegate value's font.

Specified by:
getFont in interface IItemFontProvider
Overrides:
getFont in class WrapperItemProvider

getForeground

public java.lang.Object getForeground(java.lang.Object object)
Uses the delegate item provider to return the delegate value's foreground color.

Specified by:
getForeground in interface IItemColorProvider
Overrides:
getForeground in class WrapperItemProvider

getBackground

public java.lang.Object getBackground(java.lang.Object object)
Uses the delegate item provider to return the delegate value's background color.

Specified by:
getBackground in interface IItemColorProvider
Overrides:
getBackground in class WrapperItemProvider

getColumnText

public java.lang.String getColumnText(java.lang.Object object,
                                      int columnIndex)
Uses the delegate item provider to return the delegate value's column text.

Specified by:
getColumnText in interface ITableItemLabelProvider

getColumnImage

public java.lang.Object getColumnImage(java.lang.Object object,
                                       int columnIndex)
Uses the delegate item provider to return the delegate value's column image.

Specified by:
getColumnImage in interface ITableItemLabelProvider

getFont

public java.lang.Object getFont(java.lang.Object object,
                                int columnIndex)
Uses the delegate item provider to return the delegate value's font.

Specified by:
getFont in interface ITableItemFontProvider

getForeground

public java.lang.Object getForeground(java.lang.Object object,
                                      int columnIndex)
Uses the delegate item provider to return the delegate value's foreground color.

Specified by:
getForeground in interface ITableItemColorProvider

getBackground

public java.lang.Object getBackground(java.lang.Object object,
                                      int columnIndex)
Uses the delegate item provider to return the delegate value's background color.

Specified by:
getBackground in interface ITableItemColorProvider

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.