summaryrefslogtreecommitdiff
path: root/javax/swing/text/PlainView.java
diff options
context:
space:
mode:
Diffstat (limited to 'javax/swing/text/PlainView.java')
-rw-r--r--javax/swing/text/PlainView.java39
1 files changed, 37 insertions, 2 deletions
diff --git a/javax/swing/text/PlainView.java b/javax/swing/text/PlainView.java
index c852c1d69..cc58dd065 100644
--- a/javax/swing/text/PlainView.java
+++ b/javax/swing/text/PlainView.java
@@ -148,7 +148,7 @@ public class PlainView extends View
g.setColor(unselectedColor);
Segment segment = new Segment();
getDocument().getText(p0, p1 - p0, segment);
- return Utilities.drawTabbedText(segment, x, y, g, this, 0);
+ return Utilities.drawTabbedText(segment, x, y, g, this, segment.offset);
}
public void paint(Graphics g, Shape s)
@@ -200,7 +200,42 @@ public class PlainView extends View
if (axis != X_AXIS && axis != Y_AXIS)
throw new IllegalArgumentException();
- return 10;
+ // make sure we have the metrics
+ updateMetrics();
+
+ float span = 0;
+ Element el = getElement();
+ Document doc = el.getDocument();
+ Segment seg = new Segment();
+
+ switch (axis)
+ {
+ case X_AXIS:
+ // calculate the maximum of the line's widths
+ for (int i = 0; i < el.getElementCount(); i++)
+ {
+ Element child = el.getElement(i);
+ int start = child.getStartOffset();
+ int end = child.getEndOffset();
+ try {
+ doc.getText(start, start + end, seg);
+ }
+ catch (BadLocationException ex)
+ {
+ // throw new ClasspathAssertionError
+ // ("no BadLocationException should be thrown here");
+ }
+ int width = metrics.charsWidth(seg.array, seg.offset, seg.count);
+ span = Math.max(span, width);
+ }
+ break;
+ case Y_AXIS:
+ default:
+ span = metrics.getHeight() * el.getElementCount();
+ break;
+ }
+
+ return span;
}
}