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

import java.util.List;

/**
 * This class provides keyboard accessibility support for <i>Anchors</i>.
 * Anchors are simply locations (relative to the Viewer's Control) on the
 * GraphicalEditPart's figure indicated by
 * {@link org.eclipse.draw2d.geometry.Point Points}. Anchors are used when
 * creating or manipulating connections graphically. <I>Accessible</I> Anchors
 * are the locations that should be used during keyboard connection
 * manipulation.
 * <P>
 * Keyboard connection manipulation moves the Mouse cursor programmatically to
 * the AccessibleAnchor's location. Targeting is still performed as if the User
 * were using the Mouse and not the keyboard. Therefore, the GraphicalEditPart
 * should provide locations that will result in its being targeted by the
 * current tool.
 * <P>
 * Connection operations involves either the source or target end of a
 * connection. The <code>AccessibleAnchorProvider</code> has the option of
 * returning different locations depending on the context of the operatation.
 */

public interface AccessibleAnchorProvider {

	/**
	 * Returns a list of Points in <B>absolute</B> coordinates where source
	 * anchors are located. Tools that work with connections should use these
	 * locations when operating in accesible keyboard modes.
	 * 
	 * @return A list of absolute locations (Points relative to the Viewer's
	 *         Control)
	 */
	List getSourceAnchorLocations();

	/**
	 * Returns a list of Points in <B>absolute</B> coordinates where target
	 * anchors are located. Tools that work with connections should use these
	 * locations when operating in accesible keyboard modes.
	 * 
	 * @return A list of absolute locations (Points relative to the Viewer's
	 *         Control)
	 */
	List getTargetAnchorLocations();

}
