Runtime

org.eclipse.gmf.runtime.emf.type.core.commands
Class MoveElementsCommand

java.lang.Object
  extended by org.eclipse.core.commands.operations.AbstractOperation
      extended by org.eclipse.emf.workspace.AbstractEMFOperation
          extended by org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand
              extended by org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand
                  extended by org.eclipse.gmf.runtime.emf.type.core.commands.MoveElementsCommand
All Implemented Interfaces:
IUndoableOperation, ICommand, org.eclipse.gmf.runtime.common.core.internal.command.ICommandWithSettableResult

public class MoveElementsCommand
extends EditElementCommand

Command to move model elements using the EMF action protocol.

If the target features are not specified in the request, and the features fomerly containing the moved elements exists in the target element, they will be used.


Constructor Summary
MoveElementsCommand(MoveRequest request)
          Constructs a new command to move a model element
 
Method Summary
 boolean canExecute()
          Checks that the element to be modified by this command is of the correct kind.
protected  CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info)
          Implemented by subclasses to perform the model changes.
protected  java.util.Map getElementsToMove()
          Gets the map of elements to be moved.
protected  org.eclipse.emf.ecore.EObject getTargetContainer()
          Gets the target container.
protected  org.eclipse.emf.ecore.EReference getTargetFeature(org.eclipse.emf.ecore.EObject element)
          Gets the feature in the target element that should contain element after it is moved.
protected  void setTargetFeature(org.eclipse.emf.ecore.EObject element, org.eclipse.emf.ecore.EReference targetFeature)
          Sets the reference feature into which an element should be moved.
 
Methods inherited from class org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand
getAffectedFiles, getEClass, getEClassToEdit, getElementToEdit, getRequest, isOK, setEClass, setElementToEdit
 
Methods inherited from class org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand
aggregateStatuses, cleanup, compose, didRedo, didUndo, doExecute, doRedo, doUndo, getAffectedFiles, getCommandResult, getWorkspaceFiles, getWorkspaceFiles, internalSetResult, reduce, setResult
 
Methods inherited from class org.eclipse.emf.workspace.AbstractEMFOperation
canRedo, canUndo, didCommit, dispose, execute, getChange, getEditingDomain, getOptions, redo, undo
 
Methods inherited from class org.eclipse.core.commands.operations.AbstractOperation
addContext, getContexts, getLabel, hasContext, removeContext, setLabel, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.gmf.runtime.common.core.command.ICommand
setLabel
 
Methods inherited from interface org.eclipse.core.commands.operations.IUndoableOperation
addContext, canRedo, canUndo, dispose, execute, getContexts, getLabel, hasContext, redo, removeContext, undo
 

Constructor Detail

MoveElementsCommand

public MoveElementsCommand(MoveRequest request)
Constructs a new command to move a model element

Parameters:
request - the move element request
Method Detail

doExecuteWithResult

protected CommandResult doExecuteWithResult(IProgressMonitor monitor,
                                            IAdaptable info)
                                     throws ExecutionException
Description copied from class: AbstractTransactionalCommand
Implemented by subclasses to perform the model changes. These changes are applied by manipulation of the EMF metamodel's API, not by executing commands on the editing domain's command stack.

Specified by:
doExecuteWithResult in class AbstractTransactionalCommand
Parameters:
monitor - the progress monitor provided by the operation history
info - the adaptable provided by the operation history
Returns:
the result of the execution
Throws:
ExecutionException - if, for some reason, I fail to complete the operation

getTargetFeature

protected org.eclipse.emf.ecore.EReference getTargetFeature(org.eclipse.emf.ecore.EObject element)
Gets the feature in the target element that should contain element after it is moved.

Looks for the feature first in the elements map. If none is specified, tries to use the same feature that contained the element in its old location. If the old containment feature doesn't exist in the new target, uses the MSL utility to find the first feature in the target that can contain the element being moved.

Parameters:
element - the element to be moved
Returns:
the feature that will contain the element in the target

getTargetContainer

protected org.eclipse.emf.ecore.EObject getTargetContainer()
Gets the target container.

Returns:
the target container

getElementsToMove

protected java.util.Map getElementsToMove()
Gets the map of elements to be moved. Each entry in the map consists of an EObject key, which is the element to be moved to the new target, and an EReference value, which is the feature in the new target that should contain the moved element.

Returns:
the map of elements to be moved

setTargetFeature

protected void setTargetFeature(org.eclipse.emf.ecore.EObject element,
                                org.eclipse.emf.ecore.EReference targetFeature)
Sets the reference feature into which an element should be moved.

Parameters:
element - the element to be moved
targetFeature - the target feature

canExecute

public boolean canExecute()
Description copied from class: EditElementCommand
Checks that the element to be modified by this command is of the correct kind.

Specified by:
canExecute in interface IUndoableOperation
Overrides:
canExecute in class EditElementCommand

Runtime

Guidelines for using Eclipse APIs.

Copyright (c) IBM Corp., Borland Software Corp., and others 2005,2006. All rights reserved.