in projectional/src/main/java/jetbrains/jetpad/projectional/util/CellNavigationController.java [73:137]
private CompositeRegistration install() {
CompositeRegistration result = new CompositeRegistration();
result.add(
selectedCaretOffset().addHandler(new EventHandler<PropertyChangeEvent<Integer>>() {
@Override
public void onEvent(PropertyChangeEvent<Integer> event) {
myPrevXOffset.set(null);
}
}),
focusedCell().addHandler(new EventHandler<PropertyChangeEvent<Cell>>() {
@Override
public void onEvent(PropertyChangeEvent<Cell> event) {
//todo we should reset the stuff on every view structure change
if (myStackResetEnabled.get()) {
mySelectionStack.clear();
}
}
}));
result.add(myContainer.root.addTrait(new CellTrait() {
@Override
public void onKeyPressed(Cell cell, KeyEvent event) {
handleKeyPress(cell, event);
if (event.isConsumed()) return;
super.onKeyPressed(cell, event);
}
@Override
public void onMousePressed(Cell cell, MouseEvent event) {
handleMousePress(event);
if (event.isConsumed()) return;
super.onMousePressed(cell, event);
}
}));
result.add(myContainer.focusedCell.addHandler(new EventHandler<PropertyChangeEvent<Cell>>() {
Cell myPair;
@Override
public void onEvent(PropertyChangeEvent<Cell> event) {
Cell oldCell = event.getOldValue();
if (oldCell != null) {
oldCell.focusHighlighted().set(false);
if (myPair != null) {
oldCell.pairHighlighted().set(false);
myPair.pairHighlighted().set(false);
myPair.focusHighlighted().set(false);
myPair = null;
}
}
Cell newCell = event.getNewValue();
if (newCell != null) {
newCell.focusHighlighted().set(true);
Cell pair = newCell.get(PAIR_CELL);
if (pair != null) {
newCell.pairHighlighted().set(true);
pair.pairHighlighted().set(true);
pair.focusHighlighted().set(true);
myPair = pair;
}
}
}
}));
return result;
}