private CompositeRegistration install()

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