package org.eclipse.uml2.diagram.common.commands;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.gmf.runtime.common.core.command.CommandResult;
import org.eclipse.gmf.runtime.emf.type.core.commands.EditElementCommand;
import org.eclipse.gmf.runtime.emf.type.core.requests.AbstractEditCommandRequest;
import org.eclipse.uml2.diagram.common.Messages;
import org.eclipse.uml2.uml.Element;
import org.eclipse.uml2.uml.Stereotype;
public class ApplyOrUnapplyStereotypeCommand extends EditElementCommand {
public ApplyOrUnapplyStereotypeCommand(ApplyOrUnapplyStereotypeRequest request) {
super(request.isApplyNotUnapply() ? Messages.ApplyOrUnapplyStereotypeCommand_command_apply_stereotype : Messages.ApplyOrUnapplyStereotypeCommand_command_unapply_stereotype, request
.getElement(), request);
}
@Override
protected CommandResult doExecuteWithResult(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
ApplyOrUnapplyStereotypeRequest request = (ApplyOrUnapplyStereotypeRequest) getRequest();
if (request.isApplyNotUnapply()) {
request.getElement().applyStereotype(request.getStereotype());
} else {
request.getElement().unapplyStereotype(request.getStereotype());
}
return CommandResult.newOKCommandResult(request.getElement());
}
public static class ApplyOrUnapplyStereotypeRequest extends AbstractEditCommandRequest {
private final Element myElement;
private final Stereotype myStereotype;
private final boolean myApplyNotUnapply;
public ApplyOrUnapplyStereotypeRequest(Element element, Stereotype stereotype, boolean applyNotUnapply) {
super(TransactionUtil.getEditingDomain(element));
myElement = element;
myStereotype = stereotype;
myApplyNotUnapply = applyNotUnapply;
}
public Stereotype getStereotype() {
return myStereotype;
}
public Element getElement() {
return myElement;
}
public boolean isApplyNotUnapply() {
return myApplyNotUnapply;
}
public Object getEditHelperContext() {
return null;
}
}
}