home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.text;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Rectangle;
- import javax.swing.event.DocumentEvent;
- import javax.swing.text.Position.Bias;
-
- public class FlowView$FlowStrategy {
- public void insertUpdate(FlowView var1, DocumentEvent var2, Rectangle var3) {
- if (var3 != null) {
- ((BoxView)var1).setSize((float)var3.width, (float)var3.height);
- Container var4 = ((View)var1).getContainer();
- if (var4 != null) {
- ((Component)var4).repaint(var3.x, var3.y, var3.width, var3.height);
- }
- } else {
- int var6 = ((BoxView)var1).getWidth();
- int var5 = ((BoxView)var1).getHeight();
- if (var6 > 0 && var5 > 0) {
- ((BoxView)var1).setSize((float)var6, (float)var5);
- }
- }
-
- }
-
- public void removeUpdate(FlowView var1, DocumentEvent var2, Rectangle var3) {
- if (var3 != null) {
- ((BoxView)var1).setSize((float)var3.width, (float)var3.height);
- Container var4 = ((View)var1).getContainer();
- if (var4 != null) {
- ((Component)var4).repaint(var3.x, var3.y, var3.width, var3.height);
- }
- } else {
- int var6 = ((BoxView)var1).getWidth();
- int var5 = ((BoxView)var1).getHeight();
- if (var6 > 0 && var5 > 0) {
- ((BoxView)var1).setSize((float)var6, (float)var5);
- }
- }
-
- }
-
- public void changedUpdate(FlowView var1, DocumentEvent var2, Rectangle var3) {
- if (var3 != null) {
- ((BoxView)var1).setSize((float)var3.width, (float)var3.height);
- Container var4 = ((View)var1).getContainer();
- if (var4 != null) {
- ((Component)var4).repaint(var3.x, var3.y, var3.width, var3.height);
- }
- } else {
- int var6 = ((BoxView)var1).getWidth();
- int var5 = ((BoxView)var1).getHeight();
- if (var6 > 0 && var5 > 0) {
- ((BoxView)var1).setSize((float)var6, (float)var5);
- }
- }
-
- }
-
- protected View getLogicalView(FlowView var1) {
- return var1.layoutPool;
- }
-
- public void layout(FlowView var1) {
- int var2 = ((View)var1).getStartOffset();
- int var3 = ((View)var1).getEndOffset();
- ((View)var1).removeAll();
- View var4 = this.getLogicalView(var1);
- int var5 = var4.getViewCount();
-
- for(int var6 = 0; var6 < var5; ++var6) {
- View var7 = var4.getView(var6);
- var7.setParent(var4);
- }
-
- for(int var10 = 0; var2 < var3; ++var10) {
- View var8 = var1.createRow();
- ((View)var1).append(var8);
- int var9 = this.layoutRow(var1, var10, var2);
- if (var8.getViewCount() == 0) {
- var8.append(this.createView(var1, var2, Integer.MAX_VALUE, var10));
- var9 = var8.getEndOffset();
- }
-
- if (var9 <= var2) {
- throw new StateInvariantError("infinite loop in formatting");
- }
-
- var2 = var9;
- }
-
- }
-
- protected int layoutRow(FlowView var1, int var2, int var3) {
- View var4 = ((CompositeView)var1).getView(var2);
- int var5 = var1.getFlowStart(var2);
- int var6 = var1.getFlowSpan(var2);
- int var7 = ((View)var1).getEndOffset();
- TabExpander var8 = var1 instanceof TabExpander ? (TabExpander)var1 : null;
- int var10 = var6;
- int var9 = var5;
- boolean var11 = false;
-
- while(var3 < var7 && var6 > 0) {
- View var12 = this.createView(var1, var3, var6, var2);
- if (var12 == null) {
- break;
- }
-
- int var13;
- if (var12 instanceof TabableView) {
- var13 = (int)((TabableView)var12).getTabbedSpan((float)var5, var8);
- } else {
- var13 = (int)var12.getPreferredSpan(0);
- }
-
- if (var12.getBreakWeight(0, (float)var3, (float)var6) >= 3000) {
- int var14 = var4.getViewCount();
- if (var14 > 0) {
- var12 = var12.breakView(0, var3, (float)var5, (float)var6);
- if (var12 != null) {
- if (var12 instanceof TabableView) {
- var13 = (int)((TabableView)var12).getTabbedSpan((float)var5, var8);
- } else {
- var13 = (int)var12.getPreferredSpan(0);
- }
- } else {
- var13 = 0;
- }
- }
-
- var11 = true;
- }
-
- var6 -= var13;
- var5 += var13;
- if (var12 != null) {
- var4.append(var12);
- var3 = var12.getEndOffset();
- }
-
- if (var11) {
- break;
- }
- }
-
- if (var6 < 0) {
- this.adjustRow(var1, var2, var10, var9);
- } else if (var4.getViewCount() == 0) {
- View var15 = this.createView(var1, var3, Integer.MAX_VALUE, var2);
- var4.append(var15);
- }
-
- return var4.getEndOffset();
- }
-
- protected void adjustRow(FlowView var1, int var2, int var3, int var4) {
- View var5 = ((CompositeView)var1).getView(var2);
- int var6 = var5.getViewCount();
- int var7 = 0;
- int var8 = 0;
- int var9 = 0;
- int var10 = -1;
- boolean var11 = false;
-
- for(int var13 = 0; var13 < var6; ++var13) {
- View var12 = var5.getView(var13);
- int var14 = var3 - var7;
- int var15 = var12.getBreakWeight(0, (float)(var4 + var7), (float)var14);
- if (var15 >= var8 && var15 > 0) {
- var8 = var15;
- var10 = var13;
- var9 = var7;
- if (var15 >= 3000) {
- break;
- }
- }
-
- var7 = (int)((float)var7 + var12.getPreferredSpan(0));
- }
-
- if (var10 >= 0) {
- int var18 = var3 - var9;
- View var16 = var5.getView(var10);
- var16 = var16.breakView(0, var16.getStartOffset(), (float)(var4 + var9), (float)var18);
- View[] var19 = new View[]{var16};
- var5.replace(var10, var6 - var10, var19);
- }
- }
-
- protected View createView(FlowView var1, int var2, int var3, int var4) {
- View var5 = this.getLogicalView(var1);
- int var6 = var5.getViewIndex(var2, Bias.Forward);
- View var7 = var5.getView(var6);
- if (var2 == var7.getStartOffset()) {
- return var7;
- } else {
- var7 = var7.createFragment(var2, var7.getEndOffset());
- return var7;
- }
- }
- }
-