home *** CD-ROM | disk | FTP | other *** search
- package webeq3;
-
- import java.awt.AWTEvent;
- import java.awt.BorderLayout;
- import java.awt.Button;
- import java.awt.CheckboxMenuItem;
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.FileDialog;
- import java.awt.FlowLayout;
- import java.awt.Font;
- import java.awt.Frame;
- import java.awt.Graphics;
- import java.awt.Label;
- import java.awt.Menu;
- import java.awt.MenuBar;
- import java.awt.MenuItem;
- import java.awt.Panel;
- import java.awt.TextField;
- import java.awt.Window;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.ItemEvent;
- import java.awt.event.ItemListener;
- import java.io.DataInputStream;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.util.EventObject;
- import java.util.Vector;
- import webeq3.app.Handler;
- import webeq3.app.PEquation;
- import webeq3.fonts.FontBroker;
- import webeq3.parser.Parser;
- import webeq3.parser.mathml.P2CConverter;
- import webeq3.parser.mathml.P2CConverterException;
- import webeq3.schema.Box;
- import webeq3.schema.ContentBox;
- import webeq3.schema.MScripts;
- import webeq3.schema.Normalizer;
- import webeq3.util.ErrorHandler;
- import webeq3.util.OutputHandler;
-
- public class P2CTester extends Frame implements ActionListener, ItemListener {
- Vector mathMLVector = new Vector();
- Vector normalizedVector = new Vector();
- Vector answerVector = new Vector();
- Vector descVector = new Vector();
- int idx = 0;
- Parser parser;
- P2CConverter p2cconverter;
- // $FF: renamed from: eq webeq3.app.PEquation
- PEquation field_0;
- Handler handler;
- ErrorHandler err;
- Button nextButton;
- Button prevButton;
- Button speedButton;
- TextField numInput;
- Label description;
- Frame rawframe = new Frame("Raw MathML Source");
- Frame presentationframe = new Frame("Presentation Source");
- Frame normalizedframe = new Frame("Normalized Presentation Source");
- Frame contentframe = new Frame("Converted Content Source");
- OutputHandler oh_raw;
- OutputHandler oh_presentation;
- OutputHandler oh_normalized;
- OutputHandler oh_content;
- static long time = 0L;
- // $FF: renamed from: rt java.lang.Runtime
- Runtime field_1;
- boolean report;
- Box rawRoot;
- Box presentationRoot;
- Box normalizedRoot;
- Box contentRoot;
- Box answerNormalizedRoot;
- Box answerRoot;
-
- public P2CTester() {
- this.oh_raw = new OutputHandler(this.rawframe);
- this.oh_presentation = new OutputHandler(this.presentationframe);
- this.oh_normalized = new OutputHandler(this.normalizedframe);
- this.oh_content = new OutputHandler(this.contentframe);
- this.field_1 = Runtime.getRuntime();
- this.report = false;
- }
-
- public void actionPerformed(ActionEvent var1) {
- String var2 = var1.getActionCommand();
- if (var2.equals("Open")) {
- FileDialog var3 = new FileDialog(this, "WebEQ: Open", 0);
- var3.setDirectory("c:\\");
- ((Component)var3).setVisible(true);
- if (var3.getDirectory() != null && var3.getFile() != null) {
- String var4 = var3.getFile();
- if (var4.endsWith(".*.*")) {
- var3.setFile(var4.substring(0, var4.length() - 4));
- }
-
- String var5 = var3.getDirectory();
- System.out.println("Loading from file: " + var5 + var4);
- this.initFromFile(var5 + var4);
- ((Component)this).repaint();
- }
- } else if (var2.equals("Raw MathML Source")) {
- this.oh_raw.setVisible(true);
- } else if (var2.equals("Presentation Source")) {
- this.oh_presentation.setVisible(true);
- } else if (var2.equals("Normalized Source")) {
- this.oh_normalized.setVisible(true);
- } else if (var2.equals("Content Source")) {
- this.oh_content.setVisible(true);
- } else if (var2.equals("Exit")) {
- System.exit(0);
- } else if (((long)((AWTEvent)var1).getID() & 8L) != 0L) {
- this.idx = Integer.parseInt(var2);
- this.setEquation(this.idx);
- ((Component)this).repaint();
- }
-
- }
-
- private void initFromFile(String var1) {
- this.descVector.removeAllElements();
- this.mathMLVector.removeAllElements();
- this.answerVector.removeAllElements();
- this.idx = 0;
-
- try {
- DataInputStream var2 = new DataInputStream(new FileInputStream(var1));
- String var3 = var2.readLine();
- boolean var4 = true;
- boolean var5 = false;
- boolean var6 = false;
-
- for(String var7 = ""; var3 != null; var3 = var2.readLine()) {
- if (var4) {
- if (!"".equals(var3)) {
- this.descVector.addElement(var3);
- var4 = false;
- var5 = true;
- }
- } else {
- int var8 = var3.indexOf("</math>");
- if (var8 != -1) {
- var7 = var7 + var3.substring(0, var8 + 7);
- if (var6) {
- this.normalizedVector.addElement(var7);
- var7 = var3.substring(var8 + 7);
- var6 = false;
- } else if (var5) {
- this.mathMLVector.addElement(var7);
- var7 = var3.substring(var8 + 7);
- var5 = false;
- var6 = true;
- } else {
- this.answerVector.addElement(var7);
- var7 = var3.substring(var8 + 7);
- var4 = true;
- }
- } else {
- var7 = var7 + var3;
- }
- }
- }
- } catch (IOException var9) {
- System.out.println("Problems reading options from file: " + var1);
- System.out.println("Going on anyway...");
- }
-
- this.setEquation(this.idx);
- }
-
- void initTests(String[] var1) {
- if (var1.length == 0) {
- this.descVector.addElement("x + y z");
- this.mathMLVector.addElement("<math><mi>x</mi><mo>+</mo><mi>y</mi></math>");
- this.normalizedVector.addElement("<math><mrow><mi>x</mi><mo>+</mo><mi>y</mi></mrow></math>");
- this.answerVector.addElement("<math><apply><plus/><ci>x</ci><ci>y</ci></apply></math>");
- } else {
- this.initFromFile(var1[0]);
- }
-
- }
-
- public void itemStateChanged(ItemEvent var1) {
- CheckboxMenuItem var2 = (CheckboxMenuItem)((EventObject)var1).getSource();
- if (((MenuItem)var2).getLabel().equals("Linebreaks")) {
- this.field_0.linebreak = var2.getState();
- } else if (((MenuItem)var2).getLabel().equals("Allow Cut")) {
- this.field_0.allow_cut = var2.getState();
- }
-
- ((Component)this).repaint();
- }
-
- public static void main(String[] var0) {
- time = System.currentTimeMillis();
- P2CTester var1 = new P2CTester();
- var1.start(var0);
- }
-
- public void paint(Graphics var1) {
- long var2 = System.currentTimeMillis();
- this.field_0.redraw();
- this.field_0.repaint();
- this.presentationRoot = this.field_0.root.getCopy();
-
- try {
- this.normalizedRoot = this.field_0.root.getCopy();
- Normalizer.normalize(this.normalizedRoot);
- } catch (Exception var6) {
- System.out.println("Normalization failed: " + var6);
- }
-
- try {
- Box var4 = this.normalizedRoot.getCopy();
- this.p2cconverter.convert(var4, this.field_0.markupRoot);
- this.contentRoot = this.field_0.markupRoot.getCopy();
- } catch (P2CConverterException var5) {
- System.out.println("P2C conversion failed: " + var5);
- }
-
- this.oh_raw.reset();
- this.rawRoot.print("", this.oh_raw);
- this.oh_presentation.reset();
- this.presentationRoot.print("", this.oh_presentation);
- this.oh_normalized.reset();
- this.normalizedRoot.print("", this.oh_normalized);
- this.oh_content.reset();
- this.contentRoot.print("", this.oh_content);
- if (!this.treeEqualityCheck((ContentBox)this.contentRoot, (ContentBox)this.answerRoot)) {
- this.contentRoot.printDebug();
- this.answerRoot.printDebug();
- }
-
- }
-
- public void setEquation(int var1) {
- this.numInput.setText("" + var1);
- String var2 = (String)this.descVector.elementAt(var1);
- short var3 = 200;
- if (var2.length() < var3) {
- for(int var4 = 0; var4 < var3 - var2.length(); ++var4) {
- var2 = var2 + " ";
- }
- }
-
- this.description.setText(var2);
- String var11 = (String)this.normalizedVector.elementAt(var1);
- this.field_0.setRoot(new Box(this.field_0), new ContentBox(this.field_0));
- this.field_0.initBG();
-
- try {
- this.parser.parse(var11, "", this.field_0.markupRoot, this.err);
- } catch (Exception var10) {
- System.out.println(var10);
- ((Throwable)var10).printStackTrace();
- }
-
- this.answerNormalizedRoot = this.field_0.root.getCopy();
- String var5 = (String)this.answerVector.elementAt(var1);
- this.field_0.setRoot(new Box(this.field_0), new ContentBox(this.field_0));
- this.field_0.initBG();
-
- try {
- this.parser.parse(var5, "", this.field_0.markupRoot, this.err);
- } catch (Exception var9) {
- System.out.println(var9);
- ((Throwable)var9).printStackTrace();
- }
-
- this.answerRoot = this.field_0.markupRoot;
- String var6 = (String)this.mathMLVector.elementAt(var1);
- this.field_0.setRoot(new Box(this.field_0), new ContentBox(this.field_0));
- this.field_0.initBG();
-
- try {
- this.parser.parse(var6, "", this.field_0.markupRoot, this.err);
- this.field_0.registerActions();
- } catch (Exception var8) {
- System.out.println(var8);
- ((Throwable)var8).printStackTrace();
- }
-
- this.rawRoot = this.field_0.markupRoot.getCopy();
- }
-
- void start(String[] var1) {
- ((Window)this).addWindowListener(new TDWindowAdapter(this));
- ((Container)this).setLayout(new BorderLayout(5, 5));
- ((Component)this).setSize(600, 400);
- ((Component)this).setBackground(Color.white);
- MenuBar var2 = new MenuBar();
- Menu var3 = new Menu("File");
- var3.add(new MenuItem("Open"));
- var3.add(new MenuItem("-"));
- var3.add(new MenuItem("Exit"));
- ((MenuItem)var3).addActionListener(this);
- var2.add(var3);
- Menu var4 = new Menu("Parameters");
- CheckboxMenuItem var5 = new CheckboxMenuItem("Linebreaks");
- var5.addItemListener(this);
- var4.add(var5);
- var5 = new CheckboxMenuItem("Allow Cut");
- var5.addItemListener(this);
- var4.add(var5);
- var2.add(var4);
- Menu var6 = new Menu("View");
- var6.add(new MenuItem("Raw MathML Source"));
- var6.add(new MenuItem("Presentation Source"));
- var6.add(new MenuItem("Normalized Source"));
- var6.add(new MenuItem("Content Source"));
- ((MenuItem)var6).addActionListener(this);
- var2.add(var6);
- ((Frame)this).setMenuBar(var2);
- Color var7 = new Color(255, 245, 197);
- this.oh_raw.setBackground(var7);
- this.oh_raw.setColor(var7);
- this.oh_raw.setTitle("Raw MathML Source");
- this.oh_raw.setSize(400, 300);
- this.oh_presentation.setBackground(var7);
- this.oh_presentation.setColor(var7);
- this.oh_presentation.setTitle("Presentation Source");
- this.oh_presentation.setSize(400, 300);
- this.oh_normalized.setBackground(var7);
- this.oh_normalized.setColor(var7);
- this.oh_normalized.setTitle("Normalized Source");
- this.oh_normalized.setSize(400, 300);
- this.oh_content.setBackground(var7);
- this.oh_content.setColor(var7);
- this.oh_content.setTitle("Content Source");
- this.oh_content.setSize(400, 300);
- Panel var8 = new Panel();
- ((Container)var8).setLayout(new FlowLayout(0));
- ((Component)var8).setBackground(new Color(220, 220, 220));
- String var9 = "prev";
- this.prevButton = new Button(var9);
- this.prevButton.setFont(new Font("TimesRoman", 0, 14));
- this.prevButton.addMouseListener(new TDButtonAdapter(this, var9));
- ((Container)var8).add(this.prevButton);
- var9 = "next";
- this.nextButton = new Button(var9);
- this.nextButton.setFont(new Font("TimesRoman", 0, 14));
- this.nextButton.addMouseListener(new TDButtonAdapter(this, var9));
- ((Container)var8).add(this.nextButton);
- var9 = "check all";
- this.speedButton = new Button(var9);
- this.speedButton.setFont(new Font("TimesRoman", 0, 14));
- this.speedButton.addMouseListener(new TDButtonAdapter(this, var9));
- ((Container)var8).add(this.speedButton);
- Label var10 = new Label("Test #");
- var10.setAlignment(2);
- ((Container)var8).add(var10);
- this.numInput = new TextField(3);
- this.numInput.setFont(new Font("TimesRoman", 0, 14));
- this.numInput.addActionListener(this);
- ((Container)var8).add(this.numInput);
- this.description = new Label();
- this.description.setAlignment(0);
- ((Container)var8).add(this.description);
- ((Container)this).add(var8, "North");
- this.handler = new Handler();
- this.handler.setParameters(this, var1);
- this.err = new ErrorHandler();
- this.field_0 = new PEquation(this.handler);
- this.field_0.linebreak = false;
- this.field_0.setControls(true);
- this.field_0.setPadding(5);
- this.field_0.allow_cut = false;
- this.field_0.registerControls();
- this.field_0.setPointSize(36);
- this.field_0.fixSize(400, 200);
- FontBroker.initialize(true);
- ((Container)this).add(this.field_0, "Center");
-
- try {
- this.parser = (Parser)Class.forName("webeq3.parser.mathml.mathml").newInstance();
- this.parser.init(this.handler);
- } catch (InstantiationException var14) {
- System.out.println(var14);
- } catch (IllegalAccessException var15) {
- System.out.println(var15);
- } catch (ClassNotFoundException var16) {
- System.out.println(var16);
- }
-
- this.p2cconverter = new P2CConverter();
- this.initTests(var1);
- this.setEquation(this.idx);
- ((Component)this).setVisible(true);
- ((Component)this).repaint();
- }
-
- public boolean treeEqualityCheck(ContentBox var1, ContentBox var2) {
- boolean var3 = true;
- if (var1.name != null && var2.name != null) {
- var3 &= var1.name.equals(var2.name);
- if (!var3) {
- System.out.println("\nProblem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node " + var1.name + " differs from " + var2.name);
- return false;
- }
- } else if (var1.name != null || var2.name != null) {
- System.out.println("\nProblem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node " + var1.name + " differs from " + var2.name);
- return false;
- }
-
- var3 &= ((Box)var1).getNumChildren() == ((Box)var2).getNumChildren();
- if (!var3) {
- System.out.println("\nProblem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node " + var1.name + " differs in number of children from " + var2.name);
- return false;
- } else {
- if (((Box)var1).getNumChildren() == 0) {
- if (var1.adata != null && var2.adata != null) {
- var3 &= var1.adata.equals(var2.adata);
- if (!var3) {
- System.out.println("\nProblem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node data " + var1.adata + " differs from " + var2.adata);
- return false;
- }
- } else if (var1.adata != null || var2.adata != null) {
- System.out.println("\nProblem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node data " + var1.adata + " differs from " + var2.adata);
- return false;
- }
- }
-
- for(int var4 = 0; var4 < ((Box)var1).getNumChildren(); ++var4) {
- try {
- var3 &= this.treeEqualityCheck((ContentBox)((Box)var1).getChild(var4), (ContentBox)((Box)var2).getChild(var4));
- } catch (ClassCastException var6) {
- }
- }
-
- return var3;
- }
- }
-
- public boolean normalizedTreeEqualityCheck(Box var1, Box var2) {
- boolean var3 = true;
- var3 &= var1.getClass().getName().equals(var2.getClass().getName());
- if (!var3) {
- System.out.println("\nNormalization problem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node " + var1 + " differs from " + var2);
- return false;
- } else {
- var3 &= var1.getNumChildren() == var2.getNumChildren();
- if (var3 || var1 instanceof MScripts && Math.abs(var1.getNumChildren() - var2.getNumChildren()) == 1) {
- var3 = true;
- if (var1.getNumChildren() == 0) {
- if (var1.adata != null && var2.adata != null) {
- var3 &= var1.adata.equals(var2.adata);
- if (!var3) {
- System.out.println("\nNormalization problem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node data " + var1.adata + " differs from " + var2.adata);
- return false;
- }
- } else if (var1.adata != null || var2.adata != null) {
- System.out.println("\nNormalization problem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node data " + var1.adata + " differs from " + var2.adata);
- return false;
- }
- }
-
- int var4 = 0;
-
- for(int var7 = 0; var7 < var1.getNumChildren(); ++var7) {
- Box var5 = var1.getChild(var7);
- Box var6 = var2.getChild(var4);
- if (var5.getClass().getName().equals("webeq3.schema.Box")) {
- ++var7;
- var5 = var1.getChild(var7);
- }
-
- if (var6.getClass().getName().equals("webeq3.schema.Box")) {
- ++var4;
- var6 = var2.getChild(var4);
- }
-
- var3 &= this.normalizedTreeEqualityCheck(var5, var6);
- ++var4;
- }
-
- return var3;
- } else {
- System.out.println("\nNormalization problem in test " + this.idx + ": " + (String)this.descVector.elementAt(this.idx));
- System.out.println("node " + var1 + " differs in number of children from " + var2);
- return false;
- }
- }
- }
- }
-