package org.eclipse.dltk.ui;

/**
 * Interface used to provide specific compare information for custom elements.
 */
public interface IModelCompareProvider {

	/**
	 * Used in compare, category functions.
	 */
	public static final class CompareResult {
		int result;

		public CompareResult(int result) {
			this.result = result;
		}
	}

	public static final CompareResult GREATER = new CompareResult(1);
	public static final CompareResult LESS = new CompareResult(-1);
	public static final CompareResult EQUALS = new CompareResult(0);

	/**
	 * Return category for specified element.
	 * 
	 * @see IModelCompareCategories for category constants.
	 * 
	 * @return One of {@link IModelCompareCategories} in {@link CompareResult}
	 *         Return null if comparison of element are not supported.
	 */
	Integer category(Object element);

	/**
	 * Compare two elements.
	 * 
	 * Return null if comparison of elements are not supported.
	 */
	CompareResult compare(Object element1, Object element2, int cat1, int cat2);
}
