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 / FlowView$FlowStrategy.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.2 KB  |  204 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Rectangle;
  6. import javax.swing.event.DocumentEvent;
  7. import javax.swing.text.Position.Bias;
  8.  
  9. public class FlowView$FlowStrategy {
  10.    public void insertUpdate(FlowView var1, DocumentEvent var2, Rectangle var3) {
  11.       if (var3 != null) {
  12.          ((BoxView)var1).setSize((float)var3.width, (float)var3.height);
  13.          Container var4 = ((View)var1).getContainer();
  14.          if (var4 != null) {
  15.             ((Component)var4).repaint(var3.x, var3.y, var3.width, var3.height);
  16.          }
  17.       } else {
  18.          int var6 = ((BoxView)var1).getWidth();
  19.          int var5 = ((BoxView)var1).getHeight();
  20.          if (var6 > 0 && var5 > 0) {
  21.             ((BoxView)var1).setSize((float)var6, (float)var5);
  22.          }
  23.       }
  24.  
  25.    }
  26.  
  27.    public void removeUpdate(FlowView var1, DocumentEvent var2, Rectangle var3) {
  28.       if (var3 != null) {
  29.          ((BoxView)var1).setSize((float)var3.width, (float)var3.height);
  30.          Container var4 = ((View)var1).getContainer();
  31.          if (var4 != null) {
  32.             ((Component)var4).repaint(var3.x, var3.y, var3.width, var3.height);
  33.          }
  34.       } else {
  35.          int var6 = ((BoxView)var1).getWidth();
  36.          int var5 = ((BoxView)var1).getHeight();
  37.          if (var6 > 0 && var5 > 0) {
  38.             ((BoxView)var1).setSize((float)var6, (float)var5);
  39.          }
  40.       }
  41.  
  42.    }
  43.  
  44.    public void changedUpdate(FlowView var1, DocumentEvent var2, Rectangle var3) {
  45.       if (var3 != null) {
  46.          ((BoxView)var1).setSize((float)var3.width, (float)var3.height);
  47.          Container var4 = ((View)var1).getContainer();
  48.          if (var4 != null) {
  49.             ((Component)var4).repaint(var3.x, var3.y, var3.width, var3.height);
  50.          }
  51.       } else {
  52.          int var6 = ((BoxView)var1).getWidth();
  53.          int var5 = ((BoxView)var1).getHeight();
  54.          if (var6 > 0 && var5 > 0) {
  55.             ((BoxView)var1).setSize((float)var6, (float)var5);
  56.          }
  57.       }
  58.  
  59.    }
  60.  
  61.    protected View getLogicalView(FlowView var1) {
  62.       return var1.layoutPool;
  63.    }
  64.  
  65.    public void layout(FlowView var1) {
  66.       int var2 = ((View)var1).getStartOffset();
  67.       int var3 = ((View)var1).getEndOffset();
  68.       ((View)var1).removeAll();
  69.       View var4 = this.getLogicalView(var1);
  70.       int var5 = var4.getViewCount();
  71.  
  72.       for(int var6 = 0; var6 < var5; ++var6) {
  73.          View var7 = var4.getView(var6);
  74.          var7.setParent(var4);
  75.       }
  76.  
  77.       for(int var10 = 0; var2 < var3; ++var10) {
  78.          View var8 = var1.createRow();
  79.          ((View)var1).append(var8);
  80.          int var9 = this.layoutRow(var1, var10, var2);
  81.          if (var8.getViewCount() == 0) {
  82.             var8.append(this.createView(var1, var2, Integer.MAX_VALUE, var10));
  83.             var9 = var8.getEndOffset();
  84.          }
  85.  
  86.          if (var9 <= var2) {
  87.             throw new StateInvariantError("infinite loop in formatting");
  88.          }
  89.  
  90.          var2 = var9;
  91.       }
  92.  
  93.    }
  94.  
  95.    protected int layoutRow(FlowView var1, int var2, int var3) {
  96.       View var4 = ((CompositeView)var1).getView(var2);
  97.       int var5 = var1.getFlowStart(var2);
  98.       int var6 = var1.getFlowSpan(var2);
  99.       int var7 = ((View)var1).getEndOffset();
  100.       TabExpander var8 = var1 instanceof TabExpander ? (TabExpander)var1 : null;
  101.       int var10 = var6;
  102.       int var9 = var5;
  103.       boolean var11 = false;
  104.  
  105.       while(var3 < var7 && var6 > 0) {
  106.          View var12 = this.createView(var1, var3, var6, var2);
  107.          if (var12 == null) {
  108.             break;
  109.          }
  110.  
  111.          int var13;
  112.          if (var12 instanceof TabableView) {
  113.             var13 = (int)((TabableView)var12).getTabbedSpan((float)var5, var8);
  114.          } else {
  115.             var13 = (int)var12.getPreferredSpan(0);
  116.          }
  117.  
  118.          if (var12.getBreakWeight(0, (float)var3, (float)var6) >= 3000) {
  119.             int var14 = var4.getViewCount();
  120.             if (var14 > 0) {
  121.                var12 = var12.breakView(0, var3, (float)var5, (float)var6);
  122.                if (var12 != null) {
  123.                   if (var12 instanceof TabableView) {
  124.                      var13 = (int)((TabableView)var12).getTabbedSpan((float)var5, var8);
  125.                   } else {
  126.                      var13 = (int)var12.getPreferredSpan(0);
  127.                   }
  128.                } else {
  129.                   var13 = 0;
  130.                }
  131.             }
  132.  
  133.             var11 = true;
  134.          }
  135.  
  136.          var6 -= var13;
  137.          var5 += var13;
  138.          if (var12 != null) {
  139.             var4.append(var12);
  140.             var3 = var12.getEndOffset();
  141.          }
  142.  
  143.          if (var11) {
  144.             break;
  145.          }
  146.       }
  147.  
  148.       if (var6 < 0) {
  149.          this.adjustRow(var1, var2, var10, var9);
  150.       } else if (var4.getViewCount() == 0) {
  151.          View var15 = this.createView(var1, var3, Integer.MAX_VALUE, var2);
  152.          var4.append(var15);
  153.       }
  154.  
  155.       return var4.getEndOffset();
  156.    }
  157.  
  158.    protected void adjustRow(FlowView var1, int var2, int var3, int var4) {
  159.       View var5 = ((CompositeView)var1).getView(var2);
  160.       int var6 = var5.getViewCount();
  161.       int var7 = 0;
  162.       int var8 = 0;
  163.       int var9 = 0;
  164.       int var10 = -1;
  165.       boolean var11 = false;
  166.  
  167.       for(int var13 = 0; var13 < var6; ++var13) {
  168.          View var12 = var5.getView(var13);
  169.          int var14 = var3 - var7;
  170.          int var15 = var12.getBreakWeight(0, (float)(var4 + var7), (float)var14);
  171.          if (var15 >= var8 && var15 > 0) {
  172.             var8 = var15;
  173.             var10 = var13;
  174.             var9 = var7;
  175.             if (var15 >= 3000) {
  176.                break;
  177.             }
  178.          }
  179.  
  180.          var7 = (int)((float)var7 + var12.getPreferredSpan(0));
  181.       }
  182.  
  183.       if (var10 >= 0) {
  184.          int var18 = var3 - var9;
  185.          View var16 = var5.getView(var10);
  186.          var16 = var16.breakView(0, var16.getStartOffset(), (float)(var4 + var9), (float)var18);
  187.          View[] var19 = new View[]{var16};
  188.          var5.replace(var10, var6 - var10, var19);
  189.       }
  190.    }
  191.  
  192.    protected View createView(FlowView var1, int var2, int var3, int var4) {
  193.       View var5 = this.getLogicalView(var1);
  194.       int var6 = var5.getViewIndex(var2, Bias.Forward);
  195.       View var7 = var5.getView(var6);
  196.       if (var2 == var7.getStartOffset()) {
  197.          return var7;
  198.       } else {
  199.          var7 = var7.createFragment(var2, var7.getEndOffset());
  200.          return var7;
  201.       }
  202.    }
  203. }
  204.