/*******************************************************************************
 * Copyright (c) 2000, 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.model;

import org.eclipse.jface.resource.ImageDescriptor;

/**
 * This adapter interface provides visual presentation and hierarchical structure
 * for workbench elements, allowing them to be displayed in the UI
 * without having to know the concrete type of the element.
 * <p>
 * There is an associate label provider and content provider for showing
 * elements with a registered workbench adapter in JFace structured viewers.
 * </p>
 * @see WorkbenchLabelProvider
 * @see BaseWorkbenchContentProvider
 * @since 1.0
 */
public interface IWorkbenchAdapter {
    /**
     * Returns the children of this object.  When this object
     * is displayed in a tree, the returned objects will be this
     * element's children.  Returns an empty array if this
     * object has no children.
     *
     * @param o The object to get the children for.
     * @return Object[]
     */
    public Object[] getChildren(Object o);

    /**
     * Returns an image descriptor to be used for displaying an object in the workbench.
     * Returns <code>null</code> if there is no appropriate image.
     *
     * @param object The object to get an image descriptor for.
     * @return ImageDescriptor
     */
    public ImageDescriptor getImageDescriptor(Object object);

    /**
     * Returns the label text for this element.  This is typically
     * used to assign a label to this object when displayed
     * in the UI.  Returns an empty string if there is no appropriate
     * label text for this object.
     *
     * @param o The object to get a label for.
     * @return String
     */
    public String getLabel(Object o);

    /**
     * Returns the logical parent of the given object in its tree.
     * Returns <code>null</code> if there is no parent, or if this object doesn't
     * belong to a tree.
     *
     * @param o The object to get the parent for.
     * @return Object
     */
    public Object getParent(Object o);
}
