home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2001 December / dppcpro1201.iso / Extras / maple / Viewer / WebEQ / MMLViewerInstall.cab / MMLViewerApplet.cab / webeq3 / schema / MTable.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-05-24  |  6.8 KB  |  349 lines

  1. package webeq3.schema;
  2.  
  3. import java.awt.Graphics;
  4. import java.io.PrintStream;
  5. import java.util.StringTokenizer;
  6. import webeq3.app.Equation;
  7. import webeq3.array.ArrayDims;
  8. import webeq3.constants.ArrayConstants;
  9. import webeq3.constants.AttributeConstants;
  10.  
  11. public class MTable extends LineBreakRewriter implements ArrayConstants, AttributeConstants {
  12.    ArrayDims dims = null;
  13.    // $FF: renamed from: o java.io.PrintStream
  14.    PrintStream field_0;
  15.    int align;
  16.    int center_axis;
  17.    int xwidth;
  18.    // $FF: renamed from: em int
  19.    int field_1;
  20.    boolean equalrows;
  21.    boolean equalcols;
  22.    public int savedCursorLeft;
  23.    public int savedCursorTop;
  24.  
  25.    public MTable(Box var1) {
  26.       super(var1);
  27.       this.field_0 = System.out;
  28.       this.align = 2;
  29.       this.center_axis = 0;
  30.       this.xwidth = 0;
  31.       this.field_1 = 0;
  32.       this.equalrows = true;
  33.       this.equalcols = true;
  34.       this.savedCursorLeft = -1;
  35.       this.savedCursorTop = -1;
  36.       super.type = 80;
  37.    }
  38.  
  39.    public MTable() {
  40.       this.field_0 = System.out;
  41.       this.align = 2;
  42.       this.center_axis = 0;
  43.       this.xwidth = 0;
  44.       this.field_1 = 0;
  45.       this.equalrows = true;
  46.       this.equalcols = true;
  47.       this.savedCursorLeft = -1;
  48.       this.savedCursorTop = -1;
  49.       super.type = 80;
  50.    }
  51.  
  52.    public MTable(Equation var1) {
  53.       super(var1);
  54.       this.field_0 = System.out;
  55.       this.align = 2;
  56.       this.center_axis = 0;
  57.       this.xwidth = 0;
  58.       this.field_1 = 0;
  59.       this.equalrows = true;
  60.       this.equalcols = true;
  61.       this.savedCursorLeft = -1;
  62.       this.savedCursorTop = -1;
  63.       super.type = 80;
  64.    }
  65.  
  66.    public void size() {
  67.       boolean var2 = false;
  68.       this.dims = new ArrayDims();
  69.       super.useLinearForm = false;
  70.       Object var3 = null;
  71.  
  72.       for(int var4 = 0; var4 < super.children.size(); ++var4) {
  73.          MTr var14 = (MTr)((Box)this).getChild(var4);
  74.          var14.useLinearForm = false;
  75.  
  76.          for(int var5 = 0; var5 < var14.children.size(); ++var5) {
  77.             ((MTd)((Box)var14).getChild(var5)).useLinearForm = false;
  78.          }
  79.       }
  80.  
  81.       super.bgcolor = ((Box)this).resolveColor(17);
  82.       super.fgcolor = ((Box)this).resolveColor(4);
  83.       ((Box)this).setfont(super.depth);
  84.       this.xwidth = super.fm.charWidth('x');
  85.       this.field_1 = super.fm.charWidth('M');
  86.       this.dims.setXDims(this.xwidth, super.xheight);
  87.       this.setUnparsedAttributes();
  88.       this.storeParsedAttributes();
  89.  
  90.       for(int var17 = 0; var17 < super.children.size(); ++var17) {
  91.          MTr var1 = (MTr)((Box)this).getChild(var17);
  92.          var1.depth = super.depth;
  93.          var1.setDims(this.dims, var17);
  94.          var1.layout();
  95.       }
  96.  
  97.       this.dims.process();
  98.       int var6 = super.my_view.getDisplayWidth();
  99.       if (super.my_view.linebreak && (double)this.dims.getWidth() > 0.85 * (double)var6) {
  100.          super.useLinearForm = true;
  101.          var3 = null;
  102.  
  103.          for(int var19 = 0; var19 < super.children.size(); ++var19) {
  104.             MTr var16 = (MTr)((Box)this).getChild(var19);
  105.             var16.useLinearForm = true;
  106.  
  107.             for(int var20 = 0; var20 < var16.children.size(); ++var20) {
  108.                ((MTd)((Box)var16).getChild(var20)).useLinearForm = true;
  109.             }
  110.          }
  111.  
  112.          if (super.lb_rewrite == null) {
  113.             super.lb_rewrite = this.table_rewrite();
  114.          }
  115.  
  116.          super.lb_rewrite.layout();
  117.          super.width = super.lb_rewrite.getWidth();
  118.          super.ascent = super.lb_rewrite.getAscent();
  119.          super.descent = super.lb_rewrite.getDescent();
  120.          super.height = super.ascent + super.descent;
  121.       } else {
  122.          boolean var7 = false;
  123.  
  124.          for(int var8 = 0; var8 < super.children.size(); ++var8) {
  125.             MTr var11 = (MTr)((Box)this).getChild(var8);
  126.  
  127.             for(int var9 = 0; var9 < ((Box)var11).getNumChildren(); ++var9) {
  128.                MTd var10 = (MTd)((Box)var11).getChild(var9);
  129.                var7 |= ((Box)var10).stretchTo(this.dims.getRowAscent(var8), this.dims.getRowDescent(var8));
  130.                var7 |= ((Box)var10).widthTo(this.dims.getColWidth(var9));
  131.             }
  132.          }
  133.  
  134.          if (var7) {
  135.             this.dims = new ArrayDims();
  136.             this.dims.setXDims(this.xwidth, super.xheight);
  137.             this.setUnparsedAttributes();
  138.             this.storeParsedAttributes();
  139.  
  140.             for(int var21 = 0; var21 < super.children.size(); ++var21) {
  141.                MTr var12 = (MTr)((Box)this).getChild(var21);
  142.                var12.setDims(this.dims, var21);
  143.                var12.layout();
  144.             }
  145.  
  146.             this.dims.process();
  147.          }
  148.  
  149.          for(int var22 = 0; var22 < super.children.size(); ++var22) {
  150.             MTr var13 = (MTr)((Box)this).getChild(var22);
  151.             var13.width = this.dims.getWidth();
  152.             var13.ascent = this.dims.getRowAscent(var22);
  153.             var13.descent = this.dims.getRowDescent(var22);
  154.             var13.height = this.dims.getRowHeight(var22);
  155.          }
  156.  
  157.          super.width = this.dims.getWidth();
  158.          super.ascent = this.dims.getAscent();
  159.          super.descent = this.dims.getDescent();
  160.          super.height = super.ascent + super.descent;
  161.       }
  162.  
  163.    }
  164.  
  165.    public void position() {
  166.       if (super.useLinearForm) {
  167.          super.lb_rewrite.setTop(0);
  168.          super.lb_rewrite.setLeft(0);
  169.          super.lb_rewrite.position();
  170.       } else {
  171.          byte var2 = 0;
  172.          int var3 = this.dims.getFrameHeight();
  173.  
  174.          for(int var4 = 0; var4 < super.children.size(); ++var4) {
  175.             Box var1 = ((Box)this).getChild(var4);
  176.             var1.setLeft(var2);
  177.             var1.setTop(var3);
  178.             var1.position();
  179.             var3 += this.dims.getRowHeight(var4) + this.dims.getRowSepHeight(var4);
  180.          }
  181.       }
  182.  
  183.    }
  184.  
  185.    public void paint(Graphics var1, int var2, int var3) {
  186.       if (super.useLinearForm) {
  187.          super.lb_rewrite.paint(var1, var2 + super.left, var3 + super.top);
  188.       } else {
  189.          super.paint(var1, var2, var3);
  190.          if (super.reverse_video) {
  191.             var1.setColor(super.bgcolor);
  192.          } else {
  193.             var1.setColor(super.fgcolor);
  194.          }
  195.  
  196.          this.dims.drawSeps(var1, var2 + super.left + super.my_view.offsetx, var3 + super.top + super.my_view.offsety);
  197.       }
  198.  
  199.       super.absleft = var2 + super.left;
  200.       super.abstop = var3 + super.top;
  201.    }
  202.  
  203.    private void setUnparsedAttributes() {
  204.       String var1 = ((Box)this).getAttributeByIndex(29).trim();
  205.       int var2 = 0;
  206.       int var3 = var1.indexOf(" ");
  207.       if (var3 > 0) {
  208.          try {
  209.             var2 = Integer.parseInt(var1.substring(var3 + 1).trim());
  210.             var1 = var1.substring(0, var3);
  211.          } catch (NumberFormatException var9) {
  212.             var1 = var1.substring(var3);
  213.          }
  214.       }
  215.  
  216.       if (var1.equals("top")) {
  217.          this.dims.setMatrixAlign(10, var2);
  218.       } else if (var1.equals("bottom")) {
  219.          this.dims.setMatrixAlign(11, var2);
  220.       } else if (var1.equals("center")) {
  221.          this.dims.setMatrixAlign(2, var2);
  222.       } else if (var1.equals("baseline")) {
  223.          this.dims.setMatrixAlign(12, var2);
  224.       } else {
  225.          this.dims.setMatrixAlign(13, var2);
  226.       }
  227.  
  228.       var1 = ((Box)this).getAttributeByIndex(36).trim();
  229.       if (var1.equals("solid")) {
  230.          this.dims.setFrame(5);
  231.       } else if (var1.equals("dashed")) {
  232.          this.dims.setFrame(6);
  233.       } else {
  234.          this.dims.setFrame(7);
  235.       }
  236.  
  237.       var1 = ((Box)this).getAttributeByIndex(37);
  238.       StringTokenizer var4 = new StringTokenizer(var1.toLowerCase());
  239.  
  240.       try {
  241.          float var5;
  242.          float var6;
  243.          if (var4.hasMoreTokens()) {
  244.             var6 = Float.valueOf(((Box)this).processUnits(var4.nextToken(), 0, 37));
  245.             if (var4.hasMoreTokens()) {
  246.                var5 = Float.valueOf(((Box)this).processUnits(var4.nextToken(), 1, 37));
  247.             } else {
  248.                var5 = 0.5F;
  249.             }
  250.          } else {
  251.             var6 = 0.4F;
  252.             var5 = 0.5F;
  253.          }
  254.  
  255.          this.dims.setFrameSpacing((int)(var6 * (float)this.field_1), (int)(var5 * (float)this.xwidth));
  256.       } catch (NumberFormatException var8) {
  257.       }
  258.  
  259.       if (((Box)this).getAttributeByIndex(38).trim().equals("false")) {
  260.          this.dims.setEqualRows(false);
  261.       }
  262.  
  263.       if (((Box)this).getAttributeByIndex(39).trim().equals("false")) {
  264.          this.dims.setEqualCols(false);
  265.       }
  266.  
  267.    }
  268.  
  269.    private void storeParsedAttributes() {
  270.       Object var1 = null;
  271.       String var2 = ((Box)this).getAttributeByIndex(30);
  272.       StringTokenizer var3 = new StringTokenizer(var2.toLowerCase());
  273.  
  274.       while(var3.hasMoreTokens()) {
  275.          String var5 = var3.nextToken();
  276.          this.dims.RowAlignValues.addElement(var5);
  277.       }
  278.  
  279.       var2 = ((Box)this).getAttributeByIndex(31);
  280.       var3 = new StringTokenizer(var2.toLowerCase());
  281.  
  282.       while(var3.hasMoreTokens()) {
  283.          String var6 = var3.nextToken();
  284.          this.dims.ColAlignValues.addElement(var6);
  285.       }
  286.  
  287.       var2 = ((Box)this).getAttributeByIndex(32);
  288.       var3 = new StringTokenizer(var2.toLowerCase());
  289.  
  290.       while(var3.hasMoreTokens()) {
  291.          String var7 = var3.nextToken();
  292.          Float var4 = new Float(Float.valueOf(var7) * (float)this.xwidth);
  293.          this.dims.RowSpacingValues.addElement(var4);
  294.       }
  295.  
  296.       var2 = ((Box)this).getAttributeByIndex(33);
  297.       var3 = new StringTokenizer(var2.toLowerCase());
  298.  
  299.       while(var3.hasMoreTokens()) {
  300.          String var8 = var3.nextToken();
  301.          Float var21 = new Float(Float.valueOf(var8) * (float)this.field_1);
  302.          this.dims.ColSpacingValues.addElement(var21);
  303.       }
  304.  
  305.       var2 = ((Box)this).getAttributeByIndex(34);
  306.       var3 = new StringTokenizer(var2.toLowerCase());
  307.  
  308.       while(var3.hasMoreTokens()) {
  309.          String var9 = var3.nextToken();
  310.          this.dims.RowLinesValues.addElement(var9);
  311.       }
  312.  
  313.       var2 = ((Box)this).getAttributeByIndex(35);
  314.       var3 = new StringTokenizer(var2.toLowerCase());
  315.  
  316.       while(var3.hasMoreTokens()) {
  317.          String var10 = var3.nextToken();
  318.          this.dims.ColLinesValues.addElement(var10);
  319.       }
  320.  
  321.    }
  322.  
  323.    private MRow table_rewrite() {
  324.       MRow var1 = new MRow(((Box)this).getParent());
  325.       MO var2 = new MO(var1);
  326.       ((Box)var2).addData("[");
  327.       ((Box)var1).addChild(var2);
  328.  
  329.       for(int var5 = 0; var5 < super.children.size() - 1; ++var5) {
  330.          MTr var3 = (MTr)((Box)this).getChild(var5);
  331.          ((Box)var1).addChild(var3);
  332.          ((Box)var3).setParent(this);
  333.          var3.rewrite();
  334.          MO var4 = new MO(var1);
  335.          ((Box)var4).addData(",");
  336.          ((Box)var1).addChild(var4);
  337.       }
  338.  
  339.       MTr var7 = (MTr)((Box)this).getChild(super.children.size() - 1);
  340.       ((Box)var1).addChild(var7);
  341.       ((Box)var7).setParent(this);
  342.       var7.rewrite();
  343.       var2 = new MO(var1);
  344.       ((Box)var2).addData("]");
  345.       ((Box)var1).addChild(var2);
  346.       return var1;
  347.    }
  348. }
  349.