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

  1. package webeq3;
  2.  
  3. import java.awt.AWTEvent;
  4. import java.awt.BorderLayout;
  5. import java.awt.Button;
  6. import java.awt.CheckboxMenuItem;
  7. import java.awt.Color;
  8. import java.awt.Component;
  9. import java.awt.Container;
  10. import java.awt.Dialog;
  11. import java.awt.FileDialog;
  12. import java.awt.FlowLayout;
  13. import java.awt.Font;
  14. import java.awt.Frame;
  15. import java.awt.Graphics;
  16. import java.awt.Label;
  17. import java.awt.Menu;
  18. import java.awt.MenuBar;
  19. import java.awt.MenuItem;
  20. import java.awt.Panel;
  21. import java.awt.TextField;
  22. import java.awt.Window;
  23. import java.awt.event.ActionEvent;
  24. import java.awt.event.ActionListener;
  25. import java.awt.event.ItemEvent;
  26. import java.awt.event.ItemListener;
  27. import java.io.DataInputStream;
  28. import java.io.FileInputStream;
  29. import java.io.IOException;
  30. import java.util.EventObject;
  31. import java.util.Vector;
  32. import webeq3.app.Handler;
  33. import webeq3.app.PEquation;
  34. import webeq3.fonts.FontBroker;
  35. import webeq3.parser.Parser;
  36. import webeq3.parser.mathml.P2CConverter;
  37. import webeq3.schema.Box;
  38. import webeq3.schema.ContentBox;
  39. import webeq3.schema.Normalizer;
  40. import webeq3.util.ErrorHandler;
  41. import webeq3.util.OutputHandler;
  42.  
  43. public class TestDrive extends Frame implements ActionListener, ItemListener {
  44.    Vector mathMLVector = new Vector();
  45.    Vector descVector = new Vector();
  46.    int idx = 0;
  47.    Parser parser;
  48.    P2CConverter p2cconverter;
  49.    // $FF: renamed from: eq webeq3.app.PEquation
  50.    PEquation field_0;
  51.    Handler handler;
  52.    ErrorHandler err;
  53.    Button nextButton;
  54.    Button prevButton;
  55.    Button speedButton;
  56.    TextField ansInput;
  57.    TextField numInput;
  58.    Label description;
  59.    Frame rawframe = new Frame("Raw MathML Source");
  60.    Frame presentationframe = new Frame("Presentation Source");
  61.    Frame normalizedframe = new Frame("Normalized Presentation Source");
  62.    Frame contentframe = new Frame("Converted Content Source");
  63.    OutputHandler oh_raw;
  64.    OutputHandler oh_presentation;
  65.    OutputHandler oh_normalized;
  66.    OutputHandler oh_content;
  67.    static long time = 0L;
  68.    // $FF: renamed from: rt java.lang.Runtime
  69.    Runtime field_1;
  70.    boolean report;
  71.    Box rawRoot;
  72.    Box presentationRoot;
  73.    Box normalizedRoot;
  74.    Box contentRoot;
  75.    String ansfile;
  76.  
  77.    public TestDrive() {
  78.       this.oh_raw = new OutputHandler(this.rawframe);
  79.       this.oh_presentation = new OutputHandler(this.presentationframe);
  80.       this.oh_normalized = new OutputHandler(this.normalizedframe);
  81.       this.oh_content = new OutputHandler(this.contentframe);
  82.       this.field_1 = Runtime.getRuntime();
  83.       this.report = false;
  84.       this.ansfile = "answers.txt";
  85.    }
  86.  
  87.    public void actionPerformed(ActionEvent var1) {
  88.       String var2 = var1.getActionCommand();
  89.       if (var2.equals("Open")) {
  90.          FileDialog var3 = new FileDialog(this, "WebEQ: Open", 0);
  91.          var3.setDirectory("c:\\");
  92.          ((Dialog)var3).show();
  93.          if (var3.getDirectory() != null && var3.getFile() != null) {
  94.             String var4 = var3.getFile();
  95.             if (var4.endsWith(".*.*")) {
  96.                var3.setFile(var4.substring(0, var4.length() - 4));
  97.             }
  98.  
  99.             String var5 = var3.getDirectory();
  100.             System.out.println("Loading from file: " + var5 + var4);
  101.             this.initFromFile(var5 + var4);
  102.             ((Component)this).repaint();
  103.          }
  104.       } else if (var2.equals("Raw MathML Source")) {
  105.          this.oh_raw.show();
  106.       } else if (var2.equals("Presentation Source")) {
  107.          this.oh_presentation.show();
  108.       } else if (var2.equals("Normalized Source")) {
  109.          this.oh_normalized.show();
  110.       } else if (var2.equals("Content Source")) {
  111.          this.oh_content.show();
  112.       } else if (var2.equals("Exit")) {
  113.          System.exit(0);
  114.       } else if (((long)((AWTEvent)var1).getID() & 8L) != 0L) {
  115.          this.idx = Integer.parseInt(var2);
  116.          this.setEquation(this.idx);
  117.          ((Component)this).repaint();
  118.       }
  119.  
  120.    }
  121.  
  122.    private void initFromFile(String var1) {
  123.       this.descVector.removeAllElements();
  124.       this.mathMLVector.removeAllElements();
  125.       this.idx = 0;
  126.  
  127.       try {
  128.          DataInputStream var2 = new DataInputStream(new FileInputStream(var1));
  129.          String var3 = var2.readLine();
  130.          boolean var4 = true;
  131.  
  132.          for(String var5 = ""; var3 != null; var3 = var2.readLine()) {
  133.             if (var4) {
  134.                if (!"".equals(var3)) {
  135.                   this.descVector.addElement(var3);
  136.                   var4 = false;
  137.                }
  138.             } else {
  139.                int var6 = var3.indexOf("</math>");
  140.                if (var6 != -1) {
  141.                   var5 = var5 + var3.substring(0, var6 + 7);
  142.                   this.mathMLVector.addElement(var5);
  143.                   var5 = var3.substring(var6 + 7);
  144.                   var4 = true;
  145.                } else {
  146.                   var5 = var5 + var3;
  147.                }
  148.             }
  149.          }
  150.       } catch (IOException var7) {
  151.          System.out.println("Problems reading options from file: " + var1);
  152.          System.out.println("Going on anyway...");
  153.       }
  154.  
  155.       this.setEquation(this.idx);
  156.    }
  157.  
  158.    void initTests(String[] var1) {
  159.       if (var1.length == 0) {
  160.          this.descVector.addElement("x + y z");
  161.          this.mathMLVector.addElement("<math>><mi>x</mi><mo>+</mo><mi>y</mi><mi>z</mi></math>");
  162.          this.descVector.addElement("x + 2");
  163.          this.mathMLVector.addElement("<math><mrow><mi>x</mi><mo>+</mo><mn>2</mn></mrow></math>");
  164.          this.descVector.addElement("2 ^ 2");
  165.          this.mathMLVector.addElement("<math><mrow><msup><mn>2</mn><mn>2</mn></msup></mrow></math>");
  166.          this.descVector.addElement("a + b - c");
  167.          this.mathMLVector.addElement("<apply><plus/><ci>a</ci><apply><minus/><ci>b</ci><ci>c</ci></apply></apply>");
  168.          this.descVector.addElement("sin(a + b)");
  169.          this.mathMLVector.addElement("<apply><sin/><apply><plus/><ci>a</ci><ci>b</ci></apply></apply>");
  170.          this.descVector.addElement("(x + y) ^ (n - 3)");
  171.          this.mathMLVector.addElement("<apply><power/><apply><plus/><ci> x </ci><ci> y </ci></apply><apply><minus/><cn> n </cn><cn> 3 </cn></apply></apply>");
  172.       } else {
  173.          this.initFromFile(var1[0]);
  174.       }
  175.  
  176.    }
  177.  
  178.    public void itemStateChanged(ItemEvent var1) {
  179.       CheckboxMenuItem var2 = (CheckboxMenuItem)((EventObject)var1).getSource();
  180.       if (((MenuItem)var2).getLabel().equals("Linebreaks")) {
  181.          this.field_0.linebreak = var2.getState();
  182.       } else if (((MenuItem)var2).getLabel().equals("Allow Cut")) {
  183.          this.field_0.allow_cut = var2.getState();
  184.       }
  185.  
  186.       ((Component)this).repaint();
  187.    }
  188.  
  189.    public static void main(String[] var0) {
  190.       time = System.currentTimeMillis();
  191.       TestDrive var1 = new TestDrive();
  192.       var1.start(var0);
  193.    }
  194.  
  195.    public void paint(Graphics var1) {
  196.       long var2 = System.currentTimeMillis();
  197.       this.field_0.redraw();
  198.       this.field_0.repaint();
  199.       this.presentationRoot = this.field_0.root.getCopy();
  200.  
  201.       try {
  202.          this.normalizedRoot = this.field_0.root.getCopy();
  203.          Normalizer.normalize(this.normalizedRoot);
  204.       } catch (Exception var6) {
  205.          System.out.println("Normalization failed: " + var6);
  206.       }
  207.  
  208.       try {
  209.          this.p2cconverter.convert(this.normalizedRoot, this.field_0.markupRoot);
  210.          this.contentRoot = this.field_0.markupRoot.getCopy();
  211.       } catch (Exception var5) {
  212.          System.out.println("Conversion failed: " + var5);
  213.       }
  214.  
  215.       this.oh_raw.reset();
  216.       this.rawRoot.printDebug("", this.oh_raw);
  217.       this.oh_presentation.reset();
  218.       this.presentationRoot.printDebug("", this.oh_presentation);
  219.       this.oh_normalized.reset();
  220.       this.normalizedRoot.printDebug("", this.oh_normalized);
  221.       this.oh_content.reset();
  222.       this.contentRoot.print("", this.oh_content);
  223.       if (this.report) {
  224.          System.out.println("   redraw/repaint: " + (System.currentTimeMillis() - var2));
  225.          this.field_1.gc();
  226.          System.out.println("      free memory: " + this.field_1.freeMemory() + " out of " + this.field_1.totalMemory());
  227.       }
  228.  
  229.    }
  230.  
  231.    public void setEquation(int var1) {
  232.       this.numInput.setText("" + var1);
  233.       String var2 = (String)this.descVector.elementAt(var1);
  234.       short var3 = 200;
  235.       if (var2.length() < var3) {
  236.          for(int var4 = 0; var4 < var3 - var2.length(); ++var4) {
  237.             var2 = var2 + " ";
  238.          }
  239.       }
  240.  
  241.       this.description.setText(var2);
  242.       String var9 = (String)this.mathMLVector.elementAt(var1);
  243.       this.field_0.setRoot(new Box(this.field_0), new ContentBox(this.field_0));
  244.       this.field_0.initBG();
  245.       long var5 = System.currentTimeMillis();
  246.  
  247.       try {
  248.          this.parser.parse(var9, "", this.field_0.markupRoot, this.err);
  249.          this.field_0.registerActions();
  250.       } catch (Exception var8) {
  251.          System.out.println(var8);
  252.          ((Throwable)var8).printStackTrace();
  253.       }
  254.  
  255.       if (this.report) {
  256.          System.out.println("   parsing took: " + (System.currentTimeMillis() - var5));
  257.       }
  258.  
  259.       this.rawRoot = this.field_0.markupRoot.getCopy();
  260.    }
  261.  
  262.    void start(String[] var1) {
  263.       System.out.println("  starting GUI init: " + (System.currentTimeMillis() - time));
  264.       ((Window)this).addWindowListener(new TDWindowAdapter(this));
  265.       ((Container)this).setLayout(new BorderLayout(5, 5));
  266.       ((Component)this).setSize(600, 400);
  267.       ((Component)this).setBackground(Color.white);
  268.       MenuBar var2 = new MenuBar();
  269.       Menu var3 = new Menu("File");
  270.       var3.add(new MenuItem("Open"));
  271.       var3.add(new MenuItem("-"));
  272.       var3.add(new MenuItem("Exit"));
  273.       ((MenuItem)var3).addActionListener(this);
  274.       var2.add(var3);
  275.       Menu var4 = new Menu("Parameters");
  276.       CheckboxMenuItem var5 = new CheckboxMenuItem("Linebreaks");
  277.       var5.addItemListener(this);
  278.       var4.add(var5);
  279.       var5 = new CheckboxMenuItem("Allow Cut");
  280.       var5.addItemListener(this);
  281.       var4.add(var5);
  282.       var2.add(var4);
  283.       Menu var6 = new Menu("View");
  284.       var6.add(new MenuItem("Raw MathML Source"));
  285.       var6.add(new MenuItem("Presentation Source"));
  286.       var6.add(new MenuItem("Normalized Source"));
  287.       var6.add(new MenuItem("Content Source"));
  288.       ((MenuItem)var6).addActionListener(this);
  289.       var2.add(var6);
  290.       ((Frame)this).setMenuBar(var2);
  291.       Color var7 = new Color(255, 245, 197);
  292.       this.oh_raw.setBackground(var7);
  293.       this.oh_raw.setColor(var7);
  294.       this.oh_raw.setTitle("Raw MathML Source");
  295.       this.oh_raw.setSize(400, 300);
  296.       this.oh_presentation.setBackground(var7);
  297.       this.oh_presentation.setColor(var7);
  298.       this.oh_presentation.setTitle("Presentation Source");
  299.       this.oh_presentation.setSize(400, 300);
  300.       this.oh_normalized.setBackground(var7);
  301.       this.oh_normalized.setColor(var7);
  302.       this.oh_normalized.setTitle("Normalized Source");
  303.       this.oh_normalized.setSize(400, 300);
  304.       this.oh_content.setBackground(var7);
  305.       this.oh_content.setColor(var7);
  306.       this.oh_content.setTitle("Content Source");
  307.       this.oh_content.setSize(400, 300);
  308.       Panel var8 = new Panel();
  309.       ((Container)var8).setLayout(new FlowLayout(0));
  310.       ((Component)var8).setBackground(new Color(220, 220, 220));
  311.       String var9 = "prev";
  312.       this.prevButton = new Button(var9);
  313.       this.prevButton.setFont(new Font("TimesRoman", 0, 14));
  314.       this.prevButton.addMouseListener(new TDButtonAdapter(this, var9));
  315.       ((Container)var8).add(this.prevButton);
  316.       var9 = "next";
  317.       this.nextButton = new Button(var9);
  318.       this.nextButton.setFont(new Font("TimesRoman", 0, 14));
  319.       this.nextButton.addMouseListener(new TDButtonAdapter(this, var9));
  320.       ((Container)var8).add(this.nextButton);
  321.       var9 = "write answers";
  322.       this.speedButton = new Button(var9);
  323.       this.speedButton.setFont(new Font("TimesRoman", 0, 14));
  324.       this.speedButton.addMouseListener(new TDButtonAdapter(this, var9));
  325.       ((Container)var8).add(this.speedButton);
  326.       Label var10 = new Label("Test #");
  327.       var10.setAlignment(2);
  328.       ((Container)var8).add(var10);
  329.       this.numInput = new TextField(3);
  330.       this.numInput.setFont(new Font("TimesRoman", 0, 14));
  331.       this.numInput.addActionListener(this);
  332.       ((Container)var8).add(this.numInput);
  333.       Label var11 = new Label("Answer File:");
  334.       ((Container)var8).add(var11);
  335.       this.ansInput = new TextField(20);
  336.       this.ansInput.setFont(new Font("TimesRoman", 0, 14));
  337.       ((Container)var8).add(this.ansInput);
  338.       this.description = new Label();
  339.       this.description.setAlignment(0);
  340.       ((Container)var8).add(this.description);
  341.       ((Container)this).add(var8, "North");
  342.       System.out.println("  starting WebEQ init: " + (System.currentTimeMillis() - time));
  343.       this.handler = new Handler();
  344.       this.handler.setParameters(this, var1);
  345.       this.err = new ErrorHandler();
  346.       this.field_0 = new PEquation(this.handler);
  347.       this.field_0.linebreak = false;
  348.       this.field_0.setControls(true);
  349.       this.field_0.setPadding(5);
  350.       this.field_0.allow_cut = false;
  351.       this.field_0.registerControls();
  352.       this.field_0.setPointSize(36);
  353.       this.field_0.fixSize(400, 200);
  354.       FontBroker.initialize(true);
  355.       ((Container)this).add(this.field_0, "Center");
  356.  
  357.       try {
  358.          this.parser = (Parser)Class.forName("webeq3.parser.mathml.mathml").newInstance();
  359.          this.parser.init(this.handler);
  360.       } catch (InstantiationException var15) {
  361.          System.out.println(var15);
  362.       } catch (IllegalAccessException var16) {
  363.          System.out.println(var16);
  364.       } catch (ClassNotFoundException var17) {
  365.          System.out.println(var17);
  366.       }
  367.  
  368.       this.p2cconverter = new P2CConverter();
  369.       this.initTests(var1);
  370.       System.out.println("  finished reading test file: " + (System.currentTimeMillis() - time));
  371.       this.setEquation(this.idx);
  372.       ((Window)this).show();
  373.       System.out.println("  finished all initialization: " + (System.currentTimeMillis() - time));
  374.       ((Component)this).repaint();
  375.       System.out.println("total elapsed time: " + (System.currentTimeMillis() - time));
  376.    }
  377. }
  378.