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