home *** CD-ROM | disk | FTP | other *** search
Wrap
import COM.objectspace.jgl.Array; import com.ibm.xml.parser.AttDef; import com.ibm.xml.parser.DTD; import com.ibm.xml.parser.ElementDecl; import com.ibm.xml.parser.EntityDecl; import com.ibm.xml.parser.TXDocument; import java.awt.AWTEvent; import java.awt.Color; import java.awt.Component; import java.awt.Dialog; import java.awt.Dimension; import java.awt.FileDialog; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Point; import java.awt.Toolkit; import java.awt.Window; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.awt.print.PageFormat; import java.awt.print.Printable; import java.awt.print.PrinterException; import java.awt.print.PrinterJob; import java.io.EOFException; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.LineNumberReader; import java.io.OutputStreamWriter; import java.io.StringReader; import java.io.StringWriter; import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; import java.util.Hashtable; import java.util.StringTokenizer; import java.util.Vector; import javax.help.CSH; import javax.help.HelpBroker; import javax.help.HelpSet; import javax.swing.AbstractButton; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JToolBar; import javax.swing.UIManager; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.EtchedBorder; import javax.swing.text.JTextComponent; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import org.w3c.dom.Attr; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import vervet.VervetLookAndFeel; public class XMLPro extends JFrame implements WindowListener, Printable { static boolean demoMode = true; static boolean timeLimit = false; HelpSet mainHS = null; HelpBroker mainHB; boolean treeSelected = false; ElemClipboard elemClipboard; int optCount = 0; public JMenuItemLeft viewTextItem; public JMenuItemLeft viewElementItem; public JMenuItemLeft viewEntityItem; public JMenuItemLeft editFixedItem; public JMenuItemLeft limitElementsItem; public JMenuItemLeft viewAttributesItem; public JMenuItemLeft associateItem; public AbstractButton[] undoItem; SplashBox aboutBox; XMLError errorHandler; XMLDocument xmlDocument; UndoManager undoManager; String currDirectory = null; public String rootDirectory = null; static String fileName; static boolean output; static boolean stream; static boolean text; JSplitPane bottom; VervetParser parser; // $FF: renamed from: tb javax.swing.JToolBar JToolBar field_0; ElemPanel elems; ElemPalette elemPalette; EntityPalette entityPalette; AttribPanel attribs; KTextPane data; JComponent[] validateWidgets; JComponent[] mutableOptions; JMenuBar menubar; static boolean openTb = false; static boolean newTb = false; static boolean saveTb = false; static boolean printTb = false; static boolean elemTb = false; static boolean attribTb = false; static boolean validTb = false; static ImageIcon blank; static ImageIcon check; public XMLPro theApp = null; public JFrame mainFrame = null; public JTextComponent lastText = null; public boolean limitElements = true; public boolean viewText = true; public boolean viewAttributes = false; public boolean viewElemPalette = true; public boolean viewEntityPalette = false; public boolean editFixedAttributes = false; static boolean first = true; Enumeration searchTree = null; Vector pages; static int FONT_HEIGHT = 10; int fontHeightMetric = 0; int startx; int starty; XMLPro(String var1, SplashBox var2) { super(var1); this.theApp = this; this.xmlDocument = new XMLDocument(); this.undoManager = new UndoManager(this); try { URL var6 = HelpSet.findHelpSet((ClassLoader)null, "javahelp/XMLProHelp.hs"); this.mainHS = new HelpSet((ClassLoader)null, var6); } catch (Exception var5) { MesgBox var3 = new MesgBox(this, Strings.ErrorLoadingHelp); ((Dialog)var3).show(); return; } this.mainHB = this.mainHS.createHelpBroker(); ((Frame)this).setIconImage((new ImageIcon(this.getClass().getResource("icons/app-ico.gif"))).getImage()); if (!demoMode) { Object var7 = null; if (!timeLimit) { if (!Register.checkRegistered()) { Register var8 = new Register(this); ((Component)var2).hide(); ((Dialog)var8).show(); if (var8.cancelled) { System.exit(0); } } var2.setRegName(Register.regName, Register.regComp); } else { if (!Register.checkTimeout(this)) { System.exit(0); } var2.setRegName(Strings.ThirtyDayEval, ""); } } ((Window)var2).show(); this.aboutBox = var2; blank = new ImageIcon(this.getClass().getResource("icons/blank.gif")); check = new ImageIcon(this.getClass().getResource("icons/check.gif")); this.validateWidgets = new JComponent[3]; this.mutableOptions = new JComponent[27]; this.undoItem = new AbstractButton[2]; this.rootDirectory = System.getProperties().getProperty("user.dir"); XMLTreeCellRenderer.elemIcon = new ImageIcon(this.getClass().getResource("icons/elem.gif")); XMLTreeCellRenderer.entityIcon = new ImageIcon(this.getClass().getResource("icons/entity.gif")); XMLTreeCellRenderer.pcdataIcon = new ImageIcon(this.getClass().getResource("icons/pcdata.gif")); XMLTreeCellRenderer.cdataIcon = new ImageIcon(this.getClass().getResource("icons/cdata.gif")); XMLTreeCellRenderer.commentIcon = new ImageIcon(this.getClass().getResource("icons/comment.gif")); this.elemPalette = new ElemPalette(this); this.entityPalette = new EntityPalette(this); ((Window)this).addWindowListener(this); ((Component)this).enableEvents(64L); this.centerOnScreen(); this.field_0 = new JToolBar(); this.field_0.setFloatable(false); this.field_0.setBorder(new CompoundBorder(new EtchedBorder(), new EmptyBorder(2, 4, 2, 4))); ((JFrame)this).getContentPane().add("North", this.field_0); this.bottom = new JSplitPane(1); this.bottom.setDividerSize(2); this.bottom.setContinuousLayout(true); this.bottom.setBorder(new EmptyBorder(2, 2, 2, 2)); ((JFrame)this).getContentPane().add("Center", this.bottom); JSplitPane var9 = new JSplitPane(0); var9.setDividerSize(3); var9.setContinuousLayout(true); this.attribs = new AttribPanel(new JPanel(), this); this.data = new KTextPane(); this.elems = new ElemPanel(this.attribs, this.data, this); this.data.setElems(this.elems); JScrollPane var4 = new JScrollPane(this.data); this.data.setEditable(false); this.data.addFocusListener(this.data); var9.setTopComponent(this.attribs); var9.setBottomComponent(var4); this.bottom.setLeftComponent(this.elems); this.bottom.setRightComponent(var9); ((JComponent)var9).setBackground(Color.lightGray); this.buildToolBar(); this.buildMenuBar(); } void about() { this.aboutBox.show(); } void buildCache(DTD var1) { if (var1 != null) { if (first) { first = false; } String var4; String var5; for(Enumeration var2 = var1.getEntityEnumeration(); var2.hasMoreElements(); this.xmlDocument.entVals.put(var4, var5)) { EntityDecl var3 = (EntityDecl)var2.nextElement(); var4 = var3.getNodeName(); var5 = var3.getValue(); if (var5 == null) { var5 = "<External Entity>"; } } Enumeration var13 = var1.getElementDeclarations(); while(var13.hasMoreElements()) { ElementDecl var14 = (ElementDecl)var13.nextElement(); var5 = var14.getName(); ElementVector var6 = new ElementVector(); this.xmlDocument.dtdElemVals.put(var14.getName(), var6); ElemCache var7 = new ElemCache(); this.cacheAllowedElements(var5, var14, var7); AttDefn var10; for(Enumeration var8 = var1.getAttributeDeclarations(var5); var8.hasMoreElements(); var6.add(var10)) { AttDef var9 = (AttDef)var8.nextElement(); var10 = new AttDefn(); var10.id = var9.getName(); if (var9.getDeclaredType() == 10) { var10.enum = true; } if (var9.getDefaultType() == 2) { var10.required = true; } if (var9.getDefaultType() == 1) { var10.fixed = true; } var10.def = var9.getDefaultStringValue(); if (var10.enum) { Enumeration var11 = var9.elements(); Vector var12 = new Vector(); while(var11.hasMoreElements()) { var12.addElement(var11.nextElement()); } var10.values = var12; } } } } } void buildMenuBar() { this.menubar = new JMenuBar(); ((JFrame)this).setJMenuBar(this.menubar); JMenu var1 = new JMenu(Strings.File); ((AbstractButton)var1).setMnemonic('F'); this.menubar.add(var1); JMenu var2 = new JMenu(Strings.Edit); ((AbstractButton)var2).setMnemonic('E'); this.menubar.add(var2); JMenu var3 = new JMenu(Strings.Tools); this.menubar.add(var3); ((AbstractButton)var3).setMnemonic('T'); JMenu var4 = new JMenu(Strings.Options); ((AbstractButton)var4).setMnemonic('O'); this.menubar.add(var4); JMenu var5 = new JMenu(Strings.Help); ((AbstractButton)var5).setMnemonic('H'); this.menubar.add(var5); JMenuItemLeft var6; var1.add(var6 = new JMenuItemLeft(Strings.New, new ImageIcon(this.getClass().getResource("icons/new.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$14(this)); ((AbstractButton)var6).setMnemonic('N'); var1.add(var6 = new JMenuItemLeft(Strings.Open, new ImageIcon(this.getClass().getResource("icons/open.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$15(this)); var1.addSeparator(); ((AbstractButton)var6).setMnemonic('O'); var1.add(var6 = new JMenuItemLeft(Strings.Save, new ImageIcon(this.getClass().getResource("icons/save.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$16(this)); ((AbstractButton)var6).setMnemonic('S'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var1.add(var6 = new JMenuItemLeft(Strings.SaveAs, blank)); ((AbstractButton)var6).addActionListener(new XMLPro$17(this)); ((AbstractButton)var6).setMnemonic('A'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var1.addSeparator(); var1.add(var6 = new JMenuItemLeft(Strings.Print, new ImageIcon(this.getClass().getResource("icons/print.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$18(this)); ((AbstractButton)var6).setMnemonic('P'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var1.addSeparator(); var1.add(var6 = new JMenuItemLeft(Strings.Close, blank)); ((AbstractButton)var6).addActionListener(new XMLPro$19(this)); ((AbstractButton)var6).setMnemonic('C'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var1.add(var6 = new JMenuItemLeft(Strings.Exit, blank)); ((AbstractButton)var6).addActionListener(new XMLPro$20(this)); ((AbstractButton)var6).setMnemonic('x'); var2.add(this.undoItem[1] = new JMenuItemLeft(Strings.Undo, new ImageIcon(this.getClass().getResource("icons/undo.gif")))); this.undoItem[1].addActionListener(new XMLPro$21(this)); this.undoItem[1].setMnemonic('u'); this.undoItem[1].setEnabled(false); this.mutableOptions[this.optCount++] = this.undoItem[1]; var2.addSeparator(); var2.add(var6 = new JMenuItemLeft(Strings.Cut, new ImageIcon(this.getClass().getResource("icons/cut.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$22(this)); ((AbstractButton)var6).setMnemonic('t'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var2.add(var6 = new JMenuItemLeft(Strings.Copy, new ImageIcon(this.getClass().getResource("icons/copy.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$23(this)); ((AbstractButton)var6).setMnemonic('c'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var2.add(var6 = new JMenuItemLeft(Strings.Paste, new ImageIcon(this.getClass().getResource("icons/paste.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$24(this)); ((AbstractButton)var6).setMnemonic('P'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var2.add(var6 = new JMenuItemLeft(Strings.Find, new ImageIcon(this.getClass().getResource("icons/search.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$25(this)); ((AbstractButton)var6).setMnemonic('F'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var3.add(var6 = new JMenuItemLeft(Strings.ElementWizard, new ImageIcon(this.getClass().getResource("icons/element.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$26(this)); ((AbstractButton)var6).setMnemonic('E'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var3.add(var6 = new JMenuItemLeft(Strings.AttributeWizard, new ImageIcon(this.getClass().getResource("icons/attrib.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$27(this)); ((AbstractButton)var6).setMnemonic('A'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var3.addSeparator(); var3.add(var6 = new JMenuItemLeft(Strings.MoveElementUp, new ImageIcon(this.getClass().getResource("icons/up.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$28(this)); ((AbstractButton)var6).setMnemonic('U'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var3.add(var6 = new JMenuItemLeft(Strings.MoveElementDown, new ImageIcon(this.getClass().getResource("icons/down.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$29(this)); ((AbstractButton)var6).setMnemonic('D'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var3.add(var6 = new JMenuItemLeft(Strings.DeleteElement, blank)); ((AbstractButton)var6).addActionListener(new XMLPro$30(this)); ((AbstractButton)var6).setMnemonic('l'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var3.addSeparator(); var3.add(var6 = new JMenuItemLeft(Strings.Validate, new ImageIcon(this.getClass().getResource("icons/valid.gif")))); ((AbstractButton)var6).addActionListener(new XMLPro$31(this)); ((AbstractButton)var6).setMnemonic('V'); ((JMenuItem)var6).setEnabled(false); this.validateWidgets[0] = var6; var3.add(this.associateItem = new JMenuItemLeft(Strings.AssociateDTD, blank)); this.associateItem.addActionListener(new XMLPro$32(this)); this.associateItem.setMnemonic('A'); this.associateItem.setEnabled(false); this.mutableOptions[this.optCount++] = this.associateItem; var3.add(var6 = new JMenuItemLeft(Strings.ChangeEncoding, blank)); ((AbstractButton)var6).addActionListener(new XMLPro$33(this)); ((AbstractButton)var6).setMnemonic('E'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var3.addSeparator(); var3.add(var6 = new JMenuItemLeft(Strings.ViewXML, blank)); ((AbstractButton)var6).addActionListener(new XMLPro$34(this)); ((AbstractButton)var6).setMnemonic('w'); ((JMenuItem)var6).setEnabled(false); this.mutableOptions[this.optCount++] = var6; var3.add(var6 = new JMenuItemLeft(Strings.ViewDTD, blank)); ((AbstractButton)var6).addActionListener(new XMLPro$35(this)); ((AbstractButton)var6).setMnemonic('d'); ((JMenuItem)var6).setEnabled(false); this.validateWidgets[2] = var6; var4.add(this.viewTextItem = new JMenuItemLeft(Strings.ViewPCDATAText, new ImageIcon(this.getClass().getResource("icons/check.gif")))); this.viewTextItem.addActionListener(new XMLPro$36(this)); this.viewTextItem.setMnemonic('P'); var4.add(this.viewAttributesItem = new JMenuItemLeft(Strings.ViewAttributesTree, new ImageIcon(this.getClass().getResource("icons/blank.gif")))); this.viewAttributesItem.addActionListener(new XMLPro$37(this)); this.viewAttributesItem.setMnemonic('A'); var4.add(this.viewElementItem = new JMenuItemLeft(Strings.ShowElementPalette, new ImageIcon(this.getClass().getResource("icons/check.gif")))); this.viewElementItem.addActionListener(new XMLPro$38(this)); this.viewElementItem.setMnemonic('E'); var4.add(this.viewEntityItem = new JMenuItemLeft(Strings.ShowEntityPalette, new ImageIcon(this.getClass().getResource("icons/blank.gif")))); this.viewEntityItem.addActionListener(new XMLPro$39(this)); this.viewEntityItem.setMnemonic('N'); var4.add(this.editFixedItem = new JMenuItemLeft(Strings.EditFixedAtts, new ImageIcon(this.getClass().getResource("icons/blank.gif")))); this.editFixedItem.addActionListener(new XMLPro$40(this)); this.editFixedItem.setMnemonic('X'); var4.add(this.limitElementsItem = new JMenuItemLeft(Strings.AvailableElementsConstrained, new ImageIcon(this.getClass().getResource("icons/check.gif")))); this.limitElementsItem.addActionListener(new XMLPro$41(this)); this.limitElementsItem.setMnemonic('C'); var5.add(var6 = new JMenuItemLeft(Strings.XMLProHelp, new ImageIcon(this.getClass().getResource("icons/help.gif")))); ((AbstractButton)var6).addActionListener(new CSH.DisplayHelpFromSource(this.mainHB)); ((AbstractButton)var6).setMnemonic('X'); var5.add(var6 = new JMenuItemLeft(Strings.About, blank)); ((AbstractButton)var6).addActionListener(new XMLPro$42(this)); ((AbstractButton)var6).setMnemonic('A'); } public void buildToolBar() { XMLPro$JButtonSmall var1; this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/new.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$1(this)); ((JComponent)var1).setToolTipText(Strings.New); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/open.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$2(this)); ((JComponent)var1).setToolTipText(Strings.Open); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/save.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$3(this)); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; ((JComponent)var1).setToolTipText(Strings.Save); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/print.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$4(this)); ((JComponent)var1).setToolTipText(Strings.Print); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; this.field_0.addSeparator(); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/cut.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$5(this)); ((JComponent)var1).setToolTipText(Strings.Cut); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/copy.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$6(this)); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; ((JComponent)var1).setToolTipText(Strings.Copy); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/paste.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$7(this)); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; ((JComponent)var1).setToolTipText(Strings.Paste); this.field_0.add(this.undoItem[0] = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/undo.gif")))); this.undoItem[0].addActionListener(new XMLPro$8(this)); this.mutableOptions[this.optCount++] = this.undoItem[0]; this.undoItem[0].setEnabled(false); this.undoItem[0].setToolTipText(Strings.Undo); this.field_0.addSeparator(); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/element.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$9(this)); ((JComponent)var1).setToolTipText(Strings.ElementWizard); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/attrib.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$10(this)); ((JComponent)var1).setToolTipText(Strings.AttributeWizard); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/up.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$11(this)); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; ((JComponent)var1).setToolTipText(Strings.MoveElementUp); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/down.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$12(this)); ((AbstractButton)var1).setEnabled(false); this.mutableOptions[this.optCount++] = var1; ((JComponent)var1).setToolTipText(Strings.MoveElementDown); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/valid.gif")))); ((AbstractButton)var1).addActionListener(new XMLPro$13(this)); ((JComponent)var1).setToolTipText(Strings.Validate); ((AbstractButton)var1).setEnabled(false); this.validateWidgets[1] = var1; this.field_0.addSeparator(); this.field_0.add(var1 = new XMLPro$JButtonSmall(this, new ImageIcon(this.getClass().getResource("icons/help.gif")))); ((AbstractButton)var1).addActionListener(new CSH.DisplayHelpFromSource(this.mainHB)); ((JComponent)var1).setToolTipText(Strings.Help); } void cacheAllowedElements(String var1, ElementDecl var2, ElemCache var3) { int var4 = var2.getContentType(); ElementVector var5 = new ElementVector(); switch (var4) { case 1: var3.empty = true; case 2: case 3: default: break; case 4: StringTokenizer var6 = new StringTokenizer(var2.getXML4JContentModel().toString(), "(+,?|*)\t\n\r"); while(var6.hasMoreTokens()) { String var7 = var6.nextToken(); if (!"#PCDATA".equals(var7)) { var5.add(var7); } } } Enumeration var8 = ((Array)var5).elements(); Vector var9 = Sorter.sortStringEnumeration(var8); var3.elements = var9; this.xmlDocument.dtdCache.put(var1, var3); } protected void centerOnScreen() { Dimension var1 = Toolkit.getDefaultToolkit().getScreenSize(); Dimension var2 = ((Component)this).getSize(); ((Component)this).setLocation((var1.width - var2.width) / 2, (var1.height - var2.height) / 2); } void changeEditFixedAtts() { this.editFixedAttributes ^= true; if (!this.editFixedAttributes) { this.editFixedItem.setIcon(blank); } else { this.editFixedItem.setIcon(check); } DefaultTreeModel var1 = (DefaultTreeModel)this.theApp.elems.theTree.getModel(); var1.nodeStructureChanged((ElemNode)this.theApp.elems.theTree.getModel().getRoot()); if (this.theApp.elems.selectedElem != null) { this.theApp.elems.theTree.setSelectionPath(new TreePath(this.theApp.elems.selectedElem.getPath())); } } void changeLimitElements() { if (this.limitElements) { this.limitElements(false); } else { this.limitElements(true); } } void changeViewAttributes() { if (this.viewAttributes) { this.viewAttributes(false); } else { this.viewAttributes(true); } } void changeViewElemPalette() { if (this.viewElemPalette) { this.viewElemPalette(false); } else { this.viewElemPalette(true); } } void changeViewEntityPalette() { if (this.viewEntityPalette) { this.viewEntityPalette(false); } else { this.viewEntityPalette(true); } } void changeViewText() { if (this.viewText) { this.viewText(false); } else { this.viewText(true); } } void close() { if (this.xmlDocument.document != null && this.xmlDocument.modified) { YesNoBox var1 = new YesNoBox(this, Strings.Alert, Strings.SaveCurrentFile); ((Dialog)var1).show(); if (var1.result == Strings.Yes) { this.saveFile(); } } this.setNoDocument(); } static boolean containsKey(Hashtable var0, String var1) { return var0.containsKey(var1); } void copy() { if (!this.treeSelected) { if (this.lastText != null) { this.lastText.copy(); } } else { this.elemClipboard = new ElemClipboard(this, this.elems.selectedElem); } } static URL createURL(String var0) { URL var1 = null; try { var1 = new URL(var0); } catch (MalformedURLException var7) { File var2 = new File(var0); try { String var3 = var2.getAbsolutePath(); String var4 = System.getProperty("file.separator"); if (var4.length() == 1) { char var5 = var4.charAt(0); if (var5 != '/') { var3 = var3.replace(var5, '/'); } if (var3.charAt(0) != '/') { var3 = '/' + var3; } } var3 = "file://" + var3; var1 = new URL(var3); } catch (MalformedURLException var6) { System.exit(0); } } return var1; } void cut() { if (!this.treeSelected) { if (this.lastText != null) { this.lastText.cut(); } } else { this.elemClipboard = new ElemClipboard(this, this.elems.selectedElem); this.elems.deleteElem(); } } void dump(Node var1, int var2) { TXDocument var4 = this.xmlDocument.document; for(int var5 = 0; var5 < var2; ++var5) { System.out.println(" "); } System.out.println(var1.getNodeName() + "{" + var1.getNodeType() + "}:"); NamedNodeMap var6 = var1.getAttributes(); if (var6 != null) { int var3 = var6.getLength(); for(int var7 = 0; var7 < var3; ++var7) { Attr var8 = (Attr)var6.item(var7); System.out.println("[" + var8.getName() + "/" + var8.getValue() + "]"); } } System.out.println("\n"); NodeList var11 = var1.getChildNodes(); int var10 = var11.getLength(); for(int var12 = 0; var12 < var10; ++var12) { Node var9 = var11.item(var12); this.dump(var9, var2 + 1); } } void exit() { if (this.xmlDocument.modified) { YesNoBox var1 = new YesNoBox(this, Strings.Alert, Strings.DocumentNotSaved); ((Dialog)var1).show(); if (var1.result == Strings.Yes) { System.exit(0); } } else { System.exit(0); } } void find() { if (this.elems != null && this.elems.theTree != null) { ElemNode var1 = (ElemNode)this.elems.theTree.getModel().getRoot(); this.searchTree = ((DefaultMutableTreeNode)var1).postorderEnumeration(); FindBox var2 = new FindBox(this, Strings.TextToFind); ((Dialog)var2).show(); this.searchTree = null; } } boolean findAgain(String var1, boolean var2, String var3) { boolean var4; if (!this.searchTree.hasMoreElements()) { var4 = false; } else { var4 = this.findInElement(var1, var2, var3); } if (!var4) { MesgBox var5 = new MesgBox(this, Strings.NotFound); ((Dialog)var5).show(); } return var4; } boolean findInElement(String var1, boolean var2, String var3) { boolean var4 = false; if (!var2) { var1 = var1.toLowerCase(); } while(this.searchTree.hasMoreElements()) { ElemNode var5 = (ElemNode)this.searchTree.nextElement(); Node var6 = var5.e; if (var6.getNodeType() == 1) { if (var3.equals(Strings.All) || var3.equals(Strings.ElementNames)) { String var14 = var6.getNodeName(); if (var14 != null) { if (!var2) { var14 = var14.toLowerCase(); } if (var14.indexOf(var1) != -1) { var4 = true; } } } } else if (var3.equals(Strings.All) || var3.equals(Strings.Text)) { String var7 = var6.getNodeValue(); if (var7 != null) { if (!var2) { var7 = var7.toLowerCase(); } if (var7.indexOf(var1) != -1) { var4 = true; } } } NamedNodeMap var8 = var6.getAttributes(); if (var8 != null) { int var9 = var8.getLength(); for(int var10 = 0; var10 < var9; ++var10) { Attr var11 = (Attr)var8.item(var10); String var12 = var11.getName(); String var13 = var11.getValue(); if (!var2) { var12 = var12.toLowerCase(); var13 = var13.toLowerCase(); } if ((var3.equals(Strings.All) || var3.equals(Strings.AttributeNames)) && var12.indexOf(var1) != -1) { var4 = true; } if ((var3.equals(Strings.All) || var3.equals(Strings.AttributeValues)) && var13.indexOf(var1) != -1) { var4 = true; } } } if (var4) { this.elems.selectNode(var5); return true; } } return false; } void limitElements(boolean var1) { if (!var1) { this.limitElementsItem.setIcon(blank); } else { this.limitElementsItem.setIcon(check); } this.limitElements = var1; if (this.xmlDocument.document != null) { this.elemPalette.updateElements(); } } public static void main(String[] var0) { String var1 = System.getProperty("java.version"); if (var1 != null) { int var2 = Character.digit(var1.charAt(0), 10); int var3 = Character.digit(var1.charAt(2), 10); if (var2 == 1 && var3 < 2) { AWTMesgBox var4 = new AWTMesgBox(new Frame(""), Strings.JavaVersionError); ((Dialog)var4).show(); System.exit(0); } } try { UIManager.setLookAndFeel(new VervetLookAndFeel()); } catch (Exception var6) { System.out.println(var6); } SplashBox var7 = new SplashBox(); ((Window)var7).show(); XMLPro var8 = new XMLPro("XML<PRO>", var7); Dimension var9 = Toolkit.getDefaultToolkit().getScreenSize(); if (var9.height >= 625 && var9.width >= 800) { ((Component)var8).setSize(640, 625); var8.centerOnScreen(); } else { ((Component)var8).setSize(525, 480); ((Component)var8).setLocation(115, 0); } Point var5 = ((Component)var8).getLocation(); var8.elemPalette.setLocation(var5.x - 115, var5.y); var8.entityPalette.setLocation(var5.x - 115, var5.y + 240); ((Component)var7).hide(); ((Window)var8).show(); if (var8.viewElemPalette) { var8.elemPalette.show(); } if (var8.viewEntityPalette) { var8.entityPalette.show(); } ((Component)var8).requestFocus(); if (var0.length > 0) { var8.openFile(var0[0]); } } void newFile() { if (this.xmlDocument.document != null && this.xmlDocument.modified) { YesNoBox var1 = new YesNoBox(this, Strings.Alert, Strings.SaveCurrentFile); ((Dialog)var1).show(); if (var1.result == Strings.Yes) { this.saveFile(); } } InputBoxTwo var2 = new InputBoxTwo(this, Strings.NewDocument, Strings.RootElementName, Strings.Encoding); var2.input2.setText("UTF-8"); ((Dialog)var2).show(); if (var2.result1 != null && var2.result1.length() >= 1) { this.setNoDocument(); this.xmlDocument.document = new TXDocument(); this.xmlDocument.document.setVersion("1.0"); if (var2.result2 != null && var2.result2.length() >= 1) { this.xmlDocument.document.setEncoding(var2.result2); } else { this.xmlDocument.document.setEncoding("UTF-8"); } this.xmlDocument.document.appendChild(this.xmlDocument.document.createElement(var2.result1)); this.setLoadedDocument(); this.xmlDocument.modified = true; ((Frame)this).setTitle("XML <PRO>"); } } void openFile() { if (this.xmlDocument.document != null && this.xmlDocument.modified) { YesNoBox var1 = new YesNoBox(this, Strings.Alert, Strings.SaveCurrentFile); ((Dialog)var1).show(); if (var1.result == Strings.Yes) { this.saveFile(); } } FileDialog var3 = new FileDialog(this, Strings.LoadDocument, 0); var3.setFile("*.xml"); if (this.currDirectory != null) { var3.setDirectory(this.currDirectory); } ((Dialog)var3).show(); String var2 = var3.getFile(); if (var2 != null) { this.currDirectory = var3.getDirectory(); this.openFile(var2); } } void openFile(String var1) { if (var1 != null) { String var2 = var1; this.setNoDocument(); if (this.currDirectory == null) { var2 = var1.substring(var1.lastIndexOf("\\") + 1, var1.length()); String var3 = var1.substring(0, var1.lastIndexOf("\\") + 1); this.currDirectory = var3; } ((Frame)this).setTitle(Strings.Opening + " " + var2); if (!this.parse(this.currDirectory + var2, true, true, true)) { this.setNoDocument(); return; } fileName = var2; this.setLoadedDocument(); } } boolean parse(String var1, boolean var2, boolean var3, boolean var4) { stream = var3; fileName = var1; text = var4; output = var2; this.parser = new VervetParser(); this.errorHandler = new XMLError(); this.parser.setErrorHandler(this.errorHandler); try { this.parser.parse(fileName); this.xmlDocument.document = (TXDocument)this.parser.getDocument(); } catch (IOException var8) { String var6 = Strings.ErrorOpeningDocument + '\n' + ((Throwable)var8).getMessage(); MultiMesgBox var7 = new MultiMesgBox(this.theApp, Strings.ErrorOpeningDocument, var6); ((Dialog)var7).show(); return false; } catch (SAXException var9) { } String var5 = this.errorHandler.getError(); if (var5 == null && this.xmlDocument.document.getDocumentElement() == null) { String var11 = Strings.ErrorOpeningDocument + '\n' + Strings.DocumentIsEmpty; MultiMesgBox var13 = new MultiMesgBox(this.theApp, Strings.ErrorOpeningDocument, var11); ((Dialog)var13).show(); return false; } else if (var5 != null) { String var10 = Strings.ErrorOpeningDocument + '\n' + this.errorHandler.getErrorLine() + var5; MultiMesgBox var12 = new MultiMesgBox(this.theApp, Strings.ErrorOpeningDocument, var10); ((Dialog)var12).show(); return false; } else { return true; } } void paste() { if (!this.treeSelected) { if (this.lastText != null) { this.lastText.paste(); } } else { if (this.elemClipboard != null && this.elems.selectedElem != null) { this.elemClipboard.pasteNodeInto(this.elems.selectedElem); } } } public int print(Graphics var1, PageFormat var2, int var3) throws PrinterException { if (var3 >= this.pages.size()) { return 1; } else { Font var4 = new Font("Courier", 0, FONT_HEIGHT); var1.setFont(var4); if (this.fontHeightMetric == 0) { this.fontHeightMetric = var1.getFontMetrics().getHeight(); } var1.setColor(Color.black); Vector var5 = (Vector)this.pages.elementAt(var3); int var7 = this.starty + this.fontHeightMetric; for(Enumeration var8 = var5.elements(); var8.hasMoreElements(); var7 += this.fontHeightMetric) { String var6 = (String)var8.nextElement(); var1.drawString(var6, this.startx, var7); } return 0; } } void printFile() { if (demoMode) { this.showDemoBox(); } else { this.pages = new Vector(); PrinterJob var1 = PrinterJob.getPrinterJob(); PageFormat var2 = var1.defaultPage(); this.startx = (int)var2.getImageableX(); this.starty = (int)var2.getImageableY(); StringWriter var3 = new StringWriter(); try { this.xmlDocument.document.printWithFormat(var3); } catch (IOException var9) { } String var4 = var3.toString(); double var5 = var2.getImageableHeight(); this.printLongString(var5, var4); var1.setPrintable(this); if (var1.printDialog()) { try { var1.print(); } catch (Exception var8) { ((Throwable)var8).printStackTrace(); } } } } void printLongString(double var1, String var3) { String var4 = StringUtils.breakUp(StringUtils.replaceStr(var3, '\t', " "), 80); StringReader var5 = new StringReader(var4); LineNumberReader var6 = new LineNumberReader(var5); Vector var7 = new Vector(); int var9 = 1; int var10 = 0; int var11 = 0; int var12 = this.starty + FONT_HEIGHT; String var8; try { do { var8 = var6.readLine(); if (var8 != null) { if ((double)(var12 + FONT_HEIGHT) > var1 * 0.8) { ++var9; var10 = 0; var12 = 0; this.pages.addElement(var7); var7 = new Vector(); } var12 += FONT_HEIGHT; var7.addElement(var8); ++var10; ++var11; } } while(var8 != null); } catch (EOFException var14) { this.pages.addElement(var7); } catch (Throwable var15) { var15.printStackTrace(); } this.pages.addElement(var7); } protected void processWindowEvent(WindowEvent var1) { if (((AWTEvent)var1).getID() == 201) { this.exit(); } else { super.processWindowEvent(var1); } } void saveAsFile() { if (demoMode) { this.showDemoBox(); } else if (this.xmlDocument.document != null) { if (this.xmlDocument.hasDTD && !this.xmlDocument.validated && !this.validateDocument(false)) { YesNoBox var1 = new YesNoBox(this, Strings.Alert, Strings.DocumentNotValid); ((Dialog)var1).show(); if (var1.result == Strings.No) { return; } } FileDialog var6 = new FileDialog(this.theApp, Strings.SaveDocument, 1); var6.setFile("*.xml"); if (this.currDirectory != null) { var6.setDirectory(this.currDirectory); } ((Dialog)var6).show(); String var2 = var6.getFile(); this.currDirectory = var6.getDirectory(); if (var2 != null) { try { FileOutputStream var7 = new FileOutputStream(this.currDirectory + var2); OutputStreamWriter var4 = new OutputStreamWriter(var7); this.xmlDocument.document.printWithFormat(var4); var4.flush(); var4.close(); fileName = var2; } catch (IOException var5) { MesgBox var3 = new MesgBox(this.theApp, Strings.ErrorWritingFile); ((Dialog)var3).show(); } fileName = var2; ((Frame)this).setTitle("XML <PRO> - " + fileName); this.xmlDocument.modified = false; } } } void saveFile() { if (demoMode) { this.showDemoBox(); } else if (this.xmlDocument.document != null) { if (fileName == null) { this.saveAsFile(); } else { if (this.xmlDocument.hasDTD && !this.xmlDocument.validated && !this.validateDocument(false)) { YesNoBox var1 = new YesNoBox(this, Strings.Alert, Strings.DocumentNotValid); ((Dialog)var1).show(); if (var1.result == Strings.No) { return; } } if (fileName != null) { try { FileOutputStream var5 = new FileOutputStream(this.currDirectory + fileName); OutputStreamWriter var2 = new OutputStreamWriter(var5); this.xmlDocument.document.printWithFormat(var2); var2.flush(); var2.close(); } catch (IOException var3) { MesgBox var4 = new MesgBox(this.theApp, Strings.ErrorWritingFile); ((Dialog)var4).show(); } } this.xmlDocument.modified = false; } } } void scanForElems(Node var1) { if (var1 != null) { String var3 = var1.getNodeName(); if (var3 != null) { if (!this.xmlDocument.hasDTD || !containsKey(this.xmlDocument.dtdElemVals, var3)) { ElementVector var2 = (ElementVector)this.xmlDocument.elemVals.get(var3); if (var2 == null) { var2 = new ElementVector(); this.xmlDocument.elemVals.put(var3, var2); } NamedNodeMap var4 = var1.getAttributes(); if (var4 != null) { int var5 = var4.getLength(); for(int var6 = 0; var6 < var5; ++var6) { Attr var7 = (Attr)var4.item(var6); var2.add(var7.getName()); } } } NodeList var8 = var1.getChildNodes(); int var9 = var8.getLength(); for(int var10 = 0; var10 < var9; ++var10) { Node var11 = var8.item(var10); if (var11.getNodeType() == 1) { this.scanForElems(var11); } } } } } void selectNodeInTree(Node var1) { Object var2 = null; ElemNode var3 = (ElemNode)this.elems.theTree.getModel().getRoot(); Enumeration var6 = ((DefaultMutableTreeNode)var3).postorderEnumeration(); while(var6.hasMoreElements()) { ElemNode var4 = (ElemNode)var6.nextElement(); Node var5 = var4.e; if (var5 == var1) { this.elems.selectNode(var4); return; } } } void setDefaultCursor() { ((Frame)this).setCursor(0); } void setLoadedDocument() { this.field_0.hide(); this.bottom.hide(); this.elemPalette.getContentPane().hide(); this.entityPalette.getContentPane().hide(); this.xmlDocument.modified = false; this.xmlDocument.entVals = new Hashtable(); this.xmlDocument.elemVals = new Hashtable(); this.xmlDocument.dtdElemVals = new Hashtable(); this.xmlDocument.dtdCache = new Hashtable(); if (this.parser == null) { this.xmlDocument.hasDTD = false; } else if (!this.parser.definedElementDecl) { this.xmlDocument.hasDTD = false; } else { this.xmlDocument.hasDTD = true; this.setValidateWidgets(true); } this.buildCache(this.xmlDocument.document.getDTD()); this.scanForElems(this.xmlDocument.document.getDocumentElement()); this.elemPalette.elementsChanged(); this.elems.addElements(this.xmlDocument.document); ElemNode var1 = (ElemNode)this.elems.theTree.getModel().getRoot(); this.elems.pan.editElement(var1.e); this.elemPalette.updateElements(); this.entityPalette.updateEntities(); this.setMutableOn(); this.setUndoWidgets(false); ((Frame)this).setTitle("XML <PRO> - " + fileName); this.elemPalette.getContentPane().show(); this.entityPalette.getContentPane().show(); this.field_0.show(); this.bottom.show(); if (this.xmlDocument.hasDTD) { this.validateDocument(true); } this.setDefaultCursor(); } void setMutableOff() { for(int var1 = 0; var1 < this.mutableOptions.length; ++var1) { this.mutableOptions[var1].setEnabled(false); } } void setMutableOn() { for(int var1 = 0; var1 < this.mutableOptions.length; ++var1) { this.mutableOptions[var1].setEnabled(true); } } void setNoDocument() { this.xmlDocument.document = null; this.undoManager.cantUndoMod(); this.treeSelected = false; this.elemClipboard = null; this.parser = null; this.xmlDocument.hasDTD = false; this.xmlDocument.modified = false; this.setWaitCursor(); this.setValidateWidgets(false); this.setMutableOff(); fileName = null; this.elems.deleteElements(); this.elemPalette.clear(); this.entityPalette.clear(); this.data.setText(""); this.data.repaint(); this.attribs.clear(); this.setMutableOff(); this.elemPalette.clear(); this.xmlDocument.entVals = null; this.xmlDocument.elemVals = null; this.xmlDocument.dtdElemVals = null; this.xmlDocument.dtdCache = null; ((Frame)this).setTitle("XML <PRO>"); } void setUndoWidgets(boolean var1) { this.undoItem[0].setEnabled(var1); this.undoItem[1].setEnabled(var1); } void setValidateWidgets(boolean var1) { this.validateWidgets[0].setEnabled(var1); this.validateWidgets[1].setEnabled(var1); this.validateWidgets[2].setEnabled(var1); } void setWaitCursor() { ((Frame)this).setCursor(3); } void showDemoBox() { MesgBox var1 = new MesgBox(this, Strings.DemoVersion); ((Dialog)var1).show(); } void undo() { this.undoManager.undo(); } boolean validate(Element var1, boolean var2) { try { Node var3 = this.parser.validate(var1); if (var3 != null && var3.getNodeType() == 2) { var3 = this.parser.getErrorElement(); } if (var3 != null) { (new StringBuffer(String.valueOf(Strings.InvalidAt))).append(var3).append(var3.getNodeName()).toString(); String var7 = this.errorHandler.getWarning(); if (var7 == null) { var7 = Strings.InvalidNode; } this.selectNodeInTree(var3); if (var2) { MultiMesgBox var5 = new MultiMesgBox(this.theApp, Strings.ValidationError, var7); ((Dialog)var5).show(); } return false; } String var4 = Strings.ValidationSuccessful; } catch (Exception var6) { System.out.println(var6); } return true; } boolean validateDocument(boolean var1) { boolean var2 = false; this.setWaitCursor(); var2 = this.validate(this.xmlDocument.document.getDocumentElement(), var1); this.setDefaultCursor(); return var2; } void viewAttributes(boolean var1) { if (!var1) { this.viewAttributesItem.setIcon(blank); } else { this.viewAttributesItem.setIcon(check); } this.viewAttributes = var1; if (this.elems.theTree != null) { ((DefaultTreeModel)this.elems.theTree.getModel()).nodeStructureChanged((TreeNode)this.elems.theTree.getModel().getRoot()); TreePath var2 = new TreePath(this.elems.selectedElem.getPath()); this.elems.theTree.expandPath(var2); this.elems.theTree.setSelectionPath(var2); this.elems.theTree.scrollPathToVisible(var2); } } void viewElemPalette(boolean var1) { if (!var1) { this.viewElementItem.setIcon(blank); } else { this.viewElementItem.setIcon(check); } this.viewElemPalette = var1; if (!var1) { this.elemPalette.hide(); } else { this.elemPalette.show(); } } void viewEntityPalette(boolean var1) { if (!var1) { this.viewEntityItem.setIcon(blank); } else { this.viewEntityItem.setIcon(check); } this.viewEntityPalette = var1; if (!var1) { this.entityPalette.hide(); } else { this.entityPalette.show(); } } void viewText(boolean var1) { if (!var1) { this.viewTextItem.setIcon(blank); } else { this.viewTextItem.setIcon(check); } this.viewText = var1; if (this.elems.theTree != null) { ((DefaultTreeModel)this.elems.theTree.getModel()).nodeStructureChanged((TreeNode)this.elems.theTree.getModel().getRoot()); } TreePath var2 = new TreePath(this.elems.selectedElem.getPath()); this.elems.theTree.expandPath(var2); this.elems.theTree.setSelectionPath(var2); this.elems.theTree.scrollPathToVisible(var2); } public void windowActivated(WindowEvent var1) { } public void windowClosed(WindowEvent var1) { } public void windowClosing(WindowEvent var1) { ((Component)this).setVisible(false); ((Window)this).dispose(); System.exit(0); } public void windowDeactivated(WindowEvent var1) { } public void windowDeiconified(WindowEvent var1) { } public void windowIconified(WindowEvent var1) { } public void windowOpened(WindowEvent var1) { } }