home *** CD-ROM | disk | FTP | other *** search
- package com.sun.java.swing.text;
-
- import com.sun.java.swing.event.DocumentEvent;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import java.awt.Shape;
-
- class WrappedPlainView$WrappedLine extends View {
- // $FF: synthetic field
- private final WrappedPlainView this$0;
- int nlines;
-
- WrappedPlainView$WrappedLine(WrappedPlainView var1, Element var2) {
- super(var2);
- this.this$0 = var1;
- this.this$0 = var1;
- }
-
- final void loadText(int var1, int var2) {
- try {
- Document var3 = ((View)this).getDocument();
- var3.getText(var1, var2 - var1, this.this$0.lineBuffer);
- } catch (BadLocationException var4) {
- throw new StateInvariantError("Can't get line text");
- }
- }
-
- final int calculateLineCount() {
- int var1 = 0;
- int var2 = ((View)this).getEndOffset();
-
- int var4;
- for(int var3 = ((View)this).getStartOffset(); var3 < var2; var3 = var4 == var3 ? var2 : var4) {
- ++var1;
- this.loadText(var3, var2);
- var4 = var3 + Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, 0, this.this$0.layoutWidth, this.this$0, var3);
- }
-
- return var1;
- }
-
- public float getPreferredSpan(int var1) {
- switch (var1) {
- case 0:
- return (float)this.this$0.layoutWidth;
- case 1:
- this.nlines = this.calculateLineCount();
- int var2 = this.nlines * this.this$0.metrics.getHeight();
- return (float)var2;
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- public void paint(Graphics var1, Shape var2) {
- Rectangle var3 = var2.getBounds();
- int var4 = var3.y + this.this$0.metrics.getAscent();
- int var5 = var3.x;
- int var6 = ((View)this).getEndOffset();
-
- for(int var7 = ((View)this).getStartOffset(); var7 < var6; var4 += this.this$0.metrics.getHeight()) {
- this.loadText(var7, var6);
- int var8 = var7 + Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, var5, this.this$0.layoutWidth, this.this$0, var7);
- this.this$0.drawLine(var7, var8, var1, var5, var4);
- var7 = var8 == var7 ? var6 : var8;
- }
-
- }
-
- public Shape modelToView(int var1, Shape var2) throws BadLocationException {
- Rectangle var3 = var2.getBounds();
- var3.height = this.this$0.metrics.getHeight();
- var3.width = 1;
- int var4 = ((View)this).getEndOffset();
-
- for(int var5 = ((View)this).getStartOffset(); var5 < var4; var3.y += var3.height) {
- this.loadText(var5, var4);
- int var6 = var5 + Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, var3.x, var3.x + this.this$0.layoutWidth, this.this$0, var5);
- if (var1 >= var5 && var1 < var6) {
- this.loadText(var5, var1);
- var3.x += Utilities.getTabbedTextWidth(this.this$0.lineBuffer, this.this$0.metrics, var3.x, this.this$0, var5);
- return var3;
- }
-
- var5 = var6 == var5 ? var4 : var6;
- }
-
- throw new BadLocationException((String)null, var1);
- }
-
- public int viewToModel(float var1, float var2, Shape var3) {
- Rectangle var4 = var3.getBounds();
- ((View)this).getDocument();
- int var5 = (int)var1;
- int var6 = (int)var2;
- if (var6 < var4.y) {
- return ((View)this).getStartOffset();
- } else if (var6 > var4.y + var4.height) {
- return ((View)this).getEndOffset() - 1;
- } else {
- var4.height = this.this$0.metrics.getHeight();
- int var7 = ((View)this).getEndOffset();
-
- for(int var8 = ((View)this).getStartOffset(); var8 < var7; var4.y += var4.height) {
- this.loadText(var8, var7);
- int var9 = var8 + Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, var4.x, var4.x + this.this$0.layoutWidth, this.this$0, var8);
- if (var6 >= var4.y && var6 < var4.y + var4.height) {
- if (var5 < var4.x) {
- return var8;
- }
-
- if (var5 > var4.x + var4.width) {
- return var9;
- }
-
- int var10 = Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, var4.x, var5, this.this$0, var8);
- return Math.min(var8 + var10, var7 - 1);
- }
-
- var8 = var9 == var8 ? var7 : var9;
- }
-
- return ((View)this).getEndOffset() - 1;
- }
- }
-
- public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- int var4 = this.calculateLineCount();
- if (this.nlines != var4) {
- this.nlines = var4;
- this.this$0.preferenceChanged(this, false, true);
- } else {
- if (var2 != null) {
- Container var5 = ((View)this).getContainer();
- Rectangle var6 = var2.getBounds();
- ((Component)var5).repaint(var6.x, var6.y, var6.width, var6.height);
- }
-
- }
- }
-
- public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- int var4 = this.calculateLineCount();
- if (this.nlines != var4) {
- this.nlines = var4;
- this.this$0.preferenceChanged(this, false, true);
- } else {
- if (var2 != null) {
- Container var5 = ((View)this).getContainer();
- Rectangle var6 = var2.getBounds();
- ((Component)var5).repaint(var6.x, var6.y, var6.width, var6.height);
- }
-
- }
- }
- }
-