--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2000, 2011 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 API and implementation
+ *******************************************************************************/
+package org.eclipse.jdt.internal.ui.browsing;
+
+import java.util.Comparator;
+
+import org.eclipse.jdt.core.IJavaElement;
+
+public class JavaElementTypeComparator implements Comparator<IJavaElement> {
+
+
+ /**
+ * Compares two Java element types. A type is considered to be
+ * greater if it may contain the other.
+ *
+ * @return an int less than 0 if object1 is less than object2,
+ * 0 if they are equal, and > 0 if object1 is greater
+ *
+ * @see Comparator#compare(Object, Object)
+ */
+ public int compare(IJavaElement o1, IJavaElement o2) {
+ return getIdForJavaElement(o1) - getIdForJavaElement(o2);
+ }
+
+ int getIdForJavaElement(IJavaElement element) {
+ return getIdForJavaElementType(element.getElementType());
+ }
+
+ int getIdForJavaElementType(int elementType) {
+ switch (elementType) {
+ case IJavaElement.JAVA_MODEL:
+ return 130;
+ case IJavaElement.JAVA_PROJECT:
+ return 120;
+ case IJavaElement.PACKAGE_FRAGMENT_ROOT:
+ return 110;
+ case IJavaElement.PACKAGE_FRAGMENT:
+ return 100;
+ case IJavaElement.COMPILATION_UNIT:
+ return 90;
+ case IJavaElement.CLASS_FILE:
+ return 80;
+ case IJavaElement.TYPE:
+ return 70;
+ case IJavaElement.FIELD:
+ return 60;
+ case IJavaElement.METHOD:
+ return 50;
+ case IJavaElement.INITIALIZER:
+ return 40;
+ case IJavaElement.PACKAGE_DECLARATION:
+ return 30;
+ case IJavaElement.IMPORT_CONTAINER:
+ return 20;
+ case IJavaElement.IMPORT_DECLARATION:
+ return 10;
+ default :
+ return 1;
+ }
+ }
+}