diff options
Diffstat (limited to 'extraplugins/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.tabbedproperties.uml/generated/org/eclipse/papyrus/tabbedproperties/uml/components/PackageBasePropertiesEditionComponent.java')
1 files changed, 787 insertions, 0 deletions
diff --git a/extraplugins/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.tabbedproperties.uml/generated/org/eclipse/papyrus/tabbedproperties/uml/components/PackageBasePropertiesEditionComponent.java b/extraplugins/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.tabbedproperties.uml/generated/org/eclipse/papyrus/tabbedproperties/uml/components/PackageBasePropertiesEditionComponent.java new file mode 100644 index 00000000000..2b2c51c4528 --- /dev/null +++ b/extraplugins/deprecated-plugins/uml.deprecated/org.eclipse.papyrus.tabbedproperties.uml/generated/org/eclipse/papyrus/tabbedproperties/uml/components/PackageBasePropertiesEditionComponent.java @@ -0,0 +1,787 @@ +/******************************************************************************* + * Copyright (c) 2009 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.papyrus.tabbedproperties.uml.components; + +// Start of user code for imports + +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.eclipse.emf.common.command.CompoundCommand; +import org.eclipse.emf.common.command.IdentityCommand; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.impl.AdapterImpl; +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.Enumerator; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.Diagnostician; +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.edit.command.AddCommand; +import org.eclipse.emf.edit.command.DeleteCommand; +import org.eclipse.emf.edit.command.MoveCommand; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.eef.runtime.EMFPropertiesRuntime; +import org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent; +import org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionListener; +import org.eclipse.emf.eef.runtime.api.parts.IPropertiesEditionPart; +import org.eclipse.emf.eef.runtime.api.providers.IPropertiesEditionPartProvider; +import org.eclipse.emf.eef.runtime.impl.components.StandardPropertiesEditionComponent; +import org.eclipse.emf.eef.runtime.impl.notify.PropertiesEditionEvent; +import org.eclipse.emf.eef.runtime.impl.services.PropertiesContextService; +import org.eclipse.emf.eef.runtime.impl.services.PropertiesEditionPartProviderService; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.papyrus.tabbedproperties.uml.parts.Package_PropertiesEditionPart; +import org.eclipse.papyrus.tabbedproperties.uml.parts.UMLViewsRepository; +import org.eclipse.uml2.uml.Constraint; +import org.eclipse.uml2.uml.ElementImport; +import org.eclipse.uml2.uml.Package; +import org.eclipse.uml2.uml.PackageImport; +import org.eclipse.uml2.uml.PackageMerge; +import org.eclipse.uml2.uml.PackageableElement; +import org.eclipse.uml2.uml.TemplateBinding; +import org.eclipse.uml2.uml.UMLPackage; +import org.eclipse.uml2.uml.VisibilityKind; + +// End of user code + +/** + * @author <a href="mailto:jerome.benois@obeo.fr">Jerome Benois</a> + */ +public class PackageBasePropertiesEditionComponent extends StandardPropertiesEditionComponent { + + public static String BASE_PART = "Base"; //$NON-NLS-1$ + + private String[] parts = { BASE_PART }; + + /** + * The EObject to edit + */ + private Package package_; + + /** + * The Base part + */ + private Package_PropertiesEditionPart basePart; + + /** + * Default constructor + */ + public PackageBasePropertiesEditionComponent(EObject package_, String editing_mode) { + if(package_ instanceof Package) { + this.package_ = (Package)package_; + if(IPropertiesEditionComponent.LIVE_MODE.equals(editing_mode)) { + semanticAdapter = initializeSemanticAdapter(); + this.package_.eAdapters().add(semanticAdapter); + } + } + this.editing_mode = editing_mode; + } + + /** + * Initialize the semantic model listener for live editing mode + * + * @return the semantic model listener + */ + private AdapterImpl initializeSemanticAdapter() { + return new EContentAdapter() { + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.common.notify.impl.AdapterImpl#notifyChanged(org.eclipse.emf.common.notify.Notification) + */ + public void notifyChanged(Notification msg) { + if(basePart == null) + PackageBasePropertiesEditionComponent.this.dispose(); + else { + if(UMLPackage.eINSTANCE.getNamedElement_Name().equals(msg.getFeature()) && basePart != null) { + if(msg.getNewValue() != null) { + basePart.setName((String)msg.getNewValue()); + } else { + basePart.setName(""); + } + } + if(UMLPackage.eINSTANCE.getNamedElement_Visibility().equals(msg.getFeature()) && basePart != null) + basePart.setVisibility((Enumerator)msg.getNewValue()); + + if(msg.getFeature() != null && + (((EStructuralFeature)msg.getFeature()) == UMLPackage.eINSTANCE.getNamespace_ElementImport() + || ((EStructuralFeature)msg.getFeature()).getEContainingClass() == UMLPackage.eINSTANCE.getNamespace_ElementImport())) { + basePart.updateElementImport(package_); + } + if(msg.getFeature() != null && + (((EStructuralFeature)msg.getFeature()) == UMLPackage.eINSTANCE.getNamespace_PackageImport() + || ((EStructuralFeature)msg.getFeature()).getEContainingClass() == UMLPackage.eINSTANCE.getNamespace_PackageImport())) { + basePart.updatePackageImport(package_); + } + if(msg.getFeature() != null && + (((EStructuralFeature)msg.getFeature()) == UMLPackage.eINSTANCE.getNamespace_OwnedRule() + || ((EStructuralFeature)msg.getFeature()).getEContainingClass() == UMLPackage.eINSTANCE.getNamespace_OwnedRule())) { + basePart.updateOwnedRule(package_); + } + if(msg.getFeature() != null && + (((EStructuralFeature)msg.getFeature()) == UMLPackage.eINSTANCE.getTemplateableElement_TemplateBinding() + || ((EStructuralFeature)msg.getFeature()).getEContainingClass() == UMLPackage.eINSTANCE.getTemplateableElement_TemplateBinding())) { + basePart.updateTemplateBinding(package_); + } + if(msg.getFeature() != null && + (((EStructuralFeature)msg.getFeature()) == UMLPackage.eINSTANCE.getPackage_PackageMerge() + || ((EStructuralFeature)msg.getFeature()).getEContainingClass() == UMLPackage.eINSTANCE.getPackage_PackageMerge())) { + basePart.updatePackageMerge(package_); + } + if(msg.getFeature() != null && + (((EStructuralFeature)msg.getFeature()) == UMLPackage.eINSTANCE.getPackage_PackagedElement() + || ((EStructuralFeature)msg.getFeature()).getEContainingClass() == UMLPackage.eINSTANCE.getPackage_PackagedElement())) { + basePart.updatePackagedElement(package_); + } + + + } + } + + }; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.impl.components.StandardPropertiesEditionComponent#translatePart(java.lang.String) + */ + public java.lang.Class translatePart(String key) { + if(BASE_PART.equals(key)) + return UMLViewsRepository.Package_.class; + return super.translatePart(key); + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#partsList() + */ + public String[] partsList() { + return parts; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#getPropertiesEditionPart (java.lang.String, java.lang.String) + */ + public IPropertiesEditionPart getPropertiesEditionPart(int kind, String key) { + if(package_ != null && BASE_PART.equals(key)) { + if(basePart == null) { + IPropertiesEditionPartProvider provider = PropertiesEditionPartProviderService.getInstance().getProvider(UMLViewsRepository.class); + if(provider != null) { + basePart = (Package_PropertiesEditionPart)provider.getPropertiesEditionPart(UMLViewsRepository.Package_.class, kind, this); + addListener((IPropertiesEditionListener)basePart); + } + } + return (IPropertiesEditionPart)basePart; + } + return null; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.impl.components.StandardPropertiesEditionComponent# setPropertiesEditionPart(java.lang.Class, int, + * org.eclipse.emf.eef.runtime.api.parts.IPropertiesEditionPart) + */ + public void setPropertiesEditionPart(java.lang.Class key, int kind, IPropertiesEditionPart propertiesEditionPart) { + if(key == UMLViewsRepository.Package_.class) + this.basePart = (Package_PropertiesEditionPart)propertiesEditionPart; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#initPart(java.lang.Class, int, org.eclipse.emf.ecore.EObject, + * org.eclipse.emf.ecore.resource.ResourceSet) + */ + public void initPart(java.lang.Class key, int kind, EObject elt, ResourceSet allResource) { + if(basePart != null && key == UMLViewsRepository.Package_.class) { + ((IPropertiesEditionPart)basePart).setContext(elt, allResource); + final Package package_ = (Package)elt; + // init values + if(package_.getName() != null) + basePart.setName(package_.getName()); + + basePart.initVisibility((EEnum)UMLPackage.eINSTANCE.getNamedElement_Visibility().getEType(), package_.getVisibility()); + basePart.initElementImport(package_, null, UMLPackage.eINSTANCE.getNamespace_ElementImport()); + basePart.initPackageImport(package_, null, UMLPackage.eINSTANCE.getNamespace_PackageImport()); + basePart.initOwnedRule(package_, null, UMLPackage.eINSTANCE.getNamespace_OwnedRule()); + basePart.initTemplateBinding(package_, null, UMLPackage.eINSTANCE.getTemplateableElement_TemplateBinding()); + basePart.initPackageMerge(package_, null, UMLPackage.eINSTANCE.getPackage_PackageMerge()); + basePart.initPackagedElement(package_, null, UMLPackage.eINSTANCE.getPackage_PackagedElement()); + + // init filters + + + basePart.addFilterToElementImport(new ViewerFilter() { + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + return (element instanceof String && element.equals("")) || (element instanceof ElementImport); //$NON-NLS-1$ + + } + + }); + // Start of user code for additional businessfilters for elementImport + + // End of user code + basePart.addFilterToPackageImport(new ViewerFilter() { + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + return (element instanceof String && element.equals("")) || (element instanceof PackageImport); //$NON-NLS-1$ + + } + + }); + // Start of user code for additional businessfilters for packageImport + + // End of user code + basePart.addFilterToOwnedRule(new ViewerFilter() { + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + return (element instanceof String && element.equals("")) || (element instanceof Constraint); //$NON-NLS-1$ + + } + + }); + // Start of user code for additional businessfilters for ownedRule + + // End of user code + basePart.addFilterToTemplateBinding(new ViewerFilter() { + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + return (element instanceof String && element.equals("")) || (element instanceof TemplateBinding); //$NON-NLS-1$ + + } + + }); + // Start of user code for additional businessfilters for templateBinding + + // End of user code + basePart.addFilterToPackageMerge(new ViewerFilter() { + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + return (element instanceof String && element.equals("")) || (element instanceof PackageMerge); //$NON-NLS-1$ + + } + + }); + // Start of user code for additional businessfilters for packageMerge + + // End of user code + basePart.addFilterToPackagedElement(new ViewerFilter() { + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) + */ + public boolean select(Viewer viewer, Object parentElement, Object element) { + return (element instanceof String && element.equals("")) || (element instanceof PackageableElement); //$NON-NLS-1$ + + } + + }); + // Start of user code for additional businessfilters for packagedElement + + // End of user code + } + // init values for referenced views + + // init filters for referenced views + + } + + + + + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#getPropertiesEditionCommand + * (org.eclipse.emf.edit.domain.EditingDomain) + */ + public CompoundCommand getPropertiesEditionCommand(EditingDomain editingDomain) { + CompoundCommand cc = new CompoundCommand(); + if(package_ != null) { + cc.append(SetCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getNamedElement_Name(), basePart.getName())); + + cc.append(SetCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getNamedElement_Visibility(), basePart.getVisibility())); + + List elementImportToAddFromElementImport = basePart.getElementImportToAdd(); + for(Iterator iter = elementImportToAddFromElementImport.iterator(); iter.hasNext();) + cc.append(AddCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getNamespace_ElementImport(), iter.next())); + Map elementImportToRefreshFromElementImport = basePart.getElementImportToEdit(); + for(Iterator iter = elementImportToRefreshFromElementImport.keySet().iterator(); iter.hasNext();) { + + + + ElementImport nextElement = (ElementImport)iter.next(); + ElementImport elementImport = (ElementImport)elementImportToRefreshFromElementImport.get(nextElement); + + for(EStructuralFeature feature : nextElement.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + cc.append(SetCommand.create(editingDomain, nextElement, feature, elementImport.eGet(feature))); + } + } + + + + } + List elementImportToRemoveFromElementImport = basePart.getElementImportToRemove(); + for(Iterator iter = elementImportToRemoveFromElementImport.iterator(); iter.hasNext();) + cc.append(DeleteCommand.create(editingDomain, iter.next())); + List elementImportToMoveFromElementImport = basePart.getElementImportToMove(); + for(Iterator iter = elementImportToMoveFromElementImport.iterator(); iter.hasNext();) { + org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement moveElement = (org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement)iter.next(); + cc.append(MoveCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getElementImport(), moveElement.getElement(), moveElement.getIndex())); + } + List packageImportToAddFromPackageImport = basePart.getPackageImportToAdd(); + for(Iterator iter = packageImportToAddFromPackageImport.iterator(); iter.hasNext();) + cc.append(AddCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getNamespace_PackageImport(), iter.next())); + Map packageImportToRefreshFromPackageImport = basePart.getPackageImportToEdit(); + for(Iterator iter = packageImportToRefreshFromPackageImport.keySet().iterator(); iter.hasNext();) { + + + + PackageImport nextElement = (PackageImport)iter.next(); + PackageImport packageImport = (PackageImport)packageImportToRefreshFromPackageImport.get(nextElement); + + for(EStructuralFeature feature : nextElement.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + cc.append(SetCommand.create(editingDomain, nextElement, feature, packageImport.eGet(feature))); + } + } + + + + } + List packageImportToRemoveFromPackageImport = basePart.getPackageImportToRemove(); + for(Iterator iter = packageImportToRemoveFromPackageImport.iterator(); iter.hasNext();) + cc.append(DeleteCommand.create(editingDomain, iter.next())); + List packageImportToMoveFromPackageImport = basePart.getPackageImportToMove(); + for(Iterator iter = packageImportToMoveFromPackageImport.iterator(); iter.hasNext();) { + org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement moveElement = (org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement)iter.next(); + cc.append(MoveCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getPackageImport(), moveElement.getElement(), moveElement.getIndex())); + } + List ownedRuleToAddFromOwnedRule = basePart.getOwnedRuleToAdd(); + for(Iterator iter = ownedRuleToAddFromOwnedRule.iterator(); iter.hasNext();) + cc.append(AddCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getNamespace_OwnedRule(), iter.next())); + Map ownedRuleToRefreshFromOwnedRule = basePart.getOwnedRuleToEdit(); + for(Iterator iter = ownedRuleToRefreshFromOwnedRule.keySet().iterator(); iter.hasNext();) { + + + + Constraint nextElement = (Constraint)iter.next(); + Constraint ownedRule = (Constraint)ownedRuleToRefreshFromOwnedRule.get(nextElement); + + for(EStructuralFeature feature : nextElement.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + cc.append(SetCommand.create(editingDomain, nextElement, feature, ownedRule.eGet(feature))); + } + } + + + + } + List ownedRuleToRemoveFromOwnedRule = basePart.getOwnedRuleToRemove(); + for(Iterator iter = ownedRuleToRemoveFromOwnedRule.iterator(); iter.hasNext();) + cc.append(DeleteCommand.create(editingDomain, iter.next())); + List ownedRuleToMoveFromOwnedRule = basePart.getOwnedRuleToMove(); + for(Iterator iter = ownedRuleToMoveFromOwnedRule.iterator(); iter.hasNext();) { + org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement moveElement = (org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement)iter.next(); + cc.append(MoveCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getConstraint(), moveElement.getElement(), moveElement.getIndex())); + } + List templateBindingToAddFromTemplateBinding = basePart.getTemplateBindingToAdd(); + for(Iterator iter = templateBindingToAddFromTemplateBinding.iterator(); iter.hasNext();) + cc.append(AddCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getTemplateableElement_TemplateBinding(), iter.next())); + Map templateBindingToRefreshFromTemplateBinding = basePart.getTemplateBindingToEdit(); + for(Iterator iter = templateBindingToRefreshFromTemplateBinding.keySet().iterator(); iter.hasNext();) { + + + + TemplateBinding nextElement = (TemplateBinding)iter.next(); + TemplateBinding templateBinding = (TemplateBinding)templateBindingToRefreshFromTemplateBinding.get(nextElement); + + for(EStructuralFeature feature : nextElement.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + cc.append(SetCommand.create(editingDomain, nextElement, feature, templateBinding.eGet(feature))); + } + } + + + + } + List templateBindingToRemoveFromTemplateBinding = basePart.getTemplateBindingToRemove(); + for(Iterator iter = templateBindingToRemoveFromTemplateBinding.iterator(); iter.hasNext();) + cc.append(DeleteCommand.create(editingDomain, iter.next())); + List templateBindingToMoveFromTemplateBinding = basePart.getTemplateBindingToMove(); + for(Iterator iter = templateBindingToMoveFromTemplateBinding.iterator(); iter.hasNext();) { + org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement moveElement = (org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement)iter.next(); + cc.append(MoveCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getTemplateBinding(), moveElement.getElement(), moveElement.getIndex())); + } + List packageMergeToAddFromPackageMerge = basePart.getPackageMergeToAdd(); + for(Iterator iter = packageMergeToAddFromPackageMerge.iterator(); iter.hasNext();) + cc.append(AddCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getPackage_PackageMerge(), iter.next())); + Map packageMergeToRefreshFromPackageMerge = basePart.getPackageMergeToEdit(); + for(Iterator iter = packageMergeToRefreshFromPackageMerge.keySet().iterator(); iter.hasNext();) { + + + + PackageMerge nextElement = (PackageMerge)iter.next(); + PackageMerge packageMerge = (PackageMerge)packageMergeToRefreshFromPackageMerge.get(nextElement); + + for(EStructuralFeature feature : nextElement.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + cc.append(SetCommand.create(editingDomain, nextElement, feature, packageMerge.eGet(feature))); + } + } + + + + } + List packageMergeToRemoveFromPackageMerge = basePart.getPackageMergeToRemove(); + for(Iterator iter = packageMergeToRemoveFromPackageMerge.iterator(); iter.hasNext();) + cc.append(DeleteCommand.create(editingDomain, iter.next())); + List packageMergeToMoveFromPackageMerge = basePart.getPackageMergeToMove(); + for(Iterator iter = packageMergeToMoveFromPackageMerge.iterator(); iter.hasNext();) { + org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement moveElement = (org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement)iter.next(); + cc.append(MoveCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getPackageMerge(), moveElement.getElement(), moveElement.getIndex())); + } + List packagedElementToAddFromPackagedElement = basePart.getPackagedElementToAdd(); + for(Iterator iter = packagedElementToAddFromPackagedElement.iterator(); iter.hasNext();) + cc.append(AddCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getPackage_PackagedElement(), iter.next())); + Map packagedElementToRefreshFromPackagedElement = basePart.getPackagedElementToEdit(); + for(Iterator iter = packagedElementToRefreshFromPackagedElement.keySet().iterator(); iter.hasNext();) { + + + + PackageableElement nextElement = (PackageableElement)iter.next(); + PackageableElement packagedElement = (PackageableElement)packagedElementToRefreshFromPackagedElement.get(nextElement); + + for(EStructuralFeature feature : nextElement.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + cc.append(SetCommand.create(editingDomain, nextElement, feature, packagedElement.eGet(feature))); + } + } + + + + } + List packagedElementToRemoveFromPackagedElement = basePart.getPackagedElementToRemove(); + for(Iterator iter = packagedElementToRemoveFromPackagedElement.iterator(); iter.hasNext();) + cc.append(DeleteCommand.create(editingDomain, iter.next())); + List packagedElementToMoveFromPackagedElement = basePart.getPackagedElementToMove(); + for(Iterator iter = packagedElementToMoveFromPackagedElement.iterator(); iter.hasNext();) { + org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement moveElement = (org.eclipse.emf.eef.runtime.impl.utils.EMFListEditUtil.MoveElement)iter.next(); + cc.append(MoveCommand.create(editingDomain, package_, UMLPackage.eINSTANCE.getPackageableElement(), moveElement.getElement(), moveElement.getIndex())); + } + + + } + if(!cc.isEmpty()) + return cc; + cc.append(IdentityCommand.INSTANCE); + return cc; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#getPropertiesEditionObject() + */ + public EObject getPropertiesEditionObject(EObject source) { + if(source instanceof Package) { + Package package_ToUpdate = (Package)source; + package_ToUpdate.setName(basePart.getName()); + + package_ToUpdate.setVisibility((VisibilityKind)basePart.getVisibility()); + + package_ToUpdate.getElementImports().addAll(basePart.getElementImportToAdd()); + package_ToUpdate.getPackageImports().addAll(basePart.getPackageImportToAdd()); + package_ToUpdate.getOwnedRules().addAll(basePart.getOwnedRuleToAdd()); + package_ToUpdate.getTemplateBindings().addAll(basePart.getTemplateBindingToAdd()); + package_ToUpdate.getPackageMerges().addAll(basePart.getPackageMergeToAdd()); + package_ToUpdate.getPackagedElements().addAll(basePart.getPackagedElementToAdd()); + + + return package_ToUpdate; + } else + return null; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.notify.IPropertiesEditionListener#firePropertiesChanged(org.eclipse.emf.common.notify.Notification) + */ + public void firePropertiesChanged(PropertiesEditionEvent event) { + super.firePropertiesChanged(event); + if(PropertiesEditionEvent.COMMIT == event.getState() && IPropertiesEditionComponent.LIVE_MODE.equals(editing_mode)) { + CompoundCommand command = new CompoundCommand(); + if(UMLViewsRepository.Package_.name == event.getAffectedEditor()) + command.append(SetCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getNamedElement_Name(), event.getNewValue())); + + if(UMLViewsRepository.Package_.visibility == event.getAffectedEditor()) + command.append(SetCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getNamedElement_Visibility(), event.getNewValue())); + + if(UMLViewsRepository.Package_.elementImport == event.getAffectedEditor()) { + if(PropertiesEditionEvent.SET == event.getKind()) { + ElementImport oldValue = (ElementImport)event.getOldValue(); + ElementImport newValue = (ElementImport)event.getNewValue(); + + + // TODO: Complete the package_ update command + for(EStructuralFeature feature : newValue.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + command.append(SetCommand.create(liveEditingDomain, oldValue, feature, newValue.eGet(feature))); + } + } + + + } else if(PropertiesEditionEvent.ADD == event.getKind()) + command.append(AddCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getNamespace_ElementImport(), event.getNewValue())); + else if(PropertiesEditionEvent.REMOVE == event.getKind()) + command.append(DeleteCommand.create(liveEditingDomain, event.getNewValue())); + else if(PropertiesEditionEvent.MOVE == event.getKind()) + command.append(MoveCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getElementImport(), event.getNewValue(), event.getNewIndex())); + } + if(UMLViewsRepository.Package_.packageImport == event.getAffectedEditor()) { + if(PropertiesEditionEvent.SET == event.getKind()) { + PackageImport oldValue = (PackageImport)event.getOldValue(); + PackageImport newValue = (PackageImport)event.getNewValue(); + + + // TODO: Complete the package_ update command + for(EStructuralFeature feature : newValue.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + command.append(SetCommand.create(liveEditingDomain, oldValue, feature, newValue.eGet(feature))); + } + } + + + } else if(PropertiesEditionEvent.ADD == event.getKind()) + command.append(AddCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getNamespace_PackageImport(), event.getNewValue())); + else if(PropertiesEditionEvent.REMOVE == event.getKind()) + command.append(DeleteCommand.create(liveEditingDomain, event.getNewValue())); + else if(PropertiesEditionEvent.MOVE == event.getKind()) + command.append(MoveCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getPackageImport(), event.getNewValue(), event.getNewIndex())); + } + if(UMLViewsRepository.Package_.ownedRule == event.getAffectedEditor()) { + if(PropertiesEditionEvent.SET == event.getKind()) { + Constraint oldValue = (Constraint)event.getOldValue(); + Constraint newValue = (Constraint)event.getNewValue(); + + + // TODO: Complete the package_ update command + for(EStructuralFeature feature : newValue.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + command.append(SetCommand.create(liveEditingDomain, oldValue, feature, newValue.eGet(feature))); + } + } + + + } else if(PropertiesEditionEvent.ADD == event.getKind()) + command.append(AddCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getNamespace_OwnedRule(), event.getNewValue())); + else if(PropertiesEditionEvent.REMOVE == event.getKind()) + command.append(DeleteCommand.create(liveEditingDomain, event.getNewValue())); + else if(PropertiesEditionEvent.MOVE == event.getKind()) + command.append(MoveCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getConstraint(), event.getNewValue(), event.getNewIndex())); + } + if(UMLViewsRepository.Package_.templateBinding == event.getAffectedEditor()) { + if(PropertiesEditionEvent.SET == event.getKind()) { + TemplateBinding oldValue = (TemplateBinding)event.getOldValue(); + TemplateBinding newValue = (TemplateBinding)event.getNewValue(); + + + // TODO: Complete the package_ update command + for(EStructuralFeature feature : newValue.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + command.append(SetCommand.create(liveEditingDomain, oldValue, feature, newValue.eGet(feature))); + } + } + + + } else if(PropertiesEditionEvent.ADD == event.getKind()) + command.append(AddCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getTemplateableElement_TemplateBinding(), event.getNewValue())); + else if(PropertiesEditionEvent.REMOVE == event.getKind()) + command.append(DeleteCommand.create(liveEditingDomain, event.getNewValue())); + else if(PropertiesEditionEvent.MOVE == event.getKind()) + command.append(MoveCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getTemplateBinding(), event.getNewValue(), event.getNewIndex())); + } + if(UMLViewsRepository.Package_.packageMerge == event.getAffectedEditor()) { + if(PropertiesEditionEvent.SET == event.getKind()) { + PackageMerge oldValue = (PackageMerge)event.getOldValue(); + PackageMerge newValue = (PackageMerge)event.getNewValue(); + + + // TODO: Complete the package_ update command + for(EStructuralFeature feature : newValue.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + command.append(SetCommand.create(liveEditingDomain, oldValue, feature, newValue.eGet(feature))); + } + } + + + } else if(PropertiesEditionEvent.ADD == event.getKind()) + command.append(AddCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getPackage_PackageMerge(), event.getNewValue())); + else if(PropertiesEditionEvent.REMOVE == event.getKind()) + command.append(DeleteCommand.create(liveEditingDomain, event.getNewValue())); + else if(PropertiesEditionEvent.MOVE == event.getKind()) + command.append(MoveCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getPackageMerge(), event.getNewValue(), event.getNewIndex())); + } + if(UMLViewsRepository.Package_.packagedElement == event.getAffectedEditor()) { + if(PropertiesEditionEvent.SET == event.getKind()) { + PackageableElement oldValue = (PackageableElement)event.getOldValue(); + PackageableElement newValue = (PackageableElement)event.getNewValue(); + + + // TODO: Complete the package_ update command + for(EStructuralFeature feature : newValue.eClass().getEAllStructuralFeatures()) { + if(feature.isChangeable() && !(feature instanceof EReference && ((EReference)feature).isContainer())) { + command.append(SetCommand.create(liveEditingDomain, oldValue, feature, newValue.eGet(feature))); + } + } + + + } else if(PropertiesEditionEvent.ADD == event.getKind()) + command.append(AddCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getPackage_PackagedElement(), event.getNewValue())); + else if(PropertiesEditionEvent.REMOVE == event.getKind()) + command.append(DeleteCommand.create(liveEditingDomain, event.getNewValue())); + else if(PropertiesEditionEvent.MOVE == event.getKind()) + command.append(MoveCommand.create(liveEditingDomain, package_, UMLPackage.eINSTANCE.getPackageableElement(), event.getNewValue(), event.getNewIndex())); + } + + + if(!command.isEmpty() && !command.canExecute()) { + EMFPropertiesRuntime.getDefault().logError("Cannot perform model change command.", null); + } else { + liveEditingDomain.getCommandStack().execute(command); + } + } else if(PropertiesEditionEvent.CHANGE == event.getState()) { + Diagnostic diag = this.validateValue(event); + if(diag != null && diag.getSeverity() != Diagnostic.OK) { + if(UMLViewsRepository.Package_.name == event.getAffectedEditor()) + basePart.setMessageForName(diag.getMessage(), IMessageProvider.ERROR); + + + + + + } else { + if(UMLViewsRepository.Package_.name == event.getAffectedEditor()) + basePart.unsetMessageForName(); + + + + + + } + } + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#validateValue(org.eclipse.emf.common.notify.Notification) + */ + public Diagnostic validateValue(PropertiesEditionEvent event) { + Diagnostic ret = null; + if(event.getNewValue() != null) { + String newStringValue = event.getNewValue().toString(); + try { + if(UMLViewsRepository.Package_.name == event.getAffectedEditor()) { + Object newValue = EcoreUtil.createFromString(UMLPackage.eINSTANCE.getNamedElement_Name().getEAttributeType(), newStringValue); + ret = Diagnostician.INSTANCE.validate(UMLPackage.eINSTANCE.getNamedElement_Name().getEAttributeType(), newValue); + } + if(UMLViewsRepository.Package_.visibility == event.getAffectedEditor()) { + Object newValue = EcoreUtil.createFromString(UMLPackage.eINSTANCE.getNamedElement_Visibility().getEAttributeType(), newStringValue); + ret = Diagnostician.INSTANCE.validate(UMLPackage.eINSTANCE.getNamedElement_Visibility().getEAttributeType(), newValue); + } + + } catch (IllegalArgumentException iae) { + ret = BasicDiagnostic.toDiagnostic(iae); + } + } + return ret; + } + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#validate() + */ + public Diagnostic validate() { + Diagnostic validate = null; + if(IPropertiesEditionComponent.BATCH_MODE.equals(editing_mode)) { + EObject copy = EcoreUtil.copy(PropertiesContextService.getInstance().entryPointElement()); + copy = PropertiesContextService.getInstance().entryPointComponent().getPropertiesEditionObject(copy); + validate = Diagnostician.INSTANCE.validate(copy); + } else if(IPropertiesEditionComponent.LIVE_MODE.equals(editing_mode)) + validate = Diagnostician.INSTANCE.validate(package_); + // Start of user code for custom validation check + + // End of user code + + return validate; + } + + + /** + * {@inheritDoc} + * + * @see org.eclipse.emf.eef.runtime.api.component.IPropertiesEditionComponent#dispose() + */ + public void dispose() { + if(semanticAdapter != null) + package_.eAdapters().remove(semanticAdapter); + } + +} |