diff options
author | Maxime PORHEL | 2014-02-26 10:44:38 +0000 |
---|---|---|
committer | Maxime PORHEL | 2014-02-28 14:10:59 +0000 |
commit | 255cdeba836ce6759938f8945aa037cbd7207119 (patch) | |
tree | 80ffaf34d6313a36a1e44edbdfcac53ab7d6afbf /plugins/org.eclipse.sirius.editor/src-gen | |
parent | 975cbd1a70d510167185a00b0ac0a2756a857aa6 (diff) | |
download | org.eclipse.sirius-255cdeba836ce6759938f8945aa037cbd7207119.tar.gz org.eclipse.sirius-255cdeba836ce6759938f8945aa037cbd7207119.tar.xz org.eclipse.sirius-255cdeba836ce6759938f8945aa037cbd7207119.zip |
[427803] Remove diagram dependency from
EStructuralFeatureCustomizationAppliedOnPropertySection
Change-Id: If5f7cc82d4352412047bce2e79c7ad4fdad2df7b
Signed-off-by: Maxime PORHEL <maxime.porhel@obeo.fr>
Diffstat (limited to 'plugins/org.eclipse.sirius.editor/src-gen')
1 files changed, 36 insertions, 38 deletions
diff --git a/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/properties/sections/description/estructuralfeaturecustomization/EStructuralFeatureCustomizationAppliedOnPropertySection.java b/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/properties/sections/description/estructuralfeaturecustomization/EStructuralFeatureCustomizationAppliedOnPropertySection.java index 8feec20cf4..30853ebfdc 100644 --- a/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/properties/sections/description/estructuralfeaturecustomization/EStructuralFeatureCustomizationAppliedOnPropertySection.java +++ b/plugins/org.eclipse.sirius.editor/src-gen/org/eclipse/sirius/editor/properties/sections/description/estructuralfeaturecustomization/EStructuralFeatureCustomizationAppliedOnPropertySection.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2013 THALES GLOBAL SERVICES. + * Copyright (c) 2007, 2014 THALES GLOBAL SERVICES. * 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 @@ -17,9 +17,11 @@ import java.util.List; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; -import org.eclipse.emf.ecore.EClassifier; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.sirius.business.api.dialect.DialectManager; +import org.eclipse.sirius.common.tools.api.util.StringUtil; import org.eclipse.sirius.editor.editorPlugin.SiriusEditor; import org.eclipse.sirius.editor.properties.sections.common.AbstractEditorDialogPropertySection; import org.eclipse.sirius.viewpoint.description.DescriptionPackage; @@ -29,7 +31,6 @@ import org.eclipse.sirius.viewpoint.description.EStructuralFeatureCustomization; import org.eclipse.sirius.viewpoint.description.style.BasicLabelStyleDescription; import org.eclipse.sirius.viewpoint.description.style.LabelBorderStyleDescription; import org.eclipse.sirius.viewpoint.description.style.StyleDescription; -import org.eclipse.sirius.viewpoint.description.style.StylePackage; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CLabel; import org.eclipse.swt.layout.FormAttachment; @@ -128,55 +129,52 @@ public class EStructuralFeatureCustomizationAppliedOnPropertySection extends Abs */ @Override protected List<?> getChoiceOfValues(List<?> currentValues) { - List<EObject> availableStyleDescriptions = new ArrayList<EObject>(); + List<EObject> customizableElements = new ArrayList<EObject>(); for (Object choiceOfValue : super.getChoiceOfValues(currentValues)) { if (choiceOfValue instanceof EObject) { EObject choice = (EObject) choiceOfValue; - if ((choice instanceof StyleDescription || choice.eContainer() instanceof StyleDescription) - && (choice.eClass().getEPackage() == StylePackage.eINSTANCE || choice.eClass().getEPackage() == org.eclipse.sirius.diagram.description.style.StylePackage.eINSTANCE)) { - if (isStyleDescriptionEltConformToEAttributeCustomization(choice) || isStyleDescriptionEltConformToEReferenceCustomization(choice)) { - availableStyleDescriptions.add(choice); - } + + // Let the dialect tell us if they allow the customizations. + if (DialectManager.INSTANCE.allowsEStructuralFeatureCustomization(choice) && isConformToCustomization(choice)) { + customizableElements.add(choice); } } } - return availableStyleDescriptions; + return customizableElements; } - private boolean isStyleDescriptionEltConformToEAttributeCustomization(EObject choice) { - boolean isStyleDescriptionEltConformToEAttributeCustomization = false; + private boolean isConformToCustomization(EObject choice) { + boolean isConform = false; + // if the feature is null, let the user choose the value, the completion + // will then help him to find the attribute name or the reference name + // from the values. + // See + // org.eclipse.sirius.editor.tools.internal.assist.EAttributeCustomizationAttributeNameContentProposalProvider.bindCompletionProcessor(EAttributeCustomizationAttributeNamePropertySection, + // Text) and + // org.eclipse.sirius.editor.tools.internal.assist.EReferenceCustomizationReferenceNameContentProposalProvider.bindCompletionProcessor(EReferenceCustomizationReferenceNamePropertySection, + // Text) if (eObject instanceof EAttributeCustomization) { EAttributeCustomization eAttributeCustomization = (EAttributeCustomization) eObject; - String attributeName = eAttributeCustomization.getAttributeName(); - if (attributeName != null && attributeName.length() > 0) { - isStyleDescriptionEltConformToEAttributeCustomization = choice.eClass().getEStructuralFeature(attributeName) instanceof EAttribute; - } else { - isStyleDescriptionEltConformToEAttributeCustomization = true; - } + EStructuralFeature feature = getEStructuralFeature(choice.eClass(), eAttributeCustomization.getAttributeName()); + isConform = feature == null || feature instanceof EAttribute; + } else if (eObject instanceof EReferenceCustomization) { + EReferenceCustomization eReferenceCustomization = (EReferenceCustomization) eObject; + EStructuralFeature feature = getEStructuralFeature(choice.eClass(), eReferenceCustomization.getReferenceName()); + isConform = feature == null || feature instanceof EReference && checkValue((EReference) feature, eReferenceCustomization.getValue()); } - return isStyleDescriptionEltConformToEAttributeCustomization; + return isConform; } - private boolean isStyleDescriptionEltConformToEReferenceCustomization(EObject choice) { - boolean isStyleDescriptionEltConformToEReferenceCustomization = false; - if (eObject instanceof EReferenceCustomization) { - EReferenceCustomization eReferenceCustomization = (EReferenceCustomization) eObject; - String referenceName = eReferenceCustomization.getReferenceName(); - EObject value = eReferenceCustomization.getValue(); - if (referenceName != null && referenceName.length() > 0) { - isStyleDescriptionEltConformToEReferenceCustomization = choice.eClass().getEStructuralFeature(referenceName) instanceof EReference; - if (isStyleDescriptionEltConformToEReferenceCustomization && value != null) { - EClassifier eType = choice.eClass().getEStructuralFeature(referenceName).getEType(); - if (eType instanceof EClass) { - EClass type = (EClass) eType; - isStyleDescriptionEltConformToEReferenceCustomization = type.isSuperTypeOf(value.eClass()); - } - } - } else { - isStyleDescriptionEltConformToEReferenceCustomization = true; - } + private boolean checkValue(EReference ref, EObject value) { + EClass eType = ref.getEReferenceType(); + return value != null && eType != null && eType.isSuperTypeOf(value.eClass()); + } + + private EStructuralFeature getEStructuralFeature(EClass eClass, String featureName) { + if (!StringUtil.isEmpty(featureName) && eClass != null) { + return eClass.getEStructuralFeature(featureName); } - return isStyleDescriptionEltConformToEReferenceCustomization; + return null; } @Override |