home *** CD-ROM | disk | FTP | other *** search
Wrap
package webeq3.app; import com.ms.security.PermissionID; import com.ms.security.PolicyEngine; import java.awt.Canvas; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import java.awt.Image; import java.awt.ScrollPane; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.Transferable; import java.util.Enumeration; import java.util.Vector; import netscape.security.PrivilegeManager; import org.w3c.dom.Attr; import org.w3c.dom.CDATASection; import org.w3c.dom.Comment; import org.w3c.dom.DOMException; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import org.w3c.dom.DocumentFragment; import org.w3c.dom.DocumentType; import org.w3c.dom.Element; import org.w3c.dom.EntityReference; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.ProcessingInstruction; import org.w3c.dom.Text; import webeq3.action.ActionHandler; import webeq3.action.Message; import webeq3.action.MessageHandler; import webeq3.constants.AttributeConstants; import webeq3.dom.MathMLDOMApplet; import webeq3.dom.MathMLDOMAttribute; import webeq3.dom.MathMLDOMNodeList; import webeq3.dom.MathMLDocument; import webeq3.fonts.FontBroker; import webeq3.schema.Box; import webeq3.schema.ContentBox; import webeq3.schema.MAction; import webeq3.schema.MError; import webeq3.schema.MFenced; import webeq3.schema.MFrac; import webeq3.schema.MI; import webeq3.schema.MMultiscripts; import webeq3.schema.MN; import webeq3.schema.MO; import webeq3.schema.MOver; import webeq3.schema.MPadded; import webeq3.schema.MPhantom; import webeq3.schema.MRoot; import webeq3.schema.MRow; import webeq3.schema.MS; import webeq3.schema.MSpace; import webeq3.schema.MSqrt; import webeq3.schema.MStyle; import webeq3.schema.MSub; import webeq3.schema.MSubsup; import webeq3.schema.MSup; import webeq3.schema.MTable; import webeq3.schema.MTd; import webeq3.schema.MText; import webeq3.schema.MTr; import webeq3.schema.MUnder; import webeq3.schema.MUnderover; import webeq3.util.OutputHandler; public class Equation extends Canvas implements AttributeConstants, MathMLDocument, ClipboardOwner { public MathMLDOMApplet applet; public Box root = null; public ContentBox markupRoot = null; protected int[] pts = new int[3]; public Handler handler; // $FF: renamed from: ah webeq3.action.ActionHandler public ActionHandler field_0 = new ActionHandler(this); // $FF: renamed from: mh webeq3.action.MessageHandler public MessageHandler field_1 = new MessageHandler(this); // $FF: renamed from: oh webeq3.util.OutputHandler public OutputHandler field_2 = null; Image my_face = null; Graphics my_graphics = null; public boolean WizardIsRunning = false; public boolean linebreak = false; public boolean allow_cut = false; public String align = "left"; public String valign = "baseline"; public int leftMargin = 2; public int padding = 0; public boolean fixed_size = false; public boolean full_size = false; int preferredWidth = 0; int preferredHeight = 0; public int indent = 0; public int offsetx = 0; public int offsety = 0; public Vector breaks = new Vector(); public boolean haveSelection = false; public boolean cutstart = false; public boolean cutend = false; public boolean hilight_change = false; public Box leftmostSelection = null; public Box rightmostSelection = null; public int cutstartx = 0; public int cutstarty = 0; public int cutendx = 0; public int cutendy = 0; public int canvas_xoff = 0; public int canvas_yoff = 0; public int rectleft = 0; public int rectright = 0; public int recttop = 0; public int rectbottom = 0; public Clipboard system_clipboard = null; final int VENDOR_NETSCAPE = 1; final int VENDOR_MICROSOFT = 2; final int VENDOR_SUN = 3; final int VENDOR_OTHER = 0; private int vendor; public Equation() { } public Equation(Handler var1) { this.handler = var1; } public void setRoot(Box var1, ContentBox var2) { this.root = var1; this.markupRoot = var2; this.markupRoot.empty = false; this.root.cpeer = this.markupRoot; this.markupRoot.ppeer = this.root; this.resetMessagesAndActions(); } public void setHandler(Handler var1) { this.handler = var1; } public Handler getHandler() { return this.handler; } public void initBG() { Color var1 = this.handler.getBackground(); if (var1 == null) { var1 = Color.white; } String var2 = "#" + toHexString(var1.getRed()) + toHexString(var1.getGreen()) + toHexString(var1.getBlue()); this.root.attribute_stack[17].push(var2); } public void initBG(Color var1) { String var2 = "#" + toHexString(var1.getRed()) + toHexString(var1.getGreen()) + toHexString(var1.getBlue()); this.root.attribute_stack[17].push(var2); } public void initFG() { Color var1 = this.handler.getForeground(); if (var1 == null) { var1 = Color.black; } String var2 = "#" + toHexString(var1.getRed()) + toHexString(var1.getGreen()) + toHexString(var1.getBlue()); this.root.attribute_stack[4].push(var2); } public void initFG(Color var1) { String var2 = "#" + toHexString(var1.getRed()) + toHexString(var1.getGreen()) + toHexString(var1.getBlue()); this.root.attribute_stack[4].push(var2); } public int getVendor() { String var1 = System.getProperty("java.vendor").toLowerCase(); if (var1.indexOf("netscape") != -1) { this.vendor = 1; } else if (var1.indexOf("sun") != -1) { this.vendor = 3; } else if (var1.indexOf("microsoft") != -1) { this.vendor = 2; } else { System.out.println("Non netscape, non microsoft java.vendor: " + var1); this.vendor = 0; } return this.vendor; } public void lostOwnership(Clipboard var1, Transferable var2) { this.system_clipboard = null; } protected boolean haveClipboard() { if (this.system_clipboard == null) { this.vendor = this.getVendor(); switch (this.vendor) { case 1: try { PrivilegeManager.enablePrivilege("UniversalSystemClipboardAccess"); } catch (Exception var4) { System.out.println("User denied access to systemClipboard."); } break; case 2: try { PolicyEngine.assertPermission(PermissionID.UI); } catch (Exception var3) { } case 3: } try { this.system_clipboard = ((Component)this).getToolkit().getSystemClipboard(); } catch (Exception var2) { System.out.println("couldn't get system clipboard: " + var2); } } return this.system_clipboard != null; } protected void hilight(Box var1) { int var2 = var1.getWidth(); int var3 = var1.getHeight(); int var4 = var1.abstop; int var5 = var4 + var3; int var6 = var1.absleft; int var7 = var6 + var2; if (var7 < this.rectleft || var6 > this.rectright || var4 > this.rectbottom || var5 < this.recttop || this.rectleft > var6 && this.rectright < var7 && this.recttop > var4 && this.rectbottom < var5 && var1.getNumDisplayChildren() != 0) { if (var1.getReverseVideo()) { var1.setReverseVideo(false); this.hilight_change = true; } for(int var14 = 0; var14 < var1.getNumDisplayChildren(); ++var14) { this.hilight(var1.getDisplayChild(var14)); } int var9 = 0; if (var1 instanceof MTable) { int var10 = 0; for(int var12 = 0; var12 < var1.getNumChildren(); ++var12) { Box var11 = var1.getChild(var12); var10 += var11.getNumChildren(); var11.setReverseVideo(false); for(int var13 = 0; var13 < var11.getNumChildren(); ++var13) { if (var11.getChild(var13).getReverseVideo()) { ++var9; } } } if (var9 == var10 && var9 > 0) { this.highLightChildren(var1); var1.setReverseVideo(true); this.hilight_change = true; if (this.leftmostSelection == null || var6 <= this.leftmostSelection.absleft) { this.leftmostSelection = var1; } if (this.rightmostSelection == null || var7 >= this.rightmostSelection.absleft + this.rightmostSelection.getWidth()) { this.rightmostSelection = var1; } } } else { int var15 = -1; boolean var16 = false; for(int var17 = 0; var17 < var1.getNumChildren(); ++var17) { if (!var1.getChild(var17).getReverseVideo()) { if (var15 >= 0) { var16 = true; } } else { if (var16 && var1 instanceof MStyle) { for(int var18 = var15 + 1; var18 < var17; ++var18) { var1.getChild(var18).setReverseVideo(true); this.highLightChildren(var1.getChild(var18)); } var16 = false; } var15 = var17; ++var9; } } if (var9 == var1.children.size() && var9 > 0 && !(var1 instanceof MTr)) { this.highLightChildren(var1); var1.setReverseVideo(true); this.hilight_change = true; if (this.leftmostSelection == null || var6 <= this.leftmostSelection.absleft) { this.leftmostSelection = var1; } if (this.rightmostSelection == null || var7 >= this.rightmostSelection.absleft + this.rightmostSelection.getWidth()) { this.rightmostSelection = var1; } } else { String var19 = var1.getClass().getName(); if (var9 == var1.children.size() - 1 && (var19.equals("webeq3.schema.MSub") || var19.equals("webeq3.schema.MSup") || var19.equals("webeq3.schema.MUnder") || var19.equals("webeq3.schema.MOver") || var19.equals("webeq3.schema.MSqrt"))) { var1.setReverseVideo(true); this.hilight_change = true; if (this.leftmostSelection == null || var6 <= this.leftmostSelection.absleft) { this.leftmostSelection = var1; } if (this.rightmostSelection == null || var7 >= this.rightmostSelection.absleft + this.rightmostSelection.getWidth()) { this.rightmostSelection = var1; } } } } } else { if (var1 instanceof MTr) { for(int var8 = 0; var8 < var1.getNumDisplayChildren(); ++var8) { this.hilight(var1.getDisplayChild(var8)); } } else if (!var1.getReverseVideo()) { var1.setReverseVideo(true); this.hilight_change = true; this.highLightChildren(var1); } if (var1.getReverseVideo()) { this.haveSelection = true; if (this.leftmostSelection == null || var6 < this.leftmostSelection.absleft) { this.leftmostSelection = var1; } if (this.rightmostSelection == null || var7 > this.rightmostSelection.absleft + this.rightmostSelection.getWidth()) { this.rightmostSelection = var1; } } } } protected void highLightChildren(Box var1) { Object var2 = null; for(int var3 = 0; var3 < var1.getNumDisplayChildren(); ++var3) { Box var4 = var1.getDisplayChild(var3); var4.setReverseVideo(true); this.highLightChildren(var4); } } public int[] normalVirtualCoords(int var1, int var2) { var1 -= this.canvas_xoff + this.padding; var2 -= this.canvas_yoff + this.padding; if (!MStyle.allowForcedBreaks && !this.linebreak) { var1 -= this.offsetx; var2 -= this.offsety; } else { int var3 = 5 + this.root.getHeight(); int var4 = var2 / var3; var2 -= var4 * var3; Integer var5 = null; if (var4 > 0 && var4 <= this.breaks.size()) { var5 = (Integer)this.breaks.elementAt(var4 - 1); } if (var5 == null) { var5 = new Integer(0); } Integer var6 = null; if (var4 >= 0 && var4 < this.breaks.size()) { var6 = (Integer)this.breaks.elementAt(var4); } if (var6 == null) { var6 = new Integer(this.root.getWidth()); } if (var1 > Math.abs(var6) - Math.abs(var5)) { if (var6 < 0) { var1 = -var6 - 1; } else { var1 = var6 - this.indent - 1; } } else if (var4 > 0) { if (var4 <= this.breaks.size()) { if (var5 < 0) { var1 -= var5; } else { var1 += var5 - this.indent; } } else { var1 += this.root.getWidth(); } } } int[] var10 = new int[]{var1, var2}; return var10; } public void directRedraw() { this.redraw(); } public void paint(Graphics var1) { if (this.my_face != null) { this.checkCanvasOffsets(); var1.drawImage(this.my_face, this.canvas_xoff + this.padding, this.canvas_yoff + this.padding, this.handler.getImageObserver()); } this.postPaint(var1); if (this.field_1.hasMessages()) { this.field_1.startIfNecessary(); } } public void redraw() { try { this.root.layout(); } catch (Exception var4) { System.out.println("layout errors -- rendering failed\n" + var4); ((Throwable)var4).printStackTrace(); } if (((Component)this).getParent() instanceof ScrollPane) { ((Component)this).getParent().doLayout(); } this.verifyFaceSize(); this.my_graphics = this.my_face.getGraphics(); this.my_graphics.setColor(this.root.resolveColor(17)); this.my_graphics.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height); this.my_graphics.setColor(Color.black); this.offsetx = 0; this.offsety = 0; this.breaks.removeAllElements(); try { this.root.paint(this.my_graphics, 0, 0); } catch (Exception var3) { ((Throwable)var3).printStackTrace(); } if ((!this.align.equals("left") || !this.valign.equals("top")) && !this.breaks.isEmpty() && this.adjustBrokenFaceSize()) { this.my_graphics = this.my_face.getGraphics(); this.my_graphics.setColor(this.root.resolveColor(17)); this.my_graphics.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height); this.my_graphics.setColor(Color.black); this.offsetx = 0; this.offsety = 0; this.breaks.removeAllElements(); try { this.root.paint(this.my_graphics, 0, 0); } catch (Exception var2) { ((Throwable)var2).printStackTrace(); } } this.my_graphics.dispose(); } private void checkCanvasOffsets() { if (this.align.equals("center")) { this.canvas_xoff = (((Component)this).size().width - 2 * this.padding - this.my_face.getWidth(this.handler.getComponent())) / 2; } else if (this.align.equals("right")) { this.canvas_xoff = ((Component)this).size().width - this.padding - this.my_face.getWidth(this.handler.getComponent()); } else { this.canvas_xoff = this.leftMargin; } if (this.valign.equals("baseline")) { this.canvas_yoff = ((Component)this).size().height / 2 - this.root.getAscent(); } else if (this.valign.equals("edit")) { int var1 = (int)((double)1.5F * (double)this.pts[0]); if (var1 < 17) { var1 = 17; } if (var1 > 55) { var1 = 55; } this.canvas_yoff = var1 > this.root.getAscent() ? var1 - this.root.getAscent() + 5 : 5; } else if (this.valign.equals("center")) { this.canvas_yoff = (((Component)this).size().height - 2 * this.padding - this.my_face.getHeight(this.handler.getComponent())) / 2; } else if (this.valign.equals("top")) { this.canvas_yoff = 0; } else { int var4; try { var4 = Integer.parseInt(this.valign); } catch (NumberFormatException var3) { var4 = 0; } this.canvas_yoff = var4; } } private void verifyFaceSize() { int var1 = 0; int var2 = 0; try { if (this.fixed_size) { var1 = this.preferredWidth; var2 = this.preferredHeight; var1 -= 2 * this.padding; var2 -= 2 * this.padding; ((Component)this).setSize(this.preferredWidth, this.preferredHeight); } else if (((Component)this).getParent() instanceof ScrollPane) { var1 = this.getPreferredWidth(); var2 = this.getPreferredHeight(); } else if (this.full_size) { var1 = this.handler.size().width; var2 = this.handler.size().height; } else if (this.linebreak && this.root.getWidth() > this.getSize().width) { var1 = this.getSize().width - 2 * this.padding; var2 = this.getSize().height - 2 * this.padding; } else { var1 = this.root.getWidth(); var2 = this.root.getHeight(); } ++var1; ++var2; if (var1 <= 0) { var1 = 1; } if (var2 <= 0) { var2 = 1; } if (this.my_face == null || this.my_face.getWidth(this.handler.getComponent()) != var1 || this.my_face.getHeight(this.handler.getComponent()) != var2) { this.my_face = this.handler.getComponent().createImage(var1, var2); } } catch (Exception var4) { System.out.println("caught exception " + var4); ((Throwable)var4).printStackTrace(); } } private boolean adjustBrokenFaceSize() { int var1 = 0; int var2 = 0; try { if (this.fixed_size) { return false; } else if (((Component)this).getParent() instanceof ScrollPane) { return false; } else if (this.full_size) { return false; } else { var2 = 5 + this.root.getHeight(); int var3 = 0; Object var4 = null; int var5 = 0; for(int var6 = 0; var3 < this.breaks.size(); ++var3) { Integer var11 = (Integer)this.breaks.elementAt(var3); if (var11 < 0) { var5 = -var11; } else { var5 = var11; } if (var5 - var6 > var1) { var1 = var5 - var6; } var2 += 5 + this.root.getHeight(); var6 = var5; } ++var1; ++var2; if (var1 <= 0) { var1 = 1; } if (var2 <= 0) { var2 = 1; } if (this.my_face == null || this.my_face.getWidth(this.handler.getComponent()) != var1 || this.my_face.getHeight(this.handler.getComponent()) != var2) { this.my_face = this.handler.getComponent().createImage(var1, var2); } return true; } } catch (Exception var7) { System.out.println("caught exception " + var7); ((Throwable)var7).printStackTrace(); return false; } } public void postPaint(Graphics var1) { } public Image getFace() { return this.my_face; } public void registerActions() { this.recursiveRegActions(this.root); } private void recursiveRegActions(Box var1) { int var2 = var1.children.size(); if (var1.getClass().getName().equals("webeq3.schema.MAction")) { this.field_0.registerAction((MAction)var1); } for(int var3 = 0; var3 < var2; ++var3) { this.recursiveRegActions(var1.getChild(var3)); } } public void registerMessage(Message var1) { if (this.field_1 != null) { this.field_1.registerMessage(var1); } else { this.field_1 = new MessageHandler(this); this.field_1.registerMessage(var1); } } public void resetMessagesAndActions() { if (this.field_1 != null) { this.field_1.stop(); this.field_1 = new MessageHandler(this); } else { this.field_1 = new MessageHandler(this); } if (this.field_0 != null) { this.field_0.reset(); } else { this.field_0 = new ActionHandler(this); } } public void setAlign(String var1) { this.align = var1; } public void setVAlign(String var1) { this.valign = var1; } public void setLeftMargin(int var1) { this.leftMargin = var1; } public void setPadding(int var1) { this.padding = var1; } public void setPointSize(int var1) { FontBroker.setPointSizes(var1, this.pts, this.handler.getComponent()); Font var2 = new Font("TimesRoman", 0, this.pts[0]); FontMetrics var3 = this.getHandler().getComponent().getFontMetrics(var2); this.indent = (int)(1.3 * (double)var3.charWidth('M')); } public void getPointsize(int var1, int[] var2) { FontBroker.findPointSizes(var1, var2, this.handler.getComponent()); } public void fixSize(int var1, int var2) { this.fixed_size = true; this.setPreferredSize(var1, var2); } public void fullSize() { this.full_size = true; } public void setPreferredSize(int var1, int var2) { this.preferredWidth = var1; this.preferredHeight = var2; } public int getDisplayWidth() { return ((Component)this).size().width - 2 * this.padding; } public Dimension getPreferredSize() { return this.getMinimumSize(); } public Dimension getMinimumSize() { return this.fixed_size ? new Dimension(this.preferredWidth, this.preferredHeight) : new Dimension(this.getPreferredWidth(), this.getPreferredHeight()); } public int getPreferredAscent() { if (this.valign.equals("baseline")) { int var1 = this.root.getAscent() > this.root.getDescent() ? this.root.getAscent() : this.root.getDescent(); return (int)((double)1.0F * (double)var1) + this.padding + 1; } else { return this.root.getAscent() + this.padding + 1; } } public int getPreferredHeight() { if (this.valign.equals("baseline")) { int var3 = this.root.getAscent() > this.root.getDescent() ? this.root.getAscent() : this.root.getDescent(); return (int)((double)2.0F * (double)var3) + 2 * this.padding + 1; } else if (((Component)this).getParent() instanceof ScrollPane) { int var1 = this.root.getHeight(); var1 = (var1 + 5) * (this.breaks.size() + 1); return var1 + 2 * this.padding + 1 + this.canvas_yoff; } else { return this.root.getHeight() + 2 * this.padding + 1; } } public int getPreferredWidth() { if (((Component)this).getParent() instanceof ScrollPane) { int var1 = 0; int var2 = 0; int var3 = 0; Object var4 = null; for(Enumeration var5 = this.breaks.elements(); var5.hasMoreElements(); var1 = var2) { Integer var7 = (Integer)var5.nextElement(); var2 = Math.abs(var7); if (var2 - var1 > var3) { var3 = var2 - var1; } } if (this.root.getWidth() - var1 > var3) { var3 = this.root.getWidth() - var1; } return var3 + 2 * this.padding + 1 + 2 * this.leftMargin; } else { return this.root.getWidth() + 2 * this.padding + 1; } } public Dimension getSize() { return ((Component)this).size(); } public int standardPointsize(int var1) { if (var1 < 0) { var1 = 0; } if (var1 > 2) { var1 = 2; } return this.pts[var1]; } private static String toHexString(int var0) { String[] var1 = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; if (var0 > 255) { var0 = 255; } if (var0 < 0) { var0 = 0; } int var2 = var0 / 16; int var3 = var0 - var2 * 16; return var1[var2] + var1[var3]; } public Node appendChild(Node var1) throws DOMException { if (var1 != null && var1.getClass().getName().equals("webeq3.schema.Box")) { this.setRoot((Box)var1, new ContentBox(this)); this.initBG(Color.white); this.initFG(); this.redraw(); this.applet.repaint(); return var1; } else { throw new DOMException((short)3, "The child must not be null and must be a Box node"); } } public Node cloneNode(boolean var1) { return null; } public Attr createAttribute(String var1) throws DOMException { int var2 = this.lookupIndex(var1); MathMLDOMAttribute var3 = new MathMLDOMAttribute(this, var1, var2); return var3; } public Attr createAttributeNS(String var1, String var2) throws DOMException { return null; } public Comment createComment(String var1) { return null; } public CDATASection createCDATASection(String var1) throws DOMException { return null; } public DocumentFragment createDocumentFragment() { return null; } public Element createElement(String var1) throws DOMException { Object var2 = null; var1.toLowerCase(); if (var1.equals("math")) { var2 = new Box(this); } else if (var1.equals("mrow")) { var2 = new MRow(); } else if (var1.equals("mi")) { var2 = new MI(this); } else if (var1.equals("mn")) { var2 = new MN(this); } else if (var1.equals("mo")) { var2 = new MO(this); } else if (var1.equals("maction")) { var2 = new MAction(this); } else if (var1.equals("merror")) { var2 = new MError(this); } else if (var1.equals("mfenced")) { var2 = new MFenced(this); } else if (var1.equals("mfract")) { var2 = new MFrac(this); } else if (var1.equals("mmultiscripts")) { var2 = new MMultiscripts(this); } else if (var1.equals("mover")) { var2 = new MOver(this); } else if (var1.equals("mpadded")) { var2 = new MPadded(this); } else if (var1.equals("mphantom")) { var2 = new MPhantom(this); } else if (var1.equals("mroot")) { var2 = new MRoot(this); } else if (var1.equals("ms")) { var2 = new MS(this); } else if (var1.equals("mspace")) { var2 = new MSpace(this); } else if (var1.equals("msqrt")) { var2 = new MSqrt(this); } else if (var1.equals("mstyle")) { var2 = new MStyle(this); } else if (var1.equals("msub")) { var2 = new MSub(this); } else if (var1.equals("msubsup")) { var2 = new MSubsup(this); } else if (var1.equals("msup")) { var2 = new MSup(this); } else if (var1.equals("mtable")) { var2 = new MTable(this); } else if (var1.equals("mtd")) { var2 = new MTd(this); } else if (var1.equals("mtext")) { var2 = new MText(this); } else if (var1.equals("mtr")) { var2 = new MTr(this); } else if (var1.equals("munder")) { var2 = new MUnder(this); } else { if (!var1.equals("munderover")) { throw new DOMException((short)9, "Unknown MathML tag"); } var2 = new MUnderover(this); } return (Element)var2; } public Element createElementNS(String var1, String var2) throws DOMException { return null; } public EntityReference createEntityReference(String var1) throws DOMException { return null; } public ProcessingInstruction createProcessingInstruction(String var1, String var2) throws DOMException { return null; } public Text createTextNode(String var1) { return null; } public NamedNodeMap getAttributes() { return null; } public NodeList getChildNodes() { MathMLDOMNodeList var1 = new MathMLDOMNodeList(); var1.addNode(this.root); return var1; } public DocumentType getDoctype() { return null; } public Element getDocumentElement() { return this.root; } public Element getElementById(String var1) { return null; } public NodeList getElementsByTagName(String var1) { return this.root.getElementsByTagName(var1); } public NodeList getElementsByTagNameNS(String var1, String var2) { return null; } public Node getFirstChild() { return this.root; } public DOMImplementation getImplementation() { return null; } public Node getLastChild() { return this.root; } public String getLocalName() { return this.getNodeName(); } public String getNamespaceURI() { return null; } public Node getNextSibling() { return null; } public String getNodeName() { return "#document"; } public short getNodeType() { return 9; } public String getNodeValue() throws DOMException { return null; } public void setNodeValue(String var1) throws DOMException { throw new DOMException((short)9, "Document doesn't have a value property"); } public Document getOwnerDocument() { return null; } public Node getParentNode() { return null; } public String getPrefix() { return null; } public void setPrefix(String var1) throws DOMException { } public Node getPreviousSibling() { return null; } public boolean hasChildNodes() { return this.root != null; } public Node importNode(Node var1, boolean var2) throws DOMException { return null; } public Node insertBefore(Node var1, Node var2) throws DOMException { throw new DOMException((short)3, "Cannot insert an additional node into the document"); } public void normalize() { } public Node replaceChild(Node var1, Node var2) throws DOMException { if (var2 == this.root && var1.getClass().getName().equals("webeq3.schema.Box")) { this.setRoot((Box)var1, new ContentBox(this)); this.initBG(Color.white); this.initFG(); this.redraw(); this.applet.repaint(); return var1; } else { throw new DOMException((short)3, "Can only replace the root node and the replacement node must be a box"); } } public Node removeChild(Node var1) throws DOMException { throw new DOMException((short)3, "Can't remove the root node"); } public boolean supports(String var1, String var2) { return false; } public int lookupIndex(String var1) { boolean var2 = false; for(int var3 = 0; var3 < 86 && !var2; ++var3) { if (var1.equals(AttributeConstants.attribute_names[var3])) { var2 = true; return var3; } } return -1; } public boolean attributeInUse(MathMLDOMAttribute var1) { return this.findAttribute(this.root, var1); } private boolean findAttribute(Box var1, MathMLDOMAttribute var2) { MathMLDOMAttribute var3 = (MathMLDOMAttribute)var1.attribute_map.getNamedItem(var2.getName()); if (var3 != null && var3 == var2) { return true; } else { for(int var4 = 0; var4 < var1.getNumChildren(); ++var4) { Box var5 = var1.getChild(var4); if (this.findAttribute(var5, var2)) { return true; } } return false; } } }