package jetbrains.mps.nodeEditor.cells.jetpad;
/*Generated by MPS */
import jetbrains.jetpad.model.property.ValueProperty;
import jetbrains.mps.smodel.ModelAccess;
import jetbrains.mps.util.Computable;
import jetbrains.mps.smodel.NodeReadAccessCasterInEditor;
public abstract class ReadableModelProperty<T> extends ValueProperty<T> {
public ReadableModelProperty() {
super();
set(safeGetModelPropertyValue());
}
private T safeGetModelPropertyValue() {
return ModelAccess.instance().runReadAction(new Computable<T>() {
public T compute() {
return NodeReadAccessCasterInEditor.runCleanPropertyAccessAction(new Computable<T>() {
public T compute() {
return getModelPropertyValue();
}
});
}
});
}
protected abstract T getModelPropertyValue();
public void synchronizeViewWithModel() {
set(safeGetModelPropertyValue());
}
}