/*******************************************************************************
 * Copyright 2005, CHISEL Group, University of Victoria, Victoria, BC, Canada.
 * 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: The Chisel Group, University of Victoria
 *******************************************************************************/
package org.eclipse.zest.core.viewers;

import org.eclipse.jface.viewers.IStructuredContentProvider;

/**
 * A graph content provider. 
 * 
 * @author Ian Bull
 */
public interface IGraphContentProvider extends IStructuredContentProvider {

	/**
	 * Gets the source Object for the given relationship. Note, at least one of the source
	 * or destination must not be null. If both are null, then nothing can be displayed in
	 * the graph (a relationship cannot exist without nodes to be connected to). However,
	 * if one of getSource() or getDestination() returns null, then the resulting graph will
	 * contain an unconnected node for the non-null object returned from the other method.
	 * @param rel the relationship.
	 * @return the source, or null for an unconnected destination.
	 */
	public Object getSource(Object rel);

	/**
	 * Gets the target Object for the given relationship. Note, at least one of the source
	 * or destination must not be null. If both are null, then nothing can be displayed in
	 * the graph (a relationship cannot exist without nodes to be connected to). However,
	 * if one of getSource() or getDestination() returns null, then the resulting graph will
	 * contain an unconnected node for the non-null object returned from the other method.
	 * @param rel the relationship.
	 * @return the destination, or null for an unconnected source.
	 */
	public Object getDestination(Object rel);

	/**
	 * Returns all the relationships in the graph for the given input.
	 * @input the input model object.
	 * @return all the relationships in the graph for the given input.
	 */
	public Object[] getElements(Object input);

}
