/** */ package org.eclipse.emf.cdo.releng.setup.provider; import org.eclipse.emf.cdo.releng.setup.Configuration; import org.eclipse.emf.cdo.releng.setup.SetupPackage; import org.eclipse.emf.cdo.releng.setup.SetupTask; import org.eclipse.emf.cdo.releng.setup.SetupTaskScope; import org.eclipse.emf.cdo.releng.setup.Trigger; 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.edit.provider.AdapterFactoryItemDelegator; 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.IItemLabelProvider; import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; import org.eclipse.emf.edit.provider.IItemPropertySource; 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.ViewerNotification; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * This is the item provider adapter for a {@link org.eclipse.emf.cdo.releng.setup.SetupTask} object. * * * @generated */ public class SetupTaskItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, IItemLabelProvider, IItemPropertySource { private static final Map, IItemLabelProvider> EXCLUSION_LABEL_PROVIDERS = new HashMap, IItemLabelProvider>(); static { for (Set validTriggers : Trigger.LITERALS.keySet()) { final Map, String> exclusionLabels = new HashMap, String>(); for (Set triggers : Trigger.LITERALS.keySet()) { Set compliment = new LinkedHashSet(validTriggers); compliment.removeAll(triggers); exclusionLabels.put(triggers, Trigger.LITERALS.get(compliment)); } EXCLUSION_LABEL_PROVIDERS.put(validTriggers, new IItemLabelProvider() { public String getText(Object object) { return exclusionLabels.get(object); } public Object getImage(Object object) { return null; } }); } } /** * This constructs an instance from a factory and a notifier. * * * @generated */ public SetupTaskItemProvider(AdapterFactory adapterFactory) { super(adapterFactory); } /** * This returns the property descriptors for the adapted class. * * * @generated */ @Override public List getPropertyDescriptors(Object object) { if (itemPropertyDescriptors == null) { super.getPropertyDescriptors(object); addRequirementsPropertyDescriptor(object); addRestrictionsPropertyDescriptor(object); addScopePropertyDescriptor(object); addExcludedTriggersPropertyDescriptor(object); } return itemPropertyDescriptors; } /** * This adds a property descriptor for the Requirements feature. * * * @generated NOT */ protected void addRequirementsPropertyDescriptor(Object object) { itemPropertyDescriptors.add(new ItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory) .getRootAdapterFactory(), getResourceLocator(), getString("_UI_SetupTask_requirements_feature"), getString( "_UI_PropertyDescriptor_description", "_UI_SetupTask_requirements_feature", "_UI_SetupTask_type"), SetupPackage.Literals.SETUP_TASK__REQUIREMENTS, true, false, true, null, null, null) { private IItemLabelProvider labelProvider = new HierarchicalItemLabelProvider(itemDelegator); @Override public IItemLabelProvider getLabelProvider(Object object) { return labelProvider; } @Override public Collection getChoiceOfValues(Object object) { SetupTask setupTask = (SetupTask)object; Collection result = new ArrayList(super.getChoiceOfValues(object)); for (Iterator it = result.iterator(); it.hasNext();) { Object value = it.next(); if (value instanceof SetupTask && ((SetupTask)value).requires(setupTask)) { // Remove items that would cause a circularity. it.remove(); } } return result; } }); } /** * This adds a property descriptor for the Restrictions feature. * * * @generated NOT */ protected void addRestrictionsPropertyDescriptor(Object object) { itemPropertyDescriptors.add(new ItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory) .getRootAdapterFactory(), getResourceLocator(), getString("_UI_SetupTask_restrictions_feature"), getString( "_UI_PropertyDescriptor_description", "_UI_SetupTask_restrictions_feature", "_UI_SetupTask_type"), SetupPackage.Literals.SETUP_TASK__RESTRICTIONS, true, false, true, null, null, null) { private IItemLabelProvider labelProvider = new HierarchicalItemLabelProvider(itemDelegator); @Override public IItemLabelProvider getLabelProvider(Object object) { return labelProvider; } }); } /** * This adds a property descriptor for the Scope feature. * * * @generated */ protected void addScopePropertyDescriptor(Object object) { itemPropertyDescriptors.add(createItemPropertyDescriptor( ((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), getString("_UI_SetupTask_scope_feature"), getString("_UI_PropertyDescriptor_description", "_UI_SetupTask_scope_feature", "_UI_SetupTask_type"), SetupPackage.Literals.SETUP_TASK__SCOPE, false, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); } /** * This adds a property descriptor for the Excluded Triggers feature. * * * @generated NOT */ protected void addExcludedTriggersPropertyDescriptor(Object object) { itemPropertyDescriptors.add(new ItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory) .getRootAdapterFactory(), getResourceLocator(), getString("_UI_SetupTask_excludedTriggers_feature"), getString( "_UI_PropertyDescriptor_description", "_UI_SetupTask_excludedTriggers_feature", "_UI_SetupTask_type"), SetupPackage.Literals.SETUP_TASK__EXCLUDED_TRIGGERS, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null) { @Override public IItemLabelProvider getLabelProvider(Object object) { final SetupTask setupTask = (SetupTask)object; return EXCLUSION_LABEL_PROVIDERS.get(setupTask.getValidTriggers()); } @Override public String getDisplayName(Object object) { return "Triggers"; } @Override public String getDescription(Object object) { return "The triggers for which the task is applicable"; } @Override public Collection getChoiceOfValues(Object object) { SetupTask setupTask = (SetupTask)object; Set validTriggers = setupTask.getValidTriggers(); List> result = new ArrayList>(Trigger.LITERALS.keySet()); for (Iterator> it = result.iterator(); it.hasNext();) { if (!validTriggers.containsAll(it.next())) { it.remove(); } } Collections.reverse(result); return result; } }); } /** * * * @generated */ @Override public boolean hasChildren(Object object) { return hasChildren(object, true); } /** * This returns the label text for the adapted class. * * * @generated */ @Override public String getText(Object object) { SetupTaskScope labelValue = ((SetupTask)object).getScope(); String label = labelValue == null ? null : labelValue.toString(); return label == null || label.length() == 0 ? getString("_UI_SetupTask_type") : getString("_UI_SetupTask_type") + " " + label; } /** * 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}. * * * @generated */ @Override public void notifyChanged(Notification notification) { updateChildren(notification); switch (notification.getFeatureID(SetupTask.class)) { case SetupPackage.SETUP_TASK__SCOPE: case SetupPackage.SETUP_TASK__EXCLUDED_TRIGGERS: fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); return; } super.notifyChanged(notification); } /** * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children * that can be created under this object. * * * @generated */ @Override protected void collectNewChildDescriptors(Collection newChildDescriptors, Object object) { super.collectNewChildDescriptors(newChildDescriptors, object); } /** * Return the resource locator for this item provider's resources. * * * @generated */ @Override public ResourceLocator getResourceLocator() { return ((IChildCreationExtender)adapterFactory).getResourceLocator(); } /** * @author Eike Stepper */ private static class HierarchicalItemLabelProvider implements IItemLabelProvider { private AdapterFactoryItemDelegator itemDelegator; public HierarchicalItemLabelProvider(AdapterFactoryItemDelegator itemDelegator) { this.itemDelegator = itemDelegator; } public String getText(Object object) { StringBuilder builder = new StringBuilder(); while (object != null && !(object instanceof Configuration)) { if (builder.length() != 0) { builder.insert(0, " - "); } String text = itemDelegator.getText(object); builder.insert(0, text); object = itemDelegator.getParent(object); } return builder.toString(); } public Object getImage(Object object) { return itemDelegator.getImage(object); } } }