KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > jdt > internal > debug > ui > MemberActionFilter


1 /*******************************************************************************
2  * Copyright (c) 2000, 2007 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

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     /**
34      * @see org.eclipse.ui.IActionFilter#testAttribute(Object, String, String)
35      */

36     public boolean testAttribute(Object JavaDoc target, String JavaDoc name, String JavaDoc value) {
37         if (name.equals("MemberActionFilter")) { //$NON-NLS-1$
38
if (target instanceof IMember) {
39                 IMember member = (IMember) target;
40                 if (value.equals("isAbstract")) { //$NON-NLS-1$
41
try {
42                         return Flags.isAbstract(member.getFlags());
43                     } catch (JavaModelException e) {
44                     }
45                 }
46                 if (value.equals("isRemote")) { //$NON-NLS-1$
47
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 JavaDoc adapter = Platform.getAdapterManager().getAdapter(part.getEditorInput(), "org.eclipse.team.core.history.IFileRevision"); //$NON-NLS-1$
54
return adapter != null;
55                             }
56                         }
57                     }
58                     //if we cannot get the editor input, assume it is not remote
59
return false;
60                 }
61                 if(value.equals("isInterface")) { //$NON-NLS-1$
62
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")) { //$NON-NLS-1$
75
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")) { //$NON-NLS-1$
87
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")) { //$NON-NLS-1$
97
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