blob: c8def93182995fb3cb55b32f752bf139867f1fa6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2017 IBM Corporation and others.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.dltk.ui.browsing;
import java.util.Comparator;
import org.eclipse.dltk.core.IModelElement;
public class ScriptElementTypeComparator implements Comparator {
/**
* 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)
*/
@Override
public int compare(Object o1, Object o2) {
if (!(o1 instanceof IModelElement) || !(o2 instanceof IModelElement))
throw new ClassCastException();
return getIdForJavaElement((IModelElement)o1) - getIdForJavaElement((IModelElement)o2);
}
/**
* Compares two Java element types. A type is considered to be
* greater if it may contain the other.
*
* @return an int < 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(Object o1, int elementType) {
if (!(o1 instanceof IModelElement))
throw new ClassCastException();
return getIdForJavaElement((IModelElement)o1) - getIdForJavaElementType(elementType);
}
int getIdForJavaElement(IModelElement element) {
return getIdForJavaElementType(element.getElementType());
}
int getIdForJavaElementType(int elementType) {
switch (elementType) {
case IModelElement.SCRIPT_MODEL:
return 130;
case IModelElement.SCRIPT_PROJECT:
return 120;
case IModelElement.PROJECT_FRAGMENT:
return 110;
case IModelElement.SCRIPT_FOLDER:
return 100;
case IModelElement.SOURCE_MODULE:
return 90;
case IModelElement.TYPE:
return 70;
case IModelElement.FIELD:
return 60;
case IModelElement.METHOD:
return 50;
case IModelElement.PACKAGE_DECLARATION:
return 30;
default :
return 1;
}
}
}