Runtime

## org.eclipse.gmf.runtime.emf.commands.core.commands
Class DuplicateEObjectsCommand

    java.lang.Object
      org.eclipse.core.commands.operations.AbstractOperation
          org.eclipse.emf.workspace.AbstractEMFOperation
              org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand
                  org.eclipse.gmf.runtime.emf.commands.core.commands.DuplicateEObjectsCommand

All Implemented Interfaces:
  IUndoableOperation, ICommand, org.eclipse.gmf.runtime.common.core.internal.command.ICommandWithSettableResult

    public abstract class DuplicateEObjectsCommand

extends AbstractTransactionalCommand

This command duplicates a list of `EObjects` and adds each duplicate to it's originator's container. All references between objects that are duplicated are updated to refer to the new duplicated objects.

The command returns a map which contains all the `EObjects` that were duplicated mapped to their new duplicated objects. This map can also be retrieved prior to having executed the command (it will be populated when the command is executed). NOTE: The keyset of this map is not just the original objects passed in; more objects may have been duplicated as well (e.g. contained objects).

Constructor Summary
`DuplicateEObjectsCommand(org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain, java.lang.String label, java.util.List eObjectsToBeDuplicated)` Constructs a new duplicate EObjects command with the specified label and list of EObjects.
`DuplicateEObjectsCommand(org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain, java.lang.String label, java.util.List eObjectsToBeDuplicated, java.util.Map allDuplicatedObjectsMap)` Constructs a new duplicate EObjects command with the specified label and list of EObjects.
`DuplicateEObjectsCommand(org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain, java.lang.String label, java.util.List eObjectsToBeDuplicated, java.util.Map allDuplicatedObjectsMap, org.eclipse.emf.ecore.EObject targetContainer)` Constructs a new duplicate EObjects command with the specified label and list of EObjects.

Method Summary
`boolean` `canExecute()` Verifies that the container of all the original objects can contain multiple objects.
`protected CommandResult` `doExecuteWithResult(IProgressMonitor progressMonitor, IAdaptable info)` Executes this command by duplicating the orignal eobjects, adding the duplicates to the original's container, and populating the map of duplicates to be returned.
`protected java.util.Map` `getAllDuplicatedObjectsMap()` Returns a map which contains all the `EObjects` that were duplicated mapped to their new duplicated objects.
`protected java.util.List` `getObjectsToBeDuplicated()` Returns the list of objects to be duplicated.

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, canSetOptions, canUndo, didCommit, dispose, execute, getChange, getEditingDomain, getOptions, isReuseParentTransaction, redo, setOptions, setReuseParentTransaction, 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

### DuplicateEObjectsCommand

    public DuplicateEObjectsCommand(org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain,
                                    java.lang.String label,
                                    java.util.List eObjectsToBeDuplicated)

  Constructs a new duplicate EObjects command with the specified label and list of EObjects.

  Parameters:
    `editingDomain` - the editing domain through which model changes are made
    `label` - The label for the new command.
    `eObjectsToBeDuplicated` - The list of `EObjects` to be duplicated.

### DuplicateEObjectsCommand

    public DuplicateEObjectsCommand(org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain,
                                    java.lang.String label,
                                    java.util.List eObjectsToBeDuplicated,
                                    java.util.Map allDuplicatedObjectsMap)

  Constructs a new duplicate EObjects command with the specified label and list of EObjects.

  Parameters:
    `editingDomain` - the editing domain through which model changes are made
    `label` - The label for the new command.
    `eObjectsToBeDuplicated` - The list of `EObjects` to be duplicated.
    `allDuplicatedObjectsMap` - An empty map to be populated with the duplicated objects.

### DuplicateEObjectsCommand

    public DuplicateEObjectsCommand(org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain,
                                    java.lang.String label,
                                    java.util.List eObjectsToBeDuplicated,
                                    java.util.Map allDuplicatedObjectsMap,
                                    org.eclipse.emf.ecore.EObject targetContainer)

  Constructs a new duplicate EObjects command with the specified label and list of EObjects. Also sets the list of affected files to be the files, where the targetContainer is stored. Target container specifies the eObject into which the duplicated eObjects will be added.

  Parameters:
    `editingDomain` - the editing domain through which model changes are made
    `label` - The label for the new command.
    `eObjectsToBeDuplicated` - The list of `EObjects` to be duplicated.
    `allDuplicatedObjectsMap` - An empty map to be populated with the duplicated objects.

Method Detail

### getAllDuplicatedObjectsMap

    protected java.util.Map getAllDuplicatedObjectsMap()

  Returns a map which contains all the `EObjects` that were duplicated mapped to their new duplicated objects. NOTE: The keyset of this map is not just the original objects passed in; more objects may have been duplicated as well (e.g. contained objects). This map can be retrieved prior to command execution time. It will be populated when the command is executed.

  Returns:
    The map of duplicated objects.

### getObjectsToBeDuplicated

    protected java.util.List getObjectsToBeDuplicated()

  Returns the list of objects to be duplicated.

  Returns:
    The list of objects to be duplicated.

### canExecute

    public boolean canExecute()

  Verifies that the container of all the original objects can contain multiple objects.

  Specified by:
    `canExecute` in interface `IUndoableOperation`
  Overrides:
    `canExecute` in class `AbstractOperation`

### doExecuteWithResult

    protected CommandResult doExecuteWithResult(IProgressMonitor progressMonitor,
                                                IAdaptable info)
                                         throws ExecutionException

  Executes this command by duplicating the orignal eobjects, adding the duplicates to the original's container, and populating the map of duplicates to be returned.

  Specified by:
    `doExecuteWithResult` in class `AbstractTransactionalCommand`
  Parameters:
    `progressMonitor` - 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

Runtime

Guidelines for using Eclipse APIs.

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