[104715] Need a way to test if ANY feature is set.
diff --git a/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/base/FeatureValueProvider.java b/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/base/FeatureValueProvider.java
index 65cc224..db48f22 100644
--- a/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/base/FeatureValueProvider.java
+++ b/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/base/FeatureValueProvider.java
@@ -11,7 +11,7 @@
 package org.eclipse.jem.internal.instantiation.base;
 /*
  *  $RCSfile: FeatureValueProvider.java,v $
- *  $Revision: 1.6 $  $Date: 2005/05/20 21:02:33 $ 
+ *  $Revision: 1.7 $  $Date: 2005/07/21 19:01:37 $ 
  */
 
 import java.util.Iterator;
@@ -66,6 +66,33 @@
 			}
 		}
 		
+		/**
+		 * Answers whether any feature is set or not.
+		 * <p>
+		 * <b>Note:</b> This SHOULD NOT be used as a test before deciding whether to do visitSetFeatures or not. It is more efficient to just call
+		 * visitSetFeatures. It should be used only to see if any features are set.
+		 * 
+		 * @param eobject
+		 * @return
+		 * 
+		 * @since 1.1.0
+		 */
+		public static boolean isAnyFeatureSet(EObject eobject) {
+			if (eobject instanceof FeatureValueProvider)
+				return ((FeatureValueProvider)eobject).isAnyFeatureSet();
+			else {
+				// Not a FeatureValueProvider, so do normal.
+				Iterator features = eobject.eClass().getEAllStructuralFeatures().iterator();
+				while(features.hasNext()){
+					EStructuralFeature sf = (EStructuralFeature)features.next();
+					if(eobject.eIsSet(sf)){
+						return true;
+					}
+				}
+				return false;
+			}			
+		}
+		
 		private FeatureValueProviderHelper() {
 		}
 	}
@@ -94,4 +121,16 @@
 	 * @since 1.1.0
 	 */
 	public Object visitSetFeatures(Visitor aVisitor);
+	
+	/**
+	 * Answers whether any feature is set or not.
+	 * <p>
+	 * <b>Note:</b> This SHOULD NOT be used as a test before deciding whether to do visitSetFeatures or not. It is
+	 * more efficient to just call visitSetFeatures. It should be used only to see if any features are set.
+	 * 
+	 * @return <code>true</code> if any features are set.
+	 * 
+	 * @since 1.1.0
+	 */
+	public boolean isAnyFeatureSet();
 }
diff --git a/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/base/JavaObjectInstance.java b/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/base/JavaObjectInstance.java
index a61dab2..fa1a01f 100644
--- a/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/base/JavaObjectInstance.java
+++ b/plugins/org.eclipse.jem/javainst/org/eclipse/jem/internal/instantiation/base/JavaObjectInstance.java
@@ -11,7 +11,7 @@
 package org.eclipse.jem.internal.instantiation.base;
 /*
  *  $RCSfile: JavaObjectInstance.java,v $
- *  $Revision: 1.16 $  $Date: 2005/06/20 18:48:56 $ 
+ *  $Revision: 1.17 $  $Date: 2005/07/21 19:01:37 $ 
  */
 
 import java.util.List;
@@ -66,6 +66,23 @@
 		}
 		return result;
 	}
+	
+	public boolean isAnyFeatureSet() {
+		if (eHasSettings()) {
+			JavaObjectInstancePropertiesHolder settings = (JavaObjectInstancePropertiesHolder) eProperties();
+
+			Object[] setPropertyValues = settings.eSettings();
+			if (setPropertyValues != null) {
+				for (int i = 0; i < setPropertyValues.length; i++) {
+					Object propertyValue = setPropertyValues[i];
+					if (propertyValue != null) {
+						return true;
+					}
+				}
+			} 
+		}
+		return false;
+	}
 		
 	public boolean isSetAllocation() {
 		return eIsSet(JavaInstantiation.getAllocationFeature(this));