blob: 28ea347d28686e652658acebe58b48dc40ee8fb9 [file] [log] [blame]
//------------------------------------------------------------------------------
// 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);
}
}
}
}