/*******************************************************************************
 * Copyright (c) 2000, 2003 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.swt.examples.paint;


import org.eclipse.swt.events.*;

/**
 * Manages an interactive paint session.
 * Note that the coordinates received via the listener interfaces are virtualized to zero-origin
 * relative to the painting surface.
 */ 
public interface PaintSession extends MouseListener, MouseMoveListener {
	/**
	 * Returns the paint surface associated with this paint session
	 * 
	 * @return the associated PaintSurface
	 */
	public PaintSurface getPaintSurface();

	/**
	 * Activates the session.
	 * 
	 * Note: When overriding this method, call super.beginSession() at method start.
	 */
	public abstract void beginSession();
	
	/**
	 * Deactivates the session.
     *
	 * Note: When overriding this method, call super.endSession() at method exit.
     */
	public abstract void endSession();
	
	/**
	 * Resets the session.
	 * Aborts any operation in progress.
	 * 
	 * Note: When overriding this method, call super.resetSession() at method exit.
	 */
	public abstract void resetSession();
	
	
	/**
	 * Returns the name associated with this tool.
	 * 
	 * @return the localized name of this tool
	 */
	public String getDisplayName();
}
