wlu: handle extended references
diff --git a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/LibraryResources.java b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/LibraryResources.java
index fb375cd..2ddbb06 100644
--- a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/LibraryResources.java
+++ b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/LibraryResources.java
@@ -63,6 +63,7 @@
 	public static String ActivityLayout_primaryTasks_text;
 	public static String ActivityLayout_additionalTasks_text;
 	public static String ActivityLayout_assistTasks_text;
+	public static String ActivityLayout_performAs_text;	
 	public static String convertGuidanceError_title;
 	public static String loadResourcesError_title;
 	public static String loadResourcesError_reason;
diff --git a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/Resources.properties b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/Resources.properties
index 7faf8f2..51fff9a 100644
--- a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/Resources.properties
+++ b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/Resources.properties
@@ -118,6 +118,7 @@
 ActivityLayout_primaryTasks_text=Performs as Owner
 ActivityLayout_additionalTasks_text=Performs as Additional
 ActivityLayout_assistTasks_text=Performs as assist
+ActivityLayout_performAs_text=Performs as {0}
 
 # Convert Guidance Error Messages
 convertGuidanceError_title=Convert Guidance Type Error
diff --git a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/elements/ActivityLayout.java b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/elements/ActivityLayout.java
index 941bc83..d72d06b 100644
--- a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/elements/ActivityLayout.java
+++ b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/layout/elements/ActivityLayout.java
@@ -34,6 +34,7 @@
 import org.eclipse.epf.library.LibraryService;
 import org.eclipse.epf.library.configuration.ConfigurationHelper;
 import org.eclipse.epf.library.edit.IFilter;
+import org.eclipse.epf.library.edit.meta.TypeDefUtil;
 import org.eclipse.epf.library.edit.process.BreakdownElementWrapperItemProvider;
 import org.eclipse.epf.library.edit.process.ComposedWPDescriptorWrapperItemProvider;
 import org.eclipse.epf.library.edit.process.IBSItemProvider;
@@ -41,6 +42,7 @@
 import org.eclipse.epf.library.edit.util.DescriptorPropUtil;
 import org.eclipse.epf.library.edit.util.PredecessorList;
 import org.eclipse.epf.library.edit.util.ProcessUtil;
+import org.eclipse.epf.library.edit.util.PropUtil;
 import org.eclipse.epf.library.edit.util.Suppression;
 import org.eclipse.epf.library.edit.util.TngUtil;
 import org.eclipse.epf.library.layout.ElementLayoutManager;
@@ -75,6 +77,8 @@
 import org.eclipse.epf.uma.WorkProductDescriptor;
 import org.eclipse.epf.uma.ecore.util.OppositeFeature;
 import org.eclipse.epf.uma.util.AssociationHelper;
+import org.eclipse.epf.uma.util.ExtendedReference;
+import org.eclipse.epf.uma.util.ModifiedTypeMeta;
 import org.eclipse.osgi.util.NLS;
 
 
@@ -1153,6 +1157,36 @@
 		createRoleRollupNodes(parentXml, assistTasks, 
 				LibraryResources.ActivityLayout_assistTasks_text, setting);
 
+		ModifiedTypeMeta meta = TypeDefUtil.getMdtMeta(UmaPackage.eINSTANCE.getRole());
+		if (meta != null) {
+			for ( Iterator it = descriptors.iterator(); it.hasNext(); ) {			
+				roleItem = (RoleDescriptor) it.next();				
+				for (ExtendedReference eRef : meta.getReferences()) {
+					if (ExtendedReference.WorkProducts.equals(eRef.getContributeTo())) {
+						items = PropUtil.getPropUtil().getExtendedReferenceList(roleItem, eRef, false);
+						createRoleRollupNodes(parentXml, items, 
+								eRef.getName(), setting);
+					}
+				}
+				
+			}
+		}
+		
+		meta = TypeDefUtil.getMdtMeta(UmaPackage.eINSTANCE.getTask());
+		if (meta != null) {
+			for ( Iterator it = descriptors.iterator(); it.hasNext(); ) {			
+				roleItem = (RoleDescriptor) it.next();				
+				for (ExtendedReference eRef : meta.getReferences()) {
+					if (ExtendedReference.Roles.equals(eRef.getContributeTo())) {
+						items = PropUtil.getPropUtil().getReferencingList(roleItem, eRef);
+						String info = LibraryResources.bind(LibraryResources.ActivityLayout_performAs_text, (new String[] {eRef.getName()}));
+						createRoleRollupNodes(parentXml, items, 
+								info, setting);
+					}
+				}
+				
+			}
+		}
 	}
 	
 	private void createRoleRollupNodes(XmlElement parentXml, List items,
diff --git a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/util/ModelInfoKeyMap.java b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/util/ModelInfoKeyMap.java
index bc440f0..ebda32c 100644
--- a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/util/ModelInfoKeyMap.java
+++ b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/util/ModelInfoKeyMap.java
@@ -57,10 +57,10 @@
 				"assistTasks");//$NON-NLS-1$ 
 		
 		ModifiedTypeMeta taskMeta = TypeDefUtil.getMdtMeta(UmaPackage.eINSTANCE.getTask());
-//		ModifiedTypeMeta roleMeta = TypeDefUtil.getMdtMeta(UmaPackage.eINSTANCE.getRole());
+		ModifiedTypeMeta roleMeta = TypeDefUtil.getMdtMeta(UmaPackage.eINSTANCE.getRole());
 
 		addForModifiedType(taskMeta);
-//		addForModifiedType(roleMeta);
+		addForModifiedType(roleMeta);
 	}
 
 	private void addForModifiedType(ModifiedTypeMeta meta) {
@@ -68,9 +68,14 @@
 			return;
 		}
 		for (ExtendedReference eRef : meta.getReferences()) {
-			if (ExtendedReference.WorkProducts.equals(eRef.getContributeTo())
-					|| ExtendedReference.Roles.equals(eRef.getContributeTo())) {
+			boolean w = ExtendedReference.WorkProducts.equals(eRef.getContributeTo());
+			boolean r = ExtendedReference.Roles.equals(eRef.getContributeTo());
+			if (w || r) {
 				map.put(eRef.getName(), eRef.getName());
+			}			
+			if (r) {
+				String info = LibraryResources.bind(LibraryResources.ActivityLayout_performAs_text, (new String[] {eRef.getName()}));
+				map.put(info, info);
 			}
 		}
 	}