/*****************************************************************************
* Copyright (c) 2010 Atos Origin.
*
*
* 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:
* Emilien Perico (Atos Origin) emilien.perico@atosorigin.com - Initial API and implementation
*
*****************************************************************************/
package org.eclipse.papyrus.infra.services.controlmode.commands;
import org.eclipse.emf.common.command.CompoundCommand;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.EditingDomain;
/**
* The Interface IControlCommand that defines custom control action executed with the default Papyrus control action.
*/
public interface IControlCommand {
/**
* Control action applied on the specified selection
*
* @param domain
* @param selection
* @param state
* @param source
* @param target
* @param commandToModify
*/
void control(EditingDomain domain, EObject selection, STATE_CONTROL state, Resource source, Resource target, CompoundCommand commandToModify);
/**
* Provides method to enable/disable control action adding constraints
*
* @param selection
* @param state
* @param source
* @param target
* @return true to enable control action, false to disable it
*/
boolean provides(EObject selection, STATE_CONTROL state, Resource source, Resource target);
/**
* The Enumeration STATE_CONTROL that specifies when the control action is performed
*/
public static enum STATE_CONTROL {
/** before control action on di resource */
PRE_DI,
/** after control action on di resource */
POST_DI,
/** before control action on notation resource */
PRE_NOTATION,
/** after control action on notation resource */
POST_NOTATION,
/** before control action on model resource */
PRE_MODEL,
/** after control action on model resource */
POST_MODEL
}
}