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