Bug 167740
[variables] [views] New/Edit details formatter menu should not be available on array types
diff --git a/org.eclipse.jdt.debug.ui/plugin.xml b/org.eclipse.jdt.debug.ui/plugin.xml
index 01140af..fa17339 100644
--- a/org.eclipse.jdt.debug.ui/plugin.xml
+++ b/org.eclipse.jdt.debug.ui/plugin.xml
@@ -476,6 +476,12 @@
                         value="isDefined">
                   </objectState>
                </not>
+               <not>
+                  <objectState
+                        name="PrimitiveVariableActionFilter"
+                        value="isArray">
+                  </objectState>
+               </not>
             </and>
          </visibility>
          <action
@@ -501,6 +507,7 @@
                id="org.eclipse.jdt.debug.ui.actions.EditDetailFormatter">
          </action>
          <visibility>
+         <and>
             <or>
                <objectState
                      name="DetailFormatterFilter"
@@ -512,6 +519,13 @@
                      name="DetailFormatterFilter"
                      value="inSuperclass"/>
             </or>
+            <not>
+               <objectState
+                     name="PrimitiveVariableActionFilter"
+                     value="isArray">
+               </objectState>
+            </not>
+          </and>
          </visibility>
          
       </objectContribution>
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java
index 8a6d000..e8bdd14 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java
@@ -16,9 +16,11 @@
 
 import org.eclipse.debug.core.DebugException;
 import org.eclipse.debug.core.model.IValue;
+import org.eclipse.jdt.debug.core.IJavaArrayType;
 import org.eclipse.jdt.debug.core.IJavaClassType;
 import org.eclipse.jdt.debug.core.IJavaDebugTarget;
 import org.eclipse.jdt.debug.core.IJavaObject;
+import org.eclipse.jdt.debug.core.IJavaType;
 import org.eclipse.jdt.debug.core.IJavaVariable;
 import org.eclipse.jdt.internal.debug.core.logicalstructures.JavaStructureErrorValue;
 import org.eclipse.jdt.internal.debug.core.model.JDINullValue;
@@ -105,6 +107,25 @@
 	}
 	
 	/**
+	 * This method returns if the specified object is an array or not
+	 * @param object the object to test
+	 * @return true if the specified object has the <code>IJavaType</code> of <code>JDIArrayType</code>, false otherwise
+	 * @since 3.3
+	 */
+	protected boolean isArrayType(Object object) {
+		if(object instanceof IJavaVariable) {
+			try {
+				IJavaType type = ((IJavaVariable)object).getJavaType();
+				if(type != null) {
+					return type instanceof IJavaArrayType;
+				}
+			} 
+			catch (DebugException e) {JDIDebugUIPlugin.log(e);}
+		}
+		return false;
+	}
+	
+	/**
 	 * Determines if the ref type of the value is primitive
 	 * 
 	 * @param var the variable to inspect
@@ -147,6 +168,9 @@
 					if (value.equals("isPrimitive")) { //$NON-NLS-1$
 						return isPrimitiveType(var);
 					} 
+					else if(value.equals("isArray")) { //$NON-NLS-1$
+						return isArrayType(var);
+					}
 					else if (value.equals("isValuePrimitive")) { //$NON-NLS-1$
 						return isValuePrimitiveType(varValue);
 					}