home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / javax / swing / text / ZoneView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.2 KB  |  133 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Shape;
  4. import java.util.Vector;
  5. import javax.swing.event.DocumentEvent;
  6.  
  7. public class ZoneView extends BoxView {
  8.    int maxZoneSize = 8192;
  9.    int maxZonesLoaded = 3;
  10.  
  11.    public ZoneView(Element var1, int var2) {
  12.       super(var1, var2);
  13.    }
  14.  
  15.    public int getMaximumZoneSize() {
  16.       return this.maxZoneSize;
  17.    }
  18.  
  19.    public void setMaximumZoneSize(int var1) {
  20.       this.maxZoneSize = var1;
  21.    }
  22.  
  23.    public int getMaxZonesLoaded() {
  24.       return this.maxZonesLoaded;
  25.    }
  26.  
  27.    public void setMaxZonesLoaded(int var1) {
  28.       this.maxZonesLoaded = var1;
  29.    }
  30.  
  31.    protected void zoneWasLoaded(View var1) {
  32.    }
  33.  
  34.    protected void unloadZone(View var1) {
  35.       var1.removeAll();
  36.    }
  37.  
  38.    protected boolean isZoneLoaded(View var1) {
  39.       return var1.getViewCount() > 0;
  40.    }
  41.  
  42.    protected View createZone(int var1, int var2) {
  43.       Document var3 = ((View)this).getDocument();
  44.       Object var4 = null;
  45.  
  46.       try {
  47.          Zone var7 = new Zone(this, ((View)this).getElement(), var3.createPosition(var1), var3.createPosition(var2));
  48.          return var7;
  49.       } catch (BadLocationException var6) {
  50.          throw new StateInvariantError(((Throwable)var6).getMessage());
  51.       }
  52.    }
  53.  
  54.    protected void loadChildren(ViewFactory var1) {
  55.       Document var2 = ((View)this).getDocument();
  56.       int var3 = ((View)this).getStartOffset();
  57.       int var4 = ((View)this).getEndOffset();
  58.       ((View)this).append(this.createZone(var3, var4));
  59.       this.handleInsert(var3, var4 - var3);
  60.    }
  61.  
  62.    protected int getViewIndexAtPosition(int var1) {
  63.       int var2 = ((CompositeView)this).getViewCount();
  64.       if (var1 == ((View)this).getEndOffset()) {
  65.          return var2 - 1;
  66.       } else {
  67.          for(int var3 = 0; var3 < var2; ++var3) {
  68.             View var4 = ((CompositeView)this).getView(var3);
  69.             if (var1 >= var4.getStartOffset() && var1 < var4.getEndOffset()) {
  70.                return var3;
  71.             }
  72.          }
  73.  
  74.          return -1;
  75.       }
  76.    }
  77.  
  78.    void handleInsert(int var1, int var2) {
  79.       int var3 = this.getViewIndexAtPosition(var1);
  80.       View var4 = ((CompositeView)this).getView(var3);
  81.       int var5 = var4.getStartOffset();
  82.       int var6 = var4.getEndOffset();
  83.       if (var6 - var5 > this.maxZoneSize) {
  84.          this.splitZone(var3, var5, var6);
  85.       }
  86.  
  87.    }
  88.  
  89.    void handleRemove(int var1, int var2) {
  90.    }
  91.  
  92.    void splitZone(int var1, int var2, int var3) {
  93.       Element var4 = ((View)this).getElement();
  94.       Document var5 = var4.getDocument();
  95.       Vector var6 = new Vector();
  96.       int var7 = var2;
  97.  
  98.       do {
  99.          var2 = var7;
  100.          var7 = Math.min(this.getDesiredZoneEnd(var7), var3);
  101.          var6.addElement(this.createZone(var2, var7));
  102.       } while(var7 < var3);
  103.  
  104.       ((CompositeView)this).getView(var1);
  105.       View[] var9 = new View[var6.size()];
  106.       var6.copyInto(var9);
  107.       ((BoxView)this).replace(var1, 1, var9);
  108.    }
  109.  
  110.    int getDesiredZoneEnd(int var1) {
  111.       Element var2 = ((View)this).getElement();
  112.       int var3 = var2.getElementIndex(var1 + this.maxZoneSize / 2);
  113.       Element var4 = var2.getElement(var3);
  114.       int var5 = var4.getStartOffset();
  115.       int var6 = var4.getEndOffset();
  116.       return var6 - var1 > this.maxZoneSize && var5 > var1 ? var5 : var6;
  117.    }
  118.  
  119.    protected boolean updateChildren(DocumentEvent.ElementChange var1, DocumentEvent var2, ViewFactory var3) {
  120.       return false;
  121.    }
  122.  
  123.    public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  124.       this.handleInsert(var1.getOffset(), var1.getLength());
  125.       super.insertUpdate(var1, var2, var3);
  126.    }
  127.  
  128.    public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  129.       this.handleRemove(var1.getOffset(), var1.getLength());
  130.       super.removeUpdate(var1, var2, var3);
  131.    }
  132. }
  133.