/*******************************************************************************
 * Copyright (c) 2006, 2008 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.ltk.ui.refactoring.history;

import org.eclipse.ltk.ui.refactoring.RefactoringUI;

/**
 * Extension interface to {@link IRefactoringHistoryControl} which provides
 * facilities to set the sort mode of a refactoring history control.
 * <p>
 * Clients of this interface should call <code>createControl</code> before
 * calling <code>setInput</code>.
 * </p>
 * <p>
 * An instanceof of a sortable refactoring history control may be obtained by
 * calling
 * {@link RefactoringUI#createSortableRefactoringHistoryControl(org.eclipse.swt.widgets.Composite, RefactoringHistoryControlConfiguration)}.
 * </p>
 * <p>
 * Note: this interface is not intended to be implemented by clients.
 * </p>
 *
 * @see RefactoringHistoryControlConfiguration
 * @see RefactoringHistoryContentProvider
 * @see RefactoringHistoryLabelProvider
 *
 * @since 3.3
 *
 * @noimplement This interface is not intended to be implemented by clients.
 * @noextend This interface is not intended to be extended by clients.
 */
public interface ISortableRefactoringHistoryControl extends IRefactoringHistoryControl {

	/**
	 * Is sorting by date enabled?
	 *
	 * @return <code>true</code> if it is enabled, <code>false</code>
	 *         otherwise
	 */
	public boolean isSortByDate();

	/**
	 * Is sorting by projects enabled?
	 *
	 * @return <code>true</code> if it is enabled, <code>false</code>
	 *         otherwise
	 */
	public boolean isSortByProjects();

	/**
	 * Sorts the refactorings by date.
	 */
	public void sortByDate();

	/**
	 * Sorts the refactorings by projects.
	 */
	public void sortByProjects();
}