jh: fix sorting of plugin dep list & package dep list
diff --git a/2.0/plugins/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/forms/ContentPackageDescriptionPage.java b/2.0/plugins/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/forms/ContentPackageDescriptionPage.java
index 4267c75..605ba11 100644
--- a/2.0/plugins/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/forms/ContentPackageDescriptionPage.java
+++ b/2.0/plugins/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/forms/ContentPackageDescriptionPage.java
@@ -14,10 +14,8 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 import org.eclipse.epf.authoring.ui.AuthoringUIHelpContexts;
 import org.eclipse.epf.authoring.ui.AuthoringUIPlugin;
@@ -37,12 +35,14 @@
 import org.eclipse.epf.uma.Task;
 import org.eclipse.epf.uma.UmaPackage;
 import org.eclipse.epf.uma.WorkProduct;
-import org.eclipse.epf.uma.util.AssociationHelper;
 import org.eclipse.jface.viewers.CheckStateChangedEvent;
 import org.eclipse.jface.viewers.CheckboxTableViewer;
 import org.eclipse.jface.viewers.ICheckStateListener;
 import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerSorter;
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.FocusAdapter;
@@ -91,7 +91,6 @@
 
 	private ContentPackage contentPackage;
 
-	private Hashtable aPackageMap = new Hashtable();
 	private org.eclipse.epf.authoring.ui.editors.MethodElementEditor.ModifyListener modelModifyListener;
 
 	/**
@@ -209,20 +208,33 @@
 
 		ILabelProvider labelProvider = new LabelProvider() {
 			public String getText(Object element) {
-				return element.toString();
+				if (element instanceof ContentPackage) {
+					return TngUtil.getLabelWithPath((ContentPackage)element);
+				} else {
+					return element.toString();
+				}
 			}
 		};
 		ctrl_dependency.setLabelProvider(labelProvider);
-
-		Hashtable aMap = getDependenciesPackages(contentPackage);
-
-		if (aMap != null) {
-			Iterator it = aMap.keySet().iterator();
-			while (it.hasNext()) {
-				String key = (String) it.next();
-				ctrl_dependency.add(key);
+		ctrl_dependency.setContentProvider(new IStructuredContentProvider() {
+			public void dispose() {
 			}
-		}
+			
+			public void inputChanged(Viewer viewer, Object oldInput,
+					Object newInput) {
+			}
+			
+			public Object[] getElements(Object inputElement) {
+				if (inputElement instanceof ContentPackage) {
+					return getDependenciesPackages(contentPackage).toArray();
+				} else {
+					return Collections.EMPTY_LIST.toArray();
+				}
+			}
+		});
+		ctrl_dependency.setSorter(new ViewerSorter());
+		ctrl_dependency.setInput(contentPackage);
+
 		ctrl_dependency.setAllChecked(true);
 		ctrl_dependency.setAllGrayed(true);
 
@@ -257,15 +269,6 @@
 			public void handleEvent(Event e) {
 				// refreshViewers();
 				ctrl_dependency.refresh();
-				Hashtable aMap = getDependenciesPackages(contentPackage);
-
-				if (aMap != null) {
-					Iterator it = aMap.keySet().iterator();
-					while (it.hasNext()) {
-						String key = (String) it.next();
-						ctrl_dependency.add(key);
-					}
-				}
 				ctrl_dependency.setAllChecked(true);
 				ctrl_dependency.setAllGrayed(true);
 				if (TngUtil.isLocked(contentPackage)) {
@@ -380,21 +383,10 @@
 		String name = contentPackage.getName();
 		String desc = contentPackage.getBriefDescription();
 
-		List dependencies = contentPackage.getReusedPackages();
 
 		ctrl_name.setText(name == null ? "" : name); //$NON-NLS-1$
 		ctrl_name.selectAll();
 		ctrl_brief_desc.setText(desc == null ? "" : desc); //$NON-NLS-1$
-
-		for (int i = 0; i < dependencies.size(); i++) {
-			Iterator it = aPackageMap.entrySet().iterator();
-			while (it.hasNext()) {
-				Map.Entry entry = (Map.Entry) it.next();
-				if (dependencies.get(i) == entry.getValue()) {
-					ctrl_dependency.setChecked(entry.getKey(), true);
-				}
-			}
-		}
 	}
 
 	/**
@@ -402,7 +394,7 @@
 	 * @return
 	 * 		List of dependency packages
 	 */
-	public Hashtable getDependenciesPackages(ContentPackage contentPackage) {
+	public Collection<ContentPackage> getDependenciesPackages(ContentPackage contentPackage) {
 
 		List elements = new ArrayList();
 		for (Iterator iter = contentPackage.getContentElements().iterator(); iter
@@ -474,20 +466,18 @@
 
 		}
 
+		List<ContentPackage> cpList = new ArrayList<ContentPackage>();
 		for (int i = 0; i < elements.size(); i++) {
 			Object object = ((ContentElement) elements.get(i)).eContainer();
-			// Object object = elements.get(i);
-			// System.out.println("Type
-			// "+((ContentPackage)object).getType().getName());
 			if (object instanceof ContentPackage) {
 				if (!contentPackage.equals(object)) {
-					aPackageMap.put(TngUtil.getLabelWithPath((ContentPackage) object),
-							(ContentPackage) object);
+					if (!cpList.contains((ContentPackage)object)) {
+						cpList.add((ContentPackage)object);
+					}
 				}
 			}
-
 		}
-		return aPackageMap;
+		return cpList;
 	}	
 
 	/**
diff --git a/2.0/plugins/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/forms/MethodPluginDescriptionPage.java b/2.0/plugins/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/forms/MethodPluginDescriptionPage.java
index 35829f0..e01ae54 100644
--- a/2.0/plugins/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/forms/MethodPluginDescriptionPage.java
+++ b/2.0/plugins/org.eclipse.epf.authoring.ui/src/org/eclipse/epf/authoring/ui/forms/MethodPluginDescriptionPage.java
@@ -15,10 +15,8 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.NullProgressMonitor;
@@ -49,6 +47,7 @@
 import org.eclipse.epf.library.edit.command.IActionManager;
 import org.eclipse.epf.library.edit.command.RemoveReferencesCommand;
 import org.eclipse.epf.library.edit.itemsfilter.FilterConstants;
+import org.eclipse.epf.library.edit.util.Comparators;
 import org.eclipse.epf.library.edit.util.Misc;
 import org.eclipse.epf.library.edit.util.TngUtil;
 import org.eclipse.epf.library.ui.LibraryUIText;
@@ -372,6 +371,7 @@
 
 				List allowableList = PluginReferenceChecker
 						.getApplicableBasePlugins(plugin);
+				Collections.<Object>sort(allowableList, Comparators.PLUGINPACKAGE_COMPARATOR);
 				ctrl_refModel.add(allowableList.toArray());
 
 				List currentBaseList = plugin.getBases();