package jetbrains.mps.nodeEditor.cells.jetpad; /*Generated by MPS */ import jetbrains.jetpad.model.property.Property; import jetbrains.mps.openapi.editor.EditorContext; import jetbrains.jetpad.model.event.EventHandler; import jetbrains.jetpad.model.property.PropertyChangeEvent; import jetbrains.mps.nodeEditor.cells.ChangePropertyEditorCommand; public abstract class WritableModelProperty<T> extends ReadableModelProperty<T> implements Property<T> { private final String myCommandId; private final EditorContext myContext; public WritableModelProperty(String commandId, EditorContext context) { myCommandId = commandId; myContext = context; addHandler(new EventHandler<PropertyChangeEvent<T>>() { public void onEvent(PropertyChangeEvent<T> event) { safeSetModelPropertyValue(event.getNewValue()); } }); } protected void safeSetModelPropertyValue(final T t) { myContext.getRepository().getModelAccess().executeCommand(new ChangePropertyEditorCommand(myContext, myCommandId) { protected void doExecute() { setModelPropertyValue(t); } }); } protected abstract void setModelPropertyValue(T value); }