[175781] Making Behavior conditions properties subset Namespace::ownedRule.
diff --git a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/BehaviorItemProvider.java b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/BehaviorItemProvider.java
index cbe2ed6..2192ae5 100644
--- a/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/BehaviorItemProvider.java
+++ b/plugins/org.eclipse.uml2.uml.edit/src/org/eclipse/uml2/uml/edit/providers/BehaviorItemProvider.java
@@ -8,20 +8,23 @@
  * Contributors:
  *   IBM - initial API and implementation
  *
- * $Id: BehaviorItemProvider.java,v 1.12 2007/03/22 16:46:10 khussey Exp $
+ * $Id: BehaviorItemProvider.java,v 1.13 2007/03/30 18:19:35 khussey Exp $
  */
 package org.eclipse.uml2.uml.edit.providers;
 
 import java.util.Collection;
 import java.util.List;
 
+import org.eclipse.emf.common.command.Command;
 import org.eclipse.emf.common.notify.AdapterFactory;
 import org.eclipse.emf.common.notify.Notification;
 
 import org.eclipse.emf.common.util.ResourceLocator;
 
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 
+import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
 import org.eclipse.emf.edit.provider.IItemLabelProvider;
@@ -32,6 +35,9 @@
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 
+import org.eclipse.uml2.common.edit.command.SubsetAddCommand;
+import org.eclipse.uml2.common.edit.command.SubsetSupersetReplaceCommand;
+import org.eclipse.uml2.common.edit.command.SupersetRemoveCommand;
 import org.eclipse.uml2.uml.Behavior;
 import org.eclipse.uml2.uml.UMLFactory;
 import org.eclipse.uml2.uml.UMLPackage;
@@ -214,8 +220,6 @@
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(UMLPackage.Literals.BEHAVIOR__OWNED_PARAMETER);
-			childrenFeatures.add(UMLPackage.Literals.BEHAVIOR__PRECONDITION);
-			childrenFeatures.add(UMLPackage.Literals.BEHAVIOR__POSTCONDITION);
 			childrenFeatures
 				.add(UMLPackage.Literals.BEHAVIOR__OWNED_PARAMETER_SET);
 		}
@@ -262,12 +266,12 @@
 
 		switch (notification.getFeatureID(Behavior.class)) {
 			case UMLPackage.BEHAVIOR__IS_REENTRANT :
+			case UMLPackage.BEHAVIOR__PRECONDITION :
+			case UMLPackage.BEHAVIOR__POSTCONDITION :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), false, true));
 				return;
 			case UMLPackage.BEHAVIOR__OWNED_PARAMETER :
-			case UMLPackage.BEHAVIOR__PRECONDITION :
-			case UMLPackage.BEHAVIOR__POSTCONDITION :
 			case UMLPackage.BEHAVIOR__OWNED_PARAMETER_SET :
 				fireNotifyChanged(new ViewerNotification(notification,
 					notification.getNotifier(), true, false));
@@ -380,4 +384,87 @@
 		return UMLEditPlugin.INSTANCE;
 	}
 
+	/**
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createAddCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection, int)
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected Command createAddCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Collection<?> collection, int index) {
+		if (feature == UMLPackage.Literals.BEHAVIOR__PRECONDITION) {
+			return new SubsetAddCommand(
+				domain,
+				owner,
+				feature,
+				new EStructuralFeature[]{UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				collection, index);
+		}
+		if (feature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION) {
+			return new SubsetAddCommand(
+				domain,
+				owner,
+				feature,
+				new EStructuralFeature[]{UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				collection, index);
+		}
+		return super
+			.createAddCommand(domain, owner, feature, collection, index);
+	}
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createRemoveCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, java.util.Collection)
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected Command createRemoveCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, Collection<?> collection) {
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
+			return new SupersetRemoveCommand(domain, owner, feature,
+				new EStructuralFeature[]{
+					UMLPackage.Literals.BEHAVIOR__PRECONDITION,
+					UMLPackage.Literals.BEHAVIOR__POSTCONDITION}, collection);
+		}
+		return super.createRemoveCommand(domain, owner, feature, collection);
+	}
+
+	/**
+	 * @see org.eclipse.emf.edit.provider.ItemProviderAdapter#createReplaceCommand(org.eclipse.emf.edit.domain.EditingDomain, org.eclipse.emf.ecore.EObject, org.eclipse.emf.ecore.EStructuralFeature, org.eclipse.emf.ecore.EObject, java.util.Collection)
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected Command createReplaceCommand(EditingDomain domain, EObject owner,
+			EStructuralFeature feature, EObject value, Collection<?> collection) {
+		if (feature == UMLPackage.Literals.BEHAVIOR__PRECONDITION) {
+			return new SubsetSupersetReplaceCommand(
+				domain,
+				owner,
+				feature,
+				new EStructuralFeature[]{UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				null, value, collection);
+		}
+		if (feature == UMLPackage.Literals.BEHAVIOR__POSTCONDITION) {
+			return new SubsetSupersetReplaceCommand(
+				domain,
+				owner,
+				feature,
+				new EStructuralFeature[]{UMLPackage.Literals.NAMESPACE__OWNED_RULE},
+				null, value, collection);
+		}
+		if (feature == UMLPackage.Literals.NAMESPACE__OWNED_RULE) {
+			return new SubsetSupersetReplaceCommand(domain, owner, feature,
+				null, new EStructuralFeature[]{
+					UMLPackage.Literals.BEHAVIOR__PRECONDITION,
+					UMLPackage.Literals.BEHAVIOR__POSTCONDITION}, value,
+				collection);
+		}
+		return super.createReplaceCommand(domain, owner, feature, value,
+			collection);
+	}
+
 }
\ No newline at end of file