| //------------------------------------------------------------------------------ |
| // 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.layout.elements; |
| |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import org.eclipse.emf.ecore.EClass; |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| import org.eclipse.epf.library.configuration.ConfigurationHelper; |
| import org.eclipse.epf.library.layout.ElementLayoutManager; |
| import org.eclipse.epf.library.layout.util.XmlElement; |
| import org.eclipse.epf.uma.MethodElement; |
| import org.eclipse.epf.uma.RoleDescriptor; |
| |
| |
| /** |
| * Team Profile layout for browsing |
| * |
| * @author Shilpa Toraskar |
| * @author Jinhua Xi |
| * @since 1.0 |
| * |
| */ |
| public class TeamProfileLayout extends AbstractProcessElementLayout { |
| |
| public TeamProfileLayout() { |
| super(); |
| } |
| |
| public void init(ElementLayoutManager layoutManager, MethodElement element) { |
| super.__init(layoutManager, element); |
| } |
| |
| /** |
| * @see org.eclipse.epf.library.layout.IElementLayout#getXmlElement(boolean) |
| */ |
| public XmlElement getXmlElement(boolean includeReferences) { |
| return super.getXmlElement(includeReferences); |
| } |
| /** |
| * load the non-attribute feature |
| * |
| * @param feature |
| * @param elementXml |
| * @param includeReferences |
| */ |
| public void loadFeature(EStructuralFeature feature, XmlElement elementXml, |
| boolean includeReferences) { |
| if (!(feature.getEType() instanceof EClass)) { |
| return; |
| } |
| |
| String name = feature.getName(); |
| |
| if (!feature.isMany()) { |
| MethodElement e = ConfigurationHelper.calc01FeatureValue(element, |
| feature, layoutManager.getElementRealizer()); |
| // Browsing stops working when a role is set to |
| // replaced another role |
| // for replacer, the base will be evaluated to the replacer |
| // and causing deadlock |
| if (e != null && e != element) { |
| boolean showDetail = (ConfigurationHelper |
| .isDescriptionElement(e) |
| /* |
| * || (p == |
| * UmaPackage.eINSTANCE.getMethodUnit_CopyrightStatement()) |
| */) ? true : includeReferences; |
| |
| if ( acceptFeatureValue(feature, e) ) { |
| processChild(feature, |
| elementXml |
| .newChild("reference").setAttribute("name", name), e, showDetail); //$NON-NLS-1$ //$NON-NLS-2$ |
| } |
| } |
| } else if (feature.isMany()) { |
| if (isBreakdownElement_Guidances(feature)) { |
| super.loadFeature(feature, elementXml, includeReferences); |
| return; |
| } |
| List pv = ConfigurationHelper.calc0nFeatureValue(element, feature, |
| getLayoutMgr().getElementRealizer()); |
| List roleDescList = new ArrayList(); |
| if ((pv != null) && (!pv.isEmpty())) |
| { |
| for (Iterator itor=pv.iterator(); itor.hasNext();) |
| { |
| Object obj = itor.next(); |
| if (obj instanceof RoleDescriptor) |
| { |
| RoleDescriptor roleDesc = (RoleDescriptor) obj; |
| if ((roleDesc.getSuperActivities() == null) |
| || (roleDesc.getSuperActivities() == null)) |
| roleDescList.add(obj); |
| } |
| } |
| } |
| |
| if ( acceptFeatureValue(feature, roleDescList) && roleDescList.size() > 0 ) { |
| addReferences(feature, elementXml, name, roleDescList); |
| } |
| } |
| } |
| } |