package jetbrains.mps.debugger.java.runtime.state.values; /*Generated by MPS */ import jetbrains.mps.debugger.java.api.state.proxy.JavaValue; import jetbrains.mps.debug.api.programState.IValue; import com.sun.jdi.Field; import com.sun.jdi.ThreadReference; import javax.swing.Icon; import jetbrains.mps.debugger.java.runtime.ui.Icons; import java.util.List; import jetbrains.mps.debug.api.programState.IWatchable; import java.util.ArrayList; import jetbrains.mps.debugger.java.runtime.state.watchables.JavaWatchpointValueWatchable; public class FieldWatchpointValue extends JavaValue implements IValue { private final Field myField; private final JavaValue myCurrentValue; private final JavaValue myNewValue; private final boolean myAccess; public FieldWatchpointValue(Field field, boolean access, JavaValue currentValue, JavaValue newValue, ThreadReference threadReference) { super(currentValue.getValue(), threadReference); myField = field; myCurrentValue = currentValue; myNewValue = newValue; myAccess = access; } @Override public String getValuePresentation() { return myField.name(); } @Override public Icon getPresentationIcon() { return Icons.FIELD_BREAKPOINT; } @Override public boolean isStructure() { return true; } @Override public List<IWatchable> calculateSubvalues() { List<IWatchable> result = new ArrayList<IWatchable>(); result.add(new JavaWatchpointValueWatchable(myCurrentValue, true, myThreadReference)); if (!(myAccess)) { result.add(new JavaWatchpointValueWatchable(myNewValue, false, myThreadReference)); } return result; } }