blob: 24a78ae57e104a8b9865afde8b4777af7cc7704f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 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 API and implementation
******************************************************************************/
package org.eclipse.ui.navigator;
import java.util.Map;
import org.eclipse.jface.viewers.ViewerSorter;
/**
*
* Provides an interface to extensions declared in
* <b>org.eclipse.ui.navigator.navigatorContent/commonSorter</b>.
*
* <p>
* Like other extensions to the Common Navigator framework, sorters defined by
* the above extension point must be bound to the associated
* {@link INavigatorContentService} through a
* <b>org.eclipse.ui.navigator.viewer/viewerContentBinding</b> extension.
* </p>
*
* <p>
* This interface is not intended to be implemented by clients.
* </p>
*
* @see INavigatorContentService#getSorterService()
* @see ViewerSorter
* @since 3.2
*/
public interface INavigatorSorterService {
/**
* Return a {@link ViewerSorter} from an extension which is visible to the
* associated {@link INavigatorContentService} and whose <b>parentExpression</b>
* matches the given parent.
*
* @param aParent
* An element from the tree
* @return An applicable ViewerSorter or simple {@link ViewerSorter} if no
* sorter is found.
*/
ViewerSorter findSorterForParent(Object aParent);
/**
* Return a {@link ViewerSorter} from an extension which is visible to the
* associated {@link INavigatorContentService} and whose <b>parentExpression</b>
* matches the given parent.
*
* @param source
* The source of the element.
* @param parent
* An element from the tree
* @param lvalue
* An element from the tree
* @param rvalue
* An element from the tree
* @return An applicable ViewerSorter or simple {@link ViewerSorter} if no
* sorter is found.
*/
ViewerSorter findSorter(INavigatorContentDescriptor source, Object parent,
Object lvalue, Object rvalue);
/**
* Find and return all viewer sorters associated with the given descriptor.
*
* <p>
* The <i>commonSorter</i> element is not required to have an id, so in
* some cases, an auto-generated id, using the content extension id as a
* base, is generated to ensure the map is properly filled with all
* available sorters. No guarantees are given as to the order or consistency
* of these generated ids between invocations.
* </p>
*
* @param theSource
* A descriptor that identifies a particular content extension
* @return A Map[String sorterDescriptorId, ViewerSorter instance] where the
* key is the id defined in the extension and the value is the
* instantiated sorter.
*
* @see INavigatorContentService#getContentDescriptorById(String)
* @see INavigatorContentService#getContentExtensionById(String)
* @see INavigatorContentExtension#getDescriptor()
* @since 3.3
*/
public Map findAvailableSorters(INavigatorContentDescriptor theSource);
}