static void drawArrowBetweenRects(Graphics2D g, Rect r1, Rect r2, Color color) { // TODO: more cases Pt p1, p2; if (r2.x > r1.x2()) { p1 = pt(r1.x2(), middleOfY(r1)); p2 = pt(r2.x-1, middleOfY(r2)); } else { p1 = pt(middleOfX(r1), r1.y-1); p2 = pt(middleOfX(r2), r2.y+r2.h); } drawArrowBetweenPoints(g, p1, p2, color); }