package jetbrains.mps.nodeEditor.cells.jetpad; /*Generated by MPS */ import jetbrains.mps.openapi.editor.EditorContext; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.jetpad.mapper.Mapper; import jetbrains.jetpad.model.property.Property; import jetbrains.jetpad.mapper.Synchronizers; public abstract class PropertyMapperCell<T> extends AbstractJetpadCell { private WritableModelProperty<T> myModelProperty; public PropertyMapperCell(EditorContext editorContext, SNode node) { super(editorContext, node); myModelProperty = new WritableModelProperty<T>(getCellId() + "_" + node.getNodeId().toString(), getContext()) { protected T getModelPropertyValue() { return getModelPropertyValueImpl(); } protected void setModelPropertyValue(T value) { setModelPropertyValueImpl(value); } }; addModelProperty(myModelProperty); } public void registerSynchronizers(Mapper.SynchronizersConfiguration configuration, Property viewProperty) { configuration.add(Synchronizers.forProperty(myModelProperty, viewProperty)); configuration.add(Synchronizers.forProperty(viewProperty, myModelProperty)); } public void synchronize() { synchronizeViewWithModel(); } protected abstract T getModelPropertyValueImpl(); protected abstract void setModelPropertyValueImpl(T value); }