Shape (float lw, float bw) { Path2D shape = new Path2D.Float(); int w = getWidth() - JBUIScale.scale(1); int h = getHeight() - JBUIScale.scale(1); float arc = COMPONENT_ARC.getFloat(); arc = arc > bw + lw ? arc - bw - lw : 0.0f; switch (direction) { case SOUTH -> { shape.moveTo(lw, 0); shape.lineTo(w - bw - lw, 0); shape.lineTo(w - bw - lw, h - bw - lw - arc); shape.quadTo(w - bw - lw, h - bw - lw, w - bw - lw - arc, h - bw - lw); shape.lineTo(lw, h - bw - lw); shape.closePath(); } case NORTH -> { shape.moveTo(lw, bw + lw); shape.lineTo(w - bw - lw - arc, bw + lw); shape.quadTo(w - bw - lw, bw + lw, w - bw - lw, bw + lw + arc); shape.lineTo(w - bw - lw, h); shape.lineTo(lw, h); shape.closePath(); } default -> {} } return shape; }