private static void placeCaretInsideFirstOperation()

in src/main/com/intellij/lang/jsgraphql/ide/highlighting/query/GraphQLQueryContextHighlightVisitor.java [321:353]


  private static void placeCaretInsideFirstOperation(Editor editor, PsiFile psiFile) {
    if (editor.isDisposed()) {
      return;
    }
    if (psiFile.isValid() && psiFile.getVirtualFile() != null && psiFile.getVirtualFile().isValid()) {
      for (PsiElement psiElement : psiFile.getChildren()) {
        if (psiElement instanceof PsiWhiteSpace) {
          continue;
        }
        GraphQLOperationDefinition operationOrNull = asOperationOrNull(psiElement);
        if (operationOrNull != null) {
          PsiElement navigationTarget = operationOrNull;
          Project project = editor.getProject();
          if (project != null) {
            // try to find the name of the operation
            if (operationOrNull instanceof GraphQLSelectionSetOperationDefinition) {
              // unnamed query
              navigationTarget = ((GraphQLSelectionSetOperationDefinition)operationOrNull).getSelectionSet();
            }
            else if (operationOrNull.getNameIdentifier() != null) {
              navigationTarget = operationOrNull.getNameIdentifier();
            }
            FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
            fileEditorManager.openFile(psiFile.getVirtualFile(), true, true);
            editor.getSelectionModel().removeSelection();
            editor.getCaretModel().moveToOffset(navigationTarget.getTextOffset());
            editor.getScrollingModel().scrollToCaret(ScrollType.CENTER);
          }
          return;
        }
      }
    }
  }