Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.rmf.reqif10.pror.edit')
-rw-r--r--org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java39
-rw-r--r--org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java39
-rw-r--r--org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java39
-rw-r--r--org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java39
-rw-r--r--org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java150
-rw-r--r--org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java39
-rw-r--r--org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIF10ItemProviderAdapterFactory.java132
7 files changed, 182 insertions, 295 deletions
diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java
index 50be3932..7b1b2750 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionBooleanItemProvider.java
@@ -17,7 +17,6 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -27,7 +26,6 @@ import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.rmf.reqif10.AttributeDefinitionBoolean;
-import org.eclipse.rmf.reqif10.ReqIF10Factory;
import org.eclipse.rmf.reqif10.ReqIF10Package;
/**
@@ -93,36 +91,6 @@ public class AttributeDefinitionBooleanItemProvider
}
/**
- * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
- * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
- * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
- if (childrenFeatures == null) {
- super.getChildrenFeatures(object);
- childrenFeatures.add(ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_BOOLEAN__DEFAULT_VALUE);
- }
- return childrenFeatures;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- protected EStructuralFeature getChildFeature(Object object, Object child) {
- // Check the type of the specified child object and return the proper feature to use for
- // adding (see {@link AddCommand}) it as a child.
-
- return super.getChildFeature(object, child);
- }
-
- /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -156,7 +124,7 @@ public class AttributeDefinitionBooleanItemProvider
switch (notification.getFeatureID(AttributeDefinitionBoolean.class)) {
case ReqIF10Package.ATTRIBUTE_DEFINITION_BOOLEAN__DEFAULT_VALUE:
- fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
}
super.notifyChanged(notification);
@@ -172,11 +140,6 @@ public class AttributeDefinitionBooleanItemProvider
@Override
protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
super.collectNewChildDescriptors(newChildDescriptors, object);
-
- newChildDescriptors.add
- (createChildParameter
- (ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_BOOLEAN__DEFAULT_VALUE,
- ReqIF10Factory.eINSTANCE.createAttributeValueBoolean()));
}
}
diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java
index e77bde73..7bb3fe07 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionDateItemProvider.java
@@ -17,7 +17,6 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -27,7 +26,6 @@ import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.rmf.reqif10.AttributeDefinitionDate;
-import org.eclipse.rmf.reqif10.ReqIF10Factory;
import org.eclipse.rmf.reqif10.ReqIF10Package;
/**
@@ -93,36 +91,6 @@ public class AttributeDefinitionDateItemProvider
}
/**
- * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
- * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
- * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
- if (childrenFeatures == null) {
- super.getChildrenFeatures(object);
- childrenFeatures.add(ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_DATE__DEFAULT_VALUE);
- }
- return childrenFeatures;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- protected EStructuralFeature getChildFeature(Object object, Object child) {
- // Check the type of the specified child object and return the proper feature to use for
- // adding (see {@link AddCommand}) it as a child.
-
- return super.getChildFeature(object, child);
- }
-
- /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -156,7 +124,7 @@ public class AttributeDefinitionDateItemProvider
switch (notification.getFeatureID(AttributeDefinitionDate.class)) {
case ReqIF10Package.ATTRIBUTE_DEFINITION_DATE__DEFAULT_VALUE:
- fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
}
super.notifyChanged(notification);
@@ -172,11 +140,6 @@ public class AttributeDefinitionDateItemProvider
@Override
protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
super.collectNewChildDescriptors(newChildDescriptors, object);
-
- newChildDescriptors.add
- (createChildParameter
- (ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_DATE__DEFAULT_VALUE,
- ReqIF10Factory.eINSTANCE.createAttributeValueDate()));
}
}
diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java
index d9451ed5..e2f11909 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionIntegerItemProvider.java
@@ -17,7 +17,6 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -27,7 +26,6 @@ import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.rmf.reqif10.AttributeDefinitionInteger;
-import org.eclipse.rmf.reqif10.ReqIF10Factory;
import org.eclipse.rmf.reqif10.ReqIF10Package;
/**
@@ -93,36 +91,6 @@ public class AttributeDefinitionIntegerItemProvider
}
/**
- * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
- * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
- * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
- if (childrenFeatures == null) {
- super.getChildrenFeatures(object);
- childrenFeatures.add(ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_INTEGER__DEFAULT_VALUE);
- }
- return childrenFeatures;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- protected EStructuralFeature getChildFeature(Object object, Object child) {
- // Check the type of the specified child object and return the proper feature to use for
- // adding (see {@link AddCommand}) it as a child.
-
- return super.getChildFeature(object, child);
- }
-
- /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -156,7 +124,7 @@ public class AttributeDefinitionIntegerItemProvider
switch (notification.getFeatureID(AttributeDefinitionInteger.class)) {
case ReqIF10Package.ATTRIBUTE_DEFINITION_INTEGER__DEFAULT_VALUE:
- fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
}
super.notifyChanged(notification);
@@ -172,11 +140,6 @@ public class AttributeDefinitionIntegerItemProvider
@Override
protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
super.collectNewChildDescriptors(newChildDescriptors, object);
-
- newChildDescriptors.add
- (createChildParameter
- (ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_INTEGER__DEFAULT_VALUE,
- ReqIF10Factory.eINSTANCE.createAttributeValueInteger()));
}
}
diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java
index e8289ee8..a70ab97b 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionRealItemProvider.java
@@ -17,7 +17,6 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -27,7 +26,6 @@ import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.rmf.reqif10.AttributeDefinitionReal;
-import org.eclipse.rmf.reqif10.ReqIF10Factory;
import org.eclipse.rmf.reqif10.ReqIF10Package;
/**
@@ -93,36 +91,6 @@ public class AttributeDefinitionRealItemProvider
}
/**
- * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
- * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
- * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
- if (childrenFeatures == null) {
- super.getChildrenFeatures(object);
- childrenFeatures.add(ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_REAL__DEFAULT_VALUE);
- }
- return childrenFeatures;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- protected EStructuralFeature getChildFeature(Object object, Object child) {
- // Check the type of the specified child object and return the proper feature to use for
- // adding (see {@link AddCommand}) it as a child.
-
- return super.getChildFeature(object, child);
- }
-
- /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -156,7 +124,7 @@ public class AttributeDefinitionRealItemProvider
switch (notification.getFeatureID(AttributeDefinitionReal.class)) {
case ReqIF10Package.ATTRIBUTE_DEFINITION_REAL__DEFAULT_VALUE:
- fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
}
super.notifyChanged(notification);
@@ -172,11 +140,6 @@ public class AttributeDefinitionRealItemProvider
@Override
protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
super.collectNewChildDescriptors(newChildDescriptors, object);
-
- newChildDescriptors.add
- (createChildParameter
- (ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_REAL__DEFAULT_VALUE,
- ReqIF10Factory.eINSTANCE.createAttributeValueReal()));
}
}
diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java
index 012b66bb..69fbdb37 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionSimpleItemProvider.java
@@ -7,6 +7,7 @@
*
* Contributors:
* Michael Jastram - initial API and implementation
+ * François Rey - default value editable and posing as definition attribute
******************************************************************************/
package org.eclipse.rmf.reqif10.pror.provider;
@@ -15,18 +16,42 @@ package org.eclipse.rmf.reqif10.pror.provider;
import java.util.Collection;
import java.util.List;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CompoundCommand;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.edit.command.CommandParameter;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptorDecorator;
+import org.eclipse.rmf.reqif10.AttributeDefinition;
+import org.eclipse.rmf.reqif10.AttributeDefinitionSimple;
+import org.eclipse.rmf.reqif10.AttributeValueSimple;
+import org.eclipse.rmf.reqif10.common.util.ReqIF10Util;
/**
* This is the item provider adapter for a {@link org.eclipse.rmf.reqif10.AttributeDefinitionSimple} object.
* <!-- begin-user-doc -->
+ * Stateful Item Provider:
+ * In order to simplify the UI for editing a {@link AttributeDefinitionSimple},
+ * the {@link AttributeValueSimple} containing the default value is kept hidden
+ * and the default value is shown as a direct property of
+ * {@link AttributeDefinitionSimple}. This is initially set up in
+ * {@link #addCustomDefaultValuePropertyDescriptor(Object)} where the
+ * {@link AttributeValueSimple} object containing the default value
+ * is cached.
+ * The other part of implementing this UI simplification is done in the
+ * {@link #createSetCommand} function which also handles the need to update
+ * the relation between the value object and the definition object.
* <!-- end-user-doc -->
* @generated
*/
@@ -38,6 +63,9 @@ public class AttributeDefinitionSimpleItemProvider
ITreeItemContentProvider,
IItemLabelProvider,
IItemPropertySource {
+
+ protected AttributeValueSimple defaultAttributeValueSimple = null;
+
/**
* This constructs an instance from a factory and a notifier.
* <!-- begin-user-doc -->
@@ -54,8 +82,7 @@ public class AttributeDefinitionSimpleItemProvider
* <!-- end-user-doc -->
* @generated
*/
- @Override
- public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ public List<IItemPropertyDescriptor> getPropertyDescriptorsGen(Object object) {
if (itemPropertyDescriptors == null) {
super.getPropertyDescriptors(object);
@@ -64,6 +91,20 @@ public class AttributeDefinitionSimpleItemProvider
}
/**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * Adds the a property descriptor for the Default Value feature.
+ * <!-- end-user-doc -->
+ * @generated NOT
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ itemPropertyDescriptors = getPropertyDescriptorsGen(object);
+ addCustomDefaultValuePropertyDescriptor(object);
+ return itemPropertyDescriptors;
+ }
+
+ /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -109,4 +150,109 @@ public class AttributeDefinitionSimpleItemProvider
super.collectNewChildDescriptors(newChildDescriptors, object);
}
+ /**
+ * Adds a property descriptor for the Default Value feature.
+ * The default value feature is defined in derived classes, so such
+ * logic would normally belong there. However this method uses reflection
+ * to avoid copying the same custom code in derived classes.
+ */
+ protected void addCustomDefaultValuePropertyDescriptor(Object object) {
+ // Retrieve current defaultAttributeValueSimple, creating it if null
+ AttributeDefinitionSimple attributeDefinitionSimple =
+ (AttributeDefinitionSimple)object;
+ EStructuralFeature defaultValueFeature =
+ ReqIF10Util.getDefaultValueFeature(attributeDefinitionSimple);
+ defaultAttributeValueSimple =
+ (AttributeValueSimple) attributeDefinitionSimple.eGet(defaultValueFeature);
+ if (defaultAttributeValueSimple==null) {
+ defaultAttributeValueSimple = (AttributeValueSimple)
+ ReqIF10Util.createAttributeValue(attributeDefinitionSimple);
+ }
+ // Retrieve the property descriptor for the default value
+ AttributeValueSimpleItemProvider attributeValueSimpleItemProvider = (AttributeValueSimpleItemProvider)
+ adapterFactory.adapt(defaultAttributeValueSimple, AttributeValueSimpleItemProvider.class);
+ EStructuralFeature theValueFeature =
+ ReqIF10Util.getTheValueFeature(defaultAttributeValueSimple);
+ IItemPropertyDescriptor theValueDescriptor =
+ attributeValueSimpleItemProvider.getPropertyDescriptor(
+ defaultAttributeValueSimple,
+ theValueFeature);
+ // Decorate the existing descriptor to make it look like a definition attribute
+ final String attributeDefinitionClassName =
+ attributeDefinitionSimple.eClass().getName();
+ IItemPropertyDescriptor theValueDescriptorDecorator = new ItemPropertyDescriptorDecorator(
+ defaultAttributeValueSimple, theValueDescriptor) {
+ public String getDescription(Object thisObject) {
+ return getString("_UI_PropertyDescriptor_description",
+ "_UI_" + attributeDefinitionClassName + "_defaultValue_feature",
+ "_UI_" + attributeDefinitionClassName + "_type");
+ }
+ public String getDisplayName(Object thisObject) {
+ return getString("_UI_" + attributeDefinitionClassName + "_defaultValue_feature");
+ }
+ };
+ // Add descriptor
+ itemPropertyDescriptors.add(theValueDescriptorDecorator);
+ }
+
+ /**
+ * Creates a {@link org.eclipse.emf.edit.command.SetCommand} that properly
+ * handles the default value that is shown as a direct property of
+ * {@link AttributeDefinitionSimple}. In particular, if the default value
+ * is being set, the {@link AttributeValueSimple} object must be the target
+ * object of the command instead of the {@link AttributeDefinitionSimple},
+ * and the linking between both may need to be set or unset in the same
+ * compound command.
+ */
+ @Override
+ protected Command createSetCommand(EditingDomain domain, EObject owner,
+ EStructuralFeature feature, Object value, int index) {
+ CompoundCommand compoundCommand = new CompoundCommand();
+ if (AttributeValueSimple.class.isAssignableFrom(feature.getContainerClass())) {
+ AttributeDefinition attributeDefinition = (AttributeDefinition)owner;
+ // We're setting the default value
+ EStructuralFeature defaultValueFeature =
+ ReqIF10Util.getDefaultValueFeature(attributeDefinition);
+ if (value==null || value.toString().length()==0)
+ value = SetCommand.UNSET_VALUE;
+ // Create the command for setting the value on the value object
+ compoundCommand.append(
+ super.createSetCommand(domain, defaultAttributeValueSimple,
+ feature, value, CommandParameter.NO_INDEX));
+ // Check linking between default value and definition object
+ // Earlier version of ProR did not set the link back to the definition
+ // Set it now because the user no longer has a way to do it in the GUI
+ EStructuralFeature definitionFeature =
+ ReqIF10Util.getDefinitionFeature(defaultAttributeValueSimple);
+ if (!attributeDefinition.equals(defaultAttributeValueSimple.eGet(definitionFeature))) {
+ Command setDefinitionCommand = super.createSetCommand(domain,
+ defaultAttributeValueSimple, definitionFeature,
+ attributeDefinition, CommandParameter.NO_INDEX);
+ compoundCommand.append(setDefinitionCommand);
+ }
+ // Check linking between definition object and default value
+ if (EcoreUtil.isAncestor(owner, defaultAttributeValueSimple)) {
+ // The value object is already a child of the attribute definition
+ if (SetCommand.UNSET_VALUE.equals(value)) {
+ // Detach value object using another SetCommand
+ Command setChildCommand = super.createSetCommand(domain, owner,
+ defaultValueFeature, SetCommand.UNSET_VALUE,
+ CommandParameter.NO_INDEX);
+ compoundCommand.append(setChildCommand);
+ }
+ } else {
+ // The value object is not a child of the attribute definition
+ if (!SetCommand.UNSET_VALUE.equals(value)) {
+ // Attach value object using another SetCommand
+ Command setChildCommand = super.createSetCommand(domain, owner,
+ defaultValueFeature, defaultAttributeValueSimple,
+ CommandParameter.NO_INDEX);
+ compoundCommand.append(setChildCommand);
+ }
+ }
+ } else // We're setting another feature
+ compoundCommand.append(super.createSetCommand(domain, owner, feature, value, index));
+ Command result = compoundCommand.unwrap();
+ return result;
+ }
}
diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java
index 1642c9d1..5408ee14 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/AttributeDefinitionStringItemProvider.java
@@ -17,7 +17,6 @@ import java.util.List;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -27,7 +26,6 @@ import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.emf.edit.provider.ViewerNotification;
import org.eclipse.rmf.reqif10.AttributeDefinitionString;
-import org.eclipse.rmf.reqif10.ReqIF10Factory;
import org.eclipse.rmf.reqif10.ReqIF10Package;
/**
@@ -93,36 +91,6 @@ public class AttributeDefinitionStringItemProvider
}
/**
- * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
- * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
- * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
- if (childrenFeatures == null) {
- super.getChildrenFeatures(object);
- childrenFeatures.add(ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_STRING__DEFAULT_VALUE);
- }
- return childrenFeatures;
- }
-
- /**
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- @Override
- protected EStructuralFeature getChildFeature(Object object, Object child) {
- // Check the type of the specified child object and return the proper feature to use for
- // adding (see {@link AddCommand}) it as a child.
-
- return super.getChildFeature(object, child);
- }
-
- /**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -156,7 +124,7 @@ public class AttributeDefinitionStringItemProvider
switch (notification.getFeatureID(AttributeDefinitionString.class)) {
case ReqIF10Package.ATTRIBUTE_DEFINITION_STRING__DEFAULT_VALUE:
- fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+ fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
return;
}
super.notifyChanged(notification);
@@ -172,11 +140,6 @@ public class AttributeDefinitionStringItemProvider
@Override
protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
super.collectNewChildDescriptors(newChildDescriptors, object);
-
- newChildDescriptors.add
- (createChildParameter
- (ReqIF10Package.Literals.ATTRIBUTE_DEFINITION_STRING__DEFAULT_VALUE,
- ReqIF10Factory.eINSTANCE.createAttributeValueString()));
}
}
diff --git a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIF10ItemProviderAdapterFactory.java b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIF10ItemProviderAdapterFactory.java
index 7e06ee66..e04fc145 100644
--- a/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIF10ItemProviderAdapterFactory.java
+++ b/org.eclipse.rmf.reqif10.pror.edit/src/org/eclipse/rmf/reqif10/pror/provider/ReqIF10ItemProviderAdapterFactory.java
@@ -20,6 +20,7 @@ import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
+import org.eclipse.emf.edit.provider.Disposable;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
@@ -57,6 +58,14 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
protected IChangeNotifier changeNotifier = new ChangeNotifier();
/**
+ * This keeps track of all the item providers created, so that they can be {@link #dispose disposed}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Disposable disposable = new Disposable();
+
+ /**
* This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -470,14 +479,6 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
}
/**
- * This keeps track of the one adapter used for all {@link org.eclipse.rmf.reqif10.AttributeDefinitionBoolean} instances.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected AttributeDefinitionBooleanItemProvider attributeDefinitionBooleanItemProvider;
-
- /**
* This creates an adapter for a {@link org.eclipse.rmf.reqif10.AttributeDefinitionBoolean}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -485,11 +486,7 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
*/
@Override
public Adapter createAttributeDefinitionBooleanAdapter() {
- if (attributeDefinitionBooleanItemProvider == null) {
- attributeDefinitionBooleanItemProvider = new AttributeDefinitionBooleanItemProvider(this);
- }
-
- return attributeDefinitionBooleanItemProvider;
+ return new AttributeDefinitionBooleanItemProvider(this);
}
/**
@@ -539,14 +536,6 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
}
/**
- * This keeps track of the one adapter used for all {@link org.eclipse.rmf.reqif10.AttributeDefinitionDate} instances.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected AttributeDefinitionDateItemProvider attributeDefinitionDateItemProvider;
-
- /**
* This creates an adapter for a {@link org.eclipse.rmf.reqif10.AttributeDefinitionDate}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -554,11 +543,7 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
*/
@Override
public Adapter createAttributeDefinitionDateAdapter() {
- if (attributeDefinitionDateItemProvider == null) {
- attributeDefinitionDateItemProvider = new AttributeDefinitionDateItemProvider(this);
- }
-
- return attributeDefinitionDateItemProvider;
+ return new AttributeDefinitionDateItemProvider(this);
}
/**
@@ -723,14 +708,6 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
}
/**
- * This keeps track of the one adapter used for all {@link org.eclipse.rmf.reqif10.AttributeDefinitionInteger} instances.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected AttributeDefinitionIntegerItemProvider attributeDefinitionIntegerItemProvider;
-
- /**
* This creates an adapter for a {@link org.eclipse.rmf.reqif10.AttributeDefinitionInteger}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -738,11 +715,7 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
*/
@Override
public Adapter createAttributeDefinitionIntegerAdapter() {
- if (attributeDefinitionIntegerItemProvider == null) {
- attributeDefinitionIntegerItemProvider = new AttributeDefinitionIntegerItemProvider(this);
- }
-
- return attributeDefinitionIntegerItemProvider;
+ return new AttributeDefinitionIntegerItemProvider(this);
}
/**
@@ -792,14 +765,6 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
}
/**
- * This keeps track of the one adapter used for all {@link org.eclipse.rmf.reqif10.AttributeDefinitionReal} instances.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected AttributeDefinitionRealItemProvider attributeDefinitionRealItemProvider;
-
- /**
* This creates an adapter for a {@link org.eclipse.rmf.reqif10.AttributeDefinitionReal}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -807,11 +772,7 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
*/
@Override
public Adapter createAttributeDefinitionRealAdapter() {
- if (attributeDefinitionRealItemProvider == null) {
- attributeDefinitionRealItemProvider = new AttributeDefinitionRealItemProvider(this);
- }
-
- return attributeDefinitionRealItemProvider;
+ return new AttributeDefinitionRealItemProvider(this);
}
/**
@@ -861,14 +822,6 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
}
/**
- * This keeps track of the one adapter used for all {@link org.eclipse.rmf.reqif10.AttributeDefinitionString} instances.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- protected AttributeDefinitionStringItemProvider attributeDefinitionStringItemProvider;
-
- /**
* This creates an adapter for a {@link org.eclipse.rmf.reqif10.AttributeDefinitionString}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -876,11 +829,7 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
*/
@Override
public Adapter createAttributeDefinitionStringAdapter() {
- if (attributeDefinitionStringItemProvider == null) {
- attributeDefinitionStringItemProvider = new AttributeDefinitionStringItemProvider(this);
- }
-
- return attributeDefinitionStringItemProvider;
+ return new AttributeDefinitionStringItemProvider(this);
}
/**
@@ -1011,6 +960,20 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
}
/**
+ * Associates an adapter with a notifier via the base implementation, then records it to ensure it will be disposed.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void associate(Adapter adapter, Notifier target) {
+ super.associate(adapter, target);
+ if (adapter != null) {
+ disposable.add(adapter);
+ }
+ }
+
+ /**
* This adds a listener.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1051,44 +1014,7 @@ public class ReqIF10ItemProviderAdapterFactory extends ReqIF10AdapterFactory imp
* @generated
*/
public void dispose() {
- if (attributeValueXHTMLItemProvider != null) attributeValueXHTMLItemProvider.dispose();
- if (attributeDefinitionXHTMLItemProvider != null) attributeDefinitionXHTMLItemProvider.dispose();
- if (reqIFContentItemProvider != null) reqIFContentItemProvider.dispose();
- if (reqIFItemProvider != null) reqIFItemProvider.dispose();
- if (reqIFHeaderItemProvider != null) reqIFHeaderItemProvider.dispose();
- if (reqIFToolExtensionItemProvider != null) reqIFToolExtensionItemProvider.dispose();
- if (specObjectItemProvider != null) specObjectItemProvider.dispose();
- if (specObjectTypeItemProvider != null) specObjectTypeItemProvider.dispose();
- if (specificationItemProvider != null) specificationItemProvider.dispose();
- if (specificationTypeItemProvider != null) specificationTypeItemProvider.dispose();
- if (specHierarchyItemProvider != null) specHierarchyItemProvider.dispose();
- if (specRelationItemProvider != null) specRelationItemProvider.dispose();
- if (specRelationTypeItemProvider != null) specRelationTypeItemProvider.dispose();
- if (relationGroupItemProvider != null) relationGroupItemProvider.dispose();
- if (relationGroupTypeItemProvider != null) relationGroupTypeItemProvider.dispose();
- if (datatypeDefinitionXHTMLItemProvider != null) datatypeDefinitionXHTMLItemProvider.dispose();
- if (alternativeIDItemProvider != null) alternativeIDItemProvider.dispose();
- if (attributeDefinitionBooleanItemProvider != null) attributeDefinitionBooleanItemProvider.dispose();
- if (datatypeDefinitionBooleanItemProvider != null) datatypeDefinitionBooleanItemProvider.dispose();
- if (attributeValueBooleanItemProvider != null) attributeValueBooleanItemProvider.dispose();
- if (attributeDefinitionDateItemProvider != null) attributeDefinitionDateItemProvider.dispose();
- if (datatypeDefinitionDateItemProvider != null) datatypeDefinitionDateItemProvider.dispose();
- if (attributeValueDateItemProvider != null) attributeValueDateItemProvider.dispose();
- if (attributeDefinitionEnumerationItemProvider != null) attributeDefinitionEnumerationItemProvider.dispose();
- if (datatypeDefinitionEnumerationItemProvider != null) datatypeDefinitionEnumerationItemProvider.dispose();
- if (enumValueItemProvider != null) enumValueItemProvider.dispose();
- if (embeddedValueItemProvider != null) embeddedValueItemProvider.dispose();
- if (attributeValueEnumerationItemProvider != null) attributeValueEnumerationItemProvider.dispose();
- if (attributeDefinitionIntegerItemProvider != null) attributeDefinitionIntegerItemProvider.dispose();
- if (datatypeDefinitionIntegerItemProvider != null) datatypeDefinitionIntegerItemProvider.dispose();
- if (attributeValueIntegerItemProvider != null) attributeValueIntegerItemProvider.dispose();
- if (attributeDefinitionRealItemProvider != null) attributeDefinitionRealItemProvider.dispose();
- if (datatypeDefinitionRealItemProvider != null) datatypeDefinitionRealItemProvider.dispose();
- if (attributeValueRealItemProvider != null) attributeValueRealItemProvider.dispose();
- if (attributeDefinitionStringItemProvider != null) attributeDefinitionStringItemProvider.dispose();
- if (datatypeDefinitionStringItemProvider != null) datatypeDefinitionStringItemProvider.dispose();
- if (attributeValueStringItemProvider != null) attributeValueStringItemProvider.dispose();
- if (xhtmlContentItemProvider != null) xhtmlContentItemProvider.dispose();
+ disposable.dispose();
}
}

Back to the top