home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / copyjava.exe / com / sun / java / swing / text / WrappedPlainView$WrappedLine.class (.txt) < prev   
Encoding:
Java Class File  |  1998-02-26  |  4.2 KB  |  159 lines

  1. package com.sun.java.swing.text;
  2.  
  3. import com.sun.java.swing.event.DocumentEvent;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Graphics;
  7. import java.awt.Rectangle;
  8. import java.awt.Shape;
  9.  
  10. class WrappedPlainView$WrappedLine extends View {
  11.    // $FF: synthetic field
  12.    private final WrappedPlainView this$0;
  13.    int nlines;
  14.  
  15.    WrappedPlainView$WrappedLine(WrappedPlainView var1, Element var2) {
  16.       super(var2);
  17.       this.this$0 = var1;
  18.       this.this$0 = var1;
  19.    }
  20.  
  21.    final void loadText(int var1, int var2) {
  22.       try {
  23.          Document var3 = ((View)this).getDocument();
  24.          var3.getText(var1, var2 - var1, this.this$0.lineBuffer);
  25.       } catch (BadLocationException var4) {
  26.          throw new StateInvariantError("Can't get line text");
  27.       }
  28.    }
  29.  
  30.    final int calculateLineCount() {
  31.       int var1 = 0;
  32.       int var2 = ((View)this).getEndOffset();
  33.  
  34.       int var4;
  35.       for(int var3 = ((View)this).getStartOffset(); var3 < var2; var3 = var4 == var3 ? var2 : var4) {
  36.          ++var1;
  37.          this.loadText(var3, var2);
  38.          var4 = var3 + Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, 0, this.this$0.layoutWidth, this.this$0, var3);
  39.       }
  40.  
  41.       return var1;
  42.    }
  43.  
  44.    public float getPreferredSpan(int var1) {
  45.       switch (var1) {
  46.          case 0:
  47.             return (float)this.this$0.layoutWidth;
  48.          case 1:
  49.             this.nlines = this.calculateLineCount();
  50.             int var2 = this.nlines * this.this$0.metrics.getHeight();
  51.             return (float)var2;
  52.          default:
  53.             throw new IllegalArgumentException("Invalid axis: " + var1);
  54.       }
  55.    }
  56.  
  57.    public void paint(Graphics var1, Shape var2) {
  58.       Rectangle var3 = var2.getBounds();
  59.       int var4 = var3.y + this.this$0.metrics.getAscent();
  60.       int var5 = var3.x;
  61.       int var6 = ((View)this).getEndOffset();
  62.  
  63.       for(int var7 = ((View)this).getStartOffset(); var7 < var6; var4 += this.this$0.metrics.getHeight()) {
  64.          this.loadText(var7, var6);
  65.          int var8 = var7 + Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, var5, this.this$0.layoutWidth, this.this$0, var7);
  66.          this.this$0.drawLine(var7, var8, var1, var5, var4);
  67.          var7 = var8 == var7 ? var6 : var8;
  68.       }
  69.  
  70.    }
  71.  
  72.    public Shape modelToView(int var1, Shape var2) throws BadLocationException {
  73.       Rectangle var3 = var2.getBounds();
  74.       var3.height = this.this$0.metrics.getHeight();
  75.       var3.width = 1;
  76.       int var4 = ((View)this).getEndOffset();
  77.  
  78.       for(int var5 = ((View)this).getStartOffset(); var5 < var4; var3.y += var3.height) {
  79.          this.loadText(var5, var4);
  80.          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);
  81.          if (var1 >= var5 && var1 < var6) {
  82.             this.loadText(var5, var1);
  83.             var3.x += Utilities.getTabbedTextWidth(this.this$0.lineBuffer, this.this$0.metrics, var3.x, this.this$0, var5);
  84.             return var3;
  85.          }
  86.  
  87.          var5 = var6 == var5 ? var4 : var6;
  88.       }
  89.  
  90.       throw new BadLocationException((String)null, var1);
  91.    }
  92.  
  93.    public int viewToModel(float var1, float var2, Shape var3) {
  94.       Rectangle var4 = var3.getBounds();
  95.       ((View)this).getDocument();
  96.       int var5 = (int)var1;
  97.       int var6 = (int)var2;
  98.       if (var6 < var4.y) {
  99.          return ((View)this).getStartOffset();
  100.       } else if (var6 > var4.y + var4.height) {
  101.          return ((View)this).getEndOffset() - 1;
  102.       } else {
  103.          var4.height = this.this$0.metrics.getHeight();
  104.          int var7 = ((View)this).getEndOffset();
  105.  
  106.          for(int var8 = ((View)this).getStartOffset(); var8 < var7; var4.y += var4.height) {
  107.             this.loadText(var8, var7);
  108.             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);
  109.             if (var6 >= var4.y && var6 < var4.y + var4.height) {
  110.                if (var5 < var4.x) {
  111.                   return var8;
  112.                }
  113.  
  114.                if (var5 > var4.x + var4.width) {
  115.                   return var9;
  116.                }
  117.  
  118.                int var10 = Utilities.getTabbedTextOffset(this.this$0.lineBuffer, this.this$0.metrics, var4.x, var5, this.this$0, var8);
  119.                return Math.min(var8 + var10, var7 - 1);
  120.             }
  121.  
  122.             var8 = var9 == var8 ? var7 : var9;
  123.          }
  124.  
  125.          return ((View)this).getEndOffset() - 1;
  126.       }
  127.    }
  128.  
  129.    public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  130.       int var4 = this.calculateLineCount();
  131.       if (this.nlines != var4) {
  132.          this.nlines = var4;
  133.          this.this$0.preferenceChanged(this, false, true);
  134.       } else {
  135.          if (var2 != null) {
  136.             Container var5 = ((View)this).getContainer();
  137.             Rectangle var6 = var2.getBounds();
  138.             ((Component)var5).repaint(var6.x, var6.y, var6.width, var6.height);
  139.          }
  140.  
  141.       }
  142.    }
  143.  
  144.    public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  145.       int var4 = this.calculateLineCount();
  146.       if (this.nlines != var4) {
  147.          this.nlines = var4;
  148.          this.this$0.preferenceChanged(this, false, true);
  149.       } else {
  150.          if (var2 != null) {
  151.             Container var5 = ((View)this).getContainer();
  152.             Rectangle var6 = var2.getBounds();
  153.             ((Component)var5).repaint(var6.x, var6.y, var6.width, var6.height);
  154.          }
  155.  
  156.       }
  157.    }
  158. }
  159.