home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Shape;
- import java.util.Vector;
- import javax.swing.event.DocumentEvent;
-
- public class ZoneView extends BoxView {
- int maxZoneSize = 8192;
- int maxZonesLoaded = 3;
-
- public ZoneView(Element var1, int var2) {
- super(var1, var2);
- }
-
- public int getMaximumZoneSize() {
- return this.maxZoneSize;
- }
-
- public void setMaximumZoneSize(int var1) {
- this.maxZoneSize = var1;
- }
-
- public int getMaxZonesLoaded() {
- return this.maxZonesLoaded;
- }
-
- public void setMaxZonesLoaded(int var1) {
- this.maxZonesLoaded = var1;
- }
-
- protected void zoneWasLoaded(View var1) {
- }
-
- protected void unloadZone(View var1) {
- var1.removeAll();
- }
-
- protected boolean isZoneLoaded(View var1) {
- return var1.getViewCount() > 0;
- }
-
- protected View createZone(int var1, int var2) {
- Document var3 = ((View)this).getDocument();
- Object var4 = null;
-
- try {
- Zone var7 = new Zone(this, ((View)this).getElement(), var3.createPosition(var1), var3.createPosition(var2));
- return var7;
- } catch (BadLocationException var6) {
- throw new StateInvariantError(((Throwable)var6).getMessage());
- }
- }
-
- protected void loadChildren(ViewFactory var1) {
- Document var2 = ((View)this).getDocument();
- int var3 = ((View)this).getStartOffset();
- int var4 = ((View)this).getEndOffset();
- ((View)this).append(this.createZone(var3, var4));
- this.handleInsert(var3, var4 - var3);
- }
-
- protected int getViewIndexAtPosition(int var1) {
- int var2 = ((CompositeView)this).getViewCount();
- if (var1 == ((View)this).getEndOffset()) {
- return var2 - 1;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- View var4 = ((CompositeView)this).getView(var3);
- if (var1 >= var4.getStartOffset() && var1 < var4.getEndOffset()) {
- return var3;
- }
- }
-
- return -1;
- }
- }
-
- void handleInsert(int var1, int var2) {
- int var3 = this.getViewIndexAtPosition(var1);
- View var4 = ((CompositeView)this).getView(var3);
- int var5 = var4.getStartOffset();
- int var6 = var4.getEndOffset();
- if (var6 - var5 > this.maxZoneSize) {
- this.splitZone(var3, var5, var6);
- }
-
- }
-
- void handleRemove(int var1, int var2) {
- }
-
- void splitZone(int var1, int var2, int var3) {
- Element var4 = ((View)this).getElement();
- Document var5 = var4.getDocument();
- Vector var6 = new Vector();
- int var7 = var2;
-
- do {
- var2 = var7;
- var7 = Math.min(this.getDesiredZoneEnd(var7), var3);
- var6.addElement(this.createZone(var2, var7));
- } while(var7 < var3);
-
- ((CompositeView)this).getView(var1);
- View[] var9 = new View[var6.size()];
- var6.copyInto(var9);
- ((BoxView)this).replace(var1, 1, var9);
- }
-
- int getDesiredZoneEnd(int var1) {
- Element var2 = ((View)this).getElement();
- int var3 = var2.getElementIndex(var1 + this.maxZoneSize / 2);
- Element var4 = var2.getElement(var3);
- int var5 = var4.getStartOffset();
- int var6 = var4.getEndOffset();
- return var6 - var1 > this.maxZoneSize && var5 > var1 ? var5 : var6;
- }
-
- protected boolean updateChildren(DocumentEvent.ElementChange var1, DocumentEvent var2, ViewFactory var3) {
- return false;
- }
-
- public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- this.handleInsert(var1.getOffset(), var1.getLength());
- super.insertUpdate(var1, var2, var3);
- }
-
- public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- this.handleRemove(var1.getOffset(), var1.getLength());
- super.removeUpdate(var1, var2, var3);
- }
- }
-