1 11 package org.eclipse.jdt.internal.debug.ui; 12 13 14 import java.util.HashSet ; 15 import java.util.Set ; 16 17 import org.eclipse.debug.core.DebugException; 18 import org.eclipse.debug.core.model.IValue; 19 import org.eclipse.jdt.debug.core.IJavaObject; 20 import org.eclipse.jdt.internal.debug.ui.actions.OpenVariableTypeAction; 21 import org.eclipse.jdt.internal.debug.ui.display.JavaInspectExpression; 22 import org.eclipse.ui.IActionFilter; 23 24 public class JavaInspectExpressionActionFilter implements IActionFilter { 25 26 private static final Set fgPrimitiveTypes = initPrimitiveTypes(); 27 28 private static Set initPrimitiveTypes() { 29 HashSet set = new HashSet (8); 30 set.add("short"); set.add("int"); set.add("long"); set.add("float"); set.add("double"); set.add("boolean"); set.add("byte"); set.add("char"); set.add("null"); return set; 40 } 41 42 45 public boolean testAttribute(Object target, String name, String value) { 46 if (target instanceof JavaInspectExpression) { 47 JavaInspectExpression exp= (JavaInspectExpression) target; 48 if (name.equals("PrimitiveVariableActionFilter") && value.equals("isNotPrimitive")) { return !isPrimitiveType(exp); 50 } else if (name.equals("DetailFormatterFilter") && value.equals("isDefined")) { try { 52 IValue varValue= exp.getValue(); 53 return (varValue instanceof IJavaObject) && (JavaDetailFormattersManager.getDefault().hasAssociatedDetailFormatter(((IJavaObject)varValue).getJavaType())); 54 } catch (DebugException exception) { 55 JDIDebugUIPlugin.log(exception); 56 } 57 } 58 } 59 return false; 60 } 61 62 private boolean isPrimitiveType(JavaInspectExpression exp) { 63 if (exp == null) { 64 return false; 65 } 66 try { 67 IValue value = exp.getValue(); 68 if (value != null) { 69 String refType = OpenVariableTypeAction.removeArray(value.getReferenceTypeName()); 70 return fgPrimitiveTypes.contains(refType); 71 } 72 } catch (DebugException e) { 73 } 74 return false; 75 } 76 77 } 78 | Popular Tags |