Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessor.java341
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessorWithFiltering.java30
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultRulesProvider.java20
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DialogModelOperationPreprocessor.java14
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/IDescriptionPreprocessor.java4
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/OverridesProvider.java75
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/PreconfiguredPreprocessor.java6
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/ViewDescriptionPreprocessor.java6
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/WizardModelOperationPreprocessor.java14
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupDescriptionPreprocessor.java29
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupOverrideDescriptionPreprocessor.java37
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/OverrideDescriptionPreprocessor.java51
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageDescriptionPreprocessor.java39
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageOverrideDescriptionPreprocessor.java37
-rw-r--r--plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PropertiesDescriptionPreprocessorSwitch.java81
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/META-INF/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/Overrides.odesign39
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/README.txt (renamed from plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/README.txt)0
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/expected.odesign (renamed from plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/expected.odesign)0
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/input.odesign (renamed from plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/input.odesign)0
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/input2.odesign (renamed from plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/input2.odesign)0
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/processed.odesign1624
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/expected.odesign61
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/input.odesign234
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/processed.odesign32
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorExtendsTest.java (renamed from plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorTest.java)11
-rw-r--r--plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorOverridesTest.java214
-rw-r--r--plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/dialog/DialogTask.java3
-rw-r--r--plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/tabprovider/SiriusTabDescriptorProvider.java4
-rw-r--r--plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/wizard/WizardTask.java3
30 files changed, 2873 insertions, 142 deletions
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessor.java
index a5389544a5..0c5e75f3d6 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessor.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessor.java
@@ -24,6 +24,7 @@ import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.sirius.common.interpreter.api.IEvaluationResult;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+import org.eclipse.sirius.properties.AbstractOverrideDescription;
import org.eclipse.sirius.properties.PropertiesPackage;
import org.eclipse.sirius.properties.core.internal.SiriusPropertiesCorePlugin;
@@ -44,8 +45,8 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
protected static final String EXTENDS_FEATURE_NAME = "extends"; //$NON-NLS-1$
/**
- * <<<<<<< HEAD The type of Sirius description for which this default preprocessor is configured. ======= A generic
- * name representing the semantic validation rules and the property validation rules.
+ * The type of Sirius description for which this default preprocessor is configured. A generic name representing the
+ * semantic validation rules and the property validation rules.
*/
private static final String VALIDATION_RULES_FEATURE_NAME = "validationRules"; //$NON-NLS-1$
@@ -59,14 +60,14 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
* Creates a new default preprocessor.
*
* @param descriptionClass
- * the SIRIUS_DESCRIPTION class.
+ * the SIRIUS class.
*/
public DefaultDescriptionPreprocessor(Class<SIRIUS> descriptionClass) {
this.descriptionClass = descriptionClass;
}
@Override
- public EObject convert(EObject originalDescription, TransformationCache cache, IInterpreter interpreter, IVariableManager variableManager) {
+ public EObject convert(EObject originalDescription, TransformationCache cache, IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
SIRIUS processedDescription = null;
if (this.descriptionClass.isAssignableFrom(originalDescription.getClass())) {
EObject createdDescription = originalDescription.eClass().getEPackage().getEFactoryInstance().create(originalDescription.eClass());
@@ -75,7 +76,8 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
processedDescription = this.descriptionClass.cast(createdDescription);
cache.put(originalDescription, processedDescription);
SIRIUS siriusOriginalDescription = this.descriptionClass.cast(originalDescription);
- this.processDescriptionPropertiesRecursively(processedDescription, siriusOriginalDescription, cache, interpreter, variableManager);
+ this.processDescriptionOverrides(processedDescription, siriusOriginalDescription, cache, interpreter, variableManager, overridesProvider);
+ this.processDescriptionPropertiesRecursively(processedDescription, siriusOriginalDescription, cache, interpreter, variableManager, overridesProvider);
}
}
return processedDescription;
@@ -85,22 +87,70 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
* Processes all the properties of a description by resolving the inheritance relations.
*
* @param processedDescription
- * the resulting description.
+ * The processed description
* @param originalDescription
- * the original description.
+ * The original description
* @param cache
- * the processing cache.
+ * The transformation cache
* @param interpreter
- * the interpreter.
+ * The interpreter
* @param variableManager
- * the variable manager.
+ * The variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override description
+ */
+ private void processDescriptionOverrides(SIRIUS processedDescription, SIRIUS originalDescription, TransformationCache cache, IInterpreter interpreter, IVariableManager variableManager,
+ OverridesProvider overridesProvider) {
+ Optional<OverridesProvider> overridesProviderOpt = Optional.ofNullable(overridesProvider);
+ overridesProviderOpt.ifPresent(provider -> {
+ // We get the values of the first override we found, in case of
+ // multiple overrides the others are ignored
+ provider.getOverrideDescriptions(originalDescription).stream().findFirst().ifPresent(overrideDescription -> {
+ // Copy all the structural feature values from the
+ // override
+ Optional<IDescriptionPreprocessor> optionalOverrideDescriptionPreprocessor = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(overrideDescription);
+ optionalOverrideDescriptionPreprocessor.ifPresent(overrideDescriptionPreprocessor -> {
+ IDescriptionPreprocessor descriptionPreprocessor = optionalOverrideDescriptionPreprocessor.get();
+ if (descriptionPreprocessor instanceof DefaultDescriptionPreprocessor<?>) {
+ DefaultDescriptionPreprocessor<?> preprocessor = (DefaultDescriptionPreprocessor<?>) descriptionPreprocessor;
+ EObject processedOverrideDescription = preprocessor.convert(overrideDescription, cache, interpreter, variableManager, overridesProvider);
+ for (EStructuralFeature eStructuralFeature : processedOverrideDescription.eClass().getEAllStructuralFeatures()) {
+ if (processedOverrideDescription.eIsSet(eStructuralFeature)) {
+ if (processedDescription.eClass().getEStructuralFeature(eStructuralFeature.getName()) != null) {
+ processedDescription.eSet(eStructuralFeature, processedOverrideDescription.eGet(eStructuralFeature));
+ }
+ }
+ }
+ }
+ });
+ });
+ });
+
+ }
+
+ /**
+ * Processes all the properties of a description by resolving the inheritance relations. >>>>>>> dc995af... [496065]
+ * Add support for the overrides in the preprocessing.
+ *
+ * @param processedDescription
+ * the resulting description
+ * @param originalDescription
+ * the original description
+ * @param cache
+ * the processing cache
+ * @param interpreter
+ * the interpreter
+ * @param variableManager
+ * the variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
*/
protected void processDescriptionPropertiesRecursively(SIRIUS processedDescription, SIRIUS originalDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
Optional<SIRIUS> currentDescription = Optional.of(originalDescription);
while (currentDescription.isPresent()) {
for (EStructuralFeature feature : currentDescription.get().eClass().getEAllStructuralFeatures()) {
- this.processDescriptionFeature(feature, processedDescription, currentDescription.get(), cache, interpreter, variableManager);
+ this.processDescriptionFeature(feature, processedDescription, currentDescription.get(), cache, interpreter, variableManager, overridesProvider);
}
currentDescription = this.getParentOf(currentDescription.get());
}
@@ -120,10 +170,8 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
EStructuralFeature extensionFeature = description.eClass().getEStructuralFeature(EXTENDS_FEATURE_NAME);
if (extensionFeature instanceof EReference) {
EReference extendsEReference = (EReference) extensionFeature;
- if (extendsEReference.getEType().equals(description.eClass()) && !extendsEReference.isMany()) {
- Optional<Object> currentExtends = Optional.ofNullable(description.eGet(extendsEReference));
- nextParent = currentExtends.filter(ref -> description.getClass().isAssignableFrom(ref.getClass())).map(ref -> this.descriptionClass.cast(ref));
- }
+ Optional<Object> currentExtends = Optional.ofNullable(description.eGet(extendsEReference));
+ nextParent = currentExtends.map(ref -> this.descriptionClass.cast(ref));
}
return nextParent;
}
@@ -132,20 +180,22 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
* Processes all the properties of the given current description.
*
* @param feature
- * the {@link EStructuralFeature} to process.
+ * the {@link EStructuralFeature} to process
* @param processedDescription
- * the resulting description.
+ * the resulting description
* @param currentDescription
* the original description or one of its ancestors, from which properties are inherited.
* @param cache
- * the processing cache.
+ * the processing cache
* @param interpreter
- * the interpreter.
+ * the interpreter
* @param variableManager
- * the variable manager.
+ * the variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
*/
protected void processDescriptionFeature(EStructuralFeature feature, SIRIUS processedDescription, SIRIUS currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
if (feature instanceof EAttribute) {
if (!feature.isMany()) {
this.processMonoValuedEAttribute((EAttribute) feature, processedDescription, currentDescription, cache);
@@ -154,9 +204,9 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
}
} else if (feature instanceof EReference) {
if (!feature.isMany()) {
- this.processMonoValuedEReference((EReference) feature, processedDescription, currentDescription, cache, interpreter, variableManager);
+ this.processMonoValuedEReference((EReference) feature, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
} else {
- this.processMultiValuedEReference((EReference) feature, processedDescription, currentDescription, cache, interpreter, variableManager);
+ this.processMultiValuedEReference((EReference) feature, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
}
}
}
@@ -219,14 +269,17 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
* the interpreter.
* @param variableManager
* the variable manager.
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
*/
protected void processMonoValuedEReference(EReference eReference, SIRIUS processedDescription, SIRIUS currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
if (!processedDescription.eIsSet(eReference)) {
Object currentValue = currentDescription.eGet(eReference);
if (currentValue instanceof EObject) {
- SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor((EObject) currentValue).ifPresent(preprocessor -> {
- Object processedValue = preprocessor.convert((EObject) currentValue, cache, interpreter, variableManager);
+ Optional<IDescriptionPreprocessor> optionalPreprocessor = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor((EObject) currentValue);
+ optionalPreprocessor.ifPresent(preprocessor -> {
+ Object processedValue = preprocessor.convert((EObject) currentValue, cache, interpreter, variableManager, overridesProvider);
processedDescription.eSet(eReference, processedValue);
});
}
@@ -237,20 +290,22 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
* Processes a multi-valued {@link EReference}.
*
* @param eReference
- * the {@link EReference} to process.
+ * the {@link EReference} to process
* @param processedDescription
- * the resulting description.
+ * the resulting description
* @param currentDescription
- * the current description.
+ * the current description
* @param cache
- * the processing cache.
+ * the processing cache
* @param interpreter
- * the interpreter.
+ * the interpreter
* @param variableManager
- * the variable manager.
+ * the variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
*/
protected void processMultiValuedEReference(EReference eReference, SIRIUS processedDescription, SIRIUS currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
Object processedValue = processedDescription.eGet(eReference);
Object currentValue = currentDescription.eGet(eReference);
if (currentValue instanceof Iterable<?> && processedValue instanceof Iterable<?>) {
@@ -261,9 +316,9 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
// For each current description, process it and add it to the
// newValue
StreamSupport.stream(currentIterable.spliterator(), false).filter(EObject.class::isInstance).map(EObject.class::cast).forEach(siriusDescription -> {
- if (!isFiltered(eReference, processedDescription, siriusDescription, interpreter, variableManager)) {
+ if (!isFiltered(eReference, processedDescription, siriusDescription, cache, interpreter, variableManager, overridesProvider)) {
SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(siriusDescription)
- .map(preprocessor -> preprocessor.convert(siriusDescription, cache, interpreter, variableManager)).map(newValue::add);
+ .map(preprocessor -> preprocessor.convert(siriusDescription, cache, interpreter, variableManager, overridesProvider)).map(newValue::add);
}
});
@@ -286,53 +341,193 @@ public class DefaultDescriptionPreprocessor<SIRIUS extends EObject> implements I
* @param currentDescription
* The current description
* @param eStructuralFeature
+ * The reference
+ * @param processedDescription
+ * The processed description
+ * @param cache
+ * The transformation cache
+ * @param interpreter
+ * The interpreter
+ * @param variableManager
+ * The variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
+ * @return True if the eObject must be filtered otherwise false
+ */
+ protected boolean isFiltered(EStructuralFeature eStructuralFeature, EObject processedDescription, EObject currentDescription, TransformationCache cache, IInterpreter interpreter,
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
+ // check the override filters
+
+ // @formatter:off
+ List<AbstractOverrideDescription> overrideDescriptions = cache.getInput(processedDescription)
+ .filter(EObject.class::isInstance)
+ .map(EObject.class::cast)
+ .map(overridesProvider::getOverrideDescriptions)
+ .orElseGet(ArrayList::new);
+ // @formatter:on
+
+ boolean isFiltered = overrideDescriptions.stream().anyMatch(overrideDescription -> {
+ return isFiltered(eStructuralFeature, overrideDescription, currentDescription, interpreter, variableManager, "Overridden"); //$NON-NLS-1$
+ });
+
+ // Check the extends filters
+ if (!isFiltered) {
+ isFiltered = isFiltered(eStructuralFeature, processedDescription, currentDescription, interpreter, variableManager, "Extended"); //$NON-NLS-1$
+ }
+ return isFiltered;
+ }
+
+ /**
+ * Check if an eObject must be filtered according to a filtering expression.
+ *
+ * @param eStructuralFeature
* the reference
* @param processedDescription
* The processed description
+ * @param currentDescription
+ * The current description
* @param interpreter
* The interpreter
* @param variableManager
* The variable manager
+ * @param featureKind
+ * The feature kind, it could be Overridden or Extended
* @return True if the eObject must be filtered otherwise false
*/
- protected boolean isFiltered(EStructuralFeature eStructuralFeature, EObject processedDescription, EObject currentDescription, IInterpreter interpreter, IVariableManager variableManager) {
- boolean returnValue = false;
- String structuralFeatureName = eStructuralFeature.getName();
- // In the metamodel, it exists only one filtering expression for the
- // validation rules (the semantic validation rules and the property
- // validation rules) : filtereValidationRulesFromExtendedXXXExpression.
- if (PropertiesPackage.Literals.GROUP_VALIDATION_SET_DESCRIPTION__SEMANTIC_VALIDATION_RULES.getName().equals(structuralFeatureName)
- || PropertiesPackage.Literals.GROUP_VALIDATION_SET_DESCRIPTION__PROPERTY_VALIDATION_RULES.getName().equals(structuralFeatureName)) { // $NON-NLS-1$
- structuralFeatureName = VALIDATION_RULES_FEATURE_NAME;
+ private boolean isFiltered(EStructuralFeature eStructuralFeature, EObject processedDescription, EObject currentDescription, IInterpreter interpreter, IVariableManager variableManager,
+ String featureKind) {
+ // Get the name of the feature used in the filter name
+ String filterFeatureName = this.getFilterFeatureName(eStructuralFeature);
+ String parentTypeName = this.getTypeName(processedDescription);
+ String filterName = this.getFilterName(filterFeatureName, parentTypeName, featureKind);
+
+ Optional<EStructuralFeature> optionalFilterFeature = Optional.ofNullable(processedDescription.eClass().getEStructuralFeature(filterName));
+ Optional<String> optionalFilterExpression = optionalFilterFeature.flatMap(filterFeature -> {
+ return this.getFilterExpression(processedDescription, filterFeature);
+ });
+
+ return optionalFilterExpression.map(filteringExpression -> {
+ Map<String, Object> variables = this.computeFilterVariables(variableManager, currentDescription, filterFeatureName);
+ return this.evaluateFilter(filteringExpression, interpreter, variables);
+ }).orElse(false);
+ }
+
+ /**
+ * Returns the name of the structural feature associated to a filter in the metamodel. Mostly, the name is equal to
+ * the name of the feature. The name of the feature equals the name of the parent type without the 'Description'
+ * suffix, for example from the filtering expression of a page we will have access to a feature named 'group', for a
+ * group to a feature named 'control'... It exists one special case for the validation rules and the property
+ * validation rules, the feature name will be 'validationRule'.
+ *
+ * @param eStructuralFeature
+ * The structural feature.
+ * @return The name of the filter feature
+ */
+ private String getFilterFeatureName(EStructuralFeature eStructuralFeature) {
+ String eStructuralFeatureName = eStructuralFeature.getName();
+ if (PropertiesPackage.Literals.GROUP_VALIDATION_SET_DESCRIPTION__SEMANTIC_VALIDATION_RULES.getName().equals(eStructuralFeatureName)
+ || PropertiesPackage.Literals.GROUP_VALIDATION_SET_DESCRIPTION__PROPERTY_VALIDATION_RULES.getName().equals(eStructuralFeatureName)) {
+ eStructuralFeatureName = VALIDATION_RULES_FEATURE_NAME;
}
- String parentTypeName = processedDescription.eClass().getName().replace("Description", ""); //$NON-NLS-1$ //$NON-NLS-2$
- String featureName = "filter" + structuralFeatureName.substring(0, 1).toUpperCase() + structuralFeatureName.substring(1) + "FromExtended" //$NON-NLS-1$ //$NON-NLS-2$
+ return eStructuralFeatureName;
+ }
+
+ /**
+ * Get the name of the type of a Sirius description.
+ *
+ * @param processedDescription
+ * A Sirius description
+ * @return The type name of the description
+ */
+ private String getTypeName(EObject processedDescription) {
+ return processedDescription.eClass().getName().replace("Description", "").replace("Override", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ }
+
+ /**
+ * Returns the name of the filter expression for the given EStructuralFeature.
+ *
+ * @param eStructuralFeatureName
+ * The name of the EStructuralFeature
+ * @param parentTypeName
+ * The name of the parent type
+ * @param featureKind
+ * The kind of feature
+ * @return The name of the filter expression
+ */
+ private String getFilterName(String eStructuralFeatureName, String parentTypeName, String featureKind) {
+ return "filter" + eStructuralFeatureName.substring(0, 1).toUpperCase() + eStructuralFeatureName.substring(1) + "From" + featureKind //$NON-NLS-1$ //$NON-NLS-2$
+ parentTypeName + "Expression"; //$NON-NLS-1$
- Optional<EStructuralFeature> filterStructuralFeature = Optional.ofNullable(processedDescription.eClass().getEStructuralFeature(featureName));
- Optional<String> filteringExpression = Optional.empty();
- if (filterStructuralFeature.isPresent()) {
- filteringExpression = Optional.ofNullable(processedDescription.eGet(filterStructuralFeature.get())).filter(String.class::isInstance).map(String.class::cast);
- if (filteringExpression.isPresent()) {
- Map<String, Object> variables = new HashMap<String, Object>();
- variables.putAll(variableManager.getVariables());
- // The name of the variable equals the name of the parent type
- // without the 'Description' suffix, for example from the
- // filtering expression of a page we will have acess to a
- // variable named 'group', for a group to variables named
- // 'control'... It exists only one special case for the semantic
- // validation rules and the property validation rules, the
- // variable will be 'validationRule'.
- String variableName = structuralFeatureName.substring(0, structuralFeatureName.length() - 1);
- variables.put(variableName, currentDescription);
- IEvaluationResult evaluationResult = interpreter.evaluateExpression(variables, filteringExpression.get());
- if (evaluationResult.success()) {
- Object value = evaluationResult.getValue();
- if (value != null && Boolean.class.isInstance(value)) {
- returnValue = Boolean.class.cast(value);
- }
- }
- }
- }
- return returnValue;
+ }
+
+ /**
+ * Get the filter expression associated to a filter feature.
+ *
+ * @param processedDescription
+ * The Sirius description
+ * @param eStructuralFeature
+ * The filter feature
+ * @return The filter expression
+ */
+ private Optional<String> getFilterExpression(EObject processedDescription, EStructuralFeature eStructuralFeature) {
+ // @formatter:off
+ return Optional.ofNullable(processedDescription.eGet(eStructuralFeature))
+ .filter(String.class::isInstance)
+ .map(String.class::cast);
+ // @formatter:on
+ }
+
+ /**
+ * Compute the filter variables.
+ *
+ * @param variableManager
+ * The variable manager
+ * @param currentDescription
+ * The current description
+ * @param eStructuralFeatureName
+ * The filter feature name
+ * @return The variables
+ */
+ private Map<String, Object> computeFilterVariables(IVariableManager variableManager, EObject currentDescription, String eStructuralFeatureName) {
+ Map<String, Object> variables = new HashMap<>();
+ variables.putAll(variableManager.getVariables());
+ String variableName = this.getVariableName(eStructuralFeatureName);
+ variables.put(variableName, currentDescription);
+ return variables;
+ }
+
+ /**
+ * Get the variable name. The variable name is equal to the feature name without the last 's', i.e: for a 'groups'
+ * feature, the variable will be 'group'.
+ *
+ * @param eStructuralFeatureName
+ * The structural feature name
+ * @return The variable name
+ */
+ private String getVariableName(String eStructuralFeatureName) {
+ return eStructuralFeatureName.substring(0, eStructuralFeatureName.length() - 1);
+ }
+
+ /**
+ * Evaluate the filtering expression.
+ *
+ * @param filteringExpression
+ * The filtering expression
+ * @param interpreter
+ * The interpreter
+ * @param variables
+ * The variables
+ * @return The evaluation result
+ */
+ private boolean evaluateFilter(String filteringExpression, IInterpreter interpreter, Map<String, Object> variables) {
+ IEvaluationResult evaluationResult = interpreter.evaluateExpression(variables, filteringExpression);
+
+ // @formatter:off
+ return Optional.ofNullable(evaluationResult)
+ .filter(IEvaluationResult::success)
+ .map(IEvaluationResult::getValue)
+ .filter(Boolean.class::isInstance)
+ .map(Boolean.class::cast)
+ .orElse(false);
+ // @formatter:on
}
}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessorWithFiltering.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessorWithFiltering.java
index 0fda45fd91..8ccd5dd89d 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessorWithFiltering.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultDescriptionPreprocessorWithFiltering.java
@@ -50,11 +50,11 @@ public class DefaultDescriptionPreprocessorWithFiltering<SIRIUS extends EObject>
* The constructor.
*
* @param descriptionClass
- * the SIRIUS_DESCRIPTION class.
+ * the SIRIUS class
* @param featuresToFilter
* the collection of features of {@code descriptionClass} that must be ignored during the preprocessing.
* @param featuresToCopy
- * the collection of features of {@code descriptionClass} that must be copied during the preprocessing.
+ * the collection of features of {@code descriptionClass} that must be copied during the preprocessing
*/
public DefaultDescriptionPreprocessorWithFiltering(Class<SIRIUS> descriptionClass, Collection<EStructuralFeature> featuresToFilter, Collection<EStructuralFeature> featuresToCopy) {
super(descriptionClass);
@@ -67,30 +67,32 @@ public class DefaultDescriptionPreprocessorWithFiltering<SIRIUS extends EObject>
* methods that do the copying.
*
* @param feature
- * the {@link EStructuralFeature} to process.
+ * the {@link EStructuralFeature} to process
* @param processedDescription
- * the resulting description.
+ * the resulting description
* @param currentDescription
- * the original description or one of its ancestors, from which properties are inherited.
+ * the original description or one of its ancestors, from which properties are inherited
* @param cache
- * the processing cache.
+ * the processing cache
* @param interpreter
- * the interpreter.
+ * the interpreter
* @param variableManager
- * the variable manager.
+ * the variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
*/
@Override
protected void processDescriptionFeature(EStructuralFeature feature, SIRIUS processedDescription, SIRIUS currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
if (!featuresToFilter.contains(feature)) {
if (featuresToCopy.contains(feature)) {
if (!feature.isMany()) {
processMonoValuedFeatureByCopying(feature, processedDescription, currentDescription, cache);
} else {
- processManyValuedFeatureByCopying(feature, processedDescription, currentDescription, cache, interpreter, variableManager);
+ processManyValuedFeatureByCopying(feature, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
}
} else {
- super.processDescriptionFeature(feature, processedDescription, currentDescription, cache, interpreter, variableManager);
+ super.processDescriptionFeature(feature, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
}
}
}
@@ -136,9 +138,11 @@ public class DefaultDescriptionPreprocessorWithFiltering<SIRIUS extends EObject>
* The interpreter
* @param variableManager
* The variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
*/
protected void processManyValuedFeatureByCopying(EStructuralFeature manyValuedFeature, SIRIUS processedDescription, SIRIUS currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
Object processedValue = processedDescription.eGet(manyValuedFeature);
Object currentValue = currentDescription.eGet(manyValuedFeature);
if (currentValue instanceof Iterable<?> && processedValue instanceof Iterable<?>) {
@@ -149,7 +153,7 @@ public class DefaultDescriptionPreprocessorWithFiltering<SIRIUS extends EObject>
// For each current description create a copy and set it in the new
// values
StreamSupport.stream(currentIterable.spliterator(), false).filter(EObject.class::isInstance).map(EObject.class::cast).forEach(object -> {
- if (!this.isFiltered(manyValuedFeature, processedDescription, object, interpreter, variableManager)) {
+ if (!this.isFiltered(manyValuedFeature, processedDescription, object, cache, interpreter, variableManager, overridesProvider)) {
EObject newEObject = EcoreUtil.copy(object);
cache.put(object, newEObject);
newValue.add(newEObject);
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultRulesProvider.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultRulesProvider.java
index 1e6ceb51f2..cca2eb6546 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultRulesProvider.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DefaultRulesProvider.java
@@ -72,14 +72,18 @@ public final class DefaultRulesProvider {
if (!optionalResource.isPresent()) {
SiriusPropertiesCorePlugin.getPlugin().error(Messages.DefaultRulesProvider_DefaultPropertiesNotFound);
- } else {
- Resource resource = optionalResource.get();
- Optional<Group> optionalGroup = resource.getContents().stream().filter(Group.class::isInstance).map(Group.class::cast).findFirst();
- Optional<ViewExtensionDescription> optionalViewExtensionDescription = optionalGroup.flatMap(group -> {
- return group.getExtensions().stream().filter(ViewExtensionDescription.class::isInstance).map(ViewExtensionDescription.class::cast).findFirst();
- });
- return optionalViewExtensionDescription.get();
}
- return null;
+
+ // @formatter:off
+ return optionalResource.flatMap(resource -> {
+ return resource.getContents().stream()
+ .filter(Group.class::isInstance)
+ .map(Group.class::cast)
+ .flatMap(group -> group.getExtensions().stream())
+ .filter(ViewExtensionDescription.class::isInstance)
+ .map(ViewExtensionDescription.class::cast)
+ .findFirst();
+ }).orElse(null);
+ // @formatter:on
}
}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DialogModelOperationPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DialogModelOperationPreprocessor.java
index 7288e9f535..80e5c9135d 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DialogModelOperationPreprocessor.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/DialogModelOperationPreprocessor.java
@@ -46,6 +46,11 @@ public class DialogModelOperationPreprocessor {
private IVariableManager variableManager;
/**
+ * The overrides provider.
+ */
+ private OverridesProvider overridesProvider;
+
+ /**
* The constructor.
*
* @param dialogModelOperation
@@ -54,11 +59,14 @@ public class DialogModelOperationPreprocessor {
* The interpreter
* @param variableManager
* The variable manager
+ * @param overridesProvider
+ * The overrides provider
*/
- public DialogModelOperationPreprocessor(DialogModelOperation dialogModelOperation, IInterpreter interpreter, IVariableManager variableManager) {
+ public DialogModelOperationPreprocessor(DialogModelOperation dialogModelOperation, IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
this.dialogModelOperation = dialogModelOperation;
this.interpreter = interpreter;
this.variableManager = variableManager;
+ this.overridesProvider = overridesProvider;
}
/**
@@ -121,7 +129,7 @@ public class DialogModelOperationPreprocessor {
Optional.ofNullable(this.dialogModelOperation.getPage()).ifPresent(pageDescription -> {
Optional<IDescriptionPreprocessor> optionalPreprocessor = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(pageDescription);
optionalPreprocessor.ifPresent(preprocessor -> {
- EObject convertedEObject = preprocessor.convert(pageDescription, cache, interpreter, variableManager);
+ EObject convertedEObject = preprocessor.convert(pageDescription, cache, interpreter, variableManager, overridesProvider);
if (convertedEObject instanceof PageDescription) {
convertedDialogModelOperation.setPage((PageDescription) convertedEObject);
}
@@ -141,7 +149,7 @@ public class DialogModelOperationPreprocessor {
this.dialogModelOperation.getGroups().forEach(groupDescription -> {
Optional<IDescriptionPreprocessor> optionalPreprocessor = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(groupDescription);
optionalPreprocessor.ifPresent(preprocessor -> {
- EObject convertedEObject = preprocessor.convert(groupDescription, cache, interpreter, variableManager);
+ EObject convertedEObject = preprocessor.convert(groupDescription, cache, interpreter, variableManager, overridesProvider);
if (convertedEObject instanceof GroupDescription) {
convertedDialogModelOperation.getGroups().add((GroupDescription) convertedEObject);
}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/IDescriptionPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/IDescriptionPreprocessor.java
index 8e15f658e0..283dca0e54 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/IDescriptionPreprocessor.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/IDescriptionPreprocessor.java
@@ -45,9 +45,11 @@ public interface IDescriptionPreprocessor {
* the interpreter
* @param variableManager
* the variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
* @return a semantically equivalent description to
* {@code originalDescription}, but with inheritance and extension
* relations unfolded.
*/
- EObject convert(EObject description, TransformationCache cache, IInterpreter interpreter, IVariableManager variableManager);
+ EObject convert(EObject description, TransformationCache cache, IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider);
}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/OverridesProvider.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/OverridesProvider.java
new file mode 100644
index 0000000000..5166025106
--- /dev/null
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/OverridesProvider.java
@@ -0,0 +1,75 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.sirius.properties.core.api;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature.Setting;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.ECrossReferenceAdapter;
+import org.eclipse.sirius.business.api.session.Session;
+import org.eclipse.sirius.properties.AbstractOverrideDescription;
+
+/**
+ * Utility class used to provide the {@link AbstractOverrideDescription}.
+ *
+ * @author mbats
+ */
+public class OverridesProvider {
+ /**
+ * The Sirius session.
+ */
+ private Session session;
+
+ /**
+ * The constructor.
+ *
+ * @param session
+ * The Sirius session
+ */
+ public OverridesProvider(Session session) {
+ this.session = session;
+ }
+
+ /**
+ * Provides the {@link AbstractOverrideDescription} for the given
+ * {@link EObject}.
+ *
+ * @param eObject
+ * The sirius description
+ * @return The collection of the {@link AbstractOverrideDescription}
+ * overriding the given description
+ */
+ public List<AbstractOverrideDescription> getOverrideDescriptions(EObject eObject) {
+ List<AbstractOverrideDescription> descriptions = new ArrayList<>();
+
+ Optional<ECrossReferenceAdapter> optionalCrossReferencer = Optional.ofNullable(session).map(Session::getSemanticCrossReferencer);
+ optionalCrossReferencer.ifPresent(crossReferencer -> {
+ // @formatter:off
+ crossReferencer.getInverseReferences(eObject, true).stream()
+ .filter(setting -> "overrides".equals(setting.getEStructuralFeature().getName())) //$NON-NLS-1$
+ .map(Setting::getEObject)
+ .filter(AbstractOverrideDescription.class::isInstance)
+ .map(AbstractOverrideDescription.class::cast)
+ .forEach(descriptions::add);
+ // @formatter:on
+ });
+
+ return descriptions.stream().filter(description -> {
+ List<Resource> activatedViewpointResources = session.getSelectedViewpoints(true).stream().map(EObject::eResource).collect(Collectors.toList());
+ return activatedViewpointResources.contains(description.eResource());
+ }).collect(Collectors.toList());
+ }
+}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/PreconfiguredPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/PreconfiguredPreprocessor.java
index dc9e5a7b63..ac1351cc59 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/PreconfiguredPreprocessor.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/PreconfiguredPreprocessor.java
@@ -58,9 +58,9 @@ public class PreconfiguredPreprocessor<SIRIUS extends EObject> extends DefaultDe
@Override
protected void processManyValuedFeatureByCopying(EStructuralFeature manyValuedFeature, SIRIUS processedDescription, SIRIUS currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
if (!PropertiesPackage.Literals.WIDGET_ACTION.equals(manyValuedFeature.getEType())) {
- super.processManyValuedFeatureByCopying(manyValuedFeature, processedDescription, currentDescription, cache, interpreter, variableManager);
+ super.processManyValuedFeatureByCopying(manyValuedFeature, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
}
Object processedValue = processedDescription.eGet(manyValuedFeature);
@@ -74,7 +74,7 @@ public class PreconfiguredPreprocessor<SIRIUS extends EObject> extends DefaultDe
StreamSupport.stream(currentIterable.spliterator(), false).filter(EObject.class::isInstance).map(EObject.class::cast).forEach(object -> {
Optional<IDescriptionPreprocessor> preprocessor = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(object);
if (preprocessor.isPresent()) {
- Object processedWidgetAction = preprocessor.get().convert(object, cache, interpreter, variableManager);
+ Object processedWidgetAction = preprocessor.get().convert(object, cache, interpreter, variableManager, overridesProvider);
newValue.add(processedWidgetAction);
}
});
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/ViewDescriptionPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/ViewDescriptionPreprocessor.java
index 108c9f34da..1f756cd2ec 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/ViewDescriptionPreprocessor.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/ViewDescriptionPreprocessor.java
@@ -50,14 +50,16 @@ public class ViewDescriptionPreprocessor {
* The interpreter
* @param variableManager
* The variable manager
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
* @return The {@link ViewExtensionDescription} computed
*/
- public Optional<ViewExtensionDescription> convert(IInterpreter interpreter, IVariableManager variableManager) {
+ public Optional<ViewExtensionDescription> convert(IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
TransformationCache cache = new TransformationCache();
// Starts the conversion
return SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(originalDescription).flatMap(preprocessor -> {
- EObject viewExtensionDescription = preprocessor.convert(originalDescription, cache, interpreter, variableManager);
+ EObject viewExtensionDescription = preprocessor.convert(originalDescription, cache, interpreter, variableManager, overridesProvider);
// Starts the resolution of the links
List<IDescriptionLinkResolver> linkResolvers = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessorLinkResolvers();
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/WizardModelOperationPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/WizardModelOperationPreprocessor.java
index cff1b87884..96bb9ba42f 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/WizardModelOperationPreprocessor.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/api/WizardModelOperationPreprocessor.java
@@ -45,6 +45,11 @@ public class WizardModelOperationPreprocessor {
private IVariableManager variableManager;
/**
+ * The overrides provider.
+ */
+ private OverridesProvider overridesProvider;
+
+ /**
* The constructor.
*
* @param wizardModelOperation
@@ -53,11 +58,14 @@ public class WizardModelOperationPreprocessor {
* The interpreter
* @param variableManager
* The variable manager
+ * @param overridesProvider
+ * The overrides provider
*/
- public WizardModelOperationPreprocessor(WizardModelOperation wizardModelOperation, IInterpreter interpreter, IVariableManager variableManager) {
+ public WizardModelOperationPreprocessor(WizardModelOperation wizardModelOperation, IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
this.wizardModelOperation = wizardModelOperation;
this.interpreter = interpreter;
this.variableManager = variableManager;
+ this.overridesProvider = overridesProvider;
}
/**
@@ -108,7 +116,7 @@ public class WizardModelOperationPreprocessor {
this.wizardModelOperation.getPages().forEach(pageDescription -> {
Optional<IDescriptionPreprocessor> optionalPreprocessor = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(pageDescription);
optionalPreprocessor.ifPresent(preprocessor -> {
- EObject convertedEObject = preprocessor.convert(pageDescription, cache, this.interpreter, this.variableManager);
+ EObject convertedEObject = preprocessor.convert(pageDescription, cache, this.interpreter, this.variableManager, this.overridesProvider);
if (convertedEObject instanceof PageDescription) {
convertedWizardModelOperation.getPages().add((PageDescription) convertedEObject);
}
@@ -128,7 +136,7 @@ public class WizardModelOperationPreprocessor {
this.wizardModelOperation.getGroups().forEach(groupDescription -> {
Optional<IDescriptionPreprocessor> optionalPreprocessor = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(groupDescription);
optionalPreprocessor.ifPresent(preprocessor -> {
- EObject convertedEObject = preprocessor.convert(groupDescription, cache, this.interpreter, this.variableManager);
+ EObject convertedEObject = preprocessor.convert(groupDescription, cache, this.interpreter, this.variableManager, this.overridesProvider);
if (convertedEObject instanceof GroupDescription) {
convertedWizardModelOperation.getGroups().add((GroupDescription) convertedEObject);
}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupDescriptionPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupDescriptionPreprocessor.java
index 9061023a1c..ecc54aca76 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupDescriptionPreprocessor.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupDescriptionPreprocessor.java
@@ -18,17 +18,18 @@ import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
-import org.eclipse.sirius.properties.GroupDescription;
+import org.eclipse.sirius.properties.AbstractGroupDescription;
import org.eclipse.sirius.properties.GroupValidationSetDescription;
import org.eclipse.sirius.properties.PropertiesFactory;
import org.eclipse.sirius.properties.PropertiesPackage;
import org.eclipse.sirius.properties.PropertyValidationRule;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
import org.eclipse.sirius.properties.core.api.PreconfiguredPreprocessor;
import org.eclipse.sirius.properties.core.api.TransformationCache;
import org.eclipse.sirius.viewpoint.description.validation.SemanticValidationRule;
/**
- * Preprocessor for {@link GroupDescription}.
+ * Preprocessor for {@link AbstractGroupDescription}.
* <ul>
* <li>The {@code filterConditionalStylesFromExtendedGroupExpression} attribute is ignored.</li>
* <li>The {@code filterControlsFromExtendedGroupExpression} attribute is ignored.</li>
@@ -42,7 +43,7 @@ import org.eclipse.sirius.viewpoint.description.validation.SemanticValidationRul
* @author flatombe
* @author mbats
*/
-public class GroupDescriptionPreprocessor extends PreconfiguredPreprocessor<GroupDescription> {
+public class GroupDescriptionPreprocessor extends PreconfiguredPreprocessor<AbstractGroupDescription> {
/**
* The validation set feature is handled separately.
*/
@@ -52,16 +53,16 @@ public class GroupDescriptionPreprocessor extends PreconfiguredPreprocessor<Grou
* The constructor.
*/
public GroupDescriptionPreprocessor() {
- super(GroupDescription.class, PropertiesPackage.Literals.GROUP_DESCRIPTION);
+ super(AbstractGroupDescription.class, PropertiesPackage.Literals.GROUP_DESCRIPTION);
}
@Override
- protected void processMonoValuedEReference(EReference eReference, GroupDescription processedDescription, GroupDescription currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ protected void processMonoValuedEReference(EReference eReference, AbstractGroupDescription processedDescription, AbstractGroupDescription currentDescription, TransformationCache cache,
+ IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
if (!eReference.equals(VALIDATIONSET_FEATURE)) {
- super.processMonoValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager);
+ super.processMonoValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
} else {
- processValidationSet(processedDescription, currentDescription, cache, interpreter, variableManager);
+ processValidationSet(processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
}
}
@@ -79,9 +80,11 @@ public class GroupDescriptionPreprocessor extends PreconfiguredPreprocessor<Grou
* the interpreter.
* @param variableManager
* the variable manager.
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions.
*/
- private void processValidationSet(GroupDescription processedDescription, GroupDescription currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ private void processValidationSet(AbstractGroupDescription processedDescription, AbstractGroupDescription currentDescription, TransformationCache cache, IInterpreter interpreter,
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
if (currentDescription.eIsSet(VALIDATIONSET_FEATURE)) {
GroupValidationSetDescription validationSet = Optional.ofNullable(processedDescription.getValidationSet()).orElse(PropertiesFactory.eINSTANCE.createGroupValidationSetDescription());
processedDescription.setValidationSet(validationSet);
@@ -91,7 +94,8 @@ public class GroupDescriptionPreprocessor extends PreconfiguredPreprocessor<Grou
// Copy all the semantic validation rules
List<SemanticValidationRule> newSemanticValidationRules = new ArrayList<>();
currentDescription.getValidationSet().getSemanticValidationRules().forEach(rule -> {
- if (!this.isFiltered(PropertiesPackage.eINSTANCE.getGroupValidationSetDescription_SemanticValidationRules(), processedDescription, rule, interpreter, variableManager)) {
+ if (!this.isFiltered(PropertiesPackage.eINSTANCE.getGroupValidationSetDescription_SemanticValidationRules(), processedDescription, rule, cache, interpreter, variableManager,
+ overridesProvider)) {
newSemanticValidationRules.add(EcoreUtil.copy(rule));
}
});
@@ -102,7 +106,8 @@ public class GroupDescriptionPreprocessor extends PreconfiguredPreprocessor<Grou
// Copy all the property validation rules
List<PropertyValidationRule> newPropertyValidationRules = new ArrayList<>();
currentDescription.getValidationSet().getPropertyValidationRules().forEach(rule -> {
- if (!this.isFiltered(PropertiesPackage.eINSTANCE.getGroupValidationSetDescription_PropertyValidationRules(), processedDescription, rule, interpreter, variableManager)) {
+ if (!this.isFiltered(PropertiesPackage.eINSTANCE.getGroupValidationSetDescription_PropertyValidationRules(), processedDescription, rule, cache, interpreter, variableManager,
+ overridesProvider)) {
newPropertyValidationRules.add(EcoreUtil.copy(rule));
}
});
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupOverrideDescriptionPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupOverrideDescriptionPreprocessor.java
new file mode 100644
index 0000000000..764859c541
--- /dev/null
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/GroupOverrideDescriptionPreprocessor.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.sirius.properties.core.internal.preprocessor;
+
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+import org.eclipse.sirius.properties.AbstractGroupDescription;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
+import org.eclipse.sirius.properties.core.api.TransformationCache;
+
+/**
+ * Preprocessor for
+ * {@link org.eclipse.sirius.properties.GroupOverrideDescription}.
+ * <ul>
+ * <li>The {@code overrides} containment is ignored.</li>
+ * </ul>
+ *
+ * @author mbats
+ */
+public class GroupOverrideDescriptionPreprocessor extends GroupDescriptionPreprocessor {
+ @Override
+ protected void processMonoValuedEReference(EReference eReference, AbstractGroupDescription processedDescription, AbstractGroupDescription currentDescription, TransformationCache cache,
+ IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
+ if (!eReference.equals(currentDescription.eClass().getEStructuralFeature("overrides"))) { //$NON-NLS-1$
+ super.processMonoValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/OverrideDescriptionPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/OverrideDescriptionPreprocessor.java
new file mode 100644
index 0000000000..8110d7c492
--- /dev/null
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/OverrideDescriptionPreprocessor.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.sirius.properties.core.internal.preprocessor;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
+import org.eclipse.sirius.properties.core.api.PreconfiguredPreprocessor;
+import org.eclipse.sirius.properties.core.api.TransformationCache;
+
+/**
+ * Preprocessor for
+ * {@link org.eclipse.sirius.properties.AbstractOverrideDescription}.
+ * <ul>
+ * <li>The {@code overrides} containment is ignored.</li>
+ * </ul>
+ *
+ * @author mbats
+ */
+public class OverrideDescriptionPreprocessor<SIRIUS extends EObject> extends PreconfiguredPreprocessor<SIRIUS> {
+ /**
+ * The constructor.
+ *
+ * @param descriptionClass
+ * the SIRIUS class
+ * @param eClass
+ * the EClass of the Sirius object
+ */
+ public OverrideDescriptionPreprocessor(Class<SIRIUS> descriptionClass, EClass eClass) {
+ super(descriptionClass, eClass);
+ }
+
+ @Override
+ protected void processMonoValuedEReference(EReference eReference, SIRIUS processedDescription, SIRIUS currentDescription, TransformationCache cache, IInterpreter interpreter,
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
+ if (!eReference.equals(currentDescription.eClass().getEStructuralFeature("overrides"))) { //$NON-NLS-1$
+ super.processMonoValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageDescriptionPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageDescriptionPreprocessor.java
index 637c39c155..3f8f75d97a 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageDescriptionPreprocessor.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageDescriptionPreprocessor.java
@@ -19,6 +19,7 @@ import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.sirius.common.interpreter.api.IInterpreter;
import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+import org.eclipse.sirius.properties.AbstractPageDescription;
import org.eclipse.sirius.properties.DialogModelOperation;
import org.eclipse.sirius.properties.GroupDescription;
import org.eclipse.sirius.properties.PageDescription;
@@ -29,6 +30,7 @@ import org.eclipse.sirius.properties.ViewExtensionDescription;
import org.eclipse.sirius.properties.WizardModelOperation;
import org.eclipse.sirius.properties.core.api.DefaultDescriptionPreprocessorWithFiltering;
import org.eclipse.sirius.properties.core.api.IDescriptionPreprocessor;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
import org.eclipse.sirius.properties.core.api.PreconfiguredPreprocessorUtils;
import org.eclipse.sirius.properties.core.api.TransformationCache;
import org.eclipse.sirius.properties.core.internal.SiriusPropertiesCorePlugin;
@@ -47,7 +49,7 @@ import org.eclipse.sirius.viewpoint.description.validation.SemanticValidationRul
* @author flatombe
* @author mbats
*/
-public class PageDescriptionPreprocessor extends DefaultDescriptionPreprocessorWithFiltering<PageDescription> {
+public class PageDescriptionPreprocessor extends DefaultDescriptionPreprocessorWithFiltering<AbstractPageDescription> {
/**
* This feature is handled separately.
*/
@@ -57,17 +59,17 @@ public class PageDescriptionPreprocessor extends DefaultDescriptionPreprocessorW
* The constructor.
*/
public PageDescriptionPreprocessor() {
- super(PageDescription.class, PreconfiguredPreprocessorUtils.getFeaturesToFilter(PropertiesPackage.Literals.PAGE_DESCRIPTION),
+ super(AbstractPageDescription.class, PreconfiguredPreprocessorUtils.getFeaturesToFilter(PropertiesPackage.Literals.PAGE_DESCRIPTION),
PreconfiguredPreprocessorUtils.getFeaturesToCopy(PropertiesPackage.Literals.PAGE_DESCRIPTION));
}
@Override
- protected void processMonoValuedEReference(EReference eReference, PageDescription processedDescription, PageDescription currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ protected void processMonoValuedEReference(EReference eReference, AbstractPageDescription processedDescription, AbstractPageDescription currentDescription, TransformationCache cache,
+ IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
if (!eReference.equals(VALIDATIONSET_FEATURE)) {
- super.processMonoValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager);
+ super.processMonoValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
} else {
- processValidationSet(processedDescription, currentDescription, cache, interpreter, variableManager);
+ processValidationSet(processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
}
}
@@ -85,8 +87,11 @@ public class PageDescriptionPreprocessor extends DefaultDescriptionPreprocessorW
* the interpreter.
* @param variableManager
* the variable manager.
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
*/
- private void processValidationSet(PageDescription processedDescription, PageDescription currentDescription, TransformationCache cache, IInterpreter interpreter, IVariableManager variableManager) {
+ private void processValidationSet(AbstractPageDescription processedDescription, AbstractPageDescription currentDescription, TransformationCache cache, IInterpreter interpreter,
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
if (currentDescription.eIsSet(VALIDATIONSET_FEATURE)) {
PageValidationSetDescription validationSet = Optional.ofNullable(processedDescription.getValidationSet()).orElse(PropertiesFactory.eINSTANCE.createPageValidationSetDescription());
processedDescription.setValidationSet(validationSet);
@@ -95,7 +100,8 @@ public class PageDescriptionPreprocessor extends DefaultDescriptionPreprocessorW
// then those contributed by the current description.
List<SemanticValidationRule> newValue = new ArrayList<>();
currentDescription.getValidationSet().getSemanticValidationRules().forEach(rule -> {
- if (!this.isFiltered(PropertiesPackage.eINSTANCE.getPageValidationSetDescription_SemanticValidationRules(), processedDescription, rule, interpreter, variableManager)) {
+ if (!this.isFiltered(PropertiesPackage.eINSTANCE.getPageValidationSetDescription_SemanticValidationRules(), processedDescription, rule, cache, interpreter, variableManager,
+ overridesProvider)) {
newValue.add(EcoreUtil.copy(rule));
}
});
@@ -107,12 +113,12 @@ public class PageDescriptionPreprocessor extends DefaultDescriptionPreprocessorW
}
@Override
- protected void processMultiValuedEReference(EReference eReference, PageDescription processedDescription, PageDescription currentDescription, TransformationCache cache, IInterpreter interpreter,
- IVariableManager variableManager) {
+ protected void processMultiValuedEReference(EReference eReference, AbstractPageDescription processedDescription, AbstractPageDescription currentDescription, TransformationCache cache,
+ IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
if (!eReference.equals(PropertiesPackage.Literals.ABSTRACT_PAGE_DESCRIPTION__GROUPS)) {
- super.processMultiValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager);
+ super.processMultiValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
} else {
- processGroups(processedDescription, currentDescription, cache, interpreter, variableManager);
+ processGroups(processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
}
}
@@ -130,17 +136,20 @@ public class PageDescriptionPreprocessor extends DefaultDescriptionPreprocessorW
* the interpreter.
* @param variableManager
* the variable manager.
+ * @param overridesProvider
+ * Utility class used to provide the override descriptions
*/
- private void processGroups(PageDescription processedDescription, PageDescription currentDescription, TransformationCache cache, IInterpreter interpreter, IVariableManager variableManager) {
+ private void processGroups(AbstractPageDescription processedDescription, AbstractPageDescription currentDescription, TransformationCache cache, IInterpreter interpreter,
+ IVariableManager variableManager, OverridesProvider overridesProvider) {
currentDescription.getGroups().forEach(groupDescription -> {
Optional<Object> inputDescription = cache.getInput(processedDescription);
Optional<PageDescription> optionalInputPageDescription = inputDescription.filter(PageDescription.class::isInstance).map(PageDescription.class::cast);
Optional<IDescriptionPreprocessor> optionalDescriptionPreprocessor = SiriusPropertiesCorePlugin.getPlugin().getDescriptionPreprocessor(groupDescription);
- if (!this.isFiltered(PropertiesPackage.eINSTANCE.getAbstractPageDescription_Groups(), processedDescription, groupDescription, interpreter, variableManager)
+ if (!this.isFiltered(PropertiesPackage.eINSTANCE.getAbstractPageDescription_Groups(), processedDescription, groupDescription, cache, interpreter, variableManager, overridesProvider)
&& optionalInputPageDescription.isPresent() && this.shouldProcessGroup(optionalInputPageDescription.get(), groupDescription)) {
// @formatter:off
- optionalDescriptionPreprocessor.map(descriptionPreprocessor -> descriptionPreprocessor.convert(groupDescription, cache, interpreter, variableManager))
+ optionalDescriptionPreprocessor.map(descriptionPreprocessor -> descriptionPreprocessor.convert(groupDescription, cache, interpreter, variableManager, overridesProvider))
.filter(GroupDescription.class::isInstance)
.map(GroupDescription.class::cast)
.map(processedDescription.getGroups()::add);
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageOverrideDescriptionPreprocessor.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageOverrideDescriptionPreprocessor.java
new file mode 100644
index 0000000000..7bdec5d857
--- /dev/null
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PageOverrideDescriptionPreprocessor.java
@@ -0,0 +1,37 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.sirius.properties.core.internal.preprocessor;
+
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.sirius.common.interpreter.api.IInterpreter;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+import org.eclipse.sirius.properties.AbstractPageDescription;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
+import org.eclipse.sirius.properties.core.api.TransformationCache;
+
+/**
+ * Preprocessor for
+ * {@link org.eclipse.sirius.properties.PageOverrideDescription}.
+ * <ul>
+ * <li>The {@code overrides} containment is ignored.</li>
+ * </ul>
+ *
+ * @author mbats
+ */
+public class PageOverrideDescriptionPreprocessor extends PageDescriptionPreprocessor {
+ @Override
+ protected void processMonoValuedEReference(EReference eReference, AbstractPageDescription processedDescription, AbstractPageDescription currentDescription, TransformationCache cache,
+ IInterpreter interpreter, IVariableManager variableManager, OverridesProvider overridesProvider) {
+ if (!eReference.equals(currentDescription.eClass().getEStructuralFeature("overrides"))) { //$NON-NLS-1$
+ super.processMonoValuedEReference(eReference, processedDescription, currentDescription, cache, interpreter, variableManager, overridesProvider);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PropertiesDescriptionPreprocessorSwitch.java b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PropertiesDescriptionPreprocessorSwitch.java
index 234897a7b2..667dc51f76 100644
--- a/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PropertiesDescriptionPreprocessorSwitch.java
+++ b/plugins/org.eclipse.sirius.properties.core/src/org/eclipse/sirius/properties/core/internal/preprocessor/PropertiesDescriptionPreprocessorSwitch.java
@@ -17,21 +17,36 @@ import java.util.Optional;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.sirius.properties.AbstractDynamicMappingForDescription;
+import org.eclipse.sirius.properties.AbstractGroupDescription;
+import org.eclipse.sirius.properties.AbstractWidgetDescription;
import org.eclipse.sirius.properties.ButtonDescription;
+import org.eclipse.sirius.properties.ButtonOverrideDescription;
import org.eclipse.sirius.properties.Category;
import org.eclipse.sirius.properties.CheckboxDescription;
+import org.eclipse.sirius.properties.CheckboxOverrideDescription;
import org.eclipse.sirius.properties.CustomDescription;
+import org.eclipse.sirius.properties.CustomOverrideDescription;
import org.eclipse.sirius.properties.DynamicMappingForDescription;
+import org.eclipse.sirius.properties.DynamicMappingForOverrideDescription;
import org.eclipse.sirius.properties.GroupDescription;
+import org.eclipse.sirius.properties.GroupOverrideDescription;
import org.eclipse.sirius.properties.HyperlinkDescription;
+import org.eclipse.sirius.properties.HyperlinkOverrideDescription;
import org.eclipse.sirius.properties.LabelDescription;
+import org.eclipse.sirius.properties.LabelOverrideDescription;
import org.eclipse.sirius.properties.ListDescription;
+import org.eclipse.sirius.properties.ListOverrideDescription;
import org.eclipse.sirius.properties.PageDescription;
+import org.eclipse.sirius.properties.PageOverrideDescription;
import org.eclipse.sirius.properties.PropertiesPackage;
import org.eclipse.sirius.properties.RadioDescription;
+import org.eclipse.sirius.properties.RadioOverrideDescription;
import org.eclipse.sirius.properties.SelectDescription;
+import org.eclipse.sirius.properties.SelectOverrideDescription;
import org.eclipse.sirius.properties.TextAreaDescription;
+import org.eclipse.sirius.properties.TextAreaOverrideDescription;
import org.eclipse.sirius.properties.TextDescription;
+import org.eclipse.sirius.properties.TextOverrideDescription;
import org.eclipse.sirius.properties.ViewExtensionDescription;
import org.eclipse.sirius.properties.WidgetAction;
import org.eclipse.sirius.properties.core.api.DefaultDescriptionPreprocessor;
@@ -74,10 +89,20 @@ public class PropertiesDescriptionPreprocessorSwitch extends PropertiesSwitch<Op
}
@Override
+ public Optional<IDescriptionPreprocessor> casePageOverrideDescription(PageOverrideDescription object) {
+ return Optional.of(new PageOverrideDescriptionPreprocessor());
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseGroupDescription(GroupDescription object) {
return Optional.of(new GroupDescriptionPreprocessor());
}
+ @Override
+ public Optional<IDescriptionPreprocessor> caseGroupOverrideDescription(GroupOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractGroupDescription>(AbstractGroupDescription.class, PropertiesPackage.Literals.ABSTRACT_GROUP_DESCRIPTION));
+ }
+
// Widgets
@Override
public Optional<IDescriptionPreprocessor> caseTextDescription(TextDescription object) {
@@ -85,46 +110,91 @@ public class PropertiesDescriptionPreprocessorSwitch extends PropertiesSwitch<Op
}
@Override
+ public Optional<IDescriptionPreprocessor> caseTextOverrideDescription(TextOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseButtonDescription(ButtonDescription object) {
return Optional.of(new PreconfiguredPreprocessor<ButtonDescription>(ButtonDescription.class, PropertiesPackage.Literals.BUTTON_DESCRIPTION));
}
@Override
+ public Optional<IDescriptionPreprocessor> caseButtonOverrideDescription(ButtonOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseLabelDescription(LabelDescription object) {
return Optional.of(new PreconfiguredPreprocessor<LabelDescription>(LabelDescription.class, PropertiesPackage.Literals.LABEL_DESCRIPTION));
}
@Override
+ public Optional<IDescriptionPreprocessor> caseLabelOverrideDescription(LabelOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseCheckboxDescription(CheckboxDescription object) {
return Optional.of(new PreconfiguredPreprocessor<CheckboxDescription>(CheckboxDescription.class, PropertiesPackage.Literals.CHECKBOX_DESCRIPTION));
}
@Override
+ public Optional<IDescriptionPreprocessor> caseCheckboxOverrideDescription(CheckboxOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseSelectDescription(SelectDescription object) {
return Optional.of(new PreconfiguredPreprocessor<SelectDescription>(SelectDescription.class, PropertiesPackage.Literals.SELECT_DESCRIPTION));
}
@Override
+ public Optional<IDescriptionPreprocessor> caseSelectOverrideDescription(SelectOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseTextAreaDescription(TextAreaDescription object) {
return Optional.of(new PreconfiguredPreprocessor<TextAreaDescription>(TextAreaDescription.class, PropertiesPackage.Literals.TEXT_AREA_DESCRIPTION));
}
@Override
+ public Optional<IDescriptionPreprocessor> caseTextAreaOverrideDescription(TextAreaOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseListDescription(ListDescription object) {
return Optional.of(new PreconfiguredPreprocessor<ListDescription>(ListDescription.class, PropertiesPackage.Literals.LIST_DESCRIPTION));
}
@Override
+ public Optional<IDescriptionPreprocessor> caseListOverrideDescription(ListOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseHyperlinkDescription(HyperlinkDescription object) {
return Optional.of(new PreconfiguredPreprocessor<HyperlinkDescription>(HyperlinkDescription.class, PropertiesPackage.Literals.HYPERLINK_DESCRIPTION));
}
@Override
+ public Optional<IDescriptionPreprocessor> caseHyperlinkOverrideDescription(HyperlinkOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseRadioDescription(RadioDescription object) {
return Optional.of(new PreconfiguredPreprocessor<RadioDescription>(RadioDescription.class, PropertiesPackage.Literals.RADIO_DESCRIPTION));
}
@Override
+ public Optional<IDescriptionPreprocessor> caseRadioOverrideDescription(RadioOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseAbstractDynamicMappingForDescription(AbstractDynamicMappingForDescription object) {
return Optional.of(new PreconfiguredPreprocessor<DynamicMappingForDescription>(DynamicMappingForDescription.class, PropertiesPackage.Literals.DYNAMIC_MAPPING_FOR_DESCRIPTION));
}
@@ -135,10 +205,21 @@ public class PropertiesDescriptionPreprocessorSwitch extends PropertiesSwitch<Op
}
@Override
+ public Optional<IDescriptionPreprocessor> caseDynamicMappingForOverrideDescription(DynamicMappingForOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractDynamicMappingForDescription>(AbstractDynamicMappingForDescription.class,
+ PropertiesPackage.Literals.ABSTRACT_DYNAMIC_MAPPING_FOR_DESCRIPTION));
+ }
+
+ @Override
public Optional<IDescriptionPreprocessor> caseCustomDescription(CustomDescription object) {
return Optional.of(new CustomDescriptionPreprocessor());
}
+ @Override
+ public Optional<IDescriptionPreprocessor> caseCustomOverrideDescription(CustomOverrideDescription object) {
+ return Optional.of(new OverrideDescriptionPreprocessor<AbstractWidgetDescription>(AbstractWidgetDescription.class, PropertiesPackage.Literals.ABSTRACT_WIDGET_DESCRIPTION));
+ }
+
// Default
@Override
public Optional<IDescriptionPreprocessor> defaultCase(EObject object) {
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/META-INF/MANIFEST.MF b/plugins/org.eclipse.sirius.tests.ui.properties/META-INF/MANIFEST.MF
index 101bb52a2c..082d71db31 100644
--- a/plugins/org.eclipse.sirius.tests.ui.properties/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/META-INF/MANIFEST.MF
@@ -24,5 +24,9 @@ Require-Bundle: org.eclipse.sirius.ui.properties;bundle-version="4.1.0",
org.apache.log4j;bundle-version="1.2.15",
org.eclipse.sirius.diagram;bundle-version="5.0.0",
org.eclipse.sirius.common.interpreter,
- org.eclipse.acceleo.query
+ org.eclipse.acceleo.query,
+ org.eclipse.sirius.tests.junit.support,
+ org.eclipse.sirius.ui,
+ org.eclipse.sirius.ecore.extender,
+ org.eclipse.emf.transaction
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/Overrides.odesign b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/Overrides.odesign
new file mode 100644
index 0000000000..726470bcb0
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/Overrides.odesign
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description:Group
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:description="http://www.eclipse.org/sirius/description/1.1.0"
+ xmlns:properties="http://www.eclipse.org/sirius/properties/1.0.0"
+ name="My"
+ version="12.0.0.201702091400">
+ <ownedViewpoints
+ name="Overrides"/>
+ <extensions
+ xsi:type="properties:ViewExtensionDescription">
+ <categories
+ name="Default">
+ <pages
+ labelExpression="Pikachu">
+ <extends
+ href="../../../../plugin/org.eclipse.sirius.properties.core/model/properties.odesign#//@extensions.0/@categories.0/@pages.0"/>
+ </pages>
+ </categories>
+ <categories
+ name="Overrides">
+ <overrides
+ xsi:type="properties:GroupOverrideDescription"
+ name="OverridesDefaultRulesGroup"
+ labelExpression="OverridesDefaultRulesGroup">
+ <overrides
+ href="../../../../plugin/org.eclipse.sirius.properties.core/model/properties.odesign#//@extensions.0/@categories.0/@groups.0"/>
+ </overrides>
+ <overrides
+ xsi:type="properties:TextOverrideDescription"
+ labelExpression="Carapuce">
+ <overrides
+ href="../../../../plugin/org.eclipse.sirius.properties.core/model/properties.odesign#//@extensions.0/@categories.0/@groups.0/@controls.0/@ifs.0/@widget"/>
+ </overrides>
+ </categories>
+ </extensions>
+</description:Group>
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/README.txt b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/README.txt
index 2cc3b07991..2cc3b07991 100644
--- a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/README.txt
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/README.txt
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/expected.odesign b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/expected.odesign
index 9b5d0b5078..9b5d0b5078 100644
--- a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/expected.odesign
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/expected.odesign
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/input.odesign b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/input.odesign
index 3b607d6cb9..3b607d6cb9 100644
--- a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/input.odesign
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/input.odesign
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/input2.odesign b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/input2.odesign
index 1f0b4567b2..1f0b4567b2 100644
--- a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/input2.odesign
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/input2.odesign
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/processed.odesign b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/processed.odesign
new file mode 100644
index 0000000000..9b5d0b5078
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/extends/processed.odesign
@@ -0,0 +1,1624 @@
+<?xml version="1.0" encoding="ASCII"?>
+<properties:ViewExtensionDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:properties="http://www.eclipse.org/sirius/properties/1.0.0" xmlns:properties-ext-widgets-reference="http://www.eclipse.org/sirius/properties/1.0.0/ext/widgets/reference" xmlns:tool="http://www.eclipse.org/sirius/description/tool/1.1.0" name="Properties">
+ <categories name="Default">
+ <pages name="DefaultPage" labelExpression="DefaultPageLabelExpression" domainClass="DefaultPageDomainClass" semanticCandidateExpression="DefaultPageSemanticCandidateExpression" preconditionExpression="DefaultPagePreconditionExpression" filterGroupsFromExtendedPageExpression="DefaultPageFilterGroupsFromExtendedPageExpression" filterValidationRulesFromExtendedPageExpression="DefaultPageFilterValidationRulesFromExtendedPageExpression">
+ <validationSet>
+ <semanticValidationRules name="DefaultPageSemanticValidationRuleId" label="DefaultPageSemanticValidationRuleLabel" message="DefaultPageSemanticValidationRuleMessage" targetClass="DefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultPageSemanticValidationRuleId" label="AnotherDefaultPageSemanticValidationRuleLabel" message="AnotherDefaultPageSemanticValidationRuleMessage" targetClass="AnotherDefaultPageSemanticValidationRuleTargetClass"/>
+ </validationSet>
+ </pages>
+ <pages name="ExtendsDefaultPage" labelExpression="ExtendsDefaultPageLabelExpression" domainClass="ExtendsDefaultPageDomainClass" semanticCandidateExpression="ExtendsDefaultPageSemanticCandidateExpression" preconditionExpression="ExtendsDefaultPagePreconditionExpression" filterGroupsFromExtendedPageExpression="ExtendsDefaultPageFilterGroupsFromExtendedPageExpression" filterValidationRulesFromExtendedPageExpression="ExtendsDefaultPageFilterValidationRulesFromExtendedPageExpression">
+ <validationSet>
+ <semanticValidationRules name="DefaultPageSemanticValidationRuleId" label="DefaultPageSemanticValidationRuleLabel" message="DefaultPageSemanticValidationRuleMessage" targetClass="DefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultPageSemanticValidationRuleId" label="AnotherDefaultPageSemanticValidationRuleLabel" message="AnotherDefaultPageSemanticValidationRuleMessage" targetClass="AnotherDefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="ExtendsDefaultPageSemanticValidationRuleId" label="ExtendsDefaultPageSemanticValidationRuleLabel" message="ExtendsDefaultPageSemanticValidationRuleMessage" targetClass="ExtendsDefaultPageSemanticValidationRuleTargetClass"/>
+ </validationSet>
+ </pages>
+ <pages name="InheritsDefaultPage" labelExpression="DefaultPageLabelExpression" domainClass="DefaultPageDomainClass" semanticCandidateExpression="DefaultPageSemanticCandidateExpression" preconditionExpression="DefaultPagePreconditionExpression" filterGroupsFromExtendedPageExpression="DefaultPageFilterGroupsFromExtendedPageExpression" filterValidationRulesFromExtendedPageExpression="DefaultPageFilterValidationRulesFromExtendedPageExpression">
+ <validationSet>
+ <semanticValidationRules name="DefaultPageSemanticValidationRuleId" label="DefaultPageSemanticValidationRuleLabel" message="DefaultPageSemanticValidationRuleMessage" targetClass="DefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultPageSemanticValidationRuleId" label="AnotherDefaultPageSemanticValidationRuleLabel" message="AnotherDefaultPageSemanticValidationRuleMessage" targetClass="AnotherDefaultPageSemanticValidationRuleTargetClass"/>
+ </validationSet>
+ </pages>
+ <pages name="PageReferencingGroups" labelExpression="PageReferencingGroupsLabelExpression" domainClass="PageReferencingGroupsDomainClass" semanticCandidateExpression="PageReferencingGroupsSemanticCandidateExpression" preconditionExpression="PageReferencingGroupsPreconditionExpression" groups="//@categories.0/@groups.0 //@categories.0/@groups.1 //@categories.0/@groups.2 //@categories.3/@groups.2" filterGroupsFromExtendedPageExpression="PageReferencingGroupsFilterGroupsFromExtendedPageExpression" filterValidationRulesFromExtendedPageExpression="PageReferencingGroupsFilterValidationRulesExtendedPageExpression">
+ <validationSet>
+ <semanticValidationRules name="FilteredSemanticValidationRuleId" label="FilteredSemanticValidationRuleLabel" message="FilteredSemanticValidationRuleMessage" targetClass="FilteredSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="PageReferencingGroupsSemanticValidationRuleId" label="PageReferencingGroupsSemanticValidationRuleLabel" message="PageReferencingGroupsSemanticValidationRuleMessage" targetClass="PageReferencingGroupsSemanticValidationRuleTargetClass"/>
+ </validationSet>
+ </pages>
+ <pages name="ExtendsExtendsDefaultPage" labelExpression="ExtendsExtendsDefaultPageLabelExpression" domainClass="ExtendsDefaultPageDomainClass" semanticCandidateExpression="ExtendsDefaultPageSemanticCandidateExpression" preconditionExpression="ExtendsDefaultPagePreconditionExpression" filterGroupsFromExtendedPageExpression="ExtendsDefaultPageFilterGroupsFromExtendedPageExpression" filterValidationRulesFromExtendedPageExpression="ExtendsDefaultPageFilterValidationRulesFromExtendedPageExpression">
+ <validationSet>
+ <semanticValidationRules name="DefaultPageSemanticValidationRuleId" label="DefaultPageSemanticValidationRuleLabel" message="DefaultPageSemanticValidationRuleMessage" targetClass="DefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultPageSemanticValidationRuleId" label="AnotherDefaultPageSemanticValidationRuleLabel" message="AnotherDefaultPageSemanticValidationRuleMessage" targetClass="AnotherDefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="ExtendsDefaultPageSemanticValidationRuleId" label="ExtendsDefaultPageSemanticValidationRuleLabel" message="ExtendsDefaultPageSemanticValidationRuleMessage" targetClass="ExtendsDefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="ExtendsExtendsDefaultPageSemanticValidationRuleId" label="ExtendsExtendsDefaultPageSemanticValidationRuleLabel" message="ExtendsExtendsDefaultPageSemanticValidationRuleMessage" targetClass="ExtendsExtendsDefaultPageSemanticValidationRuleTargetClass"/>
+ </validationSet>
+ </pages>
+ <pages name="ExtendsPageInAnotherResource" labelExpression="Page" domainClass="" semanticCandidateExpression="var:self" preconditionExpression="PageInAnotherResourcePreconditionExpression" groups="//@categories.0/@groups.4" filterGroupsFromExtendedPageExpression="" filterValidationRulesFromExtendedPageExpression="PageInAnotherResourceFilterValidationRulesFromExtendedPageExpression"/>
+ <pages name="ExtendsPageReferencingGroups" label="" labelExpression="ExtendsPageReferencingGroupsLabelExpression" domainClass="ExtendsDefaultPageDomainClass" semanticCandidateExpression="ExtendsPageReferencingGroupsSemanticCandidateExpression" preconditionExpression="ExtendsPageReferencingGroupsPreconditionExpression" groups="//@categories.3/@groups.3 //@categories.0/@groups.0 //@categories.0/@groups.1 //@categories.0/@groups.2 //@categories.3/@groups.2" filterGroupsFromExtendedPageExpression="" filterValidationRulesFromExtendedPageExpression="ExtendsPageReferencingGroupsFilterValidationRulesFromExtendedPageExpression">
+ <validationSet>
+ <semanticValidationRules name="FilteredSemanticValidationRuleId" label="FilteredSemanticValidationRuleLabel" message="FilteredSemanticValidationRuleMessage" targetClass="FilteredSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="PageReferencingGroupsSemanticValidationRuleId" label="PageReferencingGroupsSemanticValidationRuleLabel" message="PageReferencingGroupsSemanticValidationRuleMessage" targetClass="PageReferencingGroupsSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="DefaultPageSemanticValidationRuleId" label="DefaultPageSemanticValidationRuleLabel" message="DefaultPageSemanticValidationRuleMessage" targetClass="DefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultPageSemanticValidationRuleId" label="AnotherDefaultPageSemanticValidationRuleLabel" message="AnotherDefaultPageSemanticValidationRuleMessage" targetClass="AnotherDefaultPageSemanticValidationRuleTargetClass"/>
+ </validationSet>
+ </pages>
+ <groups name="DefaultGroup" labelExpression="DefaultGroupLabelExpression" domainClass="DefaultGroupDomainClass" semanticCandidateExpression="DefaultGroupSemanticCandidateExpression" preconditionExpression="DefaultGroupPreconditionExpression" filterControlsFromExtendedGroupExpression="DefaultGroupFilterControlsFromExtendedGroupExpression" filterValidationRulesFromExtendedGroupExpression="DefaultGroupFilterValidationRulesFromExtendedGroupExpression" filterConditionalStylesFromExtendedGroupExpression="DefaultGroupFilterConditionalStylesFromExtendedGroupExpression">
+ <controls xsi:type="properties:TextDescription" name="DefaultGroupFilteredText"/>
+ <controls xsi:type="properties:TextDescription" name="DefaultGroupText" labelExpression="DefaultGroupTextLabelExpression" helpExpression="DefaultGroupTextHelpExpression" isEnabledExpression="DefaultGroupTextIsEnabledExpression" valueExpression="DefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="DefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupTextChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextStyleFontNameExpression" fontSizeExpression="DefaultGroupTextStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="DefaultGroupTextFilteredConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextFilteredConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextFilteredConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextFilteredConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextFilteredConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="AnotherDefaultGroupText" labelExpression="AnotherDefaultGroupTextLabelExpression" helpExpression="AnotherDefaultGroupTextHelpExpression" isEnabledExpression="AnotherDefaultGroupTextIsEnabledExpression" valueExpression="AnotherDefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="AnotherDefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="AnotherDefaultGroupTextChangeContext"/>
+ </initialOperation>
+ </controls>
+ <controls xsi:type="properties:ButtonDescription" name="DefaultGroupButton" labelExpression="DefaultGroupButtonLabelExpression" helpExpression="DefaultGroupButtonHelpExpression" isEnabledExpression="DefaultGroupButtonIsEnabledExpression" buttonLabelExpression="DefaultGroupButtonLabelExpression" filterConditionalStylesFromExtendedButtonExpression="DefaultGroupButtonFilterConditionalStylesFromExtendedButtonExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupButtonChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupButtonStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupButtonStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupButtonConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupButtonConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupButtonConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:LabelDescription" name="DefaultGroupLabel" labelExpression="DefaultGroupLabelLabelExpression" helpExpression="DefaultGroupLabelHelpExpression" isEnabledExpression="DefaultGroupLabelIsEnabledExpression" valueExpression="DefaultGroupLabelValueExpression" displayExpression="DefaultGroupLabelDisplayExpression" filterConditionalStylesFromExtendedLabelExpression="DefaultGroupLabelFilterConditionalStylesExtendedLabelExpression" filterActionsFromExtendedLabelExpression="DefaultGroupLabelFilterActionsFromExtendedLabelExpression">
+ <style labelFontNameExpression="DefaultGroupLabelStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupLabelStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupLabelStyleFontNameExpression" fontSizeExpression="DefaultGroupLabelStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupLabelConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupLabelConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupLabelConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupLabelConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupLabelConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ <actions labelExpression="DefaultGroupLabelWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupLabelWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ </controls>
+ <controls xsi:type="properties:CheckboxDescription" name="DefaultGroupCheckbox" labelExpression="DefaultGroupCheckboxLabelExpression" helpExpression="DefaultGroupCheckboxHelpExpression" isEnabledExpression="DefaultGroupCheckboxIsEnabledExpression" valueExpression="DefaultGroupCheckboxValueExpression" filterConditionalStylesFromExtendedCheckboxExpression="DefaultGroupCheckboxFilterConditionalStylesFromExtendedCheckboxExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupCheckboxChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupCheckboxStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCheckboxStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupCheckboxConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupCheckboxConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCheckboxConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:SelectDescription" name="DefaultGroupSelect" labelExpression="DefaultGroupSelectLabelExpression" helpExpression="DefaultGroupSelectHelpExpression" isEnabledExpression="DefaultGroupSelectIsEnabledExpression" valueExpression="DefaultGroupSelectValueExpression" candidatesExpression="DefaultGroupSelectCandidatesExpression" candidateDisplayExpression="DefaultGroupSelectCandidateDisplayExpression" filterConditionalStylesFromExtendedSelectExpression="DefaultGroupSelectFilterConditionalStylesExtendedSelectExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupSelectChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupSelectStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupSelectStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupSelectConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupSelectConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupSelectConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextAreaDescription" name="DefaultGroupTextArea" labelExpression="DefaultGroupTextAreaLabelExpression" helpExpression="DefaultGroupTextAreaHelpExpression" isEnabledExpression="DefaultGroupTextAreaIsEnabledExpression" lineCount="42" valueExpression="DefaultGroupTextAreaValue" filterConditionalStylesFromExtendedTextAreaExpression="DefaultGroupTextAreaFilterConditionalStylesFromExtendedTextAreaExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupTextAreaChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextAreaStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextAreaStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextAreaStyleFontNameExpression" fontSizeExpression="DefaultGroupTextAreaStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextAreaConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextAreaConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextAreaConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextAreaConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextAreaConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:ListDescription" name="DefaultGroupList" labelExpression="DefaultGroupListLabelExpression" helpExpression="DefaultGroupListHelpExpression" isEnabledExpression="DefaultGroupListIsEnabledExpression" valueExpression="DefaultGroupListValueExpression" displayExpression="DefaultGroupListDisplayExpression" filterConditionalStylesFromExtendedListExpression="DefaultGroupListFilterConditionalStylesFromExtendedListExpression" filterActionsFromExtendedListExpression="DefaultGroupListFilterActionsFromExtendedListExpression">
+ <onClickOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupListChangeContext"/>
+ </onClickOperation>
+ <actions labelExpression="DefaultGroupListWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupListWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ <style labelFontNameExpression="DefaultGroupListStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupListStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupListConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupListConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupListConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:RadioDescription" name="DefaultGroupRadioIdentifier" labelExpression="DefaultGroupRadioLabelExpression" helpExpression="DefaultGroupRadioHelpExpression" isEnabledExpression="DefaultGroupRadioIsEnabledExpression" valueExpression="DefaultGroupRadioValueExpression" candidatesExpression="DefaultGroupRadioCandidatesExpression" candidateDisplayExpression="DefaultGroupRadioCandidateDisplayExpression" numberOfColumns="42" filterConditionalStylesFromExtendedRadioExpression="DefaultGroupRadioFilterConditionalStylesFromExtendedRadioExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupRadioChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupRadioStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupRadioStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupRadioConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupRadioStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupRadioStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:CustomDescription" name="DefaultGroupCustomWidget" labelExpression="DefaultGroupCustomWidgetLabelExpression" helpExpression="DefaultGroupCustomWidgetHelpExpression" isEnabledExpression="DefaultGroupCustomWidgetIsEnabledExpression" filterConditionalStylesFromExtendedCustomExpression="DefaultGroupCustomWidgetFilterConditionalStylesFromExtendedCustomExpression">
+ <customExpressions name="DefaultGroupCustomWidgetCustomExpressionId" customExpression="DefaultGroupCustomWidgetCustomExpression"/>
+ <customOperations name="DefaultGroupCustomWidgetCustomOperation">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupCustomWidgetCustomOperationChangeContext"/>
+ </initialOperation>
+ </customOperations>
+ <style labelFontNameExpression="DefaultGroupCustomWidgetStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCustomWidgetStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupCustomWidgetConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupCustomWidgetConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCustomWidgetConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:HyperlinkDescription" name="DefaultGroupHyperlink" labelExpression="DefaultGroupHyperlinkLabelExpression" helpExpression="DefaultGroupHyperlinkHelpExpression" isEnabledExpression="DefaultGroupHyperlinkIsEnabledExpression" valueExpression="DefaultGroupHyperlinkValueExpression" displayExpression="DefaultGroupHyperlinkDisplayExpression" filterConditionalStylesFromExtendedHyperlinkExpression="DefaultGroupHyperlinkFilterConditionalStylesFromExtendedHyperlinkExpression" filterActionsFromExtendedHyperlinkExpression="DefaultGroupHyperlinkFilterActionsFromExtendedHyperlinkExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupHyperlinkChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupHyperlinkStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupHyperlinkStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupHyperlinkStyleFontNameExpression" fontSizeExpression="DefaultGroupHyperlinkStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupHyperlinkConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupHyperlinkStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupHyperlinkStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupHyperlinkStyleFontNameExpression" fontSizeExpression="DefaultGroupHyperlinkStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_purple']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ <actions labelExpression="DefaultGroupHyperlinkWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupHyperlinkWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ </controls>
+ <controls xsi:type="properties-ext-widgets-reference:ExtReferenceDescription" name="DefaultGroupReference" referenceNameExpression="DefaultGroupReferenceNameExpression" referenceOwnerExpression="DefaultGroupReferenceOwnerExpression">
+ <style labelFontNameExpression="DefaultGroupReferenceStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupReferenceStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </controls>
+ <controls xsi:type="properties:DynamicMappingForDescription" name="DefaultGroupDynamicMappingFor" iterator="DefaultGroupDynamicMappingForIterator" iterableExpression="DefaultGroupDynamicMappingForIterablExpression" filterIfsFromExtendedDynamicMappingForExpression="DefaultGroupDynamicMappingForFilterIfsFromExtendedDynamicMappingForExpression">
+ <ifs name="DefaultGroupDynamicMappingIf" predicateExpression="DefaultGroupDynamicMappingIfPredicateExpression">
+ <widget xsi:type="properties:TextDescription" name="DefaultGroupDynamicMappingIfText" labelExpression="DefaultGroupDynamicMappingIfTextLabelExpression" filterConditionalStylesFromExtendedTextExpression=""/>
+ </ifs>
+ </controls>
+ <validationSet>
+ <semanticValidationRules name="DefaultGroupSemanticValidationRuleId" label="DefaultGroupSemanticValidationRuleLabel" message="DefaultGroupSemanticValidationRuleMessage" targetClass="DefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultGroupSemanticValidationRuleId" label="AnotherDefaultGroupSemanticValidationRuleLabel" message="AnotherDefaultGroupSemanticValidationRuleMessage" targetClass="AnotherDefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="DefaultGroupFilteredSemanticValidationRule"/>
+ <propertyValidationRules name="DefaultGroupPropertyValidationRuleId" label="DefaultGroupPropertyValidationRuleLabel" message="DefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.1"/>
+ <propertyValidationRules name="AnotherDefaultGroupPropertyValidationRuleId" label="AnotherDefaultGroupPropertyValidationRuleLabel" message="AnotherDefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.2"/>
+ <propertyValidationRules name="DefaultGroupFilteredPropertyValidationRule" label="" message="" targets="//@categories.0/@groups.3/@controls.1"/>
+ </validationSet>
+ <style fontNameExpression="DefaultGroupStyleFontNameExpression" fontSizeExpression="DefaultGroupStyleFontSizeExpression" barStyle="SHORT_TITLE_BAR" toggleStyle="TREE_NODE" expandedByDefault="true">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupConditionalStylePreconditionExpression">
+ <style fontNameExpression="DefaultGroupConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupConditionalStyleFontSizeExpression">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ </style>
+ </conditionalStyles>
+ </groups>
+ <groups name="ExtendsDefaultGroup" labelExpression="ExtendsDefaultGroupLabelExpression" domainClass="ExtendsDefaultGroupDomainClass" semanticCandidateExpression="ExtendsDefaultGroupSemanticCandidateExpression" preconditionExpression="ExtendsDefaultGroupPreconditionExpression" filterControlsFromExtendedGroupExpression="ExtendsDefaultGroupFilterControlsFromExtendedGroupExpression" filterValidationRulesFromExtendedGroupExpression="ExtendsDefaultGroupFilterValidationRulesFromExtendedGroupExpression" filterConditionalStylesFromExtendedGroupExpression="ExtendsDefaultGroupFilterConditionalStylesFromExtendedGroupExpression">
+ <controls xsi:type="properties:TextDescription" name="DefaultGroupFilteredText"/>
+ <controls xsi:type="properties:TextDescription" name="DefaultGroupText" labelExpression="DefaultGroupTextLabelExpression" helpExpression="DefaultGroupTextHelpExpression" isEnabledExpression="DefaultGroupTextIsEnabledExpression" valueExpression="DefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="DefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupTextChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextStyleFontNameExpression" fontSizeExpression="DefaultGroupTextStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="DefaultGroupTextFilteredConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextFilteredConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextFilteredConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextFilteredConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextFilteredConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="AnotherDefaultGroupText" labelExpression="AnotherDefaultGroupTextLabelExpression" helpExpression="AnotherDefaultGroupTextHelpExpression" isEnabledExpression="AnotherDefaultGroupTextIsEnabledExpression" valueExpression="AnotherDefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="AnotherDefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="AnotherDefaultGroupTextChangeContext"/>
+ </initialOperation>
+ </controls>
+ <controls xsi:type="properties:ButtonDescription" name="DefaultGroupButton" labelExpression="DefaultGroupButtonLabelExpression" helpExpression="DefaultGroupButtonHelpExpression" isEnabledExpression="DefaultGroupButtonIsEnabledExpression" buttonLabelExpression="DefaultGroupButtonLabelExpression" filterConditionalStylesFromExtendedButtonExpression="DefaultGroupButtonFilterConditionalStylesFromExtendedButtonExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupButtonChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupButtonStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupButtonStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupButtonConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupButtonConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupButtonConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:LabelDescription" name="DefaultGroupLabel" labelExpression="DefaultGroupLabelLabelExpression" helpExpression="DefaultGroupLabelHelpExpression" isEnabledExpression="DefaultGroupLabelIsEnabledExpression" valueExpression="DefaultGroupLabelValueExpression" displayExpression="DefaultGroupLabelDisplayExpression" filterConditionalStylesFromExtendedLabelExpression="DefaultGroupLabelFilterConditionalStylesExtendedLabelExpression" filterActionsFromExtendedLabelExpression="DefaultGroupLabelFilterActionsFromExtendedLabelExpression">
+ <style labelFontNameExpression="DefaultGroupLabelStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupLabelStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupLabelStyleFontNameExpression" fontSizeExpression="DefaultGroupLabelStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupLabelConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupLabelConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupLabelConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupLabelConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupLabelConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ <actions labelExpression="DefaultGroupLabelWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupLabelWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ </controls>
+ <controls xsi:type="properties:CheckboxDescription" name="DefaultGroupCheckbox" labelExpression="DefaultGroupCheckboxLabelExpression" helpExpression="DefaultGroupCheckboxHelpExpression" isEnabledExpression="DefaultGroupCheckboxIsEnabledExpression" valueExpression="DefaultGroupCheckboxValueExpression" filterConditionalStylesFromExtendedCheckboxExpression="DefaultGroupCheckboxFilterConditionalStylesFromExtendedCheckboxExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupCheckboxChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupCheckboxStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCheckboxStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupCheckboxConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupCheckboxConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCheckboxConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:SelectDescription" name="DefaultGroupSelect" labelExpression="DefaultGroupSelectLabelExpression" helpExpression="DefaultGroupSelectHelpExpression" isEnabledExpression="DefaultGroupSelectIsEnabledExpression" valueExpression="DefaultGroupSelectValueExpression" candidatesExpression="DefaultGroupSelectCandidatesExpression" candidateDisplayExpression="DefaultGroupSelectCandidateDisplayExpression" filterConditionalStylesFromExtendedSelectExpression="DefaultGroupSelectFilterConditionalStylesExtendedSelectExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupSelectChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupSelectStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupSelectStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupSelectConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupSelectConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupSelectConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextAreaDescription" name="DefaultGroupTextArea" labelExpression="DefaultGroupTextAreaLabelExpression" helpExpression="DefaultGroupTextAreaHelpExpression" isEnabledExpression="DefaultGroupTextAreaIsEnabledExpression" lineCount="42" valueExpression="DefaultGroupTextAreaValue" filterConditionalStylesFromExtendedTextAreaExpression="DefaultGroupTextAreaFilterConditionalStylesFromExtendedTextAreaExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupTextAreaChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextAreaStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextAreaStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextAreaStyleFontNameExpression" fontSizeExpression="DefaultGroupTextAreaStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextAreaConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextAreaConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextAreaConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextAreaConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextAreaConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:ListDescription" name="DefaultGroupList" labelExpression="DefaultGroupListLabelExpression" helpExpression="DefaultGroupListHelpExpression" isEnabledExpression="DefaultGroupListIsEnabledExpression" valueExpression="DefaultGroupListValueExpression" displayExpression="DefaultGroupListDisplayExpression" filterConditionalStylesFromExtendedListExpression="DefaultGroupListFilterConditionalStylesFromExtendedListExpression" filterActionsFromExtendedListExpression="DefaultGroupListFilterActionsFromExtendedListExpression">
+ <onClickOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupListChangeContext"/>
+ </onClickOperation>
+ <actions labelExpression="DefaultGroupListWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupListWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ <style labelFontNameExpression="DefaultGroupListStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupListStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupListConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupListConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupListConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:RadioDescription" name="DefaultGroupRadioIdentifier" labelExpression="DefaultGroupRadioLabelExpression" helpExpression="DefaultGroupRadioHelpExpression" isEnabledExpression="DefaultGroupRadioIsEnabledExpression" valueExpression="DefaultGroupRadioValueExpression" candidatesExpression="DefaultGroupRadioCandidatesExpression" candidateDisplayExpression="DefaultGroupRadioCandidateDisplayExpression" numberOfColumns="42" filterConditionalStylesFromExtendedRadioExpression="DefaultGroupRadioFilterConditionalStylesFromExtendedRadioExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupRadioChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupRadioStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupRadioStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupRadioConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupRadioStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupRadioStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:CustomDescription" name="DefaultGroupCustomWidget" labelExpression="DefaultGroupCustomWidgetLabelExpression" helpExpression="DefaultGroupCustomWidgetHelpExpression" isEnabledExpression="DefaultGroupCustomWidgetIsEnabledExpression" filterConditionalStylesFromExtendedCustomExpression="DefaultGroupCustomWidgetFilterConditionalStylesFromExtendedCustomExpression">
+ <customExpressions name="DefaultGroupCustomWidgetCustomExpressionId" customExpression="DefaultGroupCustomWidgetCustomExpression"/>
+ <customOperations name="DefaultGroupCustomWidgetCustomOperation">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupCustomWidgetCustomOperationChangeContext"/>
+ </initialOperation>
+ </customOperations>
+ <style labelFontNameExpression="DefaultGroupCustomWidgetStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCustomWidgetStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupCustomWidgetConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupCustomWidgetConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCustomWidgetConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:HyperlinkDescription" name="DefaultGroupHyperlink" labelExpression="DefaultGroupHyperlinkLabelExpression" helpExpression="DefaultGroupHyperlinkHelpExpression" isEnabledExpression="DefaultGroupHyperlinkIsEnabledExpression" valueExpression="DefaultGroupHyperlinkValueExpression" displayExpression="DefaultGroupHyperlinkDisplayExpression" filterConditionalStylesFromExtendedHyperlinkExpression="DefaultGroupHyperlinkFilterConditionalStylesFromExtendedHyperlinkExpression" filterActionsFromExtendedHyperlinkExpression="DefaultGroupHyperlinkFilterActionsFromExtendedHyperlinkExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupHyperlinkChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupHyperlinkStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupHyperlinkStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupHyperlinkStyleFontNameExpression" fontSizeExpression="DefaultGroupHyperlinkStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupHyperlinkConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupHyperlinkStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupHyperlinkStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupHyperlinkStyleFontNameExpression" fontSizeExpression="DefaultGroupHyperlinkStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_purple']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ <actions labelExpression="DefaultGroupHyperlinkWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupHyperlinkWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ </controls>
+ <controls xsi:type="properties-ext-widgets-reference:ExtReferenceDescription" name="DefaultGroupReference" referenceNameExpression="DefaultGroupReferenceNameExpression" referenceOwnerExpression="DefaultGroupReferenceOwnerExpression">
+ <style labelFontNameExpression="DefaultGroupReferenceStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupReferenceStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </controls>
+ <controls xsi:type="properties:DynamicMappingForDescription" name="DefaultGroupDynamicMappingFor" iterator="DefaultGroupDynamicMappingForIterator" iterableExpression="DefaultGroupDynamicMappingForIterablExpression" filterIfsFromExtendedDynamicMappingForExpression="DefaultGroupDynamicMappingForFilterIfsFromExtendedDynamicMappingForExpression">
+ <ifs name="DefaultGroupDynamicMappingIf" predicateExpression="DefaultGroupDynamicMappingIfPredicateExpression">
+ <widget xsi:type="properties:TextDescription" name="DefaultGroupDynamicMappingIfText" labelExpression="DefaultGroupDynamicMappingIfTextLabelExpression" filterConditionalStylesFromExtendedTextExpression=""/>
+ </ifs>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="ExtendsDefaultGroupText" labelExpression="ExtendsDefaultGroupTextLabelExpression" helpExpression="ExtendsDefaultGroupTextHelpExpression" isEnabledExpression="ExtendsDefaultGroupTextIsEnabledExpression" valueExpression="ExtendsDefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="ExtendsDefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="ExtendsDefaultGroupTextChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextStyleFontNameExpression" fontSizeExpression="DefaultGroupTextStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="DefaultGroupTextFilteredConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextFilteredConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextFilteredConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextFilteredConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextFilteredConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <validationSet>
+ <semanticValidationRules name="DefaultGroupSemanticValidationRuleId" label="DefaultGroupSemanticValidationRuleLabel" message="DefaultGroupSemanticValidationRuleMessage" targetClass="DefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultGroupSemanticValidationRuleId" label="AnotherDefaultGroupSemanticValidationRuleLabel" message="AnotherDefaultGroupSemanticValidationRuleMessage" targetClass="AnotherDefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="DefaultGroupFilteredSemanticValidationRule"/>
+ <semanticValidationRules name="ExtendsDefaultGroupSemanticValidationRuleId" label="ExtendsDefaultGroupSemanticValidationRuleLabel" message="ExtendsDefaultGroupSemanticValidationRuleMessage" targetClass="ExtendsDefaultGroupSemanticValidationRuleTargetClass"/>
+ <propertyValidationRules name="DefaultGroupPropertyValidationRuleId" label="DefaultGroupPropertyValidationRuleLabel" message="DefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.1"/>
+ <propertyValidationRules name="AnotherDefaultGroupPropertyValidationRuleId" label="AnotherDefaultGroupPropertyValidationRuleLabel" message="AnotherDefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.2"/>
+ <propertyValidationRules name="DefaultGroupFilteredPropertyValidationRule" label="" message="" targets="//@categories.0/@groups.3/@controls.1"/>
+ <propertyValidationRules name="ExtendsDefaultGroupPropertyValidationRuleId" label="ExtendsDefaultGroupPropertyValidationRuleLabel" message="ExtendsDefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.14"/>
+ </validationSet>
+ <style fontNameExpression="DefaultGroupStyleFontNameExpression" fontSizeExpression="DefaultGroupStyleFontSizeExpression" barStyle="SHORT_TITLE_BAR" toggleStyle="TREE_NODE" expandedByDefault="true">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupConditionalStylePreconditionExpression">
+ <style fontNameExpression="DefaultGroupConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupConditionalStyleFontSizeExpression">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ </style>
+ </conditionalStyles>
+ </groups>
+ <groups name="InheritsDefaultGroup" labelExpression="DefaultGroupLabelExpression" domainClass="DefaultGroupDomainClass" semanticCandidateExpression="DefaultGroupSemanticCandidateExpression" preconditionExpression="DefaultGroupPreconditionExpression" filterControlsFromExtendedGroupExpression="DefaultGroupFilterControlsFromExtendedGroupExpression" filterValidationRulesFromExtendedGroupExpression="DefaultGroupFilterValidationRulesFromExtendedGroupExpression" filterConditionalStylesFromExtendedGroupExpression="DefaultGroupFilterConditionalStylesFromExtendedGroupExpression">
+ <controls xsi:type="properties:TextDescription" name="DefaultGroupFilteredText"/>
+ <controls xsi:type="properties:TextDescription" name="DefaultGroupText" labelExpression="DefaultGroupTextLabelExpression" helpExpression="DefaultGroupTextHelpExpression" isEnabledExpression="DefaultGroupTextIsEnabledExpression" valueExpression="DefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="DefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupTextChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextStyleFontNameExpression" fontSizeExpression="DefaultGroupTextStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="DefaultGroupTextFilteredConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextFilteredConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextFilteredConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextFilteredConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextFilteredConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="AnotherDefaultGroupText" labelExpression="AnotherDefaultGroupTextLabelExpression" helpExpression="AnotherDefaultGroupTextHelpExpression" isEnabledExpression="AnotherDefaultGroupTextIsEnabledExpression" valueExpression="AnotherDefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="AnotherDefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="AnotherDefaultGroupTextChangeContext"/>
+ </initialOperation>
+ </controls>
+ <controls xsi:type="properties:ButtonDescription" name="DefaultGroupButton" labelExpression="DefaultGroupButtonLabelExpression" helpExpression="DefaultGroupButtonHelpExpression" isEnabledExpression="DefaultGroupButtonIsEnabledExpression" buttonLabelExpression="DefaultGroupButtonLabelExpression" filterConditionalStylesFromExtendedButtonExpression="DefaultGroupButtonFilterConditionalStylesFromExtendedButtonExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupButtonChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupButtonStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupButtonStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupButtonConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupButtonConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupButtonConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:LabelDescription" name="DefaultGroupLabel" labelExpression="DefaultGroupLabelLabelExpression" helpExpression="DefaultGroupLabelHelpExpression" isEnabledExpression="DefaultGroupLabelIsEnabledExpression" valueExpression="DefaultGroupLabelValueExpression" displayExpression="DefaultGroupLabelDisplayExpression" filterConditionalStylesFromExtendedLabelExpression="DefaultGroupLabelFilterConditionalStylesExtendedLabelExpression" filterActionsFromExtendedLabelExpression="DefaultGroupLabelFilterActionsFromExtendedLabelExpression">
+ <style labelFontNameExpression="DefaultGroupLabelStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupLabelStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupLabelStyleFontNameExpression" fontSizeExpression="DefaultGroupLabelStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupLabelConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupLabelConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupLabelConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupLabelConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupLabelConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ <actions labelExpression="DefaultGroupLabelWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupLabelWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ </controls>
+ <controls xsi:type="properties:CheckboxDescription" name="DefaultGroupCheckbox" labelExpression="DefaultGroupCheckboxLabelExpression" helpExpression="DefaultGroupCheckboxHelpExpression" isEnabledExpression="DefaultGroupCheckboxIsEnabledExpression" valueExpression="DefaultGroupCheckboxValueExpression" filterConditionalStylesFromExtendedCheckboxExpression="DefaultGroupCheckboxFilterConditionalStylesFromExtendedCheckboxExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupCheckboxChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupCheckboxStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCheckboxStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupCheckboxConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupCheckboxConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCheckboxConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:SelectDescription" name="DefaultGroupSelect" labelExpression="DefaultGroupSelectLabelExpression" helpExpression="DefaultGroupSelectHelpExpression" isEnabledExpression="DefaultGroupSelectIsEnabledExpression" valueExpression="DefaultGroupSelectValueExpression" candidatesExpression="DefaultGroupSelectCandidatesExpression" candidateDisplayExpression="DefaultGroupSelectCandidateDisplayExpression" filterConditionalStylesFromExtendedSelectExpression="DefaultGroupSelectFilterConditionalStylesExtendedSelectExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupSelectChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupSelectStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupSelectStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupSelectConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupSelectConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupSelectConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextAreaDescription" name="DefaultGroupTextArea" labelExpression="DefaultGroupTextAreaLabelExpression" helpExpression="DefaultGroupTextAreaHelpExpression" isEnabledExpression="DefaultGroupTextAreaIsEnabledExpression" lineCount="42" valueExpression="DefaultGroupTextAreaValue" filterConditionalStylesFromExtendedTextAreaExpression="DefaultGroupTextAreaFilterConditionalStylesFromExtendedTextAreaExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupTextAreaChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextAreaStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextAreaStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextAreaStyleFontNameExpression" fontSizeExpression="DefaultGroupTextAreaStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextAreaConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextAreaConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextAreaConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextAreaConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextAreaConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:ListDescription" name="DefaultGroupList" labelExpression="DefaultGroupListLabelExpression" helpExpression="DefaultGroupListHelpExpression" isEnabledExpression="DefaultGroupListIsEnabledExpression" valueExpression="DefaultGroupListValueExpression" displayExpression="DefaultGroupListDisplayExpression" filterConditionalStylesFromExtendedListExpression="DefaultGroupListFilterConditionalStylesFromExtendedListExpression" filterActionsFromExtendedListExpression="DefaultGroupListFilterActionsFromExtendedListExpression">
+ <onClickOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupListChangeContext"/>
+ </onClickOperation>
+ <actions labelExpression="DefaultGroupListWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupListWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ <style labelFontNameExpression="DefaultGroupListStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupListStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupListConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupListConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupListConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:RadioDescription" name="DefaultGroupRadioIdentifier" labelExpression="DefaultGroupRadioLabelExpression" helpExpression="DefaultGroupRadioHelpExpression" isEnabledExpression="DefaultGroupRadioIsEnabledExpression" valueExpression="DefaultGroupRadioValueExpression" candidatesExpression="DefaultGroupRadioCandidatesExpression" candidateDisplayExpression="DefaultGroupRadioCandidateDisplayExpression" numberOfColumns="42" filterConditionalStylesFromExtendedRadioExpression="DefaultGroupRadioFilterConditionalStylesFromExtendedRadioExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupRadioChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupRadioStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupRadioStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupRadioConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupRadioStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupRadioStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:CustomDescription" name="DefaultGroupCustomWidget" labelExpression="DefaultGroupCustomWidgetLabelExpression" helpExpression="DefaultGroupCustomWidgetHelpExpression" isEnabledExpression="DefaultGroupCustomWidgetIsEnabledExpression" filterConditionalStylesFromExtendedCustomExpression="DefaultGroupCustomWidgetFilterConditionalStylesFromExtendedCustomExpression">
+ <customExpressions name="DefaultGroupCustomWidgetCustomExpressionId" customExpression="DefaultGroupCustomWidgetCustomExpression"/>
+ <customOperations name="DefaultGroupCustomWidgetCustomOperation">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupCustomWidgetCustomOperationChangeContext"/>
+ </initialOperation>
+ </customOperations>
+ <style labelFontNameExpression="DefaultGroupCustomWidgetStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCustomWidgetStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupCustomWidgetConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupCustomWidgetConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCustomWidgetConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:HyperlinkDescription" name="DefaultGroupHyperlink" labelExpression="DefaultGroupHyperlinkLabelExpression" helpExpression="DefaultGroupHyperlinkHelpExpression" isEnabledExpression="DefaultGroupHyperlinkIsEnabledExpression" valueExpression="DefaultGroupHyperlinkValueExpression" displayExpression="DefaultGroupHyperlinkDisplayExpression" filterConditionalStylesFromExtendedHyperlinkExpression="DefaultGroupHyperlinkFilterConditionalStylesFromExtendedHyperlinkExpression" filterActionsFromExtendedHyperlinkExpression="DefaultGroupHyperlinkFilterActionsFromExtendedHyperlinkExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupHyperlinkChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupHyperlinkStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupHyperlinkStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupHyperlinkStyleFontNameExpression" fontSizeExpression="DefaultGroupHyperlinkStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupHyperlinkConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupHyperlinkStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupHyperlinkStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupHyperlinkStyleFontNameExpression" fontSizeExpression="DefaultGroupHyperlinkStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_purple']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ <actions labelExpression="DefaultGroupHyperlinkWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupHyperlinkWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ </controls>
+ <controls xsi:type="properties-ext-widgets-reference:ExtReferenceDescription" name="DefaultGroupReference" referenceNameExpression="DefaultGroupReferenceNameExpression" referenceOwnerExpression="DefaultGroupReferenceOwnerExpression">
+ <style labelFontNameExpression="DefaultGroupReferenceStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupReferenceStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </controls>
+ <controls xsi:type="properties:DynamicMappingForDescription" name="DefaultGroupDynamicMappingFor" iterator="DefaultGroupDynamicMappingForIterator" iterableExpression="DefaultGroupDynamicMappingForIterablExpression" filterIfsFromExtendedDynamicMappingForExpression="DefaultGroupDynamicMappingForFilterIfsFromExtendedDynamicMappingForExpression">
+ <ifs name="DefaultGroupDynamicMappingIf" predicateExpression="DefaultGroupDynamicMappingIfPredicateExpression">
+ <widget xsi:type="properties:TextDescription" name="DefaultGroupDynamicMappingIfText" labelExpression="DefaultGroupDynamicMappingIfTextLabelExpression" filterConditionalStylesFromExtendedTextExpression=""/>
+ </ifs>
+ </controls>
+ <validationSet>
+ <semanticValidationRules name="DefaultGroupSemanticValidationRuleId" label="DefaultGroupSemanticValidationRuleLabel" message="DefaultGroupSemanticValidationRuleMessage" targetClass="DefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultGroupSemanticValidationRuleId" label="AnotherDefaultGroupSemanticValidationRuleLabel" message="AnotherDefaultGroupSemanticValidationRuleMessage" targetClass="AnotherDefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="DefaultGroupFilteredSemanticValidationRule"/>
+ <propertyValidationRules name="DefaultGroupPropertyValidationRuleId" label="DefaultGroupPropertyValidationRuleLabel" message="DefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.1"/>
+ <propertyValidationRules name="AnotherDefaultGroupPropertyValidationRuleId" label="AnotherDefaultGroupPropertyValidationRuleLabel" message="AnotherDefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.2"/>
+ <propertyValidationRules name="DefaultGroupFilteredPropertyValidationRule" label="" message="" targets="//@categories.0/@groups.3/@controls.1"/>
+ </validationSet>
+ <style fontNameExpression="DefaultGroupStyleFontNameExpression" fontSizeExpression="DefaultGroupStyleFontSizeExpression" barStyle="SHORT_TITLE_BAR" toggleStyle="TREE_NODE" expandedByDefault="true">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupConditionalStylePreconditionExpression">
+ <style fontNameExpression="DefaultGroupConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupConditionalStyleFontSizeExpression">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ </style>
+ </conditionalStyles>
+ </groups>
+ <groups name="ExtendsExtendsDefaultGroup" labelExpression="ExtendsDefaultGroupLabelExpression" domainClass="ExtendsDefaultGroupDomainClass" semanticCandidateExpression="ExtendsDefaultGroupSemanticCandidateExpression" preconditionExpression="ExtendsDefaultGroupPreconditionExpression" filterControlsFromExtendedGroupExpression="" filterValidationRulesFromExtendedGroupExpression="ExtendsDefaultGroupFilterValidationRulesFromExtendedGroupExpression" filterConditionalStylesFromExtendedGroupExpression="ExtendsDefaultGroupFilterConditionalStylesFromExtendedGroupExpression">
+ <controls xsi:type="properties:TextDescription" name="DefaultGroupFilteredText"/>
+ <controls xsi:type="properties:TextDescription" name="DefaultGroupText" labelExpression="DefaultGroupTextLabelExpression" helpExpression="DefaultGroupTextHelpExpression" isEnabledExpression="DefaultGroupTextIsEnabledExpression" valueExpression="DefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="DefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupTextChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextStyleFontNameExpression" fontSizeExpression="DefaultGroupTextStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="DefaultGroupTextFilteredConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextFilteredConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextFilteredConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextFilteredConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextFilteredConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="AnotherDefaultGroupText" labelExpression="AnotherDefaultGroupTextLabelExpression" helpExpression="AnotherDefaultGroupTextHelpExpression" isEnabledExpression="AnotherDefaultGroupTextIsEnabledExpression" valueExpression="AnotherDefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="AnotherDefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="AnotherDefaultGroupTextChangeContext"/>
+ </initialOperation>
+ </controls>
+ <controls xsi:type="properties:ButtonDescription" name="DefaultGroupButton" labelExpression="DefaultGroupButtonLabelExpression" helpExpression="DefaultGroupButtonHelpExpression" isEnabledExpression="DefaultGroupButtonIsEnabledExpression" buttonLabelExpression="DefaultGroupButtonLabelExpression" filterConditionalStylesFromExtendedButtonExpression="DefaultGroupButtonFilterConditionalStylesFromExtendedButtonExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupButtonChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupButtonStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupButtonStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupButtonConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupButtonConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupButtonConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:LabelDescription" name="DefaultGroupLabel" labelExpression="DefaultGroupLabelLabelExpression" helpExpression="DefaultGroupLabelHelpExpression" isEnabledExpression="DefaultGroupLabelIsEnabledExpression" valueExpression="DefaultGroupLabelValueExpression" displayExpression="DefaultGroupLabelDisplayExpression" filterConditionalStylesFromExtendedLabelExpression="DefaultGroupLabelFilterConditionalStylesExtendedLabelExpression" filterActionsFromExtendedLabelExpression="DefaultGroupLabelFilterActionsFromExtendedLabelExpression">
+ <style labelFontNameExpression="DefaultGroupLabelStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupLabelStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupLabelStyleFontNameExpression" fontSizeExpression="DefaultGroupLabelStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupLabelConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupLabelConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupLabelConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupLabelConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupLabelConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_green']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ <actions labelExpression="DefaultGroupLabelWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupLabelWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ </controls>
+ <controls xsi:type="properties:CheckboxDescription" name="DefaultGroupCheckbox" labelExpression="DefaultGroupCheckboxLabelExpression" helpExpression="DefaultGroupCheckboxHelpExpression" isEnabledExpression="DefaultGroupCheckboxIsEnabledExpression" valueExpression="DefaultGroupCheckboxValueExpression" filterConditionalStylesFromExtendedCheckboxExpression="DefaultGroupCheckboxFilterConditionalStylesFromExtendedCheckboxExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupCheckboxChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupCheckboxStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCheckboxStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupCheckboxConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupCheckboxConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCheckboxConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:SelectDescription" name="DefaultGroupSelect" labelExpression="DefaultGroupSelectLabelExpression" helpExpression="DefaultGroupSelectHelpExpression" isEnabledExpression="DefaultGroupSelectIsEnabledExpression" valueExpression="DefaultGroupSelectValueExpression" candidatesExpression="DefaultGroupSelectCandidatesExpression" candidateDisplayExpression="DefaultGroupSelectCandidateDisplayExpression" filterConditionalStylesFromExtendedSelectExpression="DefaultGroupSelectFilterConditionalStylesExtendedSelectExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupSelectChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupSelectStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupSelectStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupSelectConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupSelectConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupSelectConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextAreaDescription" name="DefaultGroupTextArea" labelExpression="DefaultGroupTextAreaLabelExpression" helpExpression="DefaultGroupTextAreaHelpExpression" isEnabledExpression="DefaultGroupTextAreaIsEnabledExpression" lineCount="42" valueExpression="DefaultGroupTextAreaValue" filterConditionalStylesFromExtendedTextAreaExpression="DefaultGroupTextAreaFilterConditionalStylesFromExtendedTextAreaExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupTextAreaChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextAreaStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextAreaStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextAreaStyleFontNameExpression" fontSizeExpression="DefaultGroupTextAreaStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextAreaConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextAreaConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextAreaConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextAreaConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextAreaConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:ListDescription" name="DefaultGroupList" labelExpression="DefaultGroupListLabelExpression" helpExpression="DefaultGroupListHelpExpression" isEnabledExpression="DefaultGroupListIsEnabledExpression" valueExpression="DefaultGroupListValueExpression" displayExpression="DefaultGroupListDisplayExpression" filterConditionalStylesFromExtendedListExpression="DefaultGroupListFilterConditionalStylesFromExtendedListExpression" filterActionsFromExtendedListExpression="DefaultGroupListFilterActionsFromExtendedListExpression">
+ <onClickOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupListChangeContext"/>
+ </onClickOperation>
+ <actions labelExpression="DefaultGroupListWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupListWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ <style labelFontNameExpression="DefaultGroupListStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupListStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupListConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupListConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupListConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:RadioDescription" name="DefaultGroupRadioIdentifier" labelExpression="DefaultGroupRadioLabelExpression" helpExpression="DefaultGroupRadioHelpExpression" isEnabledExpression="DefaultGroupRadioIsEnabledExpression" valueExpression="DefaultGroupRadioValueExpression" candidatesExpression="DefaultGroupRadioCandidatesExpression" candidateDisplayExpression="DefaultGroupRadioCandidateDisplayExpression" numberOfColumns="42" filterConditionalStylesFromExtendedRadioExpression="DefaultGroupRadioFilterConditionalStylesFromExtendedRadioExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupRadioChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupRadioStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupRadioStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupRadioConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupRadioStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupRadioStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_orange']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:CustomDescription" name="DefaultGroupCustomWidget" labelExpression="DefaultGroupCustomWidgetLabelExpression" helpExpression="DefaultGroupCustomWidgetHelpExpression" isEnabledExpression="DefaultGroupCustomWidgetIsEnabledExpression" filterConditionalStylesFromExtendedCustomExpression="DefaultGroupCustomWidgetFilterConditionalStylesFromExtendedCustomExpression">
+ <customExpressions name="DefaultGroupCustomWidgetCustomExpressionId" customExpression="DefaultGroupCustomWidgetCustomExpression"/>
+ <customOperations name="DefaultGroupCustomWidgetCustomOperation">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupCustomWidgetCustomOperationChangeContext"/>
+ </initialOperation>
+ </customOperations>
+ <style labelFontNameExpression="DefaultGroupCustomWidgetStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCustomWidgetStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupCustomWidgetConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupCustomWidgetConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupCustomWidgetConditionalStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:HyperlinkDescription" name="DefaultGroupHyperlink" labelExpression="DefaultGroupHyperlinkLabelExpression" helpExpression="DefaultGroupHyperlinkHelpExpression" isEnabledExpression="DefaultGroupHyperlinkIsEnabledExpression" valueExpression="DefaultGroupHyperlinkValueExpression" displayExpression="DefaultGroupHyperlinkDisplayExpression" filterConditionalStylesFromExtendedHyperlinkExpression="DefaultGroupHyperlinkFilterConditionalStylesFromExtendedHyperlinkExpression" filterActionsFromExtendedHyperlinkExpression="DefaultGroupHyperlinkFilterActionsFromExtendedHyperlinkExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupHyperlinkChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupHyperlinkStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupHyperlinkStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupHyperlinkStyleFontNameExpression" fontSizeExpression="DefaultGroupHyperlinkStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='white']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupHyperlinkConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupHyperlinkStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupHyperlinkStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupHyperlinkStyleFontNameExpression" fontSizeExpression="DefaultGroupHyperlinkStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_purple']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_red']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ </conditionalStyles>
+ <actions labelExpression="DefaultGroupHyperlinkWidgetAction">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="DefaultGroupHyperlinkWidgetActionChangeContext"/>
+ </initialOperation>
+ </actions>
+ </controls>
+ <controls xsi:type="properties-ext-widgets-reference:ExtReferenceDescription" name="DefaultGroupReference" referenceNameExpression="DefaultGroupReferenceNameExpression" referenceOwnerExpression="DefaultGroupReferenceOwnerExpression">
+ <style labelFontNameExpression="DefaultGroupReferenceStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupReferenceStyleLabelFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_chocolate']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='chocolate']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <labelFontFormat>underline</labelFontFormat>
+ <labelFontFormat>strike_through</labelFontFormat>
+ </style>
+ </controls>
+ <controls xsi:type="properties:DynamicMappingForDescription" name="DefaultGroupDynamicMappingFor" iterator="DefaultGroupDynamicMappingForIterator" iterableExpression="DefaultGroupDynamicMappingForIterablExpression" filterIfsFromExtendedDynamicMappingForExpression="DefaultGroupDynamicMappingForFilterIfsFromExtendedDynamicMappingForExpression">
+ <ifs name="DefaultGroupDynamicMappingIf" predicateExpression="DefaultGroupDynamicMappingIfPredicateExpression">
+ <widget xsi:type="properties:TextDescription" name="DefaultGroupDynamicMappingIfText" labelExpression="DefaultGroupDynamicMappingIfTextLabelExpression" filterConditionalStylesFromExtendedTextExpression=""/>
+ </ifs>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="ExtendsDefaultGroupText" labelExpression="ExtendsDefaultGroupTextLabelExpression" helpExpression="ExtendsDefaultGroupTextHelpExpression" isEnabledExpression="ExtendsDefaultGroupTextIsEnabledExpression" valueExpression="ExtendsDefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="ExtendsDefaultGroupTextFilterConditionalStylesFromExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="ExtendsDefaultGroupTextChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="DefaultGroupTextStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextStyleFontNameExpression" fontSizeExpression="DefaultGroupTextStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ <fontFormat>underline</fontFormat>
+ <fontFormat>strike_through</fontFormat>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupTextConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="DefaultGroupTextFilteredConditionalStylePreconditionExpression">
+ <style labelFontNameExpression="DefaultGroupTextFilteredConditionalStyleLabelFontNameExpression" labelFontSizeExpression="DefaultGroupTextFilteredConditionalStyleLabelFontSizeExpression" fontNameExpression="DefaultGroupTextFilteredConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupTextFilteredConditionalStyleFontSizeExpression">
+ <labelBackgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ <labelForegroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <labelFontFormat>italic</labelFontFormat>
+ <labelFontFormat>bold</labelFontFormat>
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ <fontFormat>italic</fontFormat>
+ <fontFormat>bold</fontFormat>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="ExtendsExtendsDefaultGroupText" labelExpression="ExtendsExtendsDefaultGroupTextLabelExpression" helpExpression="ExtendsExtendsDefaultGroupTextHelpExpression" isEnabledExpression="ExtendsExtendsDefaultGroupTextIsEnabledExpression" valueExpression="ExtendsExtendsDefaultGroupTextValueExpression" filterConditionalStylesFromExtendedTextExpression="ExtendsExtendsDefaultGroupTextFilterConditionalStylesExtendedTextExpression">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="var:self"/>
+ </initialOperation>
+ </controls>
+ <validationSet>
+ <semanticValidationRules name="DefaultGroupSemanticValidationRuleId" label="DefaultGroupSemanticValidationRuleLabel" message="DefaultGroupSemanticValidationRuleMessage" targetClass="DefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="AnotherDefaultGroupSemanticValidationRuleId" label="AnotherDefaultGroupSemanticValidationRuleLabel" message="AnotherDefaultGroupSemanticValidationRuleMessage" targetClass="AnotherDefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="DefaultGroupFilteredSemanticValidationRule"/>
+ <semanticValidationRules name="ExtendsDefaultGroupSemanticValidationRuleId" label="ExtendsDefaultGroupSemanticValidationRuleLabel" message="ExtendsDefaultGroupSemanticValidationRuleMessage" targetClass="ExtendsDefaultGroupSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules name="ExtendsExtendsDefaultGroupSemanticValidationRuleId" label="ExtendsExtendsDefaultGroupSemanticValidationRuleLabel" message="ExtendsExtendsDefaultGroupSemanticValidationRuleMessage" targetClass="ExtendsExtendsDefaultGroupSemanticValidationRuleTargetClass"/>
+ <propertyValidationRules name="DefaultGroupPropertyValidationRuleId" label="DefaultGroupPropertyValidationRuleLabel" message="DefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.1"/>
+ <propertyValidationRules name="AnotherDefaultGroupPropertyValidationRuleId" label="AnotherDefaultGroupPropertyValidationRuleLabel" message="AnotherDefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.2"/>
+ <propertyValidationRules name="DefaultGroupFilteredPropertyValidationRule" label="" message="" targets="//@categories.0/@groups.3/@controls.1"/>
+ <propertyValidationRules name="ExtendsDefaultGroupPropertyValidationRuleId" label="ExtendsDefaultGroupPropertyValidationRuleLabel" message="ExtendsDefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.14"/>
+ <propertyValidationRules name="ExtendsExtendsDefaultGroupPropertyValidationRuleId" label="ExtendsExtendsDefaultGroupPropertyValidationRuleLabel" message="ExtendsExtendsDefaultGroupPropertyValidationRuleMessage" targets="//@categories.0/@groups.3/@controls.1 //@categories.0/@groups.3/@controls.14 //@categories.0/@groups.3/@controls.15"/>
+ </validationSet>
+ <style fontNameExpression="DefaultGroupStyleFontNameExpression" fontSizeExpression="DefaultGroupStyleFontSizeExpression" barStyle="SHORT_TITLE_BAR" toggleStyle="TREE_NODE" expandedByDefault="true">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="DefaultGroupConditionalStylePreconditionExpression">
+ <style fontNameExpression="DefaultGroupConditionalStyleFontNameExpression" fontSizeExpression="DefaultGroupConditionalStyleFontSizeExpression">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_gray']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_yellow']"/>
+ </style>
+ </conditionalStyles>
+ </groups>
+ <groups name="GroupInAnotherResource" labelExpression="GroupInAnotherResource" domainClass="GroupInAnotherResourceDomainClass" semanticCandidateExpression="GroupInAnotherResourceSemanticCandidateExpression" preconditionExpression="GroupInAnotherResourcePreconditionExpression">
+ <controls xsi:type="properties:TextDescription" name="GroupInAnotherResourceText" labelExpression="GroupInAnotherResourceTextLabelExpression" helpExpression="GroupInAnotherResourceTextHelpExpression" isEnabledExpression="GroupInAnotherResourceTextIsEnabledExpression" valueExpression="GroupInAnotherResourceTextValueExpression" filterConditionalStylesFromExtendedTextExpression="GroupInAnotherResourceTextFilterConditionalStylesFromExtendedTextExpression"/>
+ </groups>
+ </categories>
+ <categories name="AnotherCategory">
+ <pages name="AnotherCategoryPageReferencingGroups" labelExpression="AnotherCategoryPageReferencingGroupsLabelExpression" domainClass="AnotherCategoryPageReferencingGroupsDomainClass" semanticCandidateExpression="AnotherCategoryPageReferencingGroupsSemanticCandidateExpression" preconditionExpression="AnotherCategoryPageReferencingGroupsPreconditionExpression" groups="//@categories.0/@groups.0 //@categories.0/@groups.1 //@categories.0/@groups.2" filterGroupsFromExtendedPageExpression="AnotherCategoryPageReferencingGroupsFilterGroupsFromExtendedPageExpression" filterValidationRulesFromExtendedPageExpression="AnotherCategoryPageReferencingGroupsFilterValidationRulesFromExtendedPageExpression">
+ <validationSet>
+ <semanticValidationRules name="AnotherCategoryPageReferencingGroupsSemanticValidationRuleId" label="AnotherCategoryPageReferencingGroupsSemanticValidationRuleLabel" level="WARNING" message="AnotherCategoryPageReferencingGroupsSemanticValidationRuleMessage" targetClass="AnotherCategoryPageReferencingGroupsSemanticValidationRuleTargetClass"/>
+ </validationSet>
+ </pages>
+ </categories>
+ <categories name="DefaultRuleCategory">
+ <pages name="ExtendsDefaultRules" labelExpression="ExtendsDefaultRules"/>
+ </categories>
+ <categories name="Filter">
+ <pages name="OriginalPage" label="" labelExpression="" semanticCandidateExpression="" groups="//@categories.3/@groups.2 //@categories.3/@groups.0 //@categories.3/@groups.3">
+ <validationSet>
+ <semanticValidationRules name="SemanticValidationRule"/>
+ <semanticValidationRules name="FilteredSemanticValidationRule"/>
+ </validationSet>
+ </pages>
+ <pages name="ExtendsOriginalPageAndFilter" label="" labelExpression="" domainClass="" semanticCandidateExpression="" preconditionExpression="" groups="//@categories.3/@groups.4 //@categories.3/@groups.0 //@categories.3/@groups.3" filterGroupsFromExtendedPageExpression="aql:group.name.contains('FilteredGroup')" filterValidationRulesFromExtendedPageExpression="aql:validationRule.name.contains('FilteredSemanticValidationRule')">
+ <validationSet>
+ <semanticValidationRules name="SemanticValidationRule"/>
+ <semanticValidationRules name="AnotherFilteredSemanticValidationRule"/>
+ </validationSet>
+ </pages>
+ <pages name="ExtendsExtendsOriginalPageAndFilter" label="" labelExpression="" domainClass="" semanticCandidateExpression="" preconditionExpression="" groups="//@categories.3/@groups.2 //@categories.3/@groups.0 //@categories.3/@groups.3" filterGroupsFromExtendedPageExpression="aql:group.name.contains('AnotherFilteredGroup')" filterValidationRulesFromExtendedPageExpression="aql:validationRule.name.contains('AnotherFiltered')">
+ <validationSet>
+ <semanticValidationRules name="SemanticValidationRule"/>
+ <semanticValidationRules name="FilteredSemanticValidationRule"/>
+ </validationSet>
+ </pages>
+ <groups name="OriginalGroup" labelExpression="Group" semanticCandidateExpression="var:self">
+ <controls xsi:type="properties:TextDescription" name="OriginalGroupText">
+ <style labelFontNameExpression="OriginalGroupTextStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="OriginalGroupTextConditionalStylePrecondition">
+ <style labelFontNameExpression="ConditionalStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='green']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="OriginalGroupTextFilteredConditionalStylePrecondition">
+ <style labelFontNameExpression="OriginalGroupTextFilteredConditionalStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='green']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="OriginalGroupFilteredText"/>
+ <validationSet>
+ <semanticValidationRules name="OriginalGroupSemanticValidationRule"/>
+ <semanticValidationRules name="OriginalGroupFilteredSemanticValidationRule"/>
+ <propertyValidationRules name="OriginalGroupPropertyValidationRule"/>
+ <propertyValidationRules name="OriginalGroupFilteredPropertyValidationRule"/>
+ </validationSet>
+ </groups>
+ <groups name="ExtendsOriginalGroupAndFilter" labelExpression="" domainClass="" semanticCandidateExpression="" preconditionExpression="" filterControlsFromExtendedGroupExpression="aql:control.name.contains('Filter')" filterValidationRulesFromExtendedGroupExpression="aql:validationRule.name.contains('Filter')" filterConditionalStylesFromExtendedGroupExpression="">
+ <controls xsi:type="properties:TextDescription" name="OriginalGroupText">
+ <style labelFontNameExpression="OriginalGroupTextStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="OriginalGroupTextConditionalStylePrecondition">
+ <style labelFontNameExpression="ConditionalStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='green']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="OriginalGroupTextFilteredConditionalStylePrecondition">
+ <style labelFontNameExpression="OriginalGroupTextFilteredConditionalStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='green']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="ExtendsOriginalGroupTextAndFilter" labelExpression="" helpExpression="" isEnabledExpression="" valueExpression="" filterConditionalStylesFromExtendedTextExpression="aql:conditionalStyle.preconditionExpression.contains('Filter')">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="ExtendsOriginalGroupTextChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="OriginalGroupTextStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="OriginalGroupTextConditionalStylePrecondition">
+ <style labelFontNameExpression="ConditionalStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='green']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <validationSet>
+ <semanticValidationRules name="OriginalGroupSemanticValidationRule"/>
+ <semanticValidationRules name="ExtendsOriginalGroupSemanticValidationRule" label="" message="" targetClass=""/>
+ <propertyValidationRules name="OriginalGroupPropertyValidationRule"/>
+ <propertyValidationRules name="ExtendsOriginalGroupPropertyValidationRule" label="" message="" targets="//@categories.3/@groups.5/@controls.2"/>
+ </validationSet>
+ </groups>
+ <groups name="FilteredGroup" labelExpression="" domainClass="" semanticCandidateExpression="" preconditionExpression="" filterControlsFromExtendedGroupExpression="" filterValidationRulesFromExtendedGroupExpression="" filterConditionalStylesFromExtendedGroupExpression=""/>
+ <groups name="AnotherGroup" labelExpression="" domainClass="" semanticCandidateExpression="" preconditionExpression="" filterControlsFromExtendedGroupExpression="" filterValidationRulesFromExtendedGroupExpression="" filterConditionalStylesFromExtendedGroupExpression=""/>
+ <groups name="AnotherFilteredGroup" labelExpression="" domainClass="" semanticCandidateExpression="" preconditionExpression="" filterControlsFromExtendedGroupExpression="" filterValidationRulesFromExtendedGroupExpression="" filterConditionalStylesFromExtendedGroupExpression=""/>
+ <groups name="ExtendsExtendsOriginalGroupAndFilter" labelExpression="" domainClass="" semanticCandidateExpression="" preconditionExpression="" filterControlsFromExtendedGroupExpression="aql:control.name.contains('ExtendsOrignialGroupTextAndFilter')" filterValidationRulesFromExtendedGroupExpression="aql:validationRule.name.contains('ExtendsOriginalGroup')" filterConditionalStylesFromExtendedGroupExpression="">
+ <controls xsi:type="properties:TextDescription" name="OriginalGroupText">
+ <style labelFontNameExpression="OriginalGroupTextStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="OriginalGroupTextConditionalStylePrecondition">
+ <style labelFontNameExpression="ConditionalStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='green']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </conditionalStyles>
+ <conditionalStyles preconditionExpression="OriginalGroupTextFilteredConditionalStylePrecondition">
+ <style labelFontNameExpression="OriginalGroupTextFilteredConditionalStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='green']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <controls xsi:type="properties:TextDescription" name="OriginalGroupFilteredText"/>
+ <controls xsi:type="properties:TextDescription" name="ExtendsOriginalGroupTextAndFilter" labelExpression="" helpExpression="" isEnabledExpression="" valueExpression="" filterConditionalStylesFromExtendedTextExpression="aql:conditionalStyle.preconditionExpression.contains('Filter')">
+ <initialOperation>
+ <firstModelOperations xsi:type="tool:ChangeContext" browseExpression="ExtendsOriginalGroupTextChangeContext"/>
+ </initialOperation>
+ <style labelFontNameExpression="OriginalGroupTextStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/>
+ </style>
+ <conditionalStyles preconditionExpression="OriginalGroupTextConditionalStylePrecondition">
+ <style labelFontNameExpression="ConditionalStyle" fontNameExpression="">
+ <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='green']"/>
+ <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/>
+ </style>
+ </conditionalStyles>
+ </controls>
+ <validationSet>
+ <semanticValidationRules name="OriginalGroupSemanticValidationRule"/>
+ <semanticValidationRules name="OriginalGroupFilteredSemanticValidationRule"/>
+ <semanticValidationRules name="ExtendsExtendsOriginalGroupSemanticValidationRule" label="" message="" targetClass=""/>
+ <propertyValidationRules name="OriginalGroupPropertyValidationRule"/>
+ <propertyValidationRules name="OriginalGroupFilteredPropertyValidationRule"/>
+ <propertyValidationRules name="ExtendsExtendsOriginalGroupPropertyValidationRule" label="" message=""/>
+ </validationSet>
+ </groups>
+ </categories>
+</properties:ViewExtensionDescription>
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/expected.odesign b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/expected.odesign
new file mode 100644
index 0000000000..5fb78adc29
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/expected.odesign
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="ASCII"?>
+<properties:ViewExtensionDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:properties="http://www.eclipse.org/sirius/properties/1.0.0">
+ <categories name="Default">
+ <pages name="OverridesDefaultRulesPage" labelExpression="OverridesDefaultRulesPage"/>
+ <pages name="OverridesDefaultPageAndExtendsAnotherDefaultPage" labelExpression="OverridesDefaultPage" domainClass="" semanticCandidateExpression="var:self" preconditionExpression="" groups="//@categories.0/@groups.0" filterGroupsFromExtendedPageExpression="aql:group.name.contains('FilterExtended')" filterValidationRulesFromExtendedPageExpression="aql:validationRule.name.contains('FilterExtended')">
+ <validationSet>
+ <semanticValidationRules name="DefaultSemanticValidationRule" level="ERROR" targetClass="ecore.EClass">
+ <audits auditExpression="aql:false"/>
+ </semanticValidationRules>
+ <semanticValidationRules name="AnotherDefaultSemanticValidationRule" level="ERROR" targetClass="ecore.EClass">
+ <audits auditExpression="aql:false"/>
+ </semanticValidationRules>
+ </validationSet>
+ </pages>
+ <pages name="AnotherPageWithDefaultGroup" labelExpression="Another Page" domainClass="ecore.EClass" semanticCandidateExpression="var:self" groups="//@categories.0/@groups.0"/>
+ <pages name="AnotherDefaultPage" labelExpression="Another Default Page" domainClass="ecore.EClass" semanticCandidateExpression="var:self" groups="//@categories.0/@groups.2" filterValidationRulesFromExtendedPageExpression="">
+ <validationSet>
+ <semanticValidationRules name="AnotherDefaultSemanticValidationRule" level="ERROR" targetClass="ecore.EClass">
+ <audits auditExpression="aql:false"/>
+ </semanticValidationRules>
+ <semanticValidationRules name="FilterExtendedDefaultSemanticValidationRule" level="ERROR" targetClass="ecore.EClass">
+ <audits auditExpression="aql:false"/>
+ </semanticValidationRules>
+ </validationSet>
+ </pages>
+ <groups name="OverridesDefaultGroup" label="" labelExpression="OverridesDefaultGroup" semanticCandidateExpression="var:self" filterControlsFromExtendedGroupExpression="">
+ <controls xsi:type="properties:TextDescription" name="OverridesDefaultText" labelExpression="OverridesDefaultText" isEnabledExpression="" valueExpression="aql:self.name"/>
+ <controls xsi:type="properties:LabelDescription" name="OverridesDefaultLabel" label="" labelExpression="OverridesDefaultLabel" valueExpression="aql:self.name"/>
+ <controls xsi:type="properties:ButtonDescription" name="OverridesDefaultButton" labelExpression="OverridesDefaultButton"/>
+ <controls xsi:type="properties:CheckboxDescription" name="OverridesDefaultCheckbox" labelExpression="OverridesDefaultCheckbox"/>
+ <controls xsi:type="properties:SelectDescription" name="OverridesDefaultSelect" labelExpression="OverridesDefaultSelect" valueExpression="aql:self.name" candidatesExpression="aql:self" candidateDisplayExpression="aql:candidate.name"/>
+ <controls xsi:type="properties:TextAreaDescription" name="OverridesDefaultTextArea" labelExpression="OverridesDefaultTextArea" valueExpression="aql:self.name"/>
+ <controls xsi:type="properties:ListDescription" name="OverridesDefaultList" label="" labelExpression="OverridesDefaultList" valueExpression="" displayExpression="" filterConditionalStylesFromExtendedListExpression=""/>
+ <controls xsi:type="properties:HyperlinkDescription" name="OverridesDefaultHyperlink" label="" labelExpression="OverridesDefaultHyperlink" valueExpression="aql:self" displayExpression="aql:value.name" filterConditionalStylesFromExtendedHyperlinkExpression="" filterActionsFromExtendedHyperlinkExpression=""/>
+ <controls xsi:type="properties:RadioDescription" name="OverridesDefaultRadio" label="" labelExpression="OverridesDefaultRadio" candidatesExpression="aql:Sequence{'Radio1','Radio2','Radio3'}" candidateDisplayExpression="aql:candidate"/>
+ </groups>
+ <groups name="FilterOverriddenGroup" label="" labelExpression="FilterOverriddenGroup" domainClass="" semanticCandidateExpression="var:self"/>
+ <groups name="FilterExtendedGroup" label="" labelExpression="FilterOverridenGroup" semanticCandidateExpression="var:self"/>
+ </categories>
+ <categories name="Overrides">
+ <overrides xsi:type="properties:GroupOverrideDescription" name="OverridesDefaultGroup" labelExpression="OverridesDefaultGroup" filterControlsFromExtendedGroupExpression="" filterControlsFromOverriddenGroupExpression="aql:control.name.contains('Filter')"/>
+ <overrides xsi:type="properties:PageOverrideDescription" name="OverridesDefaultRulesPage" labelExpression="OverridesDefaultRulesPage"/>
+ <overrides xsi:type="properties:GroupOverrideDescription" name="OverridesDefaultRulesGroup" labelExpression="OverridesDefaultRulesGroup"/>
+ <overrides xsi:type="properties:TextOverrideDescription" name="OverridesDefaultText" labelExpression="OverridesDefaultText"/>
+ <overrides xsi:type="properties:LabelOverrideDescription" name="OverridesDefaultLabel" labelExpression="OverridesDefaultLabel"/>
+ <overrides xsi:type="properties:ButtonOverrideDescription" name="OverridesDefaultButton" labelExpression="OverridesDefaultButton"/>
+ <overrides xsi:type="properties:CheckboxOverrideDescription" name="OverridesDefaultCheckbox" labelExpression="OverridesDefaultCheckbox"/>
+ <overrides xsi:type="properties:SelectOverrideDescription" name="OverridesDefaultSelect" labelExpression="OverridesDefaultSelect" candidatesExpression="aql:self" candidateDisplayExpression="aql:candidate.name"/>
+ <overrides xsi:type="properties:TextAreaOverrideDescription" name="OverridesDefaultTextArea" labelExpression="OverridesDefaultTextArea"/>
+ <overrides xsi:type="properties:ListOverrideDescription" name="OverridesDefaultList" labelExpression="OverridesDefaultList"/>
+ <overrides xsi:type="properties:HyperlinkOverrideDescription" name="OverridesDefaultHyperlink" label="" labelExpression="OverridesDefaultHyperlink" filterActionsFromExtendedHyperlinkExpression=""/>
+ <overrides xsi:type="properties:RadioOverrideDescription" name="OverridesDefaultRadio" label="" labelExpression="OverridesDefaultRadio"/>
+ <overrides xsi:type="properties:PageOverrideDescription" name="OverridesDefaultPageAndExtendsAnotherDefaultPage" labelExpression="OverridesDefaultPage" domainClass="" semanticCandidateExpression="var:self" preconditionExpression="" filterGroupsFromExtendedPageExpression="aql:group.name.contains('FilterExtended')" filterValidationRulesFromExtendedPageExpression="aql:validationRule.name.contains('FilterExtended')" filterGroupsFromOverriddenPageExpression="aql:group.name.contains('FilterOverridden')" filterValidationRulesFromOverriddenPageExpression="aql:validationRule.name.contains('FilterOverridden')">
+ <validationSet>
+ <semanticValidationRules name="AnotherDefaultSemanticValidationRule" level="ERROR" targetClass="ecore.EClass">
+ <audits auditExpression="aql:false"/>
+ </semanticValidationRules>
+ </validationSet>
+ </overrides>
+ </categories>
+</properties:ViewExtensionDescription> \ No newline at end of file
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/input.odesign b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/input.odesign
new file mode 100644
index 0000000000..969442420a
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/input.odesign
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description:Group
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:description="http://www.eclipse.org/sirius/description/1.1.0"
+ xmlns:properties="http://www.eclipse.org/sirius/properties/1.0.0"
+ name="My"
+ version="12.0.0.201702091400">
+ <ownedViewpoints
+ name="TestOverrides"/>
+ <extensions
+ xsi:type="properties:ViewExtensionDescription">
+ <categories
+ name="Default">
+ <pages
+ labelExpression="Pikachu">
+ <extends
+ href="../../../../plugin/org.eclipse.sirius.properties.core/model/properties.odesign#//@extensions.0/@categories.0/@pages.0"/>
+ </pages>
+ <pages
+ name="DefaultPage"
+ labelExpression="Default Page"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="var:self"
+ groups="//@extensions.0/@categories.0/@groups.0 //@extensions.0/@categories.0/@groups.1">
+ <validationSet>
+ <semanticValidationRules
+ name="DefaultSemanticValidationRule"
+ level="ERROR"
+ targetClass="ecore.EClass">
+ <audits
+ auditExpression="aql:false"/>
+ </semanticValidationRules>
+ <semanticValidationRules
+ name="FilterOverriddenDefaultSemanticValidationRule"
+ level="ERROR"
+ targetClass="ecore.EClass">
+ <audits
+ auditExpression="aql:false"/>
+ </semanticValidationRules>
+ </validationSet>
+ </pages>
+ <pages
+ name="AnotherPageWithDefaultGroup"
+ labelExpression="Another Page"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="var:self"
+ groups="//@extensions.0/@categories.0/@groups.0"/>
+ <pages
+ name="AnotherDefaultPage"
+ labelExpression="Another Default Page"
+ domainClass="ecore.EClass"
+ semanticCandidateExpression="var:self"
+ groups="//@extensions.0/@categories.0/@groups.2"
+ filterValidationRulesFromExtendedPageExpression="">
+ <validationSet>
+ <semanticValidationRules
+ name="AnotherDefaultSemanticValidationRule"
+ level="ERROR"
+ targetClass="ecore.EClass">
+ <audits
+ auditExpression="aql:false"/>
+ </semanticValidationRules>
+ <semanticValidationRules
+ name="FilterExtendedDefaultSemanticValidationRule"
+ level="ERROR"
+ targetClass="ecore.EClass">
+ <audits
+ auditExpression="aql:false"/>
+ </semanticValidationRules>
+ </validationSet>
+ </pages>
+ <groups
+ name="DefaultGroup"
+ label=""
+ labelExpression="Default Group"
+ semanticCandidateExpression="var:self">
+ <controls
+ xsi:type="properties:TextDescription"
+ name="DefaultText"
+ labelExpression="Default Text"
+ isEnabledExpression=""
+ valueExpression="aql:self.name"/>
+ <controls
+ xsi:type="properties:LabelDescription"
+ name="DefaultLabel"
+ label=""
+ labelExpression="Default Label"
+ valueExpression="aql:self.name"/>
+ <controls
+ xsi:type="properties:ButtonDescription"
+ name="DefaultButton"
+ labelExpression="DefaultButton"/>
+ <controls
+ xsi:type="properties:CheckboxDescription"
+ name="DefaultCheckbox"
+ labelExpression="DefaultCheckbox"/>
+ <controls
+ xsi:type="properties:SelectDescription"
+ name="DefaultSelect"
+ labelExpression="DefaultSelect"
+ valueExpression="aql:self.name"/>
+ <controls
+ xsi:type="properties:TextAreaDescription"
+ name="DefaultTextArea"
+ labelExpression="DefaultTextArea"
+ valueExpression="aql:self.name"/>
+ <controls
+ xsi:type="properties:ListDescription"
+ name="DefaultList"
+ label=""
+ labelExpression="DefaultList"
+ valueExpression=""
+ displayExpression=""
+ filterConditionalStylesFromExtendedListExpression=""/>
+ <controls
+ xsi:type="properties:HyperlinkDescription"
+ name="DefaultHyperlink"
+ labelExpression="DefaultHyperlink"
+ valueExpression="aql:self"
+ displayExpression="aql:value.name"
+ filterConditionalStylesFromExtendedHyperlinkExpression=""/>
+ <controls
+ xsi:type="properties:RadioDescription"
+ name="DefaultRadio"
+ labelExpression="DefaultRadio"
+ candidatesExpression="aql:Sequence{'Radio1','Radio2','Radio3'}"
+ candidateDisplayExpression="aql:candidate"/>
+ <controls
+ xsi:type="properties:TextDescription"
+ name="FilterText"
+ label=""
+ labelExpression="FilterText"
+ valueExpression="aql:self.name"/>
+ </groups>
+ <groups
+ name="FilterOverriddenGroup"
+ label=""
+ labelExpression="FilterOverriddenGroup"
+ domainClass=""
+ semanticCandidateExpression="var:self"/>
+ <groups
+ name="FilterExtendedGroup"
+ label=""
+ labelExpression="FilterOverridenGroup"
+ semanticCandidateExpression="var:self"/>
+ </categories>
+ <categories
+ name="Overrides">
+ <overrides
+ xsi:type="properties:GroupOverrideDescription"
+ name="OverridesDefaultGroup"
+ labelExpression="OverridesDefaultGroup"
+ filterControlsFromExtendedGroupExpression=""
+ overrides="//@extensions.0/@categories.0/@groups.0"
+ filterControlsFromOverriddenGroupExpression="aql:control.name.contains('Filter')"/>
+ <overrides
+ xsi:type="properties:PageOverrideDescription"
+ name="OverridesDefaultRulesPage"
+ labelExpression="OverridesDefaultRulesPage"
+ overrides="//@extensions.0/@categories.0/@pages.0"/>
+ <overrides
+ xsi:type="properties:GroupOverrideDescription"
+ name="OverridesDefaultRulesGroup"
+ labelExpression="OverridesDefaultRulesGroup">
+ <overrides
+ href="../../../../plugin/org.eclipse.sirius.properties.core/model/properties.odesign#//@extensions.0/@categories.0/@groups.0"/>
+ </overrides>
+ <overrides
+ xsi:type="properties:TextOverrideDescription"
+ name="OverridesDefaultText"
+ labelExpression="OverridesDefaultText"
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.0"/>
+ <overrides
+ xsi:type="properties:LabelOverrideDescription"
+ name="OverridesDefaultLabel"
+ labelExpression="OverridesDefaultLabel"
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.1"/>
+ <overrides
+ xsi:type="properties:ButtonOverrideDescription"
+ name="OverridesDefaultButton"
+ labelExpression="OverridesDefaultButton"
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.2"/>
+ <overrides
+ xsi:type="properties:CheckboxOverrideDescription"
+ name="OverridesDefaultCheckbox"
+ labelExpression="OverridesDefaultCheckbox"
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.3"/>
+ <overrides
+ xsi:type="properties:SelectOverrideDescription"
+ name="OverridesDefaultSelect"
+ labelExpression="OverridesDefaultSelect"
+ candidatesExpression="aql:self"
+ candidateDisplayExpression="aql:candidate.name"
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.4"/>
+ <overrides
+ xsi:type="properties:TextAreaOverrideDescription"
+ name="OverridesDefaultTextArea"
+ labelExpression="OverridesDefaultTextArea"
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.5"/>
+ <overrides
+ xsi:type="properties:ListOverrideDescription"
+ name="OverridesDefaultList"
+ labelExpression="OverridesDefaultList"
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.6"/>
+ <overrides
+ xsi:type="properties:HyperlinkOverrideDescription"
+ name="OverridesDefaultHyperlink"
+ label=""
+ labelExpression="OverridesDefaultHyperlink"
+ filterActionsFromExtendedHyperlinkExpression=""
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.7"/>
+ <overrides
+ xsi:type="properties:RadioOverrideDescription"
+ name="OverridesDefaultRadio"
+ label=""
+ labelExpression="OverridesDefaultRadio"
+ overrides="//@extensions.0/@categories.0/@groups.0/@controls.8"/>
+ <overrides
+ xsi:type="properties:PageOverrideDescription"
+ name="OverridesDefaultPageAndExtendsAnotherDefaultPage"
+ labelExpression="OverridesDefaultPage"
+ domainClass=""
+ preconditionExpression=""
+ extends="//@extensions.0/@categories.0/@pages.3"
+ filterGroupsFromExtendedPageExpression="aql:group.name.contains('FilterExtended')"
+ filterValidationRulesFromExtendedPageExpression="aql:validationRule.name.contains('FilterExtended')"
+ overrides="//@extensions.0/@categories.0/@pages.1"
+ filterGroupsFromOverriddenPageExpression="aql:group.name.contains('FilterOverridden')"
+ filterValidationRulesFromOverriddenPageExpression="aql:validationRule.name.contains('FilterOverridden')"/>
+ </categories>
+ </extensions>
+</description:Group>
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/processed.odesign b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/processed.odesign
new file mode 100644
index 0000000000..ff86b45142
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/data/preprocessor/overrides/processed.odesign
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ASCII"?>
+<properties:ViewExtensionDescription
+ xmi:version="2.0"
+ xmlns:xmi="http://www.omg.org/XMI"
+ xmlns:properties="http://www.eclipse.org/sirius/properties/1.0.0"
+ name="Properties">
+ <categories
+ name="Default">
+ <pages name="OverridesDefaultPage"
+ labelExpression="OverridesDefaultPageLabelExpression"
+ domainClass="OverridesDefaultPageDomainClass"
+ semanticCandidateExpression="DefaultPageSemanticCandidateExpression"
+ preconditionExpression="OverridesDefaultPagePreconditionExpression"
+ filterGroupsFromExtendedPageExpression="DefaultPageFilterGroupsFromExtendedPageExpression"
+ filterValidationRulesFromExtendedPageExpression="DefaultPageFilterValidationRulesFromExtendedPageExpression">
+ <validationSet>
+ <semanticValidationRules
+ name="DefaultPageSemanticValidationRuleId"
+ label="DefaultPageSemanticValidationRuleLabel"
+ message="DefaultPageSemanticValidationRuleMessage"
+ targetClass="DefaultPageSemanticValidationRuleTargetClass"/>
+ <semanticValidationRules
+ name="AnotherDefaultPageSemanticValidationRuleId"
+ label="AnotherDefaultPageSemanticValidationRuleLabel"
+ message="AnotherDefaultPageSemanticValidationRuleMessage"
+ targetClass="AnotherDefaultPageSemanticValidationRuleTargetClass"/>
+ </validationSet>
+ </pages>
+ </categories>
+ <categories
+ name="Overrides"/>
+</properties:ViewExtensionDescription>
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorTest.java b/plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorExtendsTest.java
index 630957f8c1..2ac2156751 100644
--- a/plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorTest.java
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorExtendsTest.java
@@ -42,6 +42,7 @@ import org.eclipse.sirius.common.interpreter.api.IVariableManager;
import org.eclipse.sirius.common.interpreter.api.VariableManagerFactory;
import org.eclipse.sirius.properties.PropertiesPackage;
import org.eclipse.sirius.properties.ViewExtensionDescription;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
import org.eclipse.sirius.properties.core.api.ViewDescriptionPreprocessor;
import org.junit.Test;
@@ -52,12 +53,11 @@ import org.junit.Test;
* @author flatombe
* @author mbats
*/
-@SuppressWarnings("restriction")
-public final class PreprocessorTest {
+public final class PreprocessorExtendsTest {
/**
* The path of the input model in the bundle.
*/
- private static final String INPUT_MODEL_PATH = "/data/preprocessor/input.odesign";
+ private static final String INPUT_MODEL_PATH = "/data/preprocessor/extends/input.odesign";
/**
* This test is used to ensure the proper transformation of a Sirius
@@ -67,7 +67,7 @@ public final class PreprocessorTest {
@Test
public void testPreprocessorTest() {
EObject processedEObject = this.preprocess(this.load(INPUT_MODEL_PATH).getContents().get(0).eContents().get(0));
- EObject expectedEObject = this.load("/data/preprocessor/expected.odesign").getContents().get(0);
+ EObject expectedEObject = this.load("/data/preprocessor/extends/expected.odesign").getContents().get(0);
// For debug purpose only
print(processedEObject);
@@ -114,7 +114,7 @@ public final class PreprocessorTest {
ViewDescriptionPreprocessor preprocessor = new ViewDescriptionPreprocessor(viewExtensionDescription);
IVariableManager variableManager = new VariableManagerFactory().createVariableManager();
variableManager.put("self", viewExtensionDescription);
- Optional<ViewExtensionDescription> processedOptional = preprocessor.convert(new AQLInterpreter(), variableManager);
+ Optional<ViewExtensionDescription> processedOptional = preprocessor.convert(new AQLInterpreter(), variableManager, new OverridesProvider(null));
if (processedOptional.isPresent()) {
EObject processed = processedOptional.get();
ResourceSet resourceSet = new ResourceSetImpl();
@@ -123,6 +123,7 @@ public final class PreprocessorTest {
resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", //$NON-NLS-1$
new XMIResourceFactoryImpl());
Resource resource = resourceSet.createResource(URI.createURI(INPUT_MODEL_PATH));
+ resource.getContents().clear();
resource.getContents().add(processed);
return processed;
diff --git a/plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorOverridesTest.java b/plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorOverridesTest.java
new file mode 100644
index 0000000000..c4f324b515
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.ui.properties/src/org/eclipse/sirius/tests/ui/properties/internal/preprocessor/PreprocessorOverridesTest.java
@@ -0,0 +1,214 @@
+/*******************************************************************************
+ * Copyright (c) 2017 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.sirius.tests.ui.properties.internal.preprocessor;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Optional;
+
+import org.eclipse.eef.EefPackage;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.EMFCompare;
+import org.eclipse.emf.compare.match.DefaultComparisonFactory;
+import org.eclipse.emf.compare.match.DefaultEqualityHelperFactory;
+import org.eclipse.emf.compare.match.DefaultMatchEngine;
+import org.eclipse.emf.compare.match.IComparisonFactory;
+import org.eclipse.emf.compare.match.IMatchEngine;
+import org.eclipse.emf.compare.match.eobject.IEObjectMatcher;
+import org.eclipse.emf.compare.match.impl.MatchEngineFactoryImpl;
+import org.eclipse.emf.compare.match.impl.MatchEngineFactoryRegistryImpl;
+import org.eclipse.emf.compare.scope.DefaultComparisonScope;
+import org.eclipse.emf.compare.scope.IComparisonScope;
+import org.eclipse.emf.compare.utils.UseIdentifiers;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EcoreFactory;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.sirius.common.interpreter.api.IVariableManager;
+import org.eclipse.sirius.common.interpreter.api.VariableManagerFactory;
+import org.eclipse.sirius.ecore.extender.tool.api.ModelUtils;
+import org.eclipse.sirius.properties.PropertiesPackage;
+import org.eclipse.sirius.properties.ViewExtensionDescription;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
+import org.eclipse.sirius.properties.core.api.ViewDescriptionPreprocessor;
+import org.eclipse.sirius.tests.support.api.SiriusTestCase;
+import org.eclipse.sirius.tools.api.command.ICommandFactory;
+import org.eclipse.sirius.viewpoint.description.Extension;
+import org.eclipse.sirius.viewpoint.description.Group;
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * Test suite for the
+ * {@link org.eclipse.sirius.properties.core.api.IDescriptionPreprocessor}.
+ *
+ * @author flatombe
+ * @author mbats
+ */
+public final class PreprocessorOverridesTest extends SiriusTestCase {
+ private static final String PROPERTIES_TEST_PLUGIN = "/org.eclipse.sirius.tests.ui.properties";
+
+ /**
+ * The path of the input model in the bundle.
+ */
+ private static final String INPUT_ODESIGN_PATH = "/data/preprocessor/overrides/input.odesign";
+
+ /**
+ * The path of the expect model in the bundle.
+ */
+ private static final String EXPECTED_ODESIGN_PATH = "/data/preprocessor/overrides/expected.odesign";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ genericSetUp(createDummySemanticModel(), PROPERTIES_TEST_PLUGIN + INPUT_ODESIGN_PATH);
+ initViewpoints();
+ }
+
+ /**
+ * This test is used to ensure the proper transformation of a Sirius
+ * Properties model with extends and overrides definitions into a resolved
+ * "flat" Sirius Properties model.
+ */
+ @Test
+ public void testPreprocessorTest() {
+ try {
+ Extension ved = getExtension(toURI(PROPERTIES_TEST_PLUGIN + INPUT_ODESIGN_PATH, ResourceURIType.RESOURCE_PLUGIN_URI), session.getTransactionalEditingDomain());
+ EObject processedEObject = this.preprocess(ved);
+ EObject expectedEObject = this.load(EXPECTED_ODESIGN_PATH).getContents().get(0);
+
+ // For debug purpose only
+ print(processedEObject);
+
+ IComparisonScope scope = new DefaultComparisonScope(processedEObject, expectedEObject, null);
+ IEObjectMatcher matcher = DefaultMatchEngine.createDefaultEObjectMatcher(UseIdentifiers.NEVER);
+ IComparisonFactory comparisonFactory = new DefaultComparisonFactory(new DefaultEqualityHelperFactory());
+ IMatchEngine.Factory matchEngineFactory = new MatchEngineFactoryImpl(matcher, comparisonFactory);
+ matchEngineFactory.setRanking(20);
+ IMatchEngine.Factory.Registry matchEngineRegistry = new MatchEngineFactoryRegistryImpl();
+ matchEngineRegistry.add(matchEngineFactory);
+
+ EMFCompare comparator = EMFCompare.builder().setMatchEngineFactoryRegistry(matchEngineRegistry).build();
+ Comparison comparison = comparator.compare(scope);
+ List<Diff> differences = comparison.getDifferences();
+
+ assertEquals(0, differences.size());
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ }
+
+ private Extension getExtension(final URI modelerResourceURI, EditingDomain domain) throws IOException {
+ Group group = null;
+ try {
+ group = (Group) ModelUtils.load(modelerResourceURI, domain.getResourceSet());
+ } catch (final IOException exception) {
+ String uri = modelerResourceURI.toString();
+ if (uri.startsWith("platform:/plugin/")) {
+ URI alternativeURI = URI.createPlatformResourceURI(uri.substring(17), true);
+ group = (Group) ModelUtils.load(alternativeURI, domain.getResourceSet());
+ } else {
+ Assert.fail(exception.getMessage());
+ }
+ }
+ return group.getExtensions().get(0);
+ }
+
+ /**
+ * For debug use only, used to save the processed odesign into a file to
+ * compare easily the processed result with the expected one.
+ *
+ * @param resource
+ */
+ private void print(EObject eObject) {
+ try {
+ eObject.eResource().save(System.out, new HashMap<>());
+ } catch (IOException e) {
+ // Nothing
+ }
+ }
+
+ /**
+ * Transforms the given Sirius EObject into an EEF EObject.
+ *
+ * @param eObject
+ * The Sirius EObject
+ * @return The EEF EObject created form the Sirius one
+ */
+ private EObject preprocess(EObject eObject) {
+ if (eObject instanceof ViewExtensionDescription) {
+ ViewExtensionDescription viewExtensionDescription = (ViewExtensionDescription) eObject;
+ ViewDescriptionPreprocessor preprocessor = new ViewDescriptionPreprocessor(viewExtensionDescription);
+ IVariableManager variableManager = new VariableManagerFactory().createVariableManager();
+ variableManager.put("self", viewExtensionDescription);
+ Optional<ViewExtensionDescription> processedOptional = preprocessor.convert(new AQLInterpreter(), variableManager, new OverridesProvider(this.session));
+ if (processedOptional.isPresent()) {
+ EObject processed = processedOptional.get();
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getPackageRegistry().put(EefPackage.eNS_URI, EefPackage.eINSTANCE);
+ resourceSet.getPackageRegistry().put(PropertiesPackage.eNS_URI, PropertiesPackage.eINSTANCE);
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", //$NON-NLS-1$
+ new XMIResourceFactoryImpl());
+ Resource resource = resourceSet.createResource(URI.createURI(INPUT_ODESIGN_PATH));
+ resource.getContents().add(processed);
+
+ return processed;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Create a dummy semantic model.
+ *
+ * @return A dummy semantic model
+ * @throws IOException
+ */
+ private String createDummySemanticModel() {
+ URI semanticResourceURI = URI.createPlatformResourceURI(TEMPORARY_PROJECT_NAME + "/test.ecore", true);
+ Resource ecoreResource = new ResourceSetImpl().createResource(semanticResourceURI);
+ ecoreResource.getContents().add(EcoreFactory.eINSTANCE.createEPackage());
+ try {
+ ecoreResource.save(null);
+ } catch (IOException exception) {
+ Assert.fail(exception.getMessage());
+ }
+ return TEMPORARY_PROJECT_NAME + "/test.ecore";
+ }
+
+ /**
+ * Loads the resource with the given URI in a new resource set and return
+ * it.
+ *
+ * @param uri
+ * The URI of the resource to load
+ * @return The resource loaded
+ */
+ private Resource load(String uri) {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ resourceSet.getPackageRegistry().put(PropertiesPackage.eNS_URI, PropertiesPackage.eINSTANCE);
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xmi", new XMIResourceFactoryImpl()); //$NON-NLS-1$
+ Resource resource = resourceSet.getResource(URI.createFileURI(System.getProperty("user.dir") + uri), true);
+ return resource;
+ }
+
+ @Override
+ protected ICommandFactory getCommandFactory() {
+ return null;
+ }
+
+}
diff --git a/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/dialog/DialogTask.java b/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/dialog/DialogTask.java
index 8e19e77496..ff81689b84 100644
--- a/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/dialog/DialogTask.java
+++ b/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/dialog/DialogTask.java
@@ -33,6 +33,7 @@ import org.eclipse.sirius.ecore.extender.business.api.accessor.exception.MetaCla
import org.eclipse.sirius.properties.DialogModelOperation;
import org.eclipse.sirius.properties.PageDescription;
import org.eclipse.sirius.properties.core.api.DialogModelOperationPreprocessor;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
import org.eclipse.sirius.properties.core.api.SiriusDomainClassTester;
import org.eclipse.sirius.properties.core.api.SiriusInputDescriptor;
import org.eclipse.sirius.properties.core.api.SiriusInterpreter;
@@ -96,7 +97,7 @@ public class DialogTask extends AbstractOperationTask {
variableManager.put(EEFExpressionUtils.INPUT, input);
SiriusInterpreter siriusInterpreter = new SiriusInterpreter(this.session);
- DialogModelOperationPreprocessor preprocessor = new DialogModelOperationPreprocessor(this.dialogModelOperation, siriusInterpreter, variableManager);
+ DialogModelOperationPreprocessor preprocessor = new DialogModelOperationPreprocessor(this.dialogModelOperation, siriusInterpreter, variableManager, new OverridesProvider(this.session));
Optional<DialogModelOperation> optionalDialogModelOperation = preprocessor.convert();
optionalDialogModelOperation.ifPresent(convertedDialogModelOperation -> {
diff --git a/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/tabprovider/SiriusTabDescriptorProvider.java b/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/tabprovider/SiriusTabDescriptorProvider.java
index d5f9f28462..70fca2e517 100644
--- a/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/tabprovider/SiriusTabDescriptorProvider.java
+++ b/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/tabprovider/SiriusTabDescriptorProvider.java
@@ -36,6 +36,7 @@ import org.eclipse.sirius.ext.base.Option;
import org.eclipse.sirius.properties.PageDescription;
import org.eclipse.sirius.properties.ViewExtensionDescription;
import org.eclipse.sirius.properties.core.api.DefaultRulesProvider;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
import org.eclipse.sirius.properties.core.api.SiriusDomainClassTester;
import org.eclipse.sirius.properties.core.api.SiriusInputDescriptor;
import org.eclipse.sirius.properties.core.api.SiriusInterpreter;
@@ -130,7 +131,8 @@ public class SiriusTabDescriptorProvider implements IEEFTabDescriptorProvider {
IVariableManager variableManager = new VariableManagerFactory().createVariableManager();
variableManager.put(EEFExpressionUtils.SELF, viewExtensionDescription);
- new ViewDescriptionPreprocessor(viewExtensionDescription).convert(new SiriusInterpreter(session), variableManager).ifPresent(processedViewExtensionDescription -> {
+ new ViewDescriptionPreprocessor(viewExtensionDescription).convert(new SiriusInterpreter(session), variableManager, new OverridesProvider(session))
+ .ifPresent(processedViewExtensionDescription -> {
processedViewExtensionDescription.getCategories().forEach(category -> effectivePages.addAll(category.getPages()));
});
});
diff --git a/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/wizard/WizardTask.java b/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/wizard/WizardTask.java
index 4d55bb0326..88ea4f03c3 100644
--- a/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/wizard/WizardTask.java
+++ b/plugins/org.eclipse.sirius.ui.properties/src/org/eclipse/sirius/ui/properties/internal/wizard/WizardTask.java
@@ -29,6 +29,7 @@ import org.eclipse.sirius.ecore.extender.business.api.accessor.ModelAccessor;
import org.eclipse.sirius.ecore.extender.business.api.accessor.exception.FeatureNotFoundException;
import org.eclipse.sirius.ecore.extender.business.api.accessor.exception.MetaClassNotFoundException;
import org.eclipse.sirius.properties.WizardModelOperation;
+import org.eclipse.sirius.properties.core.api.OverridesProvider;
import org.eclipse.sirius.properties.core.api.SiriusDomainClassTester;
import org.eclipse.sirius.properties.core.api.SiriusInputDescriptor;
import org.eclipse.sirius.properties.core.api.SiriusInterpreter;
@@ -93,7 +94,7 @@ public class WizardTask extends AbstractOperationTask {
SiriusInterpreter siriusInterpreter = new SiriusInterpreter(this.session);
- WizardModelOperationPreprocessor preprocessor = new WizardModelOperationPreprocessor(this.wizardModelOperation, siriusInterpreter, variableManager);
+ WizardModelOperationPreprocessor preprocessor = new WizardModelOperationPreprocessor(this.wizardModelOperation, siriusInterpreter, variableManager, new OverridesProvider(this.session));
Optional<WizardModelOperation> optionalWizardModelOperation = preprocessor.convert();
optionalWizardModelOperation.ifPresent(convertedWizardModelOperation -> {
ViewDescriptionConverter viewDescriptionConverter = new ViewDescriptionConverter(convertedWizardModelOperation.getPages());

Back to the top