package de.urszeidler.shr5.ecp.editor.actions;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.jface.action.Action;
import org.eclipse.wb.swt.ResourceManager;
public class DuplicateObjectAction extends Action {
private EObject theObject;
public DuplicateObjectAction(EObject object) {
this.theObject = object;
setToolTipText("Create a copy of the object in this container.");
setImageDescriptor(ResourceManager.getPluginImageDescriptor("de.urszeidler.shr5.ecp", "images/copy_edit.gif"));
}
@Override
public void run() {
EStructuralFeature eContainingFeature = theObject.eContainingFeature();
EObject eContainer = theObject.eContainer();
boolean canExecute = eContainer != null && eContainingFeature != null && eContainingFeature.isChangeable() && eContainingFeature.isMany();
if (canExecute) {
EObject copy = EcoreUtil.copy(theObject);
List<EObject> eGet = (List<EObject>)eContainer.eGet(eContainingFeature);
eGet.add(copy);
}
}
}