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 / CompositeView.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  6.4 KB  |  456 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Rectangle;
  4. import java.awt.Shape;
  5. import javax.swing.text.Position.Bias;
  6.  
  7. public abstract class CompositeView extends View {
  8.    private static View[] ZERO = new View[0];
  9.    private View[] children = new View[1];
  10.    private int nchildren = 0;
  11.    private short left;
  12.    private short right;
  13.    private short top;
  14.    private short bottom;
  15.    private Rectangle childAlloc = new Rectangle();
  16.  
  17.    public CompositeView(Element var1) {
  18.       super(var1);
  19.    }
  20.  
  21.    protected void loadChildren(ViewFactory var1) {
  22.       if (var1 != null) {
  23.          Element var2 = ((View)this).getElement();
  24.          int var3 = var2.getElementCount();
  25.          if (var3 > 0) {
  26.             View[] var4 = new View[var3];
  27.  
  28.             for(int var5 = 0; var5 < var3; ++var5) {
  29.                var4[var5] = var1.create(var2.getElement(var5));
  30.             }
  31.  
  32.             this.replace(0, 0, var4);
  33.          }
  34.  
  35.       }
  36.    }
  37.  
  38.    public void setParent(View var1) {
  39.       super.setParent(var1);
  40.       if (var1 != null && this.nchildren == 0) {
  41.          ViewFactory var2 = ((View)this).getViewFactory();
  42.          this.loadChildren(var2);
  43.       }
  44.  
  45.    }
  46.  
  47.    public int getViewCount() {
  48.       return this.nchildren;
  49.    }
  50.  
  51.    public View getView(int var1) {
  52.       return this.children[var1];
  53.    }
  54.  
  55.    public void replace(int var1, int var2, View[] var3) {
  56.       if (var3 == null) {
  57.          var3 = ZERO;
  58.       }
  59.  
  60.       for(int var4 = var1; var4 < var1 + var2; ++var4) {
  61.          this.children[var4].setParent((View)null);
  62.          this.children[var4] = null;
  63.       }
  64.  
  65.       int var5 = var3.length - var2;
  66.       int var6 = var1 + var2;
  67.       int var7 = this.nchildren - var6;
  68.       int var8 = var6 + var5;
  69.       if (this.nchildren + var5 >= this.children.length) {
  70.          int var9 = Math.max(2 * this.children.length, this.nchildren + var5);
  71.          View[] var10 = new View[var9];
  72.          System.arraycopy(this.children, 0, var10, 0, var1);
  73.          System.arraycopy(var3, 0, var10, var1, var3.length);
  74.          System.arraycopy(this.children, var6, var10, var8, var7);
  75.          this.children = var10;
  76.       } else {
  77.          System.arraycopy(this.children, var6, this.children, var8, var7);
  78.          System.arraycopy(var3, 0, this.children, var1, var3.length);
  79.       }
  80.  
  81.       this.nchildren += var5;
  82.  
  83.       for(int var11 = 0; var11 < var3.length; ++var11) {
  84.          var3[var11].setParent(this);
  85.       }
  86.  
  87.    }
  88.  
  89.    public Shape getChildAllocation(int var1, Shape var2) {
  90.       Rectangle var3 = this.getInsideAllocation(var2);
  91.       this.childAllocation(var1, var3);
  92.       return var3;
  93.    }
  94.  
  95.    public Shape modelToView(int var1, Shape var2, Position.Bias var3) throws BadLocationException {
  96.       boolean var4 = var3 == Bias.Backward;
  97.       int var5 = var4 ? Math.max(0, var1 - 1) : var1;
  98.       if (var4 && var5 < ((View)this).getStartOffset()) {
  99.          return null;
  100.       } else {
  101.          int var6 = this.getViewIndexAtPosition(var5);
  102.          if (var6 != -1 && var6 < this.getViewCount()) {
  103.             View var7 = this.getView(var6);
  104.             if (var7 != null && var5 >= var7.getStartOffset() && var5 < var7.getEndOffset()) {
  105.                Shape var8 = var7.modelToView(var1, this.getChildAllocation(var6, var2), var3);
  106.                if (var8 == null && var7.getEndOffset() == var1) {
  107.                   ++var6;
  108.                   if (var6 < this.getViewCount()) {
  109.                      var7 = this.getView(var6);
  110.                      var8 = var7.modelToView(var1, this.getChildAllocation(var6, var2), var3);
  111.                   }
  112.                }
  113.  
  114.                return var8;
  115.             }
  116.          }
  117.  
  118.          throw new BadLocationException("Position not represented by view", var1);
  119.       }
  120.    }
  121.  
  122.    public Shape modelToView(int var1, Position.Bias var2, int var3, Position.Bias var4, Shape var5) throws BadLocationException {
  123.       if (var1 == ((View)this).getStartOffset() && var3 == ((View)this).getEndOffset()) {
  124.          return var5;
  125.       } else {
  126.          Rectangle var6 = this.getInsideAllocation(var5);
  127.          Rectangle var7 = new Rectangle(var6);
  128.          View var8 = this.getViewAtPosition(var2 == Bias.Backward ? Math.max(0, var1 - 1) : var1, var7);
  129.          Rectangle var9 = new Rectangle(var6);
  130.          View var10 = this.getViewAtPosition(var4 == Bias.Backward ? Math.max(0, var3 - 1) : var3, var9);
  131.          if (var8 == var10) {
  132.             return var8 == null ? var5 : var8.modelToView(var1, var2, var3, var4, var7);
  133.          } else {
  134.             int var11 = this.getViewCount();
  135.  
  136.             for(int var12 = 0; var12 < var11; ++var12) {
  137.                View var13;
  138.                if ((var13 = this.getView(var12)) == var8 || var13 == var10) {
  139.                   Rectangle var16 = new Rectangle();
  140.                   View var14;
  141.                   Rectangle var15;
  142.                   if (var13 == var8) {
  143.                      var15 = var8.modelToView(var1, var2, var8.getEndOffset(), Bias.Backward, var7).getBounds();
  144.                      var14 = var10;
  145.                   } else {
  146.                      var15 = var10.modelToView(var10.getStartOffset(), Bias.Forward, var3, var4, var9).getBounds();
  147.                      var14 = var8;
  148.                   }
  149.  
  150.                   while(true) {
  151.                      ++var12;
  152.                      if (var12 >= var11 || this.getView(var12) == var14) {
  153.                         if (var14 != null) {
  154.                            Shape var17;
  155.                            if (var14 == var10) {
  156.                               var17 = var10.modelToView(var10.getStartOffset(), Bias.Forward, var3, var4, var9);
  157.                            } else {
  158.                               var17 = var8.modelToView(var1, var2, var8.getEndOffset(), Bias.Backward, var7);
  159.                            }
  160.  
  161.                            if (var17 instanceof Rectangle) {
  162.                               var15.add((Rectangle)var17);
  163.                            } else {
  164.                               var15.add(var17.getBounds());
  165.                            }
  166.                         }
  167.  
  168.                         return var15;
  169.                      }
  170.  
  171.                      var16.setBounds(var6);
  172.                      this.childAllocation(var12, var16);
  173.                      var15.add(var16);
  174.                   }
  175.                }
  176.             }
  177.  
  178.             throw new BadLocationException("Position not represented by view", var1);
  179.          }
  180.       }
  181.    }
  182.  
  183.    public int viewToModel(float var1, float var2, Shape var3, Position.Bias[] var4) {
  184.       Rectangle var5 = this.getInsideAllocation(var3);
  185.       if (this.isBefore((int)var1, (int)var2, var5)) {
  186.          int var14 = -1;
  187.  
  188.          try {
  189.             var14 = this.getNextVisualPositionFrom(-1, Bias.Forward, var3, 3, var4);
  190.          } catch (BadLocationException var9) {
  191.          } catch (IllegalArgumentException var10) {
  192.          }
  193.  
  194.          if (var14 == -1) {
  195.             var14 = ((View)this).getStartOffset();
  196.             var4[0] = Bias.Forward;
  197.          }
  198.  
  199.          return var14;
  200.       } else if (this.isAfter((int)var1, (int)var2, var5)) {
  201.          int var13 = -1;
  202.  
  203.          try {
  204.             var13 = this.getNextVisualPositionFrom(-1, Bias.Forward, var3, 7, var4);
  205.          } catch (BadLocationException var11) {
  206.          } catch (IllegalArgumentException var12) {
  207.          }
  208.  
  209.          if (var13 == -1) {
  210.             var13 = ((View)this).getEndOffset() - 1;
  211.             var4[0] = Bias.Forward;
  212.          }
  213.  
  214.          return var13;
  215.       } else {
  216.          View var6 = this.getViewAtPoint((int)var1, (int)var2, var5);
  217.          return var6 != null ? var6.viewToModel(var1, var2, var5, var4) : -1;
  218.       }
  219.    }
  220.  
  221.    public int getNextVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
  222.       this.getInsideAllocation(var3);
  223.       switch (var4) {
  224.          case 1:
  225.             return this.getNextNorthSouthVisualPositionFrom(var1, var2, var3, var4, var5);
  226.          case 2:
  227.          case 4:
  228.          case 6:
  229.          default:
  230.             throw new IllegalArgumentException("Bad direction: " + var4);
  231.          case 3:
  232.             return this.getNextEastWestVisualPositionFrom(var1, var2, var3, var4, var5);
  233.          case 5:
  234.             return this.getNextNorthSouthVisualPositionFrom(var1, var2, var3, var4, var5);
  235.          case 7:
  236.             return this.getNextEastWestVisualPositionFrom(var1, var2, var3, var4, var5);
  237.       }
  238.    }
  239.  
  240.    public int getViewIndex(int var1, Position.Bias var2) {
  241.       if (var2 == Bias.Backward) {
  242.          --var1;
  243.       }
  244.  
  245.       return var1 >= ((View)this).getStartOffset() && var1 < ((View)this).getEndOffset() ? this.getViewIndexAtPosition(var1) : -1;
  246.    }
  247.  
  248.    protected abstract boolean isBefore(int var1, int var2, Rectangle var3);
  249.  
  250.    protected abstract boolean isAfter(int var1, int var2, Rectangle var3);
  251.  
  252.    protected abstract View getViewAtPoint(int var1, int var2, Rectangle var3);
  253.  
  254.    protected abstract void childAllocation(int var1, Rectangle var2);
  255.  
  256.    protected View getViewAtPosition(int var1, Rectangle var2) {
  257.       int var3 = this.getViewIndexAtPosition(var1);
  258.       if (var3 >= 0 && var3 < this.getViewCount()) {
  259.          View var4 = this.getView(var3);
  260.          if (var2 != null) {
  261.             this.childAllocation(var3, var2);
  262.          }
  263.  
  264.          return var4;
  265.       } else {
  266.          return null;
  267.       }
  268.    }
  269.  
  270.    protected int getViewIndexAtPosition(int var1) {
  271.       Element var2 = ((View)this).getElement();
  272.       return var2.getElementIndex(var1);
  273.    }
  274.  
  275.    protected Rectangle getInsideAllocation(Shape var1) {
  276.       if (var1 != null) {
  277.          Rectangle var2;
  278.          if (var1 instanceof Rectangle) {
  279.             var2 = (Rectangle)var1;
  280.          } else {
  281.             var2 = var1.getBounds();
  282.          }
  283.  
  284.          this.childAlloc.setBounds(var2);
  285.          Rectangle var10000 = this.childAlloc;
  286.          var10000.x += this.left;
  287.          var10000 = this.childAlloc;
  288.          var10000.y += this.top;
  289.          var10000 = this.childAlloc;
  290.          var10000.width -= this.left + this.right;
  291.          var10000 = this.childAlloc;
  292.          var10000.height -= this.top + this.bottom;
  293.          return this.childAlloc;
  294.       } else {
  295.          return null;
  296.       }
  297.    }
  298.  
  299.    protected void setParagraphInsets(AttributeSet var1) {
  300.       this.top = (short)((int)StyleConstants.getSpaceAbove(var1));
  301.       this.left = (short)((int)StyleConstants.getLeftIndent(var1));
  302.       this.bottom = (short)((int)StyleConstants.getSpaceBelow(var1));
  303.       this.right = (short)((int)StyleConstants.getRightIndent(var1));
  304.    }
  305.  
  306.    protected void setInsets(short var1, short var2, short var3, short var4) {
  307.       this.top = var1;
  308.       this.left = var2;
  309.       this.right = var4;
  310.       this.bottom = var3;
  311.    }
  312.  
  313.    protected short getLeftInset() {
  314.       return this.left;
  315.    }
  316.  
  317.    protected short getRightInset() {
  318.       return this.right;
  319.    }
  320.  
  321.    protected short getTopInset() {
  322.       return this.top;
  323.    }
  324.  
  325.    protected short getBottomInset() {
  326.       return this.bottom;
  327.    }
  328.  
  329.    protected int getNextNorthSouthVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
  330.       if (this.getViewCount() == 0) {
  331.          return var1;
  332.       } else {
  333.          boolean var6 = var4 == 1;
  334.          Rectangle var7 = this.getInsideAllocation(var3);
  335.          int var8;
  336.          if (var1 == -1) {
  337.             View var9 = var6 ? this.getView(this.getViewCount() - 1) : this.getView(0);
  338.             this.childAllocation(0, var7);
  339.             var8 = var9.getNextVisualPositionFrom(var1, var2, var7, var4, var5);
  340.          } else {
  341.             int var12;
  342.             if (var2 == Bias.Backward && var1 > 0) {
  343.                var12 = this.getViewIndexAtPosition(var1 - 1);
  344.             } else {
  345.                var12 = this.getViewIndexAtPosition(var1);
  346.             }
  347.  
  348.             View var10 = this.getView(var12);
  349.             this.childAllocation(var12, var7);
  350.             var8 = var10.getNextVisualPositionFrom(var1, var2, var7, var4, var5);
  351.             if (var8 == -1) {
  352.                label49: {
  353.                   if (var6) {
  354.                      --var12;
  355.                      if (var12 >= 0) {
  356.                         break label49;
  357.                      }
  358.                   }
  359.  
  360.                   if (var6) {
  361.                      return var8;
  362.                   }
  363.  
  364.                   ++var12;
  365.                   if (var12 >= this.getViewCount()) {
  366.                      return var8;
  367.                   }
  368.                }
  369.  
  370.                var10 = this.getView(var12);
  371.                var7 = this.getInsideAllocation(var3);
  372.                this.childAllocation(var12, var7);
  373.                var8 = var10.getNextVisualPositionFrom(-1, var2, var7, var4, var5);
  374.             }
  375.          }
  376.  
  377.          return var8;
  378.       }
  379.    }
  380.  
  381.    protected int getNextEastWestVisualPositionFrom(int var1, Position.Bias var2, Shape var3, int var4, Position.Bias[] var5) throws BadLocationException {
  382.       if (this.getViewCount() == 0) {
  383.          return var1;
  384.       } else {
  385.          boolean var6 = var4 == 3;
  386.          Rectangle var7 = this.getInsideAllocation(var3);
  387.          int var9 = var6 ? 1 : -1;
  388.          int var8;
  389.          if (var1 == -1) {
  390.             View var10 = var6 ? this.getView(0) : this.getView(this.getViewCount() - 1);
  391.             this.childAllocation(0, var7);
  392.             var8 = var10.getNextVisualPositionFrom(var1, var2, var7, var4, var5);
  393.             if (var8 == -1 && var6 && this.getViewCount() > 1) {
  394.                var10 = this.getView(1);
  395.                var7 = this.getInsideAllocation(var3);
  396.                this.childAllocation(1, var7);
  397.                var8 = var10.getNextVisualPositionFrom(-1, var5[0], var7, var4, var5);
  398.             }
  399.          } else {
  400.             int var19;
  401.             if (var2 == Bias.Backward) {
  402.                var19 = this.getViewIndexAtPosition(Math.max(((View)this).getStartOffset(), var1 - 1));
  403.             } else {
  404.                var19 = this.getViewIndexAtPosition(var1);
  405.             }
  406.  
  407.             View var11 = this.getView(var19);
  408.             this.childAllocation(var19, var7);
  409.             var8 = var11.getNextVisualPositionFrom(var1, var2, var7, var4, var5);
  410.             if (var8 == -1) {
  411.                if (this.flipEastAndWestAtEnds(var1, var2)) {
  412.                   var9 *= -1;
  413.                }
  414.  
  415.                var19 += var9;
  416.                if (var19 >= 0 && var19 < this.getViewCount()) {
  417.                   var11 = this.getView(var19);
  418.                   var7 = this.getInsideAllocation(var3);
  419.                   this.childAllocation(var19, var7);
  420.                   var8 = var11.getNextVisualPositionFrom(-1, var2, var7, var4, var5);
  421.                   if (var8 == var1 && var8 != -1 && var5[0] != var2) {
  422.                      var7 = this.getInsideAllocation(var3);
  423.                      this.childAllocation(var19, var7);
  424.                      var8 = var11.getNextVisualPositionFrom(var8, var5[0], var7, var4, var5);
  425.                   }
  426.                }
  427.             } else {
  428.                if (this.flipEastAndWestAtEnds(var1, var2)) {
  429.                   var9 *= -1;
  430.                }
  431.  
  432.                var19 += var9;
  433.                if (var5[0] != var2 && (var9 == 1 && var11.getEndOffset() == var8 || var9 == -1 && var11.getStartOffset() == var8) && var19 >= 0 && var19 < this.getViewCount()) {
  434.                   var11 = this.getView(var19);
  435.                   var7 = this.getInsideAllocation(var3);
  436.                   this.childAllocation(var19, var7);
  437.                   Position.Bias var12 = var5[0];
  438.                   int var13 = var11.getNextVisualPositionFrom(-1, var2, var7, var4, var5);
  439.                   if (var5[0] == var2) {
  440.                      var8 = var13;
  441.                   } else {
  442.                      var5[0] = var12;
  443.                   }
  444.                }
  445.             }
  446.          }
  447.  
  448.          return var8;
  449.       }
  450.    }
  451.  
  452.    protected boolean flipEastAndWestAtEnds(int var1, Position.Bias var2) {
  453.       return false;
  454.    }
  455. }
  456.