package jetbrains.mps.debugger.java.api.state.proxy; /*Generated by MPS */ import jetbrains.mps.debugger.java.api.evaluation.proxies.IValueProxy; import jetbrains.mps.debug.api.programState.IValue; import org.jetbrains.annotations.NotNull; import com.sun.jdi.ThreadReference; import javax.swing.Icon; import jetbrains.mps.debugger.java.api.evaluation.proxies.INullValueProxy; import jetbrains.mps.debugger.java.api.ui.Icons; import jetbrains.mps.debugger.java.api.evaluation.proxies.PrimitiveValueProxy; import jetbrains.mps.debugger.java.api.evaluation.proxies.IArrayValueProxy; import java.util.List; import jetbrains.mps.debug.api.programState.IWatchable; import java.util.ArrayList; import com.sun.jdi.VirtualMachine; public abstract class ValueWrapper<V extends IValueProxy> extends JavaValue<V> implements IValue { private final String myPresentation; public ValueWrapper(@NotNull V value, @NotNull ThreadReference threadReference) { super(value, threadReference); myPresentation = myValue.getPresentation(); } @Override public Icon getPresentationIcon() { if (myValue instanceof INullValueProxy) { return Icons.VALUE_PRIMITIVE; } if (myValue instanceof PrimitiveValueProxy) { return Icons.VALUE_PRIMITIVE; } if (myValue instanceof IArrayValueProxy) { return Icons.VALUE_ARRAY; } return Icons.VALUE_OBJECT; } @Override public String getValuePresentation() { return myPresentation; } @Override public List<IWatchable> calculateSubvalues() { List<IWatchable> result = new ArrayList<IWatchable>(); for (IWatchable watchable : getSubvaluesImpl()) { result.add(watchable); } return result; } protected abstract List<? extends IWatchable> getSubvaluesImpl(); @Override public boolean isStructure() { return true; } public ThreadReference getThreadReference() { return myThreadReference; } public VirtualMachine getVM() { return myValue.getJDIValue().virtualMachine(); } }