/***************************************************************************** * Copyright (c) 2010 CEA LIST. * * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - Initial API and implementation */ package org.eclipse.papyrus.uml.diagram.clazz.edit.policies; import org.eclipse.gef.commands.Command; import org.eclipse.gmf.runtime.emf.type.core.IElementType; import org.eclipse.gmf.runtime.emf.type.core.requests.CreateElementRequest; import org.eclipse.papyrus.infra.extendedtypes.types.IExtendedHintedElementType; import org.eclipse.papyrus.infra.extendedtypes.util.ElementTypeUtils; import org.eclipse.papyrus.uml.diagram.clazz.edit.commands.EnumerationLiteralCreateCommand; import org.eclipse.papyrus.uml.diagram.clazz.providers.UMLElementTypes; /** * @generated */ public class EnumerationEnumerationLiteralCompartmentItemSemanticEditPolicy extends UMLBaseItemSemanticEditPolicy { /** * @generated */ public EnumerationEnumerationLiteralCompartmentItemSemanticEditPolicy() { super(UMLElementTypes.Enumeration_2006); } /** * @generated */ protected Command getCreateCommand(CreateElementRequest req) { IElementType requestElementType = req.getElementType(); if(requestElementType == null) { return super.getCreateCommand(req); } IElementType baseElementType = requestElementType; boolean isExtendedType = false; if(requestElementType instanceof IExtendedHintedElementType) { baseElementType = ElementTypeUtils.getClosestDiagramType(requestElementType); if(baseElementType != null) { isExtendedType = true; } else { // no reference element type ID. using the closest super element type to give more opportunities, but can lead to bugs. baseElementType = ElementTypeUtils.findClosestNonExtendedElementType((IExtendedHintedElementType)requestElementType); isExtendedType = true; } } if(UMLElementTypes.EnumerationLiteral_3017 == baseElementType) { if(isExtendedType) { return getExtendedTypeCreationCommand(req, (IExtendedHintedElementType)requestElementType); } return getGEFWrapper(new EnumerationLiteralCreateCommand(req)); } return super.getCreateCommand(req); } }