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;
-
- public class BoxView extends CompositeView {
- int axis;
- int width;
- int height;
- boolean xValid;
- boolean yValid;
- int[] preferredSpan = new int[2];
- int[] resizeWeight = new int[2];
- float[] alignment = new float[2];
- boolean xAllocValid;
- int[] xOffsets;
- int[] xSpans;
- boolean yAllocValid;
- int[] yOffsets;
- int[] ySpans;
-
- public BoxView(Element var1, int var2) {
- super(var1);
- this.axis = var2;
- }
-
- protected void paintChild(Graphics var1, Rectangle var2, int var3) {
- View var4 = ((CompositeView)this).getView(var3);
- var4.paint(var1, var2);
- }
-
- public void replace(int var1, int var2, View[] var3) {
- super.replace(var1, var2, var3);
- this.xOffsets = null;
- this.xSpans = null;
- this.xValid = false;
- this.xAllocValid = false;
- this.yOffsets = null;
- this.ySpans = null;
- this.yValid = false;
- this.yAllocValid = false;
- }
-
- public void preferenceChanged(View var1, boolean var2, boolean var3) {
- if (var2) {
- this.xValid = false;
- this.xAllocValid = false;
- }
-
- if (var3) {
- this.yValid = false;
- this.yAllocValid = false;
- }
-
- super.preferenceChanged(var1, var2, var3);
- }
-
- public void setSize(float var1, float var2) {
- if ((int)var1 != this.width) {
- this.xAllocValid = false;
- }
-
- if ((int)var2 != this.height) {
- this.yAllocValid = false;
- }
-
- if (!this.xAllocValid || !this.yAllocValid) {
- this.width = (int)var1;
- this.height = (int)var2;
- this.layout(this.width - ((CompositeView)this).getLeftInset() - ((CompositeView)this).getRightInset(), this.height - ((CompositeView)this).getTopInset() - ((CompositeView)this).getBottomInset());
- }
-
- }
-
- public void paint(Graphics var1, Shape var2) {
- Rectangle var3 = var2.getBounds();
- this.setSize((float)var3.width, (float)var3.height);
- int var4 = ((CompositeView)this).getViewCount();
- int var5 = var3.x + ((CompositeView)this).getLeftInset();
- int var6 = var3.y + ((CompositeView)this).getTopInset();
- Rectangle var7 = var1.getClipBounds();
-
- for(int var8 = 0; var8 < var4; ++var8) {
- var3.x = var5 + this.xOffsets[var8];
- var3.y = var6 + this.yOffsets[var8];
- var3.width = this.xSpans[var8];
- var3.height = this.ySpans[var8];
- if (var3.intersects(var7)) {
- this.paintChild(var1, var3, var8);
- }
- }
-
- }
-
- public Shape modelToView(int var1, Shape var2) throws BadLocationException {
- if (!this.isAllocationValid()) {
- Rectangle var3 = var2.getBounds();
- this.setSize((float)var3.width, (float)var3.height);
- }
-
- return super.modelToView(var1, var2);
- }
-
- public int viewToModel(float var1, float var2, Shape var3) {
- if (!this.isAllocationValid()) {
- Rectangle var4 = var3.getBounds();
- this.setSize((float)var4.width, (float)var4.height);
- }
-
- return super.viewToModel(var1, var2, var3);
- }
-
- public float getAlignment(int var1) {
- this.checkRequests();
- switch (var1) {
- case 0:
- case 1:
- return this.alignment[var1];
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- public int getResizeWeight(int var1) {
- this.checkRequests();
- switch (var1) {
- case 0:
- case 1:
- return this.resizeWeight[var1];
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- public float getPreferredSpan(int var1) {
- this.checkRequests();
- switch (var1) {
- case 0:
- return (float)(this.preferredSpan[var1] + ((CompositeView)this).getLeftInset() + ((CompositeView)this).getRightInset());
- case 1:
- return (float)(this.preferredSpan[var1] + ((CompositeView)this).getTopInset() + ((CompositeView)this).getBottomInset());
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- Element var4 = ((View)this).getElement();
- DocumentEvent.ElementChange var5 = var1.getChange(var4);
- if (var5 != null) {
- Element[] var6 = var5.getChildrenRemoved();
- Element[] var7 = var5.getChildrenAdded();
- View[] var8 = new View[var7.length];
-
- for(int var9 = 0; var9 < var7.length; ++var9) {
- var8[var9] = var3.create(var7[var9]);
- }
-
- this.replace(var5.getIndex(), var6.length, var8);
- if (var2 != null) {
- this.preferenceChanged((View)null, true, true);
- ((View)this).getContainer().repaint();
- }
- }
-
- Rectangle var10 = var2 != null && this.isAllocationValid() ? ((CompositeView)this).getInsideAllocation(var2) : null;
- int var11 = var1.getOffset();
- View var12 = ((CompositeView)this).getViewAtPosition(var11, var10);
- if (var12 != null) {
- var12.insertUpdate(var1, var10, var3);
- if (var12.getStartOffset() == var11) {
- var12 = ((CompositeView)this).getViewAtPosition(var11 - 1, var10);
- var12.insertUpdate(var1, var10, var3);
- }
- }
-
- }
-
- public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- Element var4 = ((View)this).getElement();
- DocumentEvent.ElementChange var5 = var1.getChange(var4);
- boolean var6 = true;
- if (var5 != null) {
- Element[] var7 = var5.getChildrenRemoved();
- Element[] var8 = var5.getChildrenAdded();
- View[] var9 = new View[var8.length];
-
- for(int var10 = 0; var10 < var8.length; ++var10) {
- var9[var10] = var3.create(var8[var10]);
- }
-
- this.replace(var5.getIndex(), var7.length, var9);
- if (var9.length != 0) {
- var6 = false;
- }
-
- if (var2 != null) {
- this.preferenceChanged((View)null, true, true);
- ((View)this).getContainer().repaint();
- }
- }
-
- if (var6) {
- Rectangle var11 = var2 != null && this.isAllocationValid() ? ((CompositeView)this).getInsideAllocation(var2) : null;
- int var12 = var1.getOffset();
- View var13 = ((CompositeView)this).getViewAtPosition(var12, var11);
- if (var13 != null) {
- var13.removeUpdate(var1, var11, var3);
- }
- }
-
- }
-
- public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
- Element var4 = ((View)this).getElement();
- Rectangle var5 = var2 != null && this.isAllocationValid() ? ((CompositeView)this).getInsideAllocation(var2) : null;
- int var6 = 0;
- int var7 = 0;
- int var8 = 0;
- int var9 = 0;
- if (var5 != null) {
- var6 = var5.x;
- var7 = var5.y;
- var8 = var5.width;
- var9 = var5.height;
- }
-
- int var10 = var4.getElementIndex(var1.getOffset());
- int var11 = var4.getElementIndex(var1.getOffset() + var1.getLength() - 1);
-
- for(int var12 = var10; var12 <= var11; ++var12) {
- View var13 = ((CompositeView)this).getView(var12);
- if (var5 != null) {
- var5.x = var6 + this.xOffsets[var12];
- var5.y = var7 + this.yOffsets[var12];
- var5.width = this.xSpans[var12];
- var5.height = this.ySpans[var12];
- }
-
- var13.changedUpdate(var1, var5, var3);
- }
-
- DocumentEvent.ElementChange var18 = var1.getChange(var4);
- if (var18 != null) {
- Element[] var14 = var18.getChildrenRemoved();
- Element[] var15 = var18.getChildrenAdded();
- View[] var16 = new View[var15.length];
-
- for(int var17 = 0; var17 < var15.length; ++var17) {
- var16[var17] = var3.create(var15[var17]);
- }
-
- this.replace(var18.getIndex(), var14.length, var16);
- }
-
- if (var2 != null && !this.isAllocationValid()) {
- Container var19 = ((View)this).getContainer();
- ((Component)var19).repaint(var6, var7, var8, var9);
- }
-
- }
-
- protected boolean isAllocationValid() {
- return this.xAllocValid && this.yAllocValid;
- }
-
- protected boolean isBefore(int var1, int var2, Rectangle var3) {
- if (this.axis == 0) {
- return var1 < var3.x;
- } else {
- return var2 < var3.y;
- }
- }
-
- protected boolean isAfter(int var1, int var2, Rectangle var3) {
- if (this.axis == 0) {
- return var1 > var3.width + var3.x;
- } else {
- return var2 > var3.height + var3.y;
- }
- }
-
- protected View getViewAtPoint(int var1, int var2, Rectangle var3) {
- int var4 = ((CompositeView)this).getViewCount();
- if (this.axis == 0) {
- if (var1 < var3.x + this.xOffsets[0]) {
- this.childAllocation(0, var3);
- return ((CompositeView)this).getView(0);
- } else {
- for(int var6 = 0; var6 < var4; ++var6) {
- if (var1 < var3.x + this.xOffsets[var6]) {
- this.childAllocation(var6 - 1, var3);
- return ((CompositeView)this).getView(var6 - 1);
- }
- }
-
- this.childAllocation(var4 - 1, var3);
- return ((CompositeView)this).getView(var4 - 1);
- }
- } else if (var2 < var3.y + this.yOffsets[0]) {
- this.childAllocation(0, var3);
- return ((CompositeView)this).getView(0);
- } else {
- for(int var5 = 0; var5 < var4; ++var5) {
- if (var2 < var3.y + this.yOffsets[var5]) {
- this.childAllocation(var5 - 1, var3);
- return ((CompositeView)this).getView(var5 - 1);
- }
- }
-
- this.childAllocation(var4 - 1, var3);
- return ((CompositeView)this).getView(var4 - 1);
- }
- }
-
- protected void childAllocation(int var1, Rectangle var2) {
- var2.x += this.xOffsets[var1];
- var2.y += this.yOffsets[var1];
- var2.width = this.xSpans[var1];
- var2.height = this.ySpans[var1];
- }
-
- protected void layout(int var1, int var2) {
- this.checkRequests();
- if (this.xSpans == null) {
- int var3 = ((CompositeView)this).getViewCount();
- this.xSpans = new int[var3];
- this.ySpans = new int[var3];
- this.xOffsets = new int[var3];
- this.yOffsets = new int[var3];
- }
-
- if (this.axis == 0) {
- if (!this.xAllocValid) {
- this.calculateTiledPositions(var1, 0);
- }
-
- if (!this.yAllocValid) {
- this.calculateAlignedPositions(var2, 1);
- }
- } else {
- if (!this.xAllocValid) {
- this.calculateAlignedPositions(var1, 0);
- }
-
- if (!this.yAllocValid) {
- this.calculateTiledPositions(var2, 1);
- }
- }
-
- this.xAllocValid = true;
- this.yAllocValid = true;
- int var6 = ((CompositeView)this).getViewCount();
-
- for(int var4 = 0; var4 < var6; ++var4) {
- View var5 = ((CompositeView)this).getView(var4);
- var5.setSize((float)this.xSpans[var4], (float)this.ySpans[var4]);
- }
-
- }
-
- void checkRequests() {
- if (this.axis == 0) {
- if (!this.xValid) {
- this.calculateTiledSizeRequirements(0);
- }
-
- if (!this.yValid) {
- this.calculateAlignedSizeRequirements(1);
- }
- } else {
- if (!this.xValid) {
- this.calculateAlignedSizeRequirements(0);
- }
-
- if (!this.yValid) {
- this.calculateTiledSizeRequirements(1);
- }
- }
-
- this.yValid = true;
- this.xValid = true;
- }
-
- void calculateTiledSizeRequirements(int var1) {
- this.alignment[var1] = 0.5F;
- this.preferredSpan[var1] = 0;
- this.resizeWeight[var1] = 0;
- int var2 = ((CompositeView)this).getViewCount();
-
- for(int var3 = 0; var3 < var2; ++var3) {
- View var4 = ((CompositeView)this).getView(var3);
- int[] var10000 = this.preferredSpan;
- var10000[var1] = (int)((float)var10000[var1] + var4.getPreferredSpan(var1));
- var10000 = this.resizeWeight;
- var10000[var1] += var4.getResizeWeight(var1);
- }
-
- }
-
- void calculateAlignedSizeRequirements(int var1) {
- int var2 = 0;
- int var3 = 0;
- int var4 = ((CompositeView)this).getViewCount();
-
- for(int var5 = 0; var5 < var4; ++var5) {
- View var6 = ((CompositeView)this).getView(var5);
- int var7 = (int)var6.getPreferredSpan(var1);
- int var8 = (int)(var6.getAlignment(var1) * (float)var7);
- int var9 = var7 - var8;
- var2 = Math.max(var9, var2);
- var3 = Math.max(var8, var3);
- int[] var10000 = this.resizeWeight;
- var10000[var1] += var6.getResizeWeight(var1);
- }
-
- this.preferredSpan[var1] = var2 + var3;
- this.alignment[var1] = 0.5F;
- if (this.preferredSpan[var1] > 0) {
- this.alignment[var1] = (float)var3 / (float)this.preferredSpan[var1];
- }
-
- }
-
- void calculateAlignedPositions(int var1, int var2) {
- int[] var3 = var2 == 0 ? this.xOffsets : this.yOffsets;
- int[] var4 = var2 == 0 ? this.xSpans : this.ySpans;
- int var5 = (int)((float)var1 * this.alignment[var2]);
- int var6 = var1 - var5;
- int var7 = ((CompositeView)this).getViewCount();
-
- for(int var8 = 0; var8 < var7; ++var8) {
- View var9 = ((CompositeView)this).getView(var8);
- float var10 = var9.getAlignment(var2);
- int var11 = (int)var9.getPreferredSpan(var2);
- int var12 = (int)((float)var11 * var10);
- int var13 = var11 - var12;
- if (var9.getResizeWeight(var2) > 0) {
- var12 = var5;
- var13 = var6;
- }
-
- var3[var8] = var5 - var12;
- var4[var8] = var12 + var13;
- }
-
- }
-
- void calculateTiledPositions(int var1, int var2) {
- int[] var3 = var2 == 0 ? this.xOffsets : this.yOffsets;
- int[] var4 = var2 == 0 ? this.xSpans : this.ySpans;
- int var5 = var1 - this.preferredSpan[var2];
- int var6 = this.resizeWeight[var2];
- int var7 = 0;
- int var8 = ((CompositeView)this).getViewCount();
-
- for(int var9 = 0; var9 < var8; ++var9) {
- View var10 = ((CompositeView)this).getView(var9);
- var3[var9] = var7;
- int var11 = (int)var10.getPreferredSpan(var2);
- int var12 = var10.getResizeWeight(var2);
- if (var12 != 0 && var6 != 0) {
- float var13 = (float)(var12 / var6);
- var11 = (int)((float)var11 + (float)var5 * var13);
- }
-
- var4[var9] = var11;
- var7 += var11;
- }
-
- }
- }
-