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;
}
}