1 11 package org.eclipse.jdt.internal.debug.ui; 12 13 14 import org.eclipse.core.runtime.IAdaptable; 15 import org.eclipse.core.runtime.Platform; 16 import org.eclipse.debug.core.model.IDebugTarget; 17 import org.eclipse.debug.ui.DebugUITools; 18 import org.eclipse.jdt.core.Flags; 19 import org.eclipse.jdt.core.IJavaElement; 20 import org.eclipse.jdt.core.IMember; 21 import org.eclipse.jdt.core.IMethod; 22 import org.eclipse.jdt.core.IType; 23 import org.eclipse.jdt.core.JavaModelException; 24 import org.eclipse.jdt.debug.core.IJavaDebugTarget; 25 import org.eclipse.ui.IActionFilter; 26 import org.eclipse.ui.IEditorPart; 27 import org.eclipse.ui.IWorkbenchPage; 28 import org.eclipse.ui.IWorkbenchWindow; 29 import org.eclipse.ui.PlatformUI; 30 31 public class MemberActionFilter implements IActionFilter { 32 33 36 public boolean testAttribute(Object target, String name, String value) { 37 if (name.equals("MemberActionFilter")) { if (target instanceof IMember) { 39 IMember member = (IMember) target; 40 if (value.equals("isAbstract")) { try { 42 return Flags.isAbstract(member.getFlags()); 43 } catch (JavaModelException e) { 44 } 45 } 46 if (value.equals("isRemote")) { IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); 48 if(window != null) { 49 IWorkbenchPage page = window.getActivePage(); 50 if(page != null) { 51 IEditorPart part = page.getActiveEditor(); 52 if(part != null) { 53 Object adapter = Platform.getAdapterManager().getAdapter(part.getEditorInput(), "org.eclipse.team.core.history.IFileRevision"); return adapter != null; 55 } 56 } 57 } 58 return false; 60 } 61 if(value.equals("isInterface")) { IType type = null; 63 if(member.getElementType() == IJavaElement.TYPE) { 64 type = (IType) member; 65 } 66 else { 67 type = member.getDeclaringType(); 68 } 69 try { 70 return type != null && type.isInterface(); 71 } 72 catch (JavaModelException e) {JDIDebugUIPlugin.log(e);} 73 } 74 if(value.equals("isConstructor")) { IMethod method = null; 76 if(member.getElementType() == IJavaElement.METHOD) { 77 method = (IMethod) member; 78 try{ 79 return method.isConstructor(); 80 } catch (JavaModelException e) { 81 JDIDebugUIPlugin.log(e); 82 return false; 83 } 84 } 85 } 86 if(value.equals("isValidField")) { try { 88 int flags = member.getFlags(); 89 return (member.getElementType() == IJavaElement.FIELD) & (!Flags.isFinal(flags) & !(Flags.isStatic(flags) & Flags.isFinal(flags))); 90 } 91 catch (JavaModelException e) { 92 JDIDebugUIPlugin.log(e); 93 return false; 94 } 95 } 96 if(value.equals("isInstanceRetrievalAvailable")) { IAdaptable adapt = DebugUITools.getDebugContext(); 98 if(adapt != null) { 99 IDebugTarget adapter = (IDebugTarget) adapt.getAdapter(IDebugTarget.class); 100 if(adapter != null && adapter instanceof IJavaDebugTarget) { 101 IJavaDebugTarget dtarget = (IJavaDebugTarget) adapter; 102 return dtarget.supportsInstanceRetrieval(); 103 } 104 } 105 return false; 106 } 107 } 108 } 109 return false; 110 } 111 } 112 | Popular Tags |