package de.unisiegen.tpml.graphics.renderer; import java.awt.Graphics; import java.awt.Point; import java.awt.Polygon; import de.unisiegen.tpml.core.ProofNode; import de.unisiegen.tpml.graphics.tree.TreeNodeComponent; public class TreeArrowRenderer { /** * Renders the tree, that connects all nodes. * * @param node * @param spacing * @param gc */ public static void renderArrows (ProofNode node, int spacing, Graphics gc) { if (node.getChildCount() == 0) { return; } TreeNodeComponent nodeComponent = (TreeNodeComponent)node.getUserObject(); Point top = nodeComponent.getBottomArrowConnection(); Polygon arrow = new Polygon (); arrow.addPoint(top.x, top.y); arrow.addPoint(top.x + spacing/2, top.y + spacing); arrow.addPoint(top.x, top.y + spacing/2); arrow.addPoint(top.x - spacing/2, top.y + spacing); gc.fillPolygon(arrow); for (int i=0; i<node.getChildCount(); i++) { ProofNode childNode = node.getChildAt(i); TreeNodeComponent childNodeComponent = (TreeNodeComponent)childNode.getUserObject(); Point left = childNodeComponent.getLeftArrowConnection(); gc.drawLine(top.x, top.y, top.x, left.y); gc.drawLine(top.x, left.y, left.x, left.y); top.y = left.y; renderArrows (childNode, spacing, gc); } } }