/*******************************************************************************
 * Copyright (c) 2005 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.debug.core.model;

import org.eclipse.debug.core.DebugException;

/**
 * Provides the ability to drop to frame. Drop to frame
 * generally means popping a selected stack frame (and all frames above it) from
 * the execution stack and then stepping back into the frame.
 * 
 * @since 3.1
 */
public interface IDropToFrame {

    /**
     * Returns whether this element can currently perform a drop to frame.
     * @return whether this element can currently perform a drop to frame
     */
    public boolean canDropToFrame();
    
    /**
     * Performs a drop to frame on this element. Implementations must generate
     * events such that debug clients can update appropriately, such as corresponding
     * <code>RESUME</code> and <code>SUSPEND</code> events, or a single <code>CHANGE</code>
     * event when the drop is complete. Implementations should implement drop to frame
     * in a non-blocking fashion. 
     * 
     * @throws DebugException on failure. Reasons include:<ul>
     * <li>TARGET_REQUEST_FAILED - The request failed in the target</li>
     * <li>NOT_SUPPORTED - The capability is not supported by the target</li>
     * </ul>
     */
    public void dropToFrame() throws DebugException;
}
