public void findRoutes()

in diagram/src/main/java/jetbrains/jetpad/projectional/diagram/layout/OrthogonalRouter.java [37:69]


  public void findRoutes(DiagramView diagramView) {
    Set<Rectangle> invalidChildrenRects = new HashSet<>();
    for (View child : getItems(diagramView)) {
      boolean valid = child.valid().get();
      child.validate();
      if (!valid) {
        invalidChildrenRects.add(getLayoutBounds(child.bounds().get()));
      }
    }

    Set<View> invalidInputs = new HashSet<>();
    for (Connection c: diagramView.connections) {
      if (!isValid(c)) {
        View input = ((PolyLineConnection) c).fromView().get();
        if (input != null) {
          invalidInputs.add(input);
        }
      }
    }

    for (Connection c: diagramView.connections) {
      if (!isValid(c)) continue;
      if (intersects((PolyLineConnection) c, invalidChildrenRects)) {
        c.view().invalidate();
      }
      View input = ((PolyLineConnection) c).fromView().get();
      if (input != null && invalidInputs.contains(input)) {
        c.view().invalidate();
      }
    }

    reroute(diagramView);
  }