diff options
Diffstat (limited to 'plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java')
-rw-r--r-- | plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java | 331 |
1 files changed, 331 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java new file mode 100644 index 0000000000..bf209fec5a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java @@ -0,0 +1,331 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Model; + +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.command.CommandParameter; +import org.eclipse.emf.edit.command.DragAndDropCommand; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Model} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelItemProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * This returns the property descriptors for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) + { + if (itemPropertyDescriptors == null) + { + super.getPropertyDescriptors(object); + + addURIPropertyDescriptor(object); + addRootPackagePropertyDescriptor(object); + addAllPackagesPropertyDescriptor(object); + addReferencedPackagesPropertyDescriptor(object); + addMissingPackagesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the URI feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addURIPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_uRI_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_uRI_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__URI, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Root Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRootPackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_rootPackage_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_rootPackage_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__ROOT_PACKAGE, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the All Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAllPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_allPackages_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_allPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__ALL_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Referenced Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addReferencedPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_referencedPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Model_referencedPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__REFERENCED_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Missing Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMissingPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_missingPackages_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_missingPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__MISSING_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.MODEL__ROOT_PACKAGE); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * This returns Model.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Model")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + URI labelValue = ((Model)object).getURI(); + String label = labelValue == null ? null : labelValue.toString(); + StyledString styledLabel = new StyledString(); + if (label == null || label.length() == 0) + { + styledLabel.append(getString("_UI_Model_type"), StyledString.Style.QUALIFIER_STYLER); + } + else + { + styledLabel.append(getString("_UI_Model_type"), StyledString.Style.QUALIFIER_STYLER).append(" " + label); + } + return styledLabel; + } + + /** + * This handles model notifications by calling {@link #updateChildren} to update any cached + * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void notifyChanged(Notification notification) + { + updateChildren(notification); + + switch (notification.getFeatureID(Model.class)) + { + case EvolutionPackage.MODEL__URI: + case EvolutionPackage.MODEL__ALL_PACKAGES: + case EvolutionPackage.MODEL__REFERENCED_PACKAGES: + case EvolutionPackage.MODEL__MISSING_PACKAGES: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case EvolutionPackage.MODEL__ROOT_PACKAGE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + super.notifyChanged(notification); + } + + /** + * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children + * that can be created under this object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) + { + super.collectNewChildDescriptors(newChildDescriptors, object); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + + @Override + public Command createCommand(Object owner, EditingDomain domain, Class<? extends Command> commandClass, CommandParameter commandParameter) + { + if (commandClass == DragAndDropCommand.class) + { + // DragAndDropCommand.Detail detail = (DragAndDropCommand.Detail)commandParameter.getFeature(); + Collection<?> collection = commandParameter.getCollection(); + if (domain != null && collection.size() == 1 && commandParameter.getOwner() != domain.getResourceSet()) + { + Object element = collection.iterator().next(); + if (element instanceof URI) + { + URI uri = (URI)element; + return SetCommand.create(domain, owner, EvolutionPackage.Literals.MODEL__URI, uri); + } + + // return createDragAndDropCommand(domain, commandParameter.getOwner(), detail.location, detail.operations, + // detail.operation, + // commandParameter.getCollection()); + } + } + + return super.createCommand(owner, domain, commandClass, commandParameter); + } + + @Override + protected boolean isWrappingNeeded(Object object) + { + // Wrapping is always needed because of the derived cross reference 'rootPackage', which is shown as children. + return true; + } + +} |