home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Graphics;
- import java.awt.Rectangle;
- import java.awt.Shape;
- import javax.swing.SizeRequirements;
- import javax.swing.event.DocumentEvent;
- import javax.swing.text.Position.Bias;
-
- public class BoxView extends CompositeView {
- int axis;
- int width;
- int height;
- boolean xValid;
- boolean yValid;
- SizeRequirements xRequest;
- SizeRequirements yRequest;
- boolean xAllocValid;
- int[] xOffsets;
- int[] xSpans;
- boolean yAllocValid;
- int[] yOffsets;
- int[] ySpans;
- Rectangle tempRect = new Rectangle();
-
- public BoxView(Element var1, int var2) {
- super(var1);
- this.axis = var2;
- this.xOffsets = new int[0];
- this.xSpans = new int[0];
- this.xValid = false;
- this.xAllocValid = false;
- this.yOffsets = new int[0];
- this.ySpans = new int[0];
- this.yValid = false;
- this.yAllocValid = false;
- }
-
- public int getAxis() {
- return this.axis;
- }
-
- public void setAxis(int var1) {
- this.axis = var1;
- this.preferenceChanged((View)null, true, true);
- }
-
- public void layoutChanged(int var1) {
- if (var1 == 0) {
- this.xAllocValid = false;
- } else {
- this.yAllocValid = false;
- }
-
- }
-
- 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);
- int var4 = var3 != null ? var3.length : 0;
- this.xOffsets = this.updateLayoutArray(this.xOffsets, var1, var4);
- this.xSpans = this.updateLayoutArray(this.xSpans, var1, var4);
- this.xValid = false;
- this.xAllocValid = false;
- this.yOffsets = this.updateLayoutArray(this.yOffsets, var1, var4);
- this.ySpans = this.updateLayoutArray(this.ySpans, var1, var4);
- this.yValid = false;
- this.yAllocValid = false;
- }
-
- int[] updateLayoutArray(int[] var1, int var2, int var3) {
- int var4 = ((CompositeView)this).getViewCount();
- int[] var5 = new int[var4];
- System.arraycopy(var1, 0, var5, 0, var2);
- System.arraycopy(var1, var2, var5, var2 + var3, var4 - var3 - var2);
- return var5;
- }
-
- protected void forwardUpdate(DocumentEvent.ElementChange var1, DocumentEvent var2, Shape var3, ViewFactory var4) {
- boolean var5 = this.isAllocationValid();
- super.forwardUpdate(var1, var2, var3, var4);
- if (var5 && !this.isAllocationValid()) {
- Container var6 = ((View)this).getContainer();
- if (var3 != null && var6 != null) {
- int var7 = var2.getOffset();
- int var8 = ((CompositeView)this).getViewIndexAtPosition(var7);
- Rectangle var9 = ((CompositeView)this).getInsideAllocation(var3);
- if (this.axis == 0) {
- var9.x += this.xOffsets[var8];
- var9.width -= this.xSpans[var8];
- } else {
- var9.y += this.yOffsets[var8];
- var9.height -= this.ySpans[var8];
- }
-
- ((Component)var6).repaint(var9.x, var9.y, var9.width, var9.height);
- }
- }
-
- }
-
- 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 int getResizeWeight(int var1) {
- this.checkRequests();
- switch (var1) {
- case 0:
- if (this.xRequest.preferred != this.xRequest.minimum && this.xRequest.preferred != this.xRequest.maximum) {
- return 1;
- }
-
- return 0;
- case 1:
- if (this.yRequest.preferred != this.yRequest.minimum && this.yRequest.preferred != this.yRequest.maximum) {
- return 1;
- }
-
- return 0;
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- 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 instanceof Rectangle ? (Rectangle)var2 : 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) {
- this.tempRect.x = var5 + this.xOffsets[var8];
- this.tempRect.y = var6 + this.yOffsets[var8];
- this.tempRect.width = this.xSpans[var8];
- this.tempRect.height = this.ySpans[var8];
- if (this.tempRect.intersects(var7)) {
- this.paintChild(var1, this.tempRect, var8);
- }
- }
-
- }
-
- public Shape getChildAllocation(int var1, Shape var2) {
- if (var2 != null) {
- Shape var3 = super.getChildAllocation(var1, var2);
- if (var3 != null && !this.isAllocationValid()) {
- Rectangle var4 = var3 instanceof Rectangle ? (Rectangle)var3 : var3.getBounds();
- if (var4.width == 0 && var4.height == 0) {
- return null;
- }
- }
-
- return var3;
- } else {
- return null;
- }
- }
-
- public Shape modelToView(int var1, Shape var2, Position.Bias var3) throws BadLocationException {
- if (!this.isAllocationValid()) {
- Rectangle var4 = var2.getBounds();
- this.setSize((float)var4.width, (float)var4.height);
- }
-
- return super.modelToView(var1, var2, var3);
- }
-
- public int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4) {
- if (!this.isAllocationValid()) {
- Rectangle var5 = var3.getBounds();
- this.setSize((float)var5.width, (float)var5.height);
- }
-
- return super.viewToModel(var1, var2, var3, var4);
- }
-
- public float getAlignment(int var1) {
- this.checkRequests();
- switch (var1) {
- case 0:
- return this.xRequest.alignment;
- case 1:
- return this.yRequest.alignment;
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- public float getPreferredSpan(int var1) {
- this.checkRequests();
- switch (var1) {
- case 0:
- return (float)this.xRequest.preferred + (float)((CompositeView)this).getLeftInset() + (float)((CompositeView)this).getRightInset();
- case 1:
- return (float)this.yRequest.preferred + (float)((CompositeView)this).getTopInset() + (float)((CompositeView)this).getBottomInset();
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- public float getMinimumSpan(int var1) {
- this.checkRequests();
- switch (var1) {
- case 0:
- return (float)this.xRequest.minimum + (float)((CompositeView)this).getLeftInset() + (float)((CompositeView)this).getRightInset();
- case 1:
- return (float)this.yRequest.minimum + (float)((CompositeView)this).getTopInset() + (float)((CompositeView)this).getBottomInset();
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- public float getMaximumSpan(int var1) {
- this.checkRequests();
- switch (var1) {
- case 0:
- return (float)this.xRequest.maximum + (float)((CompositeView)this).getLeftInset() + (float)((CompositeView)this).getRightInset();
- case 1:
- return (float)this.yRequest.maximum + (float)((CompositeView)this).getTopInset() + (float)((CompositeView)this).getBottomInset();
- default:
- throw new IllegalArgumentException("Invalid axis: " + var1);
- }
- }
-
- 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.axis == 0) {
- if (!this.xAllocValid) {
- this.layoutMajorAxis(var1, 0, this.xOffsets, this.xSpans);
- }
-
- if (!this.yAllocValid) {
- this.layoutMinorAxis(var2, 1, this.yOffsets, this.ySpans);
- }
- } else {
- if (!this.xAllocValid) {
- this.layoutMinorAxis(var1, 0, this.xOffsets, this.xSpans);
- }
-
- if (!this.yAllocValid) {
- this.layoutMajorAxis(var2, 1, this.yOffsets, this.ySpans);
- }
- }
-
- this.xAllocValid = true;
- this.yAllocValid = true;
- int var3 = ((CompositeView)this).getViewCount();
-
- for(int var4 = 0; var4 < var3; ++var4) {
- View var5 = ((CompositeView)this).getView(var4);
- var5.setSize((float)this.xSpans[var4], (float)this.ySpans[var4]);
- }
-
- }
-
- public int getWidth() {
- return this.width;
- }
-
- public int getHeight() {
- return this.height;
- }
-
- protected void layoutMajorAxis(int var1, int var2, int[] var3, int[] var4) {
- long var5 = 0L;
- long var7 = 0L;
- long var9 = 0L;
- int var11 = ((CompositeView)this).getViewCount();
-
- for(int var12 = 0; var12 < var11; ++var12) {
- View var13 = ((CompositeView)this).getView(var12);
- var4[var12] = (int)var13.getPreferredSpan(var2);
- var9 += (long)var4[var12];
- var5 = (long)((float)var5 + var13.getMinimumSpan(var2));
- var7 = (long)((float)var7 + var13.getMaximumSpan(var2));
- }
-
- long var22 = (long)var1 - var9;
- float var15 = 0.0F;
- if (var22 != 0L) {
- float var16 = var22 > 0L ? (float)(var7 - var9) : (float)(var9 - var5);
- if (var16 == 0.0F) {
- var15 = 0.0F;
- } else {
- var15 = (float)var22 / var16;
- var15 = Math.min(var15, 1.0F);
- var15 = Math.max(var15, -1.0F);
- }
- }
-
- int var25 = 0;
-
- for(int var17 = 0; var17 < var11; ++var17) {
- View var18 = ((CompositeView)this).getView(var17);
- var3[var17] = var25;
- int var19 = var15 > 0.0F ? (int)var18.getMaximumSpan(var2) - var4[var17] : var4[var17] - (int)var18.getMinimumSpan(var2);
- float var20 = var15 * (float)var19;
- if (var20 < 0.0F) {
- var20 -= 0.5F;
- } else {
- var20 += 0.5F;
- }
-
- int var21 = (int)var20;
- var4[var17] += var21;
- var25 = (int)Math.min((long)var25 + (long)var4[var17], 2147483647L);
- }
-
- }
-
- protected void layoutMinorAxis(int var1, int var2, int[] var3, int[] var4) {
- int var5 = ((CompositeView)this).getViewCount();
-
- for(int var6 = 0; var6 < var5; ++var6) {
- View var7 = ((CompositeView)this).getView(var6);
- int var8 = (int)var7.getMinimumSpan(var2);
- int var9 = (int)var7.getMaximumSpan(var2);
- if (var9 < var1) {
- float var10 = var7.getAlignment(var2);
- var3[var6] = (int)((float)(var1 - var9) * var10);
- var4[var6] = var9;
- } else {
- var3[var6] = 0;
- var4[var6] = Math.max(var8, var1);
- }
- }
-
- }
-
- protected SizeRequirements calculateMajorAxisRequirements(int var1, SizeRequirements var2) {
- float var3 = 0.0F;
- float var4 = 0.0F;
- float var5 = 0.0F;
- int var6 = ((CompositeView)this).getViewCount();
-
- for(int var7 = 0; var7 < var6; ++var7) {
- View var8 = ((CompositeView)this).getView(var7);
- var3 += var8.getMinimumSpan(var1);
- var4 += var8.getPreferredSpan(var1);
- var5 += var8.getMaximumSpan(var1);
- }
-
- if (var2 == null) {
- var2 = new SizeRequirements();
- }
-
- var2.alignment = 0.5F;
- var2.minimum = (int)var3;
- var2.preferred = (int)var4;
- var2.maximum = (int)var5;
- return var2;
- }
-
- protected SizeRequirements calculateMinorAxisRequirements(int var1, SizeRequirements var2) {
- int var3 = 0;
- long var4 = 0L;
- int var6 = Integer.MAX_VALUE;
- int var7 = ((CompositeView)this).getViewCount();
-
- for(int var8 = 0; var8 < var7; ++var8) {
- View var9 = ((CompositeView)this).getView(var8);
- var3 = Math.max((int)var9.getMinimumSpan(var1), var3);
- var4 = Math.max((long)((int)var9.getPreferredSpan(var1)), var4);
- var6 = Math.max((int)var9.getMaximumSpan(var1), var6);
- }
-
- if (var2 == null) {
- var2 = new SizeRequirements();
- var2.alignment = 0.5F;
- }
-
- var2.preferred = (int)var4;
- var2.minimum = var3;
- var2.maximum = var6;
- return var2;
- }
-
- void checkRequests() {
- if (this.axis == 0) {
- if (!this.xValid) {
- this.xRequest = this.calculateMajorAxisRequirements(0, this.xRequest);
- }
-
- if (!this.yValid) {
- this.yRequest = this.calculateMinorAxisRequirements(1, this.yRequest);
- }
- } else {
- if (!this.xValid) {
- this.xRequest = this.calculateMinorAxisRequirements(0, this.xRequest);
- }
-
- if (!this.yValid) {
- this.yRequest = this.calculateMajorAxisRequirements(1, this.yRequest);
- }
- }
-
- this.yValid = true;
- this.xValid = true;
- }
-
- protected void baselineLayout(int var1, int var2, int[] var3, int[] var4) {
- int var5 = (int)((float)var1 * this.getAlignment(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 (var11 > var1) {
- if ((int)var9.getMinimumSpan(var2) < var11) {
- var12 = var5;
- var13 = var6;
- } else if (var9.getResizeWeight(var2) > 0 && var9.getMaximumSpan(var2) != (float)var11) {
- throw new Error("should not happen: " + var9.getClass());
- }
- } else if (var11 < var1 && (int)var9.getMaximumSpan(var2) > var11) {
- var12 = var5;
- var13 = var6;
- }
-
- var3[var8] = var5 - var12;
- var4[var8] = var12 + var13;
- }
-
- }
-
- protected SizeRequirements baselineRequirements(int var1, SizeRequirements var2) {
- int var3 = 0;
- int var4 = 0;
- int var5 = 0;
- int var6 = ((CompositeView)this).getViewCount();
-
- for(int var7 = 0; var7 < var6; ++var7) {
- View var8 = ((CompositeView)this).getView(var7);
- int var9 = (int)var8.getPreferredSpan(var1);
- int var10 = (int)(var8.getAlignment(var1) * (float)var9);
- int var11 = var9 - var10;
- var3 = Math.max(var11, var3);
- var4 = Math.max(var10, var4);
- var5 += var8.getResizeWeight(var1);
- }
-
- if (var2 == null) {
- var2 = new SizeRequirements();
- }
-
- var2.preferred = var3 + var4;
- if (var5 != 0) {
- var2.maximum = Integer.MAX_VALUE;
- var2.minimum = 0;
- } else {
- var2.maximum = var2.preferred;
- var2.minimum = var2.preferred;
- }
-
- if (var2.preferred > 0) {
- var2.alignment = (float)var4 / (float)var2.preferred;
- } else {
- var2.alignment = 0.5F;
- }
-
- return var2;
- }
-
- protected int getOffset(int var1, int var2) {
- int[] var3 = var1 == 0 ? this.xOffsets : this.yOffsets;
- return var3[var2];
- }
-
- protected int getSpan(int var1, int var2) {
- int[] var3 = var1 == 0 ? this.xSpans : this.ySpans;
- return var3[var2];
- }
-
- protected boolean flipEastAndWestAtEnds(int var1, Position.Bias var2) {
- if (this.axis == 1) {
- int var3 = var2 == Bias.Backward ? Math.max(0, var1 - 1) : var1;
- int var4 = ((CompositeView)this).getViewIndexAtPosition(var3);
- if (var4 != -1) {
- View var5 = ((CompositeView)this).getView(var4);
- if (var5 != null && var5 instanceof CompositeView) {
- return ((CompositeView)var5).flipEastAndWestAtEnds(var1, var2);
- }
- }
- }
-
- return false;
- }
- }
-