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.DBlock; import org.eclipse.uml2.diagram.timing.model.timingd.DFrame; import org.eclipse.uml2.diagram.timing.providers.TimingDElementTypes; import org.eclipse.uml2.uml.Interaction; import org.eclipse.uml2.uml.Lifeline; /** * @generated */ public class DFrameEditHelper extends TimingDBaseEditHelper { @Override protected ICommand getCreateCommand(CreateElementRequest req) { ICommand result = super.getCreateCommand(req); if (false == req.getContainer() instanceof DFrame){ return result; } if (req.getElementType() != TimingDElementTypes.DBlock_3001){ return result; } final DFrame frame = (DFrame) req.getContainer(); if (frame.getInteraction() == null){ return result; } PushToUMLCommand syncCommand = new PushToUMLCommand(req, frame.getInteraction()){ @Override protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException { Interaction interaction = (Interaction) getUmlParent(); DBlock createdBlock = (DBlock) getCreatedTimingDArtefact(); Lifeline lifeline = interaction.createLifeline(createdBlock.getDisplayName()); createdBlock.setLifeline(lifeline); return CommandResult.newOKCommandResult(); } }; return compose(result, syncCommand, req.getEditingDomain()); } }