home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 144 / DPCS0200.iso / Internet / Supanet / system / swing.jar / javax / swing / text / BoxView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-11-05  |  10.6 KB  |  653 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.Rectangle;
  7. import java.awt.Shape;
  8. import javax.swing.SizeRequirements;
  9. import javax.swing.event.DocumentEvent;
  10. import javax.swing.text.Position.Bias;
  11.  
  12. public class BoxView extends CompositeView {
  13.    int axis;
  14.    int width;
  15.    int height;
  16.    boolean xValid;
  17.    boolean yValid;
  18.    SizeRequirements xRequest;
  19.    SizeRequirements yRequest;
  20.    boolean xAllocValid;
  21.    int[] xOffsets;
  22.    int[] xSpans;
  23.    boolean yAllocValid;
  24.    int[] yOffsets;
  25.    int[] ySpans;
  26.  
  27.    public BoxView(Element var1, int var2) {
  28.       super(var1);
  29.       this.axis = var2;
  30.    }
  31.  
  32.    protected void baselineLayout(int var1, int var2, int[] var3, int[] var4) {
  33.       int var5 = (int)((float)var1 * this.getAlignment(var2));
  34.       int var6 = var1 - var5;
  35.       int var7 = ((CompositeView)this).getViewCount();
  36.  
  37.       for(int var8 = 0; var8 < var7; ++var8) {
  38.          View var9 = ((CompositeView)this).getView(var8);
  39.          float var10 = var9.getAlignment(var2);
  40.          int var11 = (int)var9.getPreferredSpan(var2);
  41.          int var12 = (int)((float)var11 * var10);
  42.          int var13 = var11 - var12;
  43.          if (var11 > var1) {
  44.             if ((int)var9.getMinimumSpan(var2) < var11) {
  45.                var12 = var5;
  46.                var13 = var6;
  47.             } else if (var9.getResizeWeight(var2) > 0 && var9.getMaximumSpan(var2) != (float)var11) {
  48.                throw new Error("should not happen: " + var9.getClass());
  49.             }
  50.          } else if (var11 < var1 && (int)var9.getMaximumSpan(var2) > var11) {
  51.             var12 = var5;
  52.             var13 = var6;
  53.          }
  54.  
  55.          var3[var8] = var5 - var12;
  56.          var4[var8] = var12 + var13;
  57.       }
  58.  
  59.    }
  60.  
  61.    protected SizeRequirements baselineRequirements(int var1, SizeRequirements var2) {
  62.       int var3 = 0;
  63.       int var4 = 0;
  64.       int var5 = 0;
  65.       int var6 = ((CompositeView)this).getViewCount();
  66.  
  67.       for(int var7 = 0; var7 < var6; ++var7) {
  68.          View var8 = ((CompositeView)this).getView(var7);
  69.          int var9 = (int)var8.getPreferredSpan(var1);
  70.          int var10 = (int)(var8.getAlignment(var1) * (float)var9);
  71.          int var11 = var9 - var10;
  72.          var3 = Math.max(var11, var3);
  73.          var4 = Math.max(var10, var4);
  74.          var5 += var8.getResizeWeight(var1);
  75.       }
  76.  
  77.       if (var2 == null) {
  78.          var2 = new SizeRequirements();
  79.       }
  80.  
  81.       var2.preferred = var3 + var4;
  82.       if (var5 != 0) {
  83.          var2.maximum = Integer.MAX_VALUE;
  84.          var2.minimum = 0;
  85.       } else {
  86.          var2.maximum = var2.preferred;
  87.          var2.minimum = var2.preferred;
  88.       }
  89.  
  90.       if (var2.preferred > 0) {
  91.          var2.alignment = (float)var4 / (float)var2.preferred;
  92.       } else {
  93.          var2.alignment = 0.5F;
  94.       }
  95.  
  96.       return var2;
  97.    }
  98.  
  99.    protected SizeRequirements calculateMajorAxisRequirements(int var1, SizeRequirements var2) {
  100.       float var3 = 0.0F;
  101.       float var4 = 0.0F;
  102.       float var5 = 0.0F;
  103.       int var6 = ((CompositeView)this).getViewCount();
  104.  
  105.       for(int var7 = 0; var7 < var6; ++var7) {
  106.          View var8 = ((CompositeView)this).getView(var7);
  107.          var3 += var8.getMinimumSpan(var1);
  108.          var4 += var8.getPreferredSpan(var1);
  109.          var5 += var8.getMaximumSpan(var1);
  110.       }
  111.  
  112.       if (var2 == null) {
  113.          var2 = new SizeRequirements();
  114.       }
  115.  
  116.       var2.alignment = 0.5F;
  117.       var2.minimum = (int)var3;
  118.       var2.preferred = (int)var4;
  119.       var2.maximum = (int)var5;
  120.       return var2;
  121.    }
  122.  
  123.    protected SizeRequirements calculateMinorAxisRequirements(int var1, SizeRequirements var2) {
  124.       int var3 = 0;
  125.       long var4 = 0L;
  126.       int var6 = Integer.MAX_VALUE;
  127.       int var7 = ((CompositeView)this).getViewCount();
  128.  
  129.       for(int var8 = 0; var8 < var7; ++var8) {
  130.          View var9 = ((CompositeView)this).getView(var8);
  131.          var3 = Math.max((int)var9.getMinimumSpan(var1), var3);
  132.          var4 = Math.max((long)((int)var9.getPreferredSpan(var1)), var4);
  133.          var6 = Math.max((int)var9.getMaximumSpan(var1), var6);
  134.       }
  135.  
  136.       if (var2 == null) {
  137.          var2 = new SizeRequirements();
  138.          var2.alignment = 0.5F;
  139.       }
  140.  
  141.       var2.preferred = (int)var4;
  142.       var2.minimum = var3;
  143.       var2.maximum = var6;
  144.       return var2;
  145.    }
  146.  
  147.    public void changedUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  148.       Element var4 = ((View)this).getElement();
  149.       Rectangle var5 = var2 != null && this.isAllocationValid() ? ((CompositeView)this).getInsideAllocation(var2) : null;
  150.       int var6 = 0;
  151.       int var7 = 0;
  152.       int var8 = 0;
  153.       int var9 = 0;
  154.       if (var5 != null) {
  155.          var6 = var5.x;
  156.          var7 = var5.y;
  157.          var8 = var5.width;
  158.          var9 = var5.height;
  159.       }
  160.  
  161.       int var10 = var4.getElementIndex(var1.getOffset());
  162.       int var11 = var4.getElementIndex(var1.getOffset() + Math.max(var1.getLength() - 1, 0));
  163.  
  164.       for(int var12 = var10; var12 <= var11; ++var12) {
  165.          View var13 = ((CompositeView)this).getView(var12);
  166.          if (var5 != null) {
  167.             var5.x = var6 + this.xOffsets[var12];
  168.             var5.y = var7 + this.yOffsets[var12];
  169.             var5.width = this.xSpans[var12];
  170.             var5.height = this.ySpans[var12];
  171.          }
  172.  
  173.          var13.changedUpdate(var1, var5, var3);
  174.       }
  175.  
  176.       DocumentEvent.ElementChange var18 = var1.getChange(var4);
  177.       if (var18 != null) {
  178.          Element[] var14 = var18.getChildrenRemoved();
  179.          Element[] var15 = var18.getChildrenAdded();
  180.          View[] var16 = new View[var15.length];
  181.  
  182.          for(int var17 = 0; var17 < var15.length; ++var17) {
  183.             var16[var17] = var3.create(var15[var17]);
  184.          }
  185.  
  186.          this.replace(var18.getIndex(), var14.length, var16);
  187.       }
  188.  
  189.       if (var2 != null && !this.isAllocationValid()) {
  190.          Container var19 = ((View)this).getContainer();
  191.          ((Component)var19).repaint(var6, var7, var8, var9);
  192.       }
  193.  
  194.    }
  195.  
  196.    void checkRequests() {
  197.       if (this.axis == 0) {
  198.          if (!this.xValid) {
  199.             this.xRequest = this.calculateMajorAxisRequirements(0, this.xRequest);
  200.          }
  201.  
  202.          if (!this.yValid) {
  203.             this.yRequest = this.calculateMinorAxisRequirements(1, this.yRequest);
  204.          }
  205.       } else {
  206.          if (!this.xValid) {
  207.             this.xRequest = this.calculateMinorAxisRequirements(0, this.xRequest);
  208.          }
  209.  
  210.          if (!this.yValid) {
  211.             this.yRequest = this.calculateMajorAxisRequirements(1, this.yRequest);
  212.          }
  213.       }
  214.  
  215.       this.yValid = true;
  216.       this.xValid = true;
  217.    }
  218.  
  219.    protected void childAllocation(int var1, Rectangle var2) {
  220.       var2.x += this.xOffsets[var1];
  221.       var2.y += this.yOffsets[var1];
  222.       var2.width = this.xSpans[var1];
  223.       var2.height = this.ySpans[var1];
  224.    }
  225.  
  226.    protected boolean flipEastAndWestAtEnds(int var1, Position.Bias var2) {
  227.       if (this.axis == 1) {
  228.          int var3 = var2 == Bias.Backward ? Math.max(0, var1 - 1) : var1;
  229.          int var4 = ((CompositeView)this).getViewIndexAtPosition(var3);
  230.          if (var4 != -1) {
  231.             View var5 = ((CompositeView)this).getView(var4);
  232.             if (var5 != null && var5 instanceof CompositeView) {
  233.                return ((CompositeView)var5).flipEastAndWestAtEnds(var1, var2);
  234.             }
  235.          }
  236.       }
  237.  
  238.       return false;
  239.    }
  240.  
  241.    public float getAlignment(int var1) {
  242.       this.checkRequests();
  243.       switch (var1) {
  244.          case 0:
  245.             return this.xRequest.alignment;
  246.          case 1:
  247.             return this.yRequest.alignment;
  248.          default:
  249.             throw new IllegalArgumentException("Invalid axis: " + var1);
  250.       }
  251.    }
  252.  
  253.    SizeRequirements[] getChildRequests(int var1) {
  254.       int var2 = ((CompositeView)this).getViewCount();
  255.       SizeRequirements[] var3 = new SizeRequirements[var2];
  256.  
  257.       for(int var4 = 0; var4 < var2; ++var4) {
  258.          View var5 = ((CompositeView)this).getView(var4);
  259.          int var6 = (int)var5.getMinimumSpan(var1);
  260.          int var7 = (int)var5.getPreferredSpan(var1);
  261.          int var8 = (int)var5.getMaximumSpan(var1);
  262.          float var9 = var5.getAlignment(var1);
  263.          var3[var4] = new SizeRequirements(var6, var7, var8, var9);
  264.       }
  265.  
  266.       return var3;
  267.    }
  268.  
  269.    public final int getHeight() {
  270.       return this.height;
  271.    }
  272.  
  273.    public float getMaximumSpan(int var1) {
  274.       this.checkRequests();
  275.       switch (var1) {
  276.          case 0:
  277.             return (float)this.xRequest.maximum + (float)((CompositeView)this).getLeftInset() + (float)((CompositeView)this).getRightInset();
  278.          case 1:
  279.             return (float)this.yRequest.maximum + (float)((CompositeView)this).getTopInset() + (float)((CompositeView)this).getBottomInset();
  280.          default:
  281.             throw new IllegalArgumentException("Invalid axis: " + var1);
  282.       }
  283.    }
  284.  
  285.    public float getMinimumSpan(int var1) {
  286.       this.checkRequests();
  287.       switch (var1) {
  288.          case 0:
  289.             return (float)this.xRequest.minimum + (float)((CompositeView)this).getLeftInset() + (float)((CompositeView)this).getRightInset();
  290.          case 1:
  291.             return (float)this.yRequest.minimum + (float)((CompositeView)this).getTopInset() + (float)((CompositeView)this).getBottomInset();
  292.          default:
  293.             throw new IllegalArgumentException("Invalid axis: " + var1);
  294.       }
  295.    }
  296.  
  297.    protected final int getOffset(int var1, int var2) {
  298.       int[] var3 = var1 == 0 ? this.xOffsets : this.yOffsets;
  299.       return var3[var2];
  300.    }
  301.  
  302.    public float getPreferredSpan(int var1) {
  303.       this.checkRequests();
  304.       switch (var1) {
  305.          case 0:
  306.             return (float)this.xRequest.preferred + (float)((CompositeView)this).getLeftInset() + (float)((CompositeView)this).getRightInset();
  307.          case 1:
  308.             return (float)this.yRequest.preferred + (float)((CompositeView)this).getTopInset() + (float)((CompositeView)this).getBottomInset();
  309.          default:
  310.             throw new IllegalArgumentException("Invalid axis: " + var1);
  311.       }
  312.    }
  313.  
  314.    public int getResizeWeight(int var1) {
  315.       this.checkRequests();
  316.       switch (var1) {
  317.          case 0:
  318.             if (this.xRequest.preferred != this.xRequest.minimum && this.xRequest.preferred != this.xRequest.maximum) {
  319.                return 1;
  320.             }
  321.  
  322.             return 0;
  323.          case 1:
  324.             if (this.yRequest.preferred != this.yRequest.minimum && this.yRequest.preferred != this.yRequest.maximum) {
  325.                return 1;
  326.             }
  327.  
  328.             return 0;
  329.          default:
  330.             throw new IllegalArgumentException("Invalid axis: " + var1);
  331.       }
  332.    }
  333.  
  334.    protected final int getSpan(int var1, int var2) {
  335.       int[] var3 = var1 == 0 ? this.xSpans : this.ySpans;
  336.       return var3[var2];
  337.    }
  338.  
  339.    protected View getViewAtPoint(int var1, int var2, Rectangle var3) {
  340.       int var4 = ((CompositeView)this).getViewCount();
  341.       if (this.axis == 0) {
  342.          if (var1 < var3.x + this.xOffsets[0]) {
  343.             this.childAllocation(0, var3);
  344.             return ((CompositeView)this).getView(0);
  345.          } else {
  346.             for(int var6 = 0; var6 < var4; ++var6) {
  347.                if (var1 < var3.x + this.xOffsets[var6]) {
  348.                   this.childAllocation(var6 - 1, var3);
  349.                   return ((CompositeView)this).getView(var6 - 1);
  350.                }
  351.             }
  352.  
  353.             this.childAllocation(var4 - 1, var3);
  354.             return ((CompositeView)this).getView(var4 - 1);
  355.          }
  356.       } else if (var2 < var3.y + this.yOffsets[0]) {
  357.          this.childAllocation(0, var3);
  358.          return ((CompositeView)this).getView(0);
  359.       } else {
  360.          for(int var5 = 0; var5 < var4; ++var5) {
  361.             if (var2 < var3.y + this.yOffsets[var5]) {
  362.                this.childAllocation(var5 - 1, var3);
  363.                return ((CompositeView)this).getView(var5 - 1);
  364.             }
  365.          }
  366.  
  367.          this.childAllocation(var4 - 1, var3);
  368.          return ((CompositeView)this).getView(var4 - 1);
  369.       }
  370.    }
  371.  
  372.    public final int getWidth() {
  373.       return this.width;
  374.    }
  375.  
  376.    public void insertUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  377.       Element var4 = ((View)this).getElement();
  378.       DocumentEvent.ElementChange var5 = var1.getChange(var4);
  379.       boolean var6 = true;
  380.       if (var5 != null) {
  381.          Element[] var7 = var5.getChildrenRemoved();
  382.          Element[] var8 = var5.getChildrenAdded();
  383.          View[] var9 = new View[var8.length];
  384.  
  385.          for(int var10 = 0; var10 < var8.length; ++var10) {
  386.             var9[var10] = var3.create(var8[var10]);
  387.          }
  388.  
  389.          int var11 = var5.getIndex();
  390.          this.replace(var11, var7.length, var9);
  391.          if (var9.length > 0) {
  392.             int var12 = var1.getOffset();
  393.             if (var11 > 0) {
  394.                Element var13 = var4.getElement(var11 - 1);
  395.                if (var13.getEndOffset() >= var12) {
  396.                   View var14 = ((CompositeView)this).getViewAtPosition(var13.getStartOffset(), (Rectangle)null);
  397.                   if (var14 != null) {
  398.                      var14.insertUpdate(var1, (Shape)null, var3);
  399.                   }
  400.                }
  401.             }
  402.  
  403.             if (var11 + var9.length < ((CompositeView)this).getViewCount()) {
  404.                Element var21 = var4.getElement(var11 + var9.length);
  405.                int var22 = var21.getStartOffset();
  406.                if (var22 >= var12 && var22 <= var12 + var1.getLength()) {
  407.                   View var15 = ((CompositeView)this).getViewAtPosition(var21.getStartOffset(), (Rectangle)null);
  408.                   if (var15 != null) {
  409.                      var15.insertUpdate(var1, (Shape)null, var3);
  410.                   }
  411.                }
  412.             }
  413.  
  414.             var6 = false;
  415.          }
  416.  
  417.          if (var2 != null) {
  418.             this.preferenceChanged((View)null, true, true);
  419.             ((View)this).getContainer().repaint();
  420.          }
  421.       }
  422.  
  423.       if (var6) {
  424.          Rectangle var16 = var2 != null && this.isAllocationValid() ? ((CompositeView)this).getInsideAllocation(var2) : null;
  425.          int var17 = var1.getOffset();
  426.          View var18 = ((CompositeView)this).getViewAtPosition(var17, var16);
  427.          if (var18 != null) {
  428.             if (var18.getStartOffset() == var17 && var17 > 0) {
  429.                Rectangle var19 = var2 != null && this.isAllocationValid() ? ((CompositeView)this).getInsideAllocation(var2) : null;
  430.                View var20 = ((CompositeView)this).getViewAtPosition(var17 - 1, var19);
  431.                if (var20 != var18 && var20 != null) {
  432.                   var20.insertUpdate(var1, var19, var3);
  433.                }
  434.             }
  435.  
  436.             var18.insertUpdate(var1, var16, var3);
  437.          }
  438.       }
  439.  
  440.    }
  441.  
  442.    protected boolean isAfter(int var1, int var2, Rectangle var3) {
  443.       if (this.axis == 0) {
  444.          return var1 > var3.width + var3.x;
  445.       } else {
  446.          return var2 > var3.height + var3.y;
  447.       }
  448.    }
  449.  
  450.    protected boolean isAllocationValid() {
  451.       return this.xAllocValid && this.yAllocValid;
  452.    }
  453.  
  454.    protected boolean isBefore(int var1, int var2, Rectangle var3) {
  455.       if (this.axis == 0) {
  456.          return var1 < var3.x;
  457.       } else {
  458.          return var2 < var3.y;
  459.       }
  460.    }
  461.  
  462.    protected void layout(int var1, int var2) {
  463.       this.checkRequests();
  464.       if (this.xSpans == null) {
  465.          int var3 = ((CompositeView)this).getViewCount();
  466.          this.xSpans = new int[var3];
  467.          this.ySpans = new int[var3];
  468.          this.xOffsets = new int[var3];
  469.          this.yOffsets = new int[var3];
  470.       }
  471.  
  472.       if (this.axis == 0) {
  473.          if (!this.xAllocValid) {
  474.             this.layoutMajorAxis(var1, 0, this.xOffsets, this.xSpans);
  475.          }
  476.  
  477.          if (!this.yAllocValid) {
  478.             this.layoutMinorAxis(var2, 1, this.yOffsets, this.ySpans);
  479.          }
  480.       } else {
  481.          if (!this.xAllocValid) {
  482.             this.layoutMinorAxis(var1, 0, this.xOffsets, this.xSpans);
  483.          }
  484.  
  485.          if (!this.yAllocValid) {
  486.             this.layoutMajorAxis(var2, 1, this.yOffsets, this.ySpans);
  487.          }
  488.       }
  489.  
  490.       this.xAllocValid = true;
  491.       this.yAllocValid = true;
  492.       int var6 = ((CompositeView)this).getViewCount();
  493.  
  494.       for(int var4 = 0; var4 < var6; ++var4) {
  495.          View var5 = ((CompositeView)this).getView(var4);
  496.          var5.setSize((float)this.xSpans[var4], (float)this.ySpans[var4]);
  497.       }
  498.  
  499.    }
  500.  
  501.    protected void layoutMajorAxis(int var1, int var2, int[] var3, int[] var4) {
  502.       SizeRequirements.calculateTiledPositions(var1, (SizeRequirements)null, this.getChildRequests(var2), var3, var4);
  503.    }
  504.  
  505.    protected void layoutMinorAxis(int var1, int var2, int[] var3, int[] var4) {
  506.       int var5 = ((CompositeView)this).getViewCount();
  507.  
  508.       for(int var6 = 0; var6 < var5; ++var6) {
  509.          View var7 = ((CompositeView)this).getView(var6);
  510.          int var8 = (int)var7.getMinimumSpan(var2);
  511.          int var9 = (int)var7.getMaximumSpan(var2);
  512.          if (var9 < var1) {
  513.             float var10 = var7.getAlignment(var2);
  514.             var3[var6] = (int)((float)(var1 - var9) * var10);
  515.             var4[var6] = var9;
  516.          } else {
  517.             var3[var6] = 0;
  518.             var4[var6] = Math.max(var8, var1);
  519.          }
  520.       }
  521.  
  522.    }
  523.  
  524.    public Shape modelToView(int var1, Shape var2, Position.Bias var3) throws BadLocationException {
  525.       if (!this.isAllocationValid()) {
  526.          Rectangle var4 = var2.getBounds();
  527.          this.setSize((float)var4.width, (float)var4.height);
  528.       }
  529.  
  530.       return super.modelToView(var1, var2, var3);
  531.    }
  532.  
  533.    public void paint(Graphics var1, Shape var2) {
  534.       Rectangle var3 = var2.getBounds();
  535.       this.setSize((float)var3.width, (float)var3.height);
  536.       int var4 = ((CompositeView)this).getViewCount();
  537.       int var5 = var3.x + ((CompositeView)this).getLeftInset();
  538.       int var6 = var3.y + ((CompositeView)this).getTopInset();
  539.       Rectangle var7 = var1.getClipBounds();
  540.  
  541.       for(int var8 = 0; var8 < var4; ++var8) {
  542.          var3.x = var5 + this.xOffsets[var8];
  543.          var3.y = var6 + this.yOffsets[var8];
  544.          var3.width = this.xSpans[var8];
  545.          var3.height = this.ySpans[var8];
  546.          if (var3.intersects(var7)) {
  547.             this.paintChild(var1, var3, var8);
  548.          }
  549.       }
  550.  
  551.    }
  552.  
  553.    protected void paintChild(Graphics var1, Rectangle var2, int var3) {
  554.       View var4 = ((CompositeView)this).getView(var3);
  555.       var4.paint(var1, var2);
  556.    }
  557.  
  558.    public void preferenceChanged(View var1, boolean var2, boolean var3) {
  559.       if (var2) {
  560.          this.xValid = false;
  561.          this.xAllocValid = false;
  562.       }
  563.  
  564.       if (var3) {
  565.          this.yValid = false;
  566.          this.yAllocValid = false;
  567.       }
  568.  
  569.       super.preferenceChanged(var1, var2, var3);
  570.    }
  571.  
  572.    public void removeUpdate(DocumentEvent var1, Shape var2, ViewFactory var3) {
  573.       Element var4 = ((View)this).getElement();
  574.       DocumentEvent.ElementChange var5 = var1.getChange(var4);
  575.       boolean var6 = true;
  576.       if (var5 != null) {
  577.          Element[] var7 = var5.getChildrenRemoved();
  578.          Element[] var8 = var5.getChildrenAdded();
  579.          View[] var9 = new View[var8.length];
  580.  
  581.          for(int var10 = 0; var10 < var8.length; ++var10) {
  582.             var9[var10] = var3.create(var8[var10]);
  583.          }
  584.  
  585.          this.replace(var5.getIndex(), var7.length, var9);
  586.          if (var9.length != 0) {
  587.             var6 = false;
  588.          }
  589.  
  590.          if (var2 != null) {
  591.             this.preferenceChanged((View)null, true, true);
  592.             ((View)this).getContainer().repaint();
  593.          }
  594.       }
  595.  
  596.       if (var6) {
  597.          Rectangle var12 = var2 != null && this.isAllocationValid() ? ((CompositeView)this).getInsideAllocation(var2) : null;
  598.          int var13 = var1.getOffset();
  599.          View var14 = ((CompositeView)this).getViewAtPosition(var13, var12);
  600.          if (var14 != null) {
  601.             if (var14.getStartOffset() == var13 && var13 > 0) {
  602.                Rectangle var15 = var2 != null && this.isAllocationValid() ? ((CompositeView)this).getInsideAllocation(var2) : null;
  603.                View var11 = ((CompositeView)this).getViewAtPosition(var13 - 1, var15);
  604.                if (var11 != var14 && var11 != null) {
  605.                   var11.removeUpdate(var1, var15, var3);
  606.                }
  607.             }
  608.  
  609.             var14.removeUpdate(var1, var12, var3);
  610.          }
  611.       }
  612.  
  613.    }
  614.  
  615.    public void replace(int var1, int var2, View[] var3) {
  616.       super.replace(var1, var2, var3);
  617.       this.xOffsets = null;
  618.       this.xSpans = null;
  619.       this.xValid = false;
  620.       this.xAllocValid = false;
  621.       this.yOffsets = null;
  622.       this.ySpans = null;
  623.       this.yValid = false;
  624.       this.yAllocValid = false;
  625.    }
  626.  
  627.    public void setSize(float var1, float var2) {
  628.       if ((int)var1 != this.width) {
  629.          this.xAllocValid = false;
  630.       }
  631.  
  632.       if ((int)var2 != this.height) {
  633.          this.yAllocValid = false;
  634.       }
  635.  
  636.       if (!this.xAllocValid || !this.yAllocValid) {
  637.          this.width = (int)var1;
  638.          this.height = (int)var2;
  639.          this.layout(this.width - ((CompositeView)this).getLeftInset() - ((CompositeView)this).getRightInset(), this.height - ((CompositeView)this).getTopInset() - ((CompositeView)this).getBottomInset());
  640.       }
  641.  
  642.    }
  643.  
  644.    public int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4) {
  645.       if (!this.isAllocationValid()) {
  646.          Rectangle var5 = var3.getBounds();
  647.          this.setSize((float)var5.width, (float)var5.height);
  648.       }
  649.  
  650.       return super.viewToModel(var1, var2, var3, var4);
  651.    }
  652. }
  653.