wlu: added getPractices method
diff --git a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/util/LibraryUtil.java b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/util/LibraryUtil.java
index 216ac7e..4320f1a 100644
--- a/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/util/LibraryUtil.java
+++ b/1.5/plugins/org.eclipse.epf.library/src/org/eclipse/epf/library/util/LibraryUtil.java
@@ -26,6 +26,7 @@
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.impl.AdapterImpl;
 import org.eclipse.emf.common.util.TreeIterator;
 import org.eclipse.emf.common.util.URI;
@@ -35,15 +36,20 @@
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
 import org.eclipse.epf.library.ILibraryManager;
 import org.eclipse.epf.library.LibraryPlugin;
 import org.eclipse.epf.library.LibraryResources;
 import org.eclipse.epf.library.LibraryService;
 import org.eclipse.epf.library.LibraryServiceUtil;
+import org.eclipse.epf.library.configuration.ConfigurationFilter;
 import org.eclipse.epf.library.configuration.ConfigurationHelper;
 import org.eclipse.epf.library.edit.IFilter;
+import org.eclipse.epf.library.edit.TngAdapterFactory;
 import org.eclipse.epf.library.edit.TransientGroupItemProvider;
 import org.eclipse.epf.library.edit.command.IActionManager;
+import org.eclipse.epf.library.edit.configuration.GuidanceGroupingItemProvider;
+import org.eclipse.epf.library.edit.configuration.GuidanceItemProvider;
 import org.eclipse.epf.library.edit.ui.UserInteractionHelper;
 import org.eclipse.epf.library.edit.util.MethodElementPropertyHelper;
 import org.eclipse.epf.library.edit.util.MethodLibraryPropUtil;
@@ -68,6 +74,7 @@
 import org.eclipse.epf.uma.MethodPackage;
 import org.eclipse.epf.uma.MethodPlugin;
 import org.eclipse.epf.uma.MethodUnit;
+import org.eclipse.epf.uma.Practice;
 import org.eclipse.epf.uma.ProcessComponent;
 import org.eclipse.epf.uma.SupportingMaterial;
 import org.eclipse.epf.uma.UmaPackage;
@@ -1099,4 +1106,47 @@
 		
 		return true;
 	}
+	
+	public static List<Practice> getPractices(MethodConfiguration config) {
+		List<Practice> practiceList = new ArrayList<Practice>();
+		Set<Practice> practiceSet = new HashSet<Practice>();
+		
+		IFilter filter = new ConfigurationFilter(config);
+		AdapterFactory adapterFactory = TngAdapterFactory.INSTANCE.getConfigurationView_AdapterFactory(filter);
+		ITreeItemContentProvider adapter = (ITreeItemContentProvider) adapterFactory.adapt(config, ITreeItemContentProvider.class);
+		GuidanceGroupingItemProvider guidanceGroupingItemProvider = null;
+		for (Object child : adapter.getChildren(config)) {
+			if(child instanceof GuidanceGroupingItemProvider) {
+				guidanceGroupingItemProvider = (GuidanceGroupingItemProvider) child;
+				break;
+			}
+		}
+		
+		if(guidanceGroupingItemProvider != null) {
+			GuidanceItemProvider practicesItemProvider = null;
+			Collection<?> children = guidanceGroupingItemProvider.getChildren(guidanceGroupingItemProvider);
+			for (Object child : children) {
+				if(child instanceof GuidanceItemProvider) {
+					GuidanceItemProvider ip = (GuidanceItemProvider) child;
+					if(ip.getGuidanceFilter() == GuidanceGroupingItemProvider.practiceFilter) {
+						practicesItemProvider = ip;
+						break;
+					}
+				}
+			}
+			if(practicesItemProvider != null) {
+				children = practicesItemProvider.getChildren(practicesItemProvider);
+				for (Object child : children) {
+					if(child instanceof Practice && ! practiceSet.contains(child)) {
+						Practice p = (Practice) child;
+						practiceList.add(p);
+						practiceSet.add(p);
+					}
+				}
+			}
+		}
+		
+		return practiceList;
+	}	
+	
 }
\ No newline at end of file