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