//------------------------------------------------------------------------------ // Copyright (c) 2005, 2006 IBM Corporation and others. // All rights reserved. This program and the accompanying materials // are made available under the terms of the Eclipse Public License v1.0 // which accompanies this distribution, and is available at // http://www.eclipse.org/legal/epl-v10.html // // Contributors: // IBM Corporation - initial implementation //------------------------------------------------------------------------------ package org.eclipse.epf.library.edit.process; import java.text.MessageFormat; import java.util.Iterator; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.edit.provider.ITreeItemContentProvider; import org.eclipse.emf.edit.provider.ItemProviderAdapter; import org.eclipse.epf.library.edit.LibraryEditResources; import org.eclipse.epf.library.edit.util.ProcessUtil; import org.eclipse.epf.library.edit.util.TngUtil; import org.eclipse.epf.uma.Activity; import org.eclipse.epf.uma.DescribableElement; import org.eclipse.epf.uma.Descriptor; import org.eclipse.epf.uma.VariabilityElement; import org.eclipse.epf.uma.VariabilityType; import org.eclipse.epf.uma.WorkProductDescriptor; /** * @author Phong Nguyen Le * @since 1.0 */ public class DescriptorItemProvider extends BreakdownElementItemProvider { /** * @param adapterFactory * @param delegateItemProvider */ public DescriptorItemProvider(AdapterFactory adapterFactory, ItemProviderAdapter delegateItemProvider) { super(adapterFactory, delegateItemProvider); } /* * (non-Javadoc) * * @see com.ibm.library.edit.process.BreakdownElementItemProvider#getAttribute(java.lang.Object, * java.lang.String) */ public String getAttribute(Object object, String property) { if (property == IBSItemProvider.COL_MODEL_INFO) { StringBuffer modelInfo = new StringBuffer(); Object e = ProcessUtil.getAssociatedElement((Descriptor) object); if (e instanceof VariabilityElement) { VariabilityElement ve = (VariabilityElement) e; Object base = ve.getVariabilityBasedOnElement(); if (base != null) { // look for existing descriptor that is associated with the // base in the activity // Object parent = null; for (parent = getParent(object); parent != null && !(parent instanceof Activity);) { ITreeItemContentProvider adapter = (ITreeItemContentProvider) getRootAdapterFactory() .adapt(parent, ITreeItemContentProvider.class); parent = adapter.getParent(parent); } if (parent != null) { ITreeItemContentProvider adapter = (ITreeItemContentProvider) getRootAdapterFactory() .adapt(parent, ITreeItemContentProvider.class); Object desc = null; find_descriptor_loop: for (Iterator iter = adapter .getChildren(parent).iterator(); iter.hasNext();) { Object child = TngUtil.unwrap(iter.next()); if (child instanceof Descriptor && ProcessUtil .getAssociatedElement((Descriptor) child) == base) { desc = child; break find_descriptor_loop; } } if (desc != null) { String str = null; if (ve.getVariabilityType() == VariabilityType.EXTENDS) { str = LibraryEditResources.process_extends; } else if (ve.getVariabilityType() == VariabilityType.REPLACES) { str = LibraryEditResources.process_replaces; } String name = ((DescribableElement) desc) .getPresentationName(); if (str != null) modelInfo.append(MessageFormat.format(str, new Object[] { name })); else modelInfo.append(""); //$NON-NLS-1$ } } } if (object instanceof WorkProductDescriptor) { // ProcessUtil.getModelInfoForWorkProductDescriptor(modelInfo, // (WorkProductDescriptor) object); ProcessUtil.getWPDModelInfo(modelInfo, object, this); } } return modelInfo.toString(); } return super.getAttribute(object, property); } }