| /* |
| * Copyright (c) 2005 IBM Corporation and others. |
| * 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: |
| * IBM - initial API and implementation |
| * |
| * $Id: GenerateEcoreStereotypesAction.java,v 1.1 2005/04/14 17:32:07 khussey Exp $ |
| */ |
| package org.eclipse.uml2.examples.ui.actions; |
| |
| import java.util.Collection; |
| |
| import org.eclipse.emf.common.command.Command; |
| import org.eclipse.emf.common.command.UnexecutableCommand; |
| import org.eclipse.emf.edit.domain.EditingDomain; |
| import org.eclipse.uml2.Enumeration; |
| import org.eclipse.uml2.PrimitiveType; |
| import org.eclipse.uml2.Profile; |
| import org.eclipse.uml2.Stereotype; |
| import org.eclipse.uml2.UML2Package; |
| import org.eclipse.uml2.edit.util.ChangeCommand; |
| import org.eclipse.uml2.examples.ui.ExamplesUIPlugin; |
| |
| /** |
| * |
| */ |
| public class GenerateEcoreStereotypesAction |
| extends GenerateProfileAction { |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see org.eclipse.emf.edit.ui.action.CommandAction#createActionCommand(org.eclipse.emf.edit.domain.EditingDomain, |
| * java.util.Collection) |
| */ |
| protected Command createActionCommand(EditingDomain editingDomain, |
| Collection collection) { |
| |
| if (1 == collection.size() |
| && Profile.class.isInstance(collection.toArray()[0])) { |
| |
| final Profile profile = (Profile) collection.toArray()[0]; |
| |
| return new ChangeCommand(editingDomain, new Runnable() { |
| |
| public void run() { |
| Stereotype ePackageStereotype = generateOwnedStereotype( |
| profile, "EPackage", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class packageMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getPackage()); |
| generateExtension(ePackageStereotype, packageMetaclass, |
| false); |
| PrimitiveType stringPrimitiveType = getImportedUML2PrimitiveType( |
| profile, "String"); //$NON-NLS-1$ |
| generateOwnedAttribute(ePackageStereotype, "packageName", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| generateOwnedAttribute(ePackageStereotype, "nsPrefix", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| generateOwnedAttribute(ePackageStereotype, "nsURI", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| generateOwnedAttribute(ePackageStereotype, "basePackage", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| generateOwnedAttribute(ePackageStereotype, "prefix", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| |
| Stereotype eNamedElementStereotype = generateOwnedStereotype( |
| profile, "ENamedElement", true); //$NON-NLS-1$ |
| generateOwnedAttribute(eNamedElementStereotype, "xmlName", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| |
| Stereotype eClassifierStereotype = generateOwnedStereotype( |
| profile, "EClassifier", true); //$NON-NLS-1$ |
| generateGeneralization(eClassifierStereotype, |
| eNamedElementStereotype); |
| generateOwnedAttribute(eClassifierStereotype, |
| "instanceClassName", stringPrimitiveType, 0, 1); //$NON-NLS-1$ |
| |
| Stereotype extendStereotype = generateOwnedStereotype( |
| profile, "Extend", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class generalizationMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getGeneralization()); |
| generateExtension(extendStereotype, |
| generalizationMetaclass, false); |
| |
| Enumeration contentKindEnumeration = generateOwnedEnumeration( |
| profile, "ContentKind"); //$NON-NLS-1$ |
| generateOwnedLiteral(contentKindEnumeration, "Unspecified"); //$NON-NLS-1$ |
| generateOwnedLiteral(contentKindEnumeration, "Empty"); //$NON-NLS-1$ |
| generateOwnedLiteral(contentKindEnumeration, "Simple"); //$NON-NLS-1$ |
| generateOwnedLiteral(contentKindEnumeration, "Mixed"); //$NON-NLS-1$ |
| generateOwnedLiteral(contentKindEnumeration, "ElementOnly"); //$NON-NLS-1$ |
| |
| Stereotype eClassStereotype = generateOwnedStereotype( |
| profile, "EClass", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class classMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getClass_()); |
| org.eclipse.uml2.Class interfaceMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getInterface()); |
| generateExtension(eClassStereotype, classMetaclass, false); |
| generateExtension(eClassStereotype, interfaceMetaclass, |
| false); |
| generateGeneralization(eClassStereotype, |
| eClassifierStereotype); |
| generateOwnedAttribute(eClassStereotype, "className", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| generateOwnedAttribute(eClassStereotype, "xmlContentKind", //$NON-NLS-1$ |
| contentKindEnumeration, 0, 1); |
| |
| Stereotype eDataTypeStereotype = generateOwnedStereotype( |
| profile, "EDataType", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class primitiveTypeMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getPrimitiveType()); |
| generateExtension(eDataTypeStereotype, |
| primitiveTypeMetaclass, false); |
| generateGeneralization(eDataTypeStereotype, |
| eClassifierStereotype); |
| generateOwnedAttribute(eDataTypeStereotype, "dataTypeName", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| |
| Stereotype eEnumStereotype = generateOwnedStereotype( |
| profile, "EEnum", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class enumerationMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getEnumeration()); |
| generateExtension(eEnumStereotype, enumerationMetaclass, |
| false); |
| generateGeneralization(eEnumStereotype, |
| eNamedElementStereotype); |
| generateOwnedAttribute(eEnumStereotype, "enumName", //$NON-NLS-1$ |
| stringPrimitiveType, 0, 1); |
| |
| Stereotype eEnumLiteralStereotype = generateOwnedStereotype( |
| profile, "EEnumLiteral", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class enumerationLiteralMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getEnumerationLiteral()); |
| generateExtension(eEnumLiteralStereotype, |
| enumerationLiteralMetaclass, false); |
| generateGeneralization(eEnumLiteralStereotype, |
| eNamedElementStereotype); |
| generateOwnedAttribute(eEnumLiteralStereotype, |
| "enumLiteralName", stringPrimitiveType, 0, 1); //$NON-NLS-1$ |
| |
| Stereotype eOperationStereotype = generateOwnedStereotype( |
| profile, "EOperation", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class operationMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getOperation()); |
| generateExtension(eOperationStereotype, operationMetaclass, |
| false); |
| generateOwnedAttribute(eOperationStereotype, |
| "operationName", stringPrimitiveType, 0, 1); //$NON-NLS-1$ |
| |
| Stereotype eParameterStereotype = generateOwnedStereotype( |
| profile, "EParameter", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class parameterMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getParameter()); |
| generateExtension(eParameterStereotype, parameterMetaclass, |
| false); |
| generateOwnedAttribute(eParameterStereotype, |
| "parameterName", stringPrimitiveType, 0, 1); //$NON-NLS-1$ |
| |
| Enumeration featureKindEnumeration = generateOwnedEnumeration( |
| profile, "FeatureKind"); //$NON-NLS-1$ |
| generateOwnedLiteral(featureKindEnumeration, "Unspecified"); //$NON-NLS-1$ |
| generateOwnedLiteral(featureKindEnumeration, "Simple"); //$NON-NLS-1$ |
| generateOwnedLiteral(featureKindEnumeration, "Attribute"); //$NON-NLS-1$ |
| generateOwnedLiteral(featureKindEnumeration, "Element"); //$NON-NLS-1$ |
| |
| Enumeration visibilityKindEnumeration = generateOwnedEnumeration( |
| profile, "VisibilityKind"); //$NON-NLS-1$ |
| generateOwnedLiteral(visibilityKindEnumeration, |
| "Unspecified"); //$NON-NLS-1$ |
| generateOwnedLiteral(visibilityKindEnumeration, "None"); //$NON-NLS-1$ |
| generateOwnedLiteral(visibilityKindEnumeration, "ReadOnly"); //$NON-NLS-1$ |
| generateOwnedLiteral(visibilityKindEnumeration, "ReadWrite"); //$NON-NLS-1$ |
| generateOwnedLiteral(visibilityKindEnumeration, |
| "ReadOnlyUnsettable"); //$NON-NLS-1$ |
| generateOwnedLiteral(visibilityKindEnumeration, |
| "ReadWriteUnsettable"); //$NON-NLS-1$ |
| |
| Stereotype eStructuralFeatureStereotype = generateOwnedStereotype( |
| profile, "EStructuralFeature", true); //$NON-NLS-1$ |
| generateGeneralization(eStructuralFeatureStereotype, |
| eNamedElementStereotype); |
| PrimitiveType booleanPrimitiveType = getImportedUML2PrimitiveType( |
| profile, "Boolean"); //$NON-NLS-1$ |
| generateOwnedAttribute(eStructuralFeatureStereotype, |
| "isTransient", booleanPrimitiveType, 0, 1); //$NON-NLS-1$ |
| generateOwnedAttribute(eStructuralFeatureStereotype, |
| "isVolatile", booleanPrimitiveType, 0, 1); //$NON-NLS-1$ |
| generateOwnedAttribute(eStructuralFeatureStereotype, |
| "isUnsettable", booleanPrimitiveType, 0, 1); //$NON-NLS-1$ |
| generateOwnedAttribute(eStructuralFeatureStereotype, |
| "xmlNamespace", booleanPrimitiveType, 0, 1); //$NON-NLS-1$ |
| generateOwnedAttribute(eStructuralFeatureStereotype, |
| "xmlFeatureKind", booleanPrimitiveType, 0, 1); //$NON-NLS-1$ |
| generateOwnedAttribute(eStructuralFeatureStereotype, |
| "visibility", booleanPrimitiveType, 0, 1); //$NON-NLS-1$ |
| |
| Stereotype eAttributeStereotype = generateOwnedStereotype( |
| profile, "EAttribute", false); //$NON-NLS-1$ |
| org.eclipse.uml2.Class propertyMetaclass = getReferencedUML2Metaclass( |
| profile, UML2Package.eINSTANCE.getProperty()); |
| generateExtension(eAttributeStereotype, propertyMetaclass, |
| false); |
| generateGeneralization(eAttributeStereotype, |
| eStructuralFeatureStereotype); |
| generateOwnedAttribute(eAttributeStereotype, |
| "attributeName", stringPrimitiveType, 0, 1); //$NON-NLS-1$ |
| generateOwnedAttribute(eAttributeStereotype, |
| "isID", booleanPrimitiveType, 0, 1); //$NON-NLS-1$ |
| |
| Stereotype eReferenceStereotype = generateOwnedStereotype( |
| profile, "EReference", false); //$NON-NLS-1$ |
| generateExtension(eReferenceStereotype, propertyMetaclass, |
| false); |
| generateGeneralization(eReferenceStereotype, |
| eStructuralFeatureStereotype); |
| generateOwnedAttribute(eReferenceStereotype, |
| "referenceName", stringPrimitiveType, 0, 1); //$NON-NLS-1$ |
| generateOwnedAttribute(eReferenceStereotype, |
| "isResolveProxies", booleanPrimitiveType, 0, 1) //$NON-NLS-1$ |
| .setBooleanDefault(true); |
| } |
| }, ExamplesUIPlugin.getDefault().getString( |
| "_UI_GenerateEcoreStereotypesActionCommand_label", //$NON-NLS-1$ |
| new Object[]{getLabelProvider().getText(profile)})); |
| } |
| |
| return UnexecutableCommand.INSTANCE; |
| } |
| |
| } |