/*******************************************************************************
 * Copyright (c) 2006, 2008 Oracle. 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:
 *     Oracle - initial API and implementation
 ******************************************************************************/
package org.eclipse.jpt.ui.internal.selection;

import org.eclipse.ui.IWorkbenchPart;

public interface JpaSelectionManager 
{	
	/**
	 * Return the current selection.  
	 * This will never be null, but it may be empty.
	 */
	public JpaSelection getCurrentSelection();
	
	/**
	 * Not to be called lightly, this will affect the selection for all interested
	 * objects in a window.
	 * @param newSelection  The new selection for the current window.
	 * @param source  The selection participant (if any) that is causing the 
	 * selection.  May be null.
	 */
	public void select(JpaSelection newSelection, JpaSelectionParticipant source);
	
	/**
	 * Not to be called lightly, this will affect the selection for all interested
	 * objects in a window.
	 * @param oldSelection  The oldSelection will be deselected, iff it matches 
	 * the current selection.  If so, the new selection will be an empty JpaSelection.
	 * @param source  The selection participant (if any) that is causing the 
	 * selection.  May be null. 
	 */
	public void deselect(JpaSelection oldSelection, JpaSelectionParticipant source);
	
	/**
	 * This may be used to register a part with the selection manager if the part
	 * is known to need access to the selection manager before it is ever activated
	 * or in the case it may be activated prior to the selection manager being 
	 * created.
	 * 
	 * It should not be necessary to deregister a part, as that happens when the 
	 * part is closed.
	 */
	public void register(IWorkbenchPart part);
	
	/**
	 * Returns true if the part is currently registered to respond to selections
	 * from this selection manager
	 */
	public boolean isRegistered(IWorkbenchPart part);
}
