in dataflow/src/main/java/jetbrains/mps/diagram/contentDemo/mapper/ContentRootMapper.java [64:117]
protected void registerSynchronizers(SynchronizersConfiguration conf) {
super.registerSynchronizers(conf);
Property<String> text = createCell("test", null);
Property<Integer> x = new ValueProperty<>(75);
createCell("75", new IntegerHandler(x));
Property<Integer> y = new ValueProperty<>(75);
createCell("75", new IntegerHandler(y));
final Property<Integer> num = new ValueProperty<>(2);
createCell("2", new IntegerHandler(num));
myProperties = new ContentProperties(x, y);
conf.add(Synchronizers.forPropsTwoWay(text, myContent.name));
conf.add(Synchronizers.forProperty(num, new Runnable() {
@Override
public void run() {
Integer value = num.get();
int size = myContent.items.size();
if (value < size) {
for (int i = 0; i < size - value; i++) {
myContent.items.remove(0);
}
}
if (value > size) {
for (int i = 0; i < value - size; i++) {
myContent.items.add(new ContentItem());
}
}
}
}));
conf.add(Synchronizers.forConstantRole(this, getSource(), myView.children(), new MapperFactory<Diagram, View>() {
@Override
public Mapper<? extends Diagram, ? extends View> createMapper(Diagram source) {
return new DiagramMapper(source, new MapperFactory<Block, View>() {
@Override
public Mapper<? extends Block, ? extends View> createMapper(Block source) {
return new BlockWithContentMapper(source, myContent, myProperties);
}
});
}
}));
conf.add(Synchronizers.forRegistration(new Supplier<Registration>() {
@Override
public Registration get() {
for (Runnable r: myViewAdders) {
r.run();
}
return Registration.EMPTY;
}
}));
}