blob: fcdb69e6596b7eb65c998755702730b0bdc5337f [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2005, 2006 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.gmf.runtime.emf.type.core.edithelper;
import org.eclipse.gmf.runtime.common.core.command.ICommand;
import org.eclipse.gmf.runtime.emf.type.core.requests.IEditCommandRequest;
/**
* Provides 'before' and 'after' editing behaviour for modifying model elements.
* <P>
* Clients should not implement this interface directly. They should instead
* subclass {@link org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice}and
* override the methods for the specific requests that they provide advice for.
*
* @author ldamus
*/
public interface IEditHelperAdvice {
/**
* Gets a command to be executed before the base editing behaviour.
*
* @param request
* the request
* @return the 'before' command, or <code>null</code> if I do not provide
* 'before' behaviour.
*/
public ICommand getBeforeEditCommand(IEditCommandRequest request);
/**
* Gets a command to be executed after the base editing behaviour.
*
* @param request
* the request
* @return the 'after' command, or <code>null</code> if I do not provide
* 'after' behaviour.
*/
public ICommand getAfterEditCommand(IEditCommandRequest request);
/**
* Configures the <code>request</code>. Advisors may modify the request
* parameters in this method. This method is consulted before the request is
* approved by {@link #approveRequest(IEditCommandRequest)} and before the
* edit command is constructed.
*
* @param request
* the edit request to be configured.
*/
public void configureRequest(IEditCommandRequest request);
/**
* Approves the edit gesture described in the <code>request</code>. This
* method will be consulted before the edit command is constructed, but
* after {@link #configureRequest(IEditCommandRequest)} has been called on
* all applicable advice.
*
* @param request
* the edit request
* @return <code>true</code> if the edit request is approved,
* <code>false</code> otherwise. No edit command will be
* constructed if the request is not approved.
*/
public boolean approveRequest(IEditCommandRequest request);
}