From 181611da94a2ebd1d711f703a46ae8ceb197d2bb Mon Sep 17 00:00:00 2001 From: parrt Date: Sat, 26 Nov 2011 11:28:50 -0800 Subject: [PATCH] rounded line edges, no border if color==null; 1.0.1 abego [git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9468] --- .../Java/lib/org.abego.treelayout.core.jar | Bin 35885 -> 25515 bytes .../antlr/v4/runtime/tree/gui/TreeViewer.java | 35 +++++++++++++----- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/runtime/Java/lib/org.abego.treelayout.core.jar b/runtime/Java/lib/org.abego.treelayout.core.jar index f9e279b10da67b388e25085a8df4c9057ef0d072..2350adcd7bab04b3fcf4f7f14c3340b8f212d672 100644 GIT binary patch literal 25515 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 literal 35885 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 V+X*hP!J@E8?uU2utLZB#{|$#b@%I1# diff --git a/runtime/Java/src/org/antlr/v4/runtime/tree/gui/TreeViewer.java b/runtime/Java/src/org/antlr/v4/runtime/tree/gui/TreeViewer.java index 8dd0d45fe..687b63de1 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/tree/gui/TreeViewer.java +++ b/runtime/Java/src/org/antlr/v4/runtime/tree/gui/TreeViewer.java @@ -29,17 +29,24 @@ package org.antlr.v4.runtime.tree.gui; -import org.abego.treelayout.*; +import org.abego.treelayout.NodeExtentProvider; +import org.abego.treelayout.TreeForTreeLayout; +import org.abego.treelayout.TreeLayout; import org.abego.treelayout.util.DefaultConfiguration; import org.antlr.v4.runtime.BaseRecognizer; -import org.antlr.v4.runtime.tree.*; +import org.antlr.v4.runtime.tree.ParseTree; +import org.antlr.v4.runtime.tree.Tree; +import org.antlr.v4.runtime.tree.Trees; import javax.swing.*; -import javax.swing.event.*; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.awt.*; -import java.awt.event.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.geom.Rectangle2D; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; public class TreeViewer extends JComponent { public static final Color LIGHT_RED = new Color(244, 213, 211); @@ -103,7 +110,7 @@ public class TreeViewer extends JComponent { protected Color boxColor = null; // set to a color to make it draw background protected Color highlightedBoxColor = Color.lightGray; - protected Color borderColor = Color.white; + protected Color borderColor = null; protected Color textColor = Color.black; protected BaseRecognizer parser; @@ -111,11 +118,13 @@ public class TreeViewer extends JComponent { public TreeViewer(BaseRecognizer parser, Tree tree) { this.parser = parser; setTreeTextProvider(new DefaultTreeTextProvider(parser)); + boolean useIdentity = true; // compare node identity this.treeLayout = new TreeLayout(new TreeLayoutAdaptor(tree), new TreeViewer.VariableExtentProvide(this), new DefaultConfiguration(gapBetweenLevels, - gapBetweenNodes)); + gapBetweenNodes), + useIdentity); Dimension size = treeLayout.getBounds().getBounds().getSize(); setPreferredSize(size); setFont(font); @@ -125,6 +134,10 @@ public class TreeViewer extends JComponent { protected void paintEdges(Graphics g, Tree parent) { if (!getTree().isLeaf(parent)) { + BasicStroke stroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND, + BasicStroke.JOIN_ROUND); + ((Graphics2D)g).setStroke(stroke); + Rectangle2D.Double parentBounds = getBoundsOfNode(parent); double x1 = parentBounds.getCenterX(); double y1 = parentBounds.getMaxY(); @@ -152,9 +165,11 @@ public class TreeViewer extends JComponent { g.fillRoundRect((int) box.x, (int) box.y, (int) box.width - 1, (int) box.height - 1, arcSize, arcSize); } - g.setColor(borderColor); - g.drawRoundRect((int) box.x, (int) box.y, (int) box.width - 1, - (int) box.height - 1, arcSize, arcSize); + if ( borderColor!=null ) { + g.setColor(borderColor); + g.drawRoundRect((int) box.x, (int) box.y, (int) box.width - 1, + (int) box.height - 1, arcSize, arcSize); + } // draw the text on top of the box (possibly multiple lines) g.setColor(textColor);