in cell/src/main/java/jetbrains/jetpad/cell/toView/IndentRootCellMapper.java [127:187]
protected void onAttach(MappingContext ctx) {
super.onAttach(ctx);
for (Cell child : getSource().children()) {
myIndentUpdater.childAdded(child);
}
myIndentUpdater.initialized();
myRegistration = getSource().addListener(new IndentContainerCellListener() {
@Override
public void childAdded(CollectionItemEvent<? extends Cell> event) {
Cell cell = event.getNewItem();
myIndentUpdater.childAdded(cell);
}
@Override
public void childRemoved(CollectionItemEvent<? extends Cell> event) {
Cell cell = event.getOldItem();
myIndentUpdater.childRemoved(cell);
}
@Override
public void propertyChanged(Cell cell, final CellPropertySpec<?> prop, final PropertyChangeEvent<?> event) {
if (CounterUtil.isCounterProp(prop)) {
updateCounters(cell, prop, event);
} else if (prop == Cell.VISIBLE) {
myIndentUpdater.visibilityChanged(cell, (PropertyChangeEvent<Boolean>) event);
} else if (Cell.isPopupProp(prop)) {
IndentRootCellMapper.this.onEvent((PropertyChangeEvent<Cell>) event);
} else if (prop == Cell.BACKGROUND) {
updateBackground(cell);
}
}
private void updateCounters(Cell cell, final CellPropertySpec<?> prop, final PropertyChangeEvent<?> event) {
IndentUtil.iterateLeaves(cell, new Handler<Cell>() {
@Override
public void handle(Cell item) {
BaseCellMapper<?, ?> mapper = (BaseCellMapper<?, ?>) getDescendantMapper(item);
if (mapper == null) {
throw new IllegalStateException();
}
if (CounterUtil.update(mapper, prop, event)) {
mapper.refreshProperties();
}
}
});
}
private void updateBackground(Cell cell) {
IndentUtil.iterateLeaves(cell, new Handler<Cell>() {
@Override
public void handle(Cell item) {
BaseCellMapper<?, ?> mapper = (BaseCellMapper<?, ?>) getDescendantMapper(item);
mapper.setAncestorBackground(AncestorUtil.getAncestorBackground(getSource(), item));
mapper.refreshProperties();
}
});
}
});
}