package jetbrains.mps.debugger.java.runtime.state.watchables; /*Generated by MPS */ import jetbrains.mps.debugger.java.api.state.watchables.JavaWatchable; import com.sun.jdi.Method; import com.sun.jdi.ThreadReference; import jetbrains.mps.debug.api.programState.WatchablesCategory; import jetbrains.mps.debugger.java.api.state.watchables.JavaWatchablesCategory; import jetbrains.mps.debug.api.programState.IValue; import javax.swing.Icon; import jetbrains.mps.debugger.java.runtime.ui.Icons; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.model.SNodeReference; import java.util.List; import jetbrains.mps.debug.api.programState.IWatchable; import java.util.Collections; /*package*/ class JavaMethodWatchable extends JavaWatchable { private final Method myMethod; private final boolean myIsEnter; private final JavaMethodWatchable.JavaMethodValue myValue; public JavaMethodWatchable(Method method, boolean enter, ThreadReference threadReference) { super(threadReference); myMethod = method; myIsEnter = enter; myValue = new JavaMethodWatchable.JavaMethodValue(); } @Override public String getName() { return ((myIsEnter ? "entered method" : "exited method")); } @Override public WatchablesCategory getCategory() { return JavaWatchablesCategory.METHOD; } @Override public IValue getValue() { return myValue; } @Override public Icon getPresentationIcon() { return Icons.METHOD_BREAKPOINT; } @Nullable @Override public SNodeReference getSourceNode() { // todo from location??? return null; } private class JavaMethodValue implements IValue { private final String myPresentation; private JavaMethodValue() { myPresentation = myMethod.declaringType().name() + "." + myMethod.name(); } @Override public String getValuePresentation() { return myPresentation; } @Override public Icon getPresentationIcon() { return Icons.METHOD_BREAKPOINT; } @Override public boolean isStructure() { return false; } @Override public void initSubvalues() { } @Override public List<IWatchable> getSubvalues() { return Collections.emptyList(); } } }