in view/src/main/java/jetbrains/jetpad/projectional/view/toGwt/LineViewMapper.java [33:91]
protected void registerSynchronizers(SynchronizersConfiguration conf) {
super.registerSynchronizers(conf);
Element svg = createSVG();
getTarget().appendChild(svg);
final Element line = SvgUtil.createSvgElement("line");
svg.appendChild(line);
conf.add(GwtViewSynchronizers.boundsSyncrhonizer(getSource(), svg));
conf.add(Synchronizers.forPropsOneWay(new DerivedProperty<Vector>(getSource().bounds(), getSource().start()) {
@Override
public Vector doGet() {
return getSource().start().get().sub(getSource().bounds().get().origin);
}
}, new WritableProperty<Vector>() {
@Override
public void set(final Vector value) {
whenValid(new Runnable() {
@Override
public void run() {
line.setAttribute("x1", "" + (value.x + 1));
line.setAttribute("y1", "" + (value.y + 1));
}
});
}
}));
conf.add(Synchronizers.forPropsOneWay(new DerivedProperty<Vector>(getSource().bounds(), getSource().start()) {
@Override
public Vector doGet() {
return getSource().end().get().sub(getSource().bounds().get().origin);
}
}, new WritableProperty<Vector>() {
@Override
public void set(final Vector value) {
whenValid(new Runnable() {
@Override
public void run() {
line.setAttribute("x2", "" + (value.x + 1));
line.setAttribute("y2", "" + (value.y + 1));
}
});
}
}));
conf.add(Synchronizers.forPropsOneWay(getSource().color(), new WritableProperty<Color>() {
@Override
public void set(Color value) {
line.getStyle().setProperty("stroke", value.toCssColor());
}
}));
conf.add(Synchronizers.forPropsOneWay(getSource().width(), new WritableProperty<Integer>() {
@Override
public void set(Integer value) {
line.getStyle().setProperty("strokeWidth", "" + value);
}
}));
}