package org.eclipse.uml2.diagram.timing.edit.helpers; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.gmf.runtime.common.core.command.CommandResult; import org.eclipse.gmf.runtime.common.core.command.ICommand; import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; import org.eclipse.uml2.diagram.timing.model.timingd.DFrame; import org.eclipse.uml2.diagram.timing.model.timingd.DFrameContainer; import org.eclipse.uml2.diagram.timing.providers.TimingDElementTypes; import org.eclipse.uml2.uml.Interaction; import org.eclipse.uml2.uml.Package; import org.eclipse.uml2.uml.UMLPackage; /** * @generated */ public class DFrameContainerEditHelper extends TimingDBaseEditHelper { @Override protected ICommand getCreateCommand(CreateElementRequest req) { ICommand result = super.getCreateCommand(req); if (false == req.getContainer() instanceof DFrameContainer){ return result; } if (req.getElementType() != TimingDElementTypes.DFrame_2001){ return result; } final DFrameContainer frameContainer = (DFrameContainer) req.getContainer(); if (frameContainer.getPakkage() == null){ return result; } PushToUMLCommand syncCommand = new PushToUMLCommand(req, frameContainer.getPakkage()){ @Override protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { Package umlPakkage = (Package) getUmlParent(); DFrame createdFrame = (DFrame) getCreatedTimingDArtefact(); Interaction interaction = (Interaction) umlPakkage.createOwnedType(createdFrame.getDisplayName(), UMLPackage.eINSTANCE.getInteraction()); createdFrame.setInteraction(interaction); return CommandResult.newOKCommandResult(); } }; return compose(result, syncCommand, req.getEditingDomain()); } }