public void onComplete()

in cell/src/main/java/jetbrains/jetpad/cell/text/TextEditingTrait.java [106:156]


  public void onComplete(Cell cell, CompletionEvent event) {
    CompletionController handler = getCompletionController(cell);

    if (handler.isActive()) {
      super.onComplete(cell, event);
      return;
    }

    final TextCell editor = (TextCell) cell;

    CompletionItems completion = new CompletionItems(editor.get(Completion.COMPLETION).get(CompletionParameters.EMPTY));
    String prefixText = editor.getPrefixText();
    if (editor.isEnd() && editor.get(Completion.COMPLETION_CONFIG).canDoRightTransform(completion, prefixText)) {
      BaseCompletionParameters cp = new BaseCompletionParameters() {
        @Override
        public boolean isEndRightTransform() {
          return true;
        }

        @Override
        public boolean isMenu() {
          return true;
        }
      };
      CompletionSupplier supplier = editor.get(Completion.RIGHT_TRANSFORM);
      if ((!supplier.isEmpty(cp) || !supplier.isAsyncEmpty(cp)) && editor.get(TextEditing.RT_ON_END)) {
        if (cell.get(Cell.RIGHT_POPUP) == null) {
          TextCell popup = CompletionSupport.showSideTransformPopup(editor, editor.rightPopup(), cell.get(Completion.RIGHT_TRANSFORM), true);
          popup.get(Completion.COMPLETION_CONTROLLER).activate(new Runnable() {
            @Override
            public void run() {
              editor.focus();
            }
          });
        }
        event.consume();
        return;
      }
    }

    List<CompletionItem> prefixed = completion.prefixedBy(prefixText);
    String currentText = TextEditing.nonNullText(editor);
    if (prefixed.size() == 1 && !currentText.isEmpty() && canCompleteWithCtrlSpace(editor)) {
      prefixed.get(0).complete(prefixText).run();
      cell.dispatch(new Event(), Cells.AFTER_COMPLETED);
      event.consume();
    } else if (handler.canActivate()) {
      handler.activate();
      event.consume();
    }
  }