protected void registerSynchronizers()

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