home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / text / ParagraphView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  12.8 KB  |  670 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Container;
  5. import java.awt.Graphics;
  6. import java.awt.Point;
  7. import java.awt.Rectangle;
  8. import java.awt.Shape;
  9. import java.util.Vector;
  10. import javax.swing.SizeRequirements;
  11. import javax.swing.event.DocumentEvent;
  12. import javax.swing.text.Position.Bias;
  13.  
  14. public class ParagraphView extends BoxView implements TabExpander {
  15.    private int justification;
  16.    private float lineSpacing;
  17.    protected int firstLineIndent;
  18.    private int tabBase;
  19.    private int layoutSpan = -1;
  20.    private Vector layoutPool;
  21.    static char[] tabChars = new char[1];
  22.    static char[] tabDecimalChars;
  23.  
  24.    static {
  25.       tabChars[0] = '\t';
  26.       tabDecimalChars = new char[2];
  27.       tabDecimalChars[0] = '\t';
  28.       tabDecimalChars[1] = '.';
  29.    }
  30.  
  31.    public ParagraphView(Element var1) {
  32.       super(var1, 1);
  33.       this.setPropertiesFromAttributes();
  34.    }
  35.  
  36.    // $FF: synthetic method
  37.    static int access$0(ParagraphView var0) {
  38.       return var0.justification;
  39.    }
  40.  
  41.    protected void adjustRow(Row var1, int var2, int var3) {
  42.       int var4 = ((CompositeView)var1).getViewCount();
  43.       int var5 = 0;
  44.       int var6 = 0;
  45.       int var7 = 0;
  46.       int var8 = -1;
  47.       boolean var9 = false;
  48.  
  49.       for(int var11 = 0; var11 < var4; ++var11) {
  50.          View var10 = ((CompositeView)var1).getView(var11);
  51.          int var12 = var2 - var5;
  52.          int var13 = var10.getBreakWeight(0, (float)(var3 + var5), (float)var12);
  53.          if (var13 >= var6) {
  54.             var6 = var13;
  55.             var8 = var11;
  56.             var7 = var5;
  57.             if (var13 >= 3000) {
  58.                break;
  59.             }
  60.          }
  61.  
  62.          var5 = (int)((float)var5 + var10.getPreferredSpan(0));
  63.       }
  64.  
  65.       if (var8 >= 0) {
  66.          int var19 = var2 - var7;
  67.          View var16 = ((CompositeView)var1).getView(var8);
  68.          var16 = var16.breakView(0, var16.getStartOffset(), (float)(var3 + var7), (float)var19);
  69.          View[] var20 = new View[]{var16};
  70.          ((BoxView)var1).replace(var8, var4 - var8, var20);
  71.          int var14 = this.layoutPool.size();
  72.  
  73.          for(int var15 = 0; var15 < var14; ++var15) {
  74.             var16 = (View)this.layoutPool.elementAt(var15);
  75.             if (var16.getParent() == null) {
  76.                var16.setParent(this);
  77.             }
  78.          }
  79.  
  80.       }
  81.    }
  82.  
  83.    public View breakView(int var1, float var2, Shape var3) {
  84.       if (var1 == 1) {
  85.          if (var3 != null) {
  86.             Rectangle var4 = var3.getBounds();
  87.             ((BoxView)this).setSize((float)var4.width, (float)var4.height);
  88.          }
  89.  
  90.          return this;
  91.       } else {
  92.          return this;
  93.       }
  94.    }
  95.  
  96.    protected SizeRequirements calculateMinorAxisRequirements(int var1, SizeRequirements var2) {
  97.       if (var2 == null) {
  98.          var2 = new SizeRequirements();
  99.       }
  100.  
  101.       float var3 = 0.0F;
  102.       int var4 = this.layoutPool.size();
  103.  
  104.       for(int var5 = 0; var5 < var4; ++var5) {
  105.          View var6 = (View)this.layoutPool.elementAt(var5);
  106.          var3 += var6.getPreferredSpan(var1);
  107.       }
  108.  
  109.       float var7 = (float)(var1 == 0 ? ((CompositeView)this).getLeftInset() + ((CompositeView)this).getRightInset() : ((CompositeView)this).getTopInset() + ((CompositeView)this).getBottomInset());
  110.       var2.minimum = (int)var7 + 5;
  111.       var2.preferred = Math.max(var2.minimum, (int)var3);
  112.       var2.maximum = 32767;
  113.       var2.alignment = 0.5F;
  114.       return var2;
  115.    }
  116.  
  117.    public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  118.       this.setPropertiesFromAttributes();
  119.       Element var4 = ((View)this).getElement();
  120.       DocumentEvent.ElementChange var5 = var1.getChange(var4);
  121.       if (var5 != null) {
  122.          this.updateLogicalChildren(var5, var3);
  123.       }
  124.  
  125.       int var6 = var1.getOffset();
  126.       int var7 = var6 + var1.getLength();
  127.       int var8 = var4.getElementIndex(var6);
  128.       int var9 = var4.getElementIndex(var7 - 1);
  129.       if (var6 == var7 && var9 < var8 && var8 > 0) {
  130.          --var8;
  131.          var9 = var8 + 1;
  132.       }
  133.  
  134.       for(int var10 = var8; var10 <= var9; ++var10) {
  135.          View var11 = (View)this.layoutPool.elementAt(var10);
  136.          var11.changedUpdate(var1, (Shape)null, var3);
  137.       }
  138.  
  139.       this.layoutSpan = Integer.MAX_VALUE;
  140.       ((BoxView)this).preferenceChanged((View)null, true, true);
  141.       if (var2 != null) {
  142.          Rectangle var13 = ((CompositeView)this).getInsideAllocation(var2);
  143.          this.layout(var13.width, var13.height);
  144.          Container var12 = ((View)this).getContainer();
  145.          ((Component)var12).repaint(var13.x, var13.y, var13.width, var13.height);
  146.       }
  147.  
  148.    }
  149.  
  150.    View createView(int var1) {
  151.       int var2 = ((View)this).getElement().getElementIndex(var1);
  152.       View var3 = (View)this.layoutPool.elementAt(var2);
  153.       int var4 = var3.getEndOffset();
  154.       AbstractDocument var5 = (AbstractDocument)((View)this).getDocument();
  155.       if (var5.getProperty("i18n").equals(Boolean.TRUE)) {
  156.          Element var6 = var5.getBidiRootElement();
  157.          if (var6.getElementCount() > 1) {
  158.             int var7 = var6.getElementIndex(var1);
  159.             Element var8 = var6.getElement(var7);
  160.             var4 = Math.min(var8.getEndOffset(), var4);
  161.          }
  162.       }
  163.  
  164.       if (var1 == var3.getStartOffset() && var4 == var3.getEndOffset()) {
  165.          return var3;
  166.       } else {
  167.          var3 = var3.createFragment(var1, var4);
  168.          return var3;
  169.       }
  170.    }
  171.  
  172.    protected int findOffsetToCharactersInString(char[] var1, int var2) {
  173.       int var3 = var1.length;
  174.       int var4 = ((View)this).getEndOffset();
  175.       Segment var5 = new Segment();
  176.  
  177.       try {
  178.          ((View)this).getDocument().getText(var2, var4 - var2, var5);
  179.       } catch (BadLocationException var10) {
  180.          return -1;
  181.       }
  182.  
  183.       int var6 = var5.offset;
  184.  
  185.       for(int var7 = var5.offset + var5.count; var6 < var7; ++var6) {
  186.          char var8 = var5.array[var6];
  187.  
  188.          for(int var9 = 0; var9 < var3; ++var9) {
  189.             if (var8 == var1[var9]) {
  190.                return var6 - var5.offset + var2;
  191.             }
  192.          }
  193.       }
  194.  
  195.       return -1;
  196.    }
  197.  
  198.    protected boolean flipEastAndWestAtEnds(int var1, Position.Bias var2) {
  199.       Document var3 = ((View)this).getDocument();
  200.       return var3 instanceof AbstractDocument && !((AbstractDocument)var3).isLeftToRight(((View)this).getStartOffset(), ((View)this).getStartOffset() + 1);
  201.    }
  202.  
  203.    public float getAlignment(int var1) {
  204.       switch (var1) {
  205.          case 0:
  206.             return 0.5F;
  207.          case 1:
  208.             float var2 = 0.5F;
  209.             if (((CompositeView)this).getViewCount() != 0) {
  210.                int var3 = (int)((BoxView)this).getPreferredSpan(1);
  211.                View var4 = ((CompositeView)this).getView(0);
  212.                int var5 = (int)var4.getPreferredSpan(1);
  213.                var2 = var3 != 0 ? (float)(var5 / 2) / (float)var3 : 0.0F;
  214.             }
  215.  
  216.             return var2;
  217.          default:
  218.             throw new IllegalArgumentException("Invalid axis: " + var1);
  219.       }
  220.    }
  221.  
  222.    public int getBreakWeight(int var1, float var2) {
  223.       return var1 == 1 ? 0 : 0;
  224.    }
  225.  
  226.    protected int getClosestPositionTo(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5, int var6, int var7) throws BadLocationException {
  227.       JTextComponent var8 = (JTextComponent)((View)this).getContainer();
  228.       Document var9 = ((View)this).getDocument();
  229.       AbstractDocument var10 = var9 instanceof AbstractDocument ? (AbstractDocument)var9 : null;
  230.       View var11 = ((CompositeView)this).getView(var6);
  231.       int var19 = -1;
  232.       var5[0] = Bias.Forward;
  233.       int var13 = 0;
  234.  
  235.       for(int var14 = var11.getViewCount(); var13 < var14; ++var13) {
  236.          View var15 = var11.getView(var13);
  237.          int var16 = var15.getStartOffset();
  238.          boolean var17 = var10 != null ? var10.isLeftToRight(var16, var16 + 1) : true;
  239.          if (var17) {
  240.             var19 = var16;
  241.  
  242.             for(int var18 = var15.getEndOffset(); var19 < var18; ++var19) {
  243.                if (var8.modelToView(var19).getBounds().x >= var7) {
  244.                   return var19;
  245.                }
  246.             }
  247.  
  248.             --var19;
  249.          } else {
  250.             for(var19 = var15.getEndOffset() - 1; var19 >= var16; --var19) {
  251.                if (var8.modelToView(var19).getBounds().x >= var7) {
  252.                   return var19;
  253.                }
  254.             }
  255.  
  256.             ++var19;
  257.          }
  258.       }
  259.  
  260.       if (var19 == -1) {
  261.          return ((View)this).getStartOffset();
  262.       } else {
  263.          return var19;
  264.       }
  265.    }
  266.  
  267.    protected View getLayoutView(int var1) {
  268.       return (View)this.layoutPool.elementAt(var1);
  269.    }
  270.  
  271.    protected int getLayoutViewCount() {
  272.       return this.layoutPool.size();
  273.    }
  274.  
  275.    protected int getNextNorthSouthVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
  276.       int var12;
  277.       if (var1 == -1) {
  278.          var12 = var4 == 1 ? ((CompositeView)this).getViewCount() - 1 : 0;
  279.       } else {
  280.          if (var2 == Bias.Backward && var1 > 0) {
  281.             var12 = this.getViewIndexAtPosition(var1 - 1);
  282.          } else {
  283.             var12 = this.getViewIndexAtPosition(var1);
  284.          }
  285.  
  286.          if (var4 == 1) {
  287.             if (var12 == 0) {
  288.                return -1;
  289.             }
  290.  
  291.             --var12;
  292.          } else {
  293.             ++var12;
  294.             if (var12 >= ((CompositeView)this).getViewCount()) {
  295.                return -1;
  296.             }
  297.          }
  298.       }
  299.  
  300.       JTextComponent var7 = (JTextComponent)((View)this).getContainer();
  301.       Caret var8 = var7.getCaret();
  302.       Point var9 = var8 != null ? var8.getMagicCaretPosition() : null;
  303.       int var10;
  304.       if (var9 == null) {
  305.          Rectangle var11 = var7.getUI().modelToView(var7, var1, var2);
  306.          if (var11 == null) {
  307.             var10 = 0;
  308.          } else {
  309.             var10 = var11.getBounds().x;
  310.          }
  311.       } else {
  312.          var10 = var9.x;
  313.       }
  314.  
  315.       return this.getClosestPositionTo(var1, var2, var3, var4, var5, var12, var10);
  316.    }
  317.  
  318.    protected float getPartialSize(int var1, int var2) {
  319.       float var3 = 0.0F;
  320.       int var5 = ((CompositeView)this).getViewCount();
  321.       int var4 = ((View)this).getElement().getElementIndex(var1);
  322.  
  323.       int var7;
  324.       for(int var9 = this.layoutPool.size(); var1 < var2 && var4 < var9; var1 = var7) {
  325.          View var6 = (View)this.layoutPool.elementAt(var4++);
  326.          var7 = var6.getEndOffset();
  327.          int var8 = Math.min(var2, var7);
  328.          if (var6 instanceof TabableView) {
  329.             var3 += ((TabableView)var6).getPartialSpan(var1, var8);
  330.          } else {
  331.             if (var1 != var6.getStartOffset() || var8 != var6.getEndOffset()) {
  332.                return 0.0F;
  333.             }
  334.  
  335.             var3 += var6.getPreferredSpan(0);
  336.          }
  337.       }
  338.  
  339.       return var3;
  340.    }
  341.  
  342.    protected float getTabBase() {
  343.       return (float)this.tabBase;
  344.    }
  345.  
  346.    protected TabSet getTabSet() {
  347.       return StyleConstants.getTabSet(((View)this).getElement().getAttributes());
  348.    }
  349.  
  350.    protected View getViewAtPosition(int var1, Rectangle var2) {
  351.       int var3 = ((CompositeView)this).getViewCount();
  352.  
  353.       for(int var4 = 0; var4 < var3; ++var4) {
  354.          View var5 = ((CompositeView)this).getView(var4);
  355.          int var6 = var5.getStartOffset();
  356.          int var7 = var5.getEndOffset();
  357.          if (var1 >= var6 && var1 < var7) {
  358.             if (var2 != null) {
  359.                ((BoxView)this).childAllocation(var4, var2);
  360.             }
  361.  
  362.             return var5;
  363.          }
  364.       }
  365.  
  366.       if (var1 == ((View)this).getEndOffset()) {
  367.          View var8 = ((CompositeView)this).getView(var3 - 1);
  368.          if (var2 != null) {
  369.             ((BoxView)this).childAllocation(var3 - 1, var2);
  370.          }
  371.  
  372.          return var8;
  373.       } else {
  374.          return null;
  375.       }
  376.    }
  377.  
  378.    protected int getViewIndexAtPosition(int var1) {
  379.       if (var1 >= ((View)this).getStartOffset() && var1 < ((View)this).getEndOffset()) {
  380.          for(int var2 = ((CompositeView)this).getViewCount() - 1; var2 >= 0; --var2) {
  381.             View var3 = ((CompositeView)this).getView(var2);
  382.             if (var1 >= var3.getStartOffset() && var1 < var3.getEndOffset()) {
  383.                return var2;
  384.             }
  385.          }
  386.  
  387.          return -1;
  388.       } else {
  389.          return -1;
  390.       }
  391.    }
  392.  
  393.    public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  394.       Element var4 = ((View)this).getElement();
  395.       DocumentEvent.ElementChange var5 = var1.getChange(var4);
  396.       if (var5 != null) {
  397.          this.updateLogicalChildren(var5, var3);
  398.       }
  399.  
  400.       if (var5 != null && var5.getChildrenAdded().length > 0) {
  401.          int var12 = var5.getIndex();
  402.          int var14 = var1.getOffset();
  403.          if (var12 > 0) {
  404.             Element var17 = var4.getElement(var12 - 1);
  405.             if (var17.getEndOffset() >= var14) {
  406.                View var9 = (View)this.layoutPool.elementAt(var12 - 1);
  407.                var9.insertUpdate(var1, (Shape)null, var3);
  408.             }
  409.          }
  410.  
  411.          int var18 = var12 + var5.getChildrenAdded().length;
  412.          if (var18 < this.layoutPool.size()) {
  413.             Element var19 = var4.getElement(var18);
  414.             int var10 = var19.getStartOffset();
  415.             if (var10 >= var14 && var10 <= var14 + var1.getLength()) {
  416.                View var11 = (View)this.layoutPool.elementAt(var18);
  417.                var11.insertUpdate(var1, (Shape)null, var3);
  418.             }
  419.          }
  420.       } else {
  421.          int var6 = var1.getOffset();
  422.          int var7 = var4.getElementIndex(var6);
  423.          View var8 = (View)this.layoutPool.elementAt(var7);
  424.          var8.insertUpdate(var1, (Shape)null, var3);
  425.          if (var7 > 0 && var8.getStartOffset() == var6) {
  426.             var8 = (View)this.layoutPool.elementAt(var7 - 1);
  427.             var8.insertUpdate(var1, (Shape)null, var3);
  428.          }
  429.       }
  430.  
  431.       this.layoutSpan = Integer.MAX_VALUE;
  432.       ((BoxView)this).preferenceChanged((View)null, true, true);
  433.       Rectangle var13 = ((CompositeView)this).getInsideAllocation(var2);
  434.       if (var13 != null) {
  435.          this.layout(var13.width, var13.height);
  436.          Container var15 = ((View)this).getContainer();
  437.          ((Component)var15).repaint(var13.x, var13.y, var13.width, var13.height);
  438.       }
  439.  
  440.    }
  441.  
  442.    protected void layout(int var1, int var2) {
  443.       if (this.layoutSpan != var1) {
  444.          this.rebuildRows(var1);
  445.          int var4 = (int)((BoxView)this).getPreferredSpan(1);
  446.          if (var2 != var4) {
  447.             View var5 = ((View)this).getParent();
  448.             var5.preferenceChanged(this, false, true);
  449.          }
  450.       }
  451.  
  452.       super.layout(var1, var2);
  453.    }
  454.  
  455.    void layoutRow(Row var1, int var2) {
  456.       int var3 = this.tabBase + ((CompositeView)this).getLeftInset();
  457.       int var4 = this.layoutSpan;
  458.       int var5 = ((View)this).getEndOffset();
  459.       int var6 = var3;
  460.       var3 += ((CompositeView)var1).getLeftInset();
  461.       var4 -= var3 - var6;
  462.       int var7 = var4;
  463.       var6 = var3;
  464.  
  465.       while(var2 < var5 && var4 > 0) {
  466.          View var8 = this.createView(var2);
  467.          int var9;
  468.          if (var8 instanceof TabableView) {
  469.             var9 = (int)((TabableView)var8).getTabbedSpan((float)var3, this);
  470.          } else {
  471.             var9 = (int)var8.getPreferredSpan(0);
  472.          }
  473.  
  474.          var4 -= var9;
  475.          var3 += var9;
  476.          ((CompositeView)var1).append(var8);
  477.          var2 = var8.getEndOffset();
  478.          if (var8.getBreakWeight(0, (float)var2, (float)var4) >= 3000) {
  479.             break;
  480.          }
  481.       }
  482.  
  483.       if (var4 < 0) {
  484.          this.adjustRow(var1, var7, var6);
  485.       } else if (((CompositeView)var1).getViewCount() == 0) {
  486.          View var13 = this.createView(var2);
  487.          ((CompositeView)var1).append(var13);
  488.       }
  489.  
  490.       if (this.lineSpacing > 1.0F) {
  491.          int var14 = (int)((BoxView)var1).getPreferredSpan(1);
  492.          int var15 = (int)((float)var14 * this.lineSpacing) - var14;
  493.          if (var15 > 0) {
  494.             ((CompositeView)var1).setInsets(((CompositeView)var1).getTopInset(), ((CompositeView)var1).getLeftInset(), (short)var15, ((CompositeView)var1).getRightInset());
  495.          }
  496.       }
  497.  
  498.    }
  499.  
  500.    protected void loadChildren(ViewFactory var1) {
  501.       this.layoutPool = new Vector();
  502.       Element var2 = ((View)this).getElement();
  503.       int var3 = var2.getElementCount();
  504.  
  505.       for(int var4 = 0; var4 < var3; ++var4) {
  506.          View var5 = var1.create(var2.getElement(var4));
  507.          var5.setParent(this);
  508.          this.layoutPool.addElement(var5);
  509.       }
  510.  
  511.    }
  512.  
  513.    public float nextTabStop(float var1, int var2) {
  514.       if (this.justification != 0) {
  515.          return var1 + 10.0F;
  516.       } else {
  517.          var1 -= (float)this.tabBase;
  518.          TabSet var3 = this.getTabSet();
  519.          if (var3 == null) {
  520.             return (float)(this.tabBase + ((int)var1 / 72 + 1) * 72);
  521.          } else {
  522.             TabStop var4 = var3.getTabAfter(var1 + 0.01F);
  523.             if (var4 == null) {
  524.                return (float)this.tabBase + var1 + 5.0F;
  525.             } else {
  526.                int var5 = var4.getAlignment();
  527.                int var6;
  528.                switch (var5) {
  529.                   case 0:
  530.                   case 3:
  531.                   default:
  532.                      return (float)this.tabBase + var4.getPosition();
  533.                   case 1:
  534.                   case 2:
  535.                      var6 = this.findOffsetToCharactersInString(tabChars, var2 + 1);
  536.                      break;
  537.                   case 4:
  538.                      var6 = this.findOffsetToCharactersInString(tabDecimalChars, var2 + 1);
  539.                      break;
  540.                   case 5:
  541.                      return (float)this.tabBase + var4.getPosition();
  542.                }
  543.  
  544.                if (var6 == -1) {
  545.                   var6 = ((View)this).getEndOffset();
  546.                }
  547.  
  548.                float var7 = this.getPartialSize(var2 + 1, var6);
  549.                switch (var5) {
  550.                   case 1:
  551.                   case 4:
  552.                      return (float)this.tabBase + Math.max(var1, var4.getPosition() - var7);
  553.                   case 2:
  554.                      return (float)this.tabBase + Math.max(var1, var4.getPosition() - var7 / 2.0F);
  555.                   case 3:
  556.                   default:
  557.                      return var1;
  558.                }
  559.             }
  560.          }
  561.       }
  562.    }
  563.  
  564.    public void paint(Graphics var1, Shape var2) {
  565.       Rectangle var3 = var2.getBounds();
  566.       this.tabBase = var3.x;
  567.       super.paint(var1, var2);
  568.    }
  569.  
  570.    void rebuildRows(int var1) {
  571.       this.layoutSpan = var1;
  572.       int var2 = ((View)this).getStartOffset();
  573.       int var3 = ((View)this).getEndOffset();
  574.       ((CompositeView)this).removeAll();
  575.       int var4 = this.layoutPool.size();
  576.  
  577.       for(int var5 = 0; var5 < var4; ++var5) {
  578.          View var6 = (View)this.layoutPool.elementAt(var5);
  579.          var6.setParent(this);
  580.       }
  581.  
  582.       boolean var9 = true;
  583.  
  584.       while(var2 < var3) {
  585.          int var7 = var2;
  586.          Row var8 = new Row(this, ((View)this).getElement());
  587.          if (var9) {
  588.             ((CompositeView)var8).setInsets((short)0, (short)Math.min(var1 - 5, this.firstLineIndent), (short)0, (short)0);
  589.             var9 = false;
  590.          }
  591.  
  592.          ((CompositeView)this).append(var8);
  593.          this.layoutRow(var8, var2);
  594.          var2 = var8.getEndOffset();
  595.          if (var2 <= var7) {
  596.             throw new StateInvariantError("infinite loop in formatting");
  597.          }
  598.       }
  599.  
  600.    }
  601.  
  602.    public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  603.       Element var4 = ((View)this).getElement();
  604.       DocumentEvent.ElementChange var5 = var1.getChange(var4);
  605.       if (var5 != null) {
  606.          this.updateLogicalChildren(var5, var3);
  607.       }
  608.  
  609.       if (var5 == null || var5.getChildrenAdded().length == 0) {
  610.          int var6 = var1.getOffset();
  611.          int var7 = var4.getElementIndex(var6);
  612.          View var8 = (View)this.layoutPool.elementAt(var7);
  613.          var8.removeUpdate(var1, (Shape)null, var3);
  614.       }
  615.  
  616.       this.layoutSpan = Integer.MAX_VALUE;
  617.       ((BoxView)this).preferenceChanged((View)null, true, true);
  618.       if (var2 != null) {
  619.          Rectangle var9 = ((CompositeView)this).getInsideAllocation(var2);
  620.          this.layout(var9.width, var9.height);
  621.          Container var10 = ((View)this).getContainer();
  622.          ((Component)var10).repaint(var9.x, var9.y, var9.width, var9.height);
  623.       }
  624.  
  625.    }
  626.  
  627.    protected void setFirstLineIndent(float var1) {
  628.       this.firstLineIndent = (int)var1;
  629.    }
  630.  
  631.    protected void setJustification(int var1) {
  632.       this.justification = var1;
  633.    }
  634.  
  635.    protected void setLineSpacing(float var1) {
  636.       this.lineSpacing = var1;
  637.    }
  638.  
  639.    protected void setPropertiesFromAttributes() {
  640.       AttributeSet var1 = ((View)this).getAttributes();
  641.       if (var1 != null) {
  642.          ((CompositeView)this).setParagraphInsets(var1);
  643.          this.setJustification(StyleConstants.getAlignment(var1));
  644.          this.lineSpacing = StyleConstants.getLineSpacing(var1);
  645.          this.firstLineIndent = (int)StyleConstants.getFirstLineIndent(var1);
  646.       }
  647.  
  648.    }
  649.  
  650.    void updateLogicalChildren(DocumentEvent.ElementChange var1, ViewFactory var2) {
  651.       int var3 = var1.getIndex();
  652.       Element[] var4 = var1.getChildrenRemoved();
  653.  
  654.       for(int var5 = 0; var5 < var4.length; ++var5) {
  655.          View var6 = (View)this.layoutPool.elementAt(var3);
  656.          var6.setParent((View)null);
  657.          this.layoutPool.removeElementAt(var3);
  658.       }
  659.  
  660.       Element[] var9 = var1.getChildrenAdded();
  661.  
  662.       for(int var7 = 0; var7 < var9.length; ++var7) {
  663.          View var8 = var2.create(var9[var7]);
  664.          var8.setParent(this);
  665.          this.layoutPool.insertElementAt(var8, var3 + var7);
  666.       }
  667.  
  668.    }
  669. }
  670.