protected void registerSynchronizers()

in cell/src/main/java/jetbrains/jetpad/cell/toView/CellContainerToViewMapper.java [77:132]


  protected void registerSynchronizers(SynchronizersConfiguration conf) {
    super.registerSynchronizers(conf);

    conf.add(Synchronizers.forPropsOneWay(Properties.TRUE, myTargetView.focusable()));
    conf.add(Synchronizers.forSingleRole(this, Properties.<Cell>constant(getSource().root),
      new WritableProperty<View>() {
        @Override
        public void set(View value) {
          myTargetView.children().clear();
          if (value != null) {
            myTargetView.children().add(value);
          }
        }
      },
      new MapperFactory<Cell, View>() {
        @Override
        public Mapper<? extends Cell, ? extends View> createMapper(Cell source) {
          return CellMappers.create(source, myContext);
        }
      }
    ));
    conf.add(Synchronizers.forRegistration(new Supplier<Registration>() {
      @Override
      public Registration get() {
        ViewTrait redispatchTrait = createRedistpatchTrait();
        myContext.focused.set(myTargetView.focused().get());
        return new CompositeRegistration(
          getSource().addListener(createCellContainerListener()),
          getSource().focusedCell.addHandler(new EventHandler<PropertyChangeEvent<Cell>>() {
            @Override
            public void onEvent(PropertyChangeEvent<Cell> event) {
              if (event.getNewValue() != null) {
                myTargetView.container().focusedView().set(myTargetView);
              }
            }
          }),
          myTargetView.focused().addHandler(new EventHandler<PropertyChangeEvent<Boolean>>() {
            @Override
            public void onEvent(PropertyChangeEvent<Boolean> event) {
              myContext.focused.set(event.getNewValue());
              for (TextCell cell : myWithCaret) {
                BaseCellMapper<?, ?> mapper = (BaseCellMapper<?, ?>) rootMapper().getDescendantMapper(cell);
                mapper.refreshProperties();
              }
              for (Cell cell : myHighlighted) {
                BaseCellMapper<?, ?> mapper = (BaseCellMapper<?, ?>) rootMapper().getDescendantMapper(cell);
                mapper.refreshProperties();
              }
            }
          }),
          getTarget().addTrait(redispatchTrait),
          myPopupView.addTrait(redispatchTrait)
        );
      }
    }));
  }