| //------------------------------------------------------------------------------ |
| // 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.search.ui.internal; |
| |
| import org.eclipse.epf.uma.Activity; |
| import org.eclipse.epf.uma.ContentCategory; |
| import org.eclipse.epf.uma.ContentElement; |
| import org.eclipse.epf.uma.ContentPackage; |
| import org.eclipse.epf.uma.CustomCategory; |
| import org.eclipse.epf.uma.Guidance; |
| import org.eclipse.epf.uma.Iteration; |
| import org.eclipse.epf.uma.MethodPackage; |
| import org.eclipse.epf.uma.MethodPlugin; |
| import org.eclipse.epf.uma.Milestone; |
| import org.eclipse.epf.uma.Phase; |
| import org.eclipse.epf.uma.Process; |
| import org.eclipse.epf.uma.ProcessElement; |
| import org.eclipse.epf.uma.ProcessPackage; |
| import org.eclipse.epf.uma.Role; |
| import org.eclipse.epf.uma.RoleDescriptor; |
| import org.eclipse.epf.uma.Task; |
| import org.eclipse.epf.uma.TaskDescriptor; |
| import org.eclipse.epf.uma.WorkProduct; |
| import org.eclipse.epf.uma.WorkProductDescriptor; |
| import org.eclipse.jface.viewers.Viewer; |
| import org.eclipse.jface.viewers.ViewerSorter; |
| |
| /** |
| * Sorts the method elements in a specific order for display in the Search |
| * view. |
| * <p> |
| * The method elements are sorted by types. Within each type, the elements are |
| * sorted alphabetically by names. |
| * |
| * @author Kelvin Low |
| * @since 1.0 |
| */ |
| public class MethodElementViewSorter extends ViewerSorter { |
| |
| /** |
| * Creates a new instance. |
| */ |
| public MethodElementViewSorter() { |
| } |
| |
| /** |
| * @see org.eclipse.jface.viewers.ViewerSorter#compare(Viewer, Object, |
| * Object) |
| */ |
| public int compare(Viewer viewer, Object e1, Object e2) { |
| if (e1 instanceof MethodPlugin) { |
| if (!(e2 instanceof MethodPlugin)) { |
| return -1; |
| } |
| } else if (e1 instanceof ContentPackage) { |
| if (e2 instanceof MethodPlugin) { |
| return 1; |
| } else if (!(e2 instanceof ContentPackage)) { |
| return -1; |
| } |
| } else if (e1 instanceof Role) { |
| if (e2 instanceof MethodPlugin || e2 instanceof ContentPackage) { |
| return 1; |
| } else if (!(e2 instanceof Role)) { |
| return -1; |
| } |
| } else if (e1 instanceof Task) { |
| if (e2 instanceof MethodPlugin || e2 instanceof ContentPackage |
| || e2 instanceof Role) { |
| return 1; |
| } else if (!(e2 instanceof Task)) { |
| return -1; |
| } |
| } else if (e1 instanceof WorkProduct) { |
| if (e2 instanceof MethodPlugin || e2 instanceof ContentPackage |
| || e2 instanceof Role || e2 instanceof Task) { |
| return 1; |
| } else if (!(e2 instanceof WorkProduct)) { |
| return -1; |
| } |
| } else if (e1 instanceof Guidance) { |
| if (e2 instanceof MethodPlugin || e2 instanceof ContentPackage |
| || e2 instanceof Role || e2 instanceof Task |
| || e2 instanceof WorkProduct) { |
| return 1; |
| } else if (e2 instanceof Guidance) { |
| String name1 = e1.getClass().getName(); |
| String name2 = e2.getClass().getName(); |
| if (!name1.equals(name2)) { |
| return collator.compare(name1, name2); |
| } |
| } else { |
| return -1; |
| } |
| } else if (e1 instanceof ContentCategory) { |
| if (e2 instanceof MethodPlugin || e2 instanceof ContentPackage |
| || e2 instanceof Role || e2 instanceof Task |
| || e2 instanceof WorkProduct || e2 instanceof Guidance) { |
| return 1; |
| } else if (e1 instanceof CustomCategory |
| && !(e2 instanceof CustomCategory)) { |
| return 1; |
| } else if (!(e1 instanceof CustomCategory) |
| && e2 instanceof CustomCategory) { |
| return -1; |
| } else if (e2 instanceof ContentCategory) { |
| String name1 = e1.getClass().getName(); |
| String name2 = e2.getClass().getName(); |
| if (!name1.equals(name2)) { |
| return collator.compare(name1, name2); |
| } |
| } else { |
| return -1; |
| } |
| } else if (e1 instanceof Process) { |
| if (e2 instanceof MethodPlugin || e2 instanceof ContentPackage |
| || e2 instanceof ContentElement) { |
| return 1; |
| } else if (e2 instanceof ProcessPackage && !(e2 instanceof Process)) { |
| return 1; |
| } else if (!(e2 instanceof Process)) { |
| return -1; |
| } |
| } else if (e1 instanceof ProcessPackage) { |
| if (e2 instanceof MethodPlugin || e2 instanceof ContentPackage |
| || e2 instanceof ContentElement) { |
| return 1; |
| } else if (e2 instanceof Process && !(e1 instanceof Process)) { |
| return -1; |
| } else if (!(e2 instanceof ProcessPackage)) { |
| return -1; |
| } |
| } else if (e1 instanceof ProcessElement) { |
| if (e2 instanceof MethodPlugin || e2 instanceof MethodPackage |
| || e2 instanceof ContentElement || e2 instanceof Process) { |
| return 1; |
| } else if (e1 instanceof Phase) { |
| if (!(e2 instanceof Phase)) { |
| return -1; |
| } |
| } else if (e1 instanceof Iteration) { |
| if (e2 instanceof Phase) { |
| return 1; |
| } |
| if (!(e2 instanceof Iteration)) { |
| return -1; |
| } |
| } else if (e1 instanceof Activity) { |
| if (e2 instanceof Phase || e2 instanceof Iteration) { |
| return 1; |
| } |
| if (!(e2 instanceof Activity)) { |
| return -1; |
| } |
| } else if (e1 instanceof Milestone) { |
| if (e2 instanceof Activity) { |
| return 1; |
| } |
| if (!(e2 instanceof Milestone)) { |
| return -1; |
| } |
| } else if (e1 instanceof RoleDescriptor) { |
| if (e2 instanceof Activity || e2 instanceof Milestone) { |
| return 1; |
| } |
| if (!(e2 instanceof RoleDescriptor)) { |
| return -1; |
| } |
| } else if (e1 instanceof TaskDescriptor) { |
| if (e2 instanceof Activity || e2 instanceof Milestone |
| || e2 instanceof RoleDescriptor) { |
| return 1; |
| } |
| if (!(e2 instanceof TaskDescriptor)) { |
| return -1; |
| } |
| } else if (e1 instanceof WorkProductDescriptor) { |
| if (e2 instanceof Activity || e2 instanceof Milestone |
| || e2 instanceof RoleDescriptor |
| || e2 instanceof TaskDescriptor) { |
| return 1; |
| } |
| if (!(e2 instanceof WorkProductDescriptor)) { |
| return -1; |
| } |
| } |
| } |
| return super.compare(viewer, e1, e2); |
| } |
| |
| } |