1 19 20 package org.openide.src.nodes; 21 22 import java.beans.*; 23 import java.io.IOException ; 24 import java.lang.reflect.Modifier ; 25 import java.lang.reflect.InvocationTargetException ; 26 27 import org.openide.src.*; 28 import org.openide.nodes.*; 29 30 34 public class MethodElementNode extends ConstructorElementNode { 35 39 public MethodElementNode(MethodElement element, boolean writeable) { 40 super(element, writeable); 41 setElementFormat0(sourceOptions.getMethodElementFormat()); 42 } 43 44 45 public org.openide.util.HelpCtx getHelpCtx () { 46 return new org.openide.util.HelpCtx ("org.openide.src.nodes.MethodNode"); } 48 49 52 protected String resolveIconBase() { 53 int modif = ((MethodElement)element).getModifiers(); 54 if (Modifier.isStatic(modif)) { 55 if (Modifier.isPrivate(modif)) 57 return METHOD_ST_PRIVATE; 58 else if (Modifier.isProtected(modif)) 59 return METHOD_ST_PROTECTED; 60 else if (Modifier.isPublic(modif)) 61 return METHOD_ST_PUBLIC; 62 else 63 return METHOD_ST_PACKAGE; 64 } 65 else { 66 if (Modifier.isPrivate(modif)) 68 return METHOD_PRIVATE; 69 else if (Modifier.isProtected(modif)) 70 return METHOD_PROTECTED; 71 else if (Modifier.isPublic(modif)) 72 return METHOD_PUBLIC; 73 else 74 return METHOD_PACKAGE; 75 } 76 } 77 78 82 public boolean canRename() { 83 return true; 84 } 85 86 87 90 protected ElementFormat getHintElementFormat() { 91 return sourceOptions.getMethodElementLongFormat(); 92 } 93 94 95 protected Sheet createSheet () { 96 Sheet sheet = Sheet.createDefault(); 97 Sheet.Set ps = sheet.get(Sheet.PROPERTIES); 98 ps.put(createModifiersProperty(writeable)); 99 ps.put(createNameProperty(writeable)); 100 ps.put(createParametersProperty(writeable)); 101 ps.put(createReturnProperty(writeable)); 102 ps.put(createExceptionsProperty(writeable)); 103 return sheet; 104 } 105 106 111 public void destroy() throws IOException { 112 SourceEditSupport.invokeAtomicAsUser(element, new SourceEditSupport.ExceptionalRunnable() { 113 public void run() throws SourceException { 114 MethodElement el = (MethodElement) element; 115 el.getDeclaringClass().removeMethod(el); 116 } 117 }); 118 super.destroy(); 119 } 120 121 125 protected Node.Property createReturnProperty(boolean canW) { 126 return new ElementProp(PROP_RETURN, Type.class, canW) { 127 128 public Object getValue () { 129 return ((MethodElement)element).getReturn(); 130 } 131 132 133 public void setValue(final Object val) throws IllegalArgumentException , 134 IllegalAccessException , InvocationTargetException { 135 super.setValue(val); 136 if (!(val instanceof Type)) 137 throw new IllegalArgumentException (); 138 139 runAtomic(element, new SourceEditSupport.ExceptionalRunnable() { 140 public void run() throws SourceException { 141 ((MethodElement)element).setReturn((Type)val); 142 } 143 }); 144 } 145 }; 146 } 147 } 148 | Popular Tags |