home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2001 October / PCpro_2001_10.ISO / xml / xmlpro / data1.cab / Program_Executable_FILES / xmlpro.jar / ElemPanel.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-09-15  |  11.0 KB  |  430 lines

  1. import com.ibm.xml.parser.TXText;
  2. import java.awt.BorderLayout;
  3. import java.awt.Container;
  4. import java.awt.Dimension;
  5. import java.awt.Point;
  6. import java.awt.dnd.DragSource;
  7. import java.awt.dnd.DropTarget;
  8. import java.util.Enumeration;
  9. import java.util.Vector;
  10. import javax.swing.JPanel;
  11. import javax.swing.JPopupMenu;
  12. import javax.swing.JScrollPane;
  13. import javax.swing.JTree;
  14. import javax.swing.text.JTextComponent;
  15. import javax.swing.tree.DefaultMutableTreeNode;
  16. import javax.swing.tree.DefaultTreeModel;
  17. import javax.swing.tree.TreePath;
  18. import org.w3c.dom.Document;
  19. import org.w3c.dom.Element;
  20. import org.w3c.dom.EntityReference;
  21. import org.w3c.dom.Node;
  22. import org.w3c.dom.NodeList;
  23.  
  24. public class ElemPanel extends JPanel {
  25.    // $FF: renamed from: d org.w3c.dom.Document
  26.    Document field_0;
  27.    AttribPanel pan;
  28.    JPopupMenu popup;
  29.    JTextComponent data;
  30.    ElemNode selectedElem = null;
  31.    TreeEventHandler treeEventHandler;
  32.    ElemNode tree = null;
  33.    JTree theTree;
  34.    XMLPro theApp;
  35.    public String oldText = null;
  36.    DragSource theDragSource;
  37.    DropTarget theDropTarget;
  38.    ElemPanel$MyDragGestureListener theDragGestureListener;
  39.    ElemPanel$MyDragSourceListener theDragSourceListener;
  40.    ElemPanel$MyDropTargetListener theDropTargetListener;
  41.  
  42.    ElemPanel(AttribPanel var1, JTextComponent var2, XMLPro var3) {
  43.       this.theApp = var3;
  44.       this.pan = var1;
  45.       this.data = var2;
  46.       ((Container)this).setLayout(new BorderLayout());
  47.    }
  48.  
  49.    void addElement(String var1, int var2) {
  50.       Object var3 = null;
  51.       switch (var2) {
  52.          case 1:
  53.             var3 = this.field_0.createElement(var1);
  54.             break;
  55.          case 2:
  56.          case 5:
  57.          case 6:
  58.          case 7:
  59.          default:
  60.             return;
  61.          case 3:
  62.             var3 = this.field_0.createTextNode("");
  63.             break;
  64.          case 4:
  65.             var3 = this.field_0.createCDATASection("");
  66.             break;
  67.          case 8:
  68.             var3 = this.field_0.createComment("");
  69.       }
  70.  
  71.       this.selectedElem.e.appendChild((Node)var3);
  72.       ElemNode var4 = new ElemNode((Node)var3);
  73.       this.selectedElem.add(var4);
  74.       ((DefaultTreeModel)this.theTree.getModel()).nodeStructureChanged(this.selectedElem);
  75.       this.selectNode(var4);
  76.       this.theApp.xmlDocument.validated = false;
  77.       this.theApp.xmlDocument.modified = true;
  78.       this.theApp.undoManager.nodeInserted(var4);
  79.       this.theTree.repaint();
  80.    }
  81.  
  82.    void addElements(ElemNode var1, Node var2) {
  83.       NodeList var3 = var2.getChildNodes();
  84.       Object var5 = null;
  85.       if (this.tree == null) {
  86.          ElemNode var9 = new ElemNode(var2);
  87.          this.tree = var9;
  88.          this.theTree = new JTree(this.tree);
  89.          this.theTree.setCellRenderer(new XMLTreeCellRenderer(this, this.theApp));
  90.          this.theDragGestureListener = new ElemPanel$MyDragGestureListener(this);
  91.          this.theDragSourceListener = new ElemPanel$MyDragSourceListener(this);
  92.          this.theDropTargetListener = new ElemPanel$MyDropTargetListener(this);
  93.          this.theDragSource = new DragSource();
  94.          this.theDragSource.createDefaultDragGestureRecognizer(this.getTree(), 2, this.theDragGestureListener);
  95.          this.theDropTarget = new DropTarget(this.getTree(), 2, this.theDropTargetListener);
  96.          this.theTree.setRowHeight(-1);
  97.          this.popup = new JPopupMenu();
  98.          ((Container)this).add(this.popup);
  99.          JScrollPane var6 = new JScrollPane(this.theTree);
  100.          this.treeEventHandler = new TreeEventHandler(this.pan, this.data, this, this.theApp);
  101.          this.theTree.addTreeSelectionListener(this.treeEventHandler);
  102.          this.theTree.addMouseListener(this.treeEventHandler);
  103.          ((Container)this).add("Center", var6);
  104.          this.addElements(var9, var2);
  105.          this.theTree.expandRow(0);
  106.       } else {
  107.          int var15 = var3.getLength();
  108.  
  109.          for(int var7 = 0; var7 < var15; ++var7) {
  110.             Node var4 = var3.item(var7);
  111.             if (var4.getNodeType() == 1) {
  112.                ElemNode var10 = new ElemNode(var4);
  113.                ((DefaultMutableTreeNode)var1).add(var10);
  114.                this.addElements(var10, var4);
  115.             } else if (var4.getNodeType() == 5) {
  116.                ElemNode var11 = new ElemNode(var4);
  117.                ((DefaultMutableTreeNode)var1).add(var11);
  118.             } else if (var4.getNodeType() == 3) {
  119.                TXText var8 = (TXText)var4;
  120.                if (!var8.getIsIgnorableWhitespace()) {
  121.                   ElemNode var12 = new ElemNode(var4);
  122.                   ((DefaultMutableTreeNode)var1).add(var12);
  123.                }
  124.             } else if (var4.getNodeType() == 4) {
  125.                ElemNode var13 = new ElemNode(var4);
  126.                ((DefaultMutableTreeNode)var1).add(var13);
  127.             } else if (var4.getNodeType() == 8) {
  128.                ElemNode var14 = new ElemNode(var4);
  129.                ((DefaultMutableTreeNode)var1).add(var14);
  130.             }
  131.          }
  132.       }
  133.  
  134.    }
  135.  
  136.    void addElements(Document var1) {
  137.       this.field_0 = var1;
  138.       this.addElements(this.tree, var1.getDocumentElement());
  139.       ElemNode var2 = (ElemNode)this.theTree.getModel().getRoot();
  140.       this.selectNode(var2);
  141.    }
  142.  
  143.    void addEntity(String var1) {
  144.       EntityReference var2 = this.field_0.createEntityReference(var1);
  145.       this.selectedElem.e.appendChild(var2);
  146.       ElemNode var3 = new ElemNode(var2);
  147.       this.selectedElem.add(var3);
  148.       ((DefaultTreeModel)this.theTree.getModel()).nodeStructureChanged(this.selectedElem);
  149.       this.selectNode(var3);
  150.       this.theApp.xmlDocument.validated = false;
  151.       this.theApp.xmlDocument.modified = true;
  152.       this.theApp.undoManager.nodeInserted(var3);
  153.       this.theTree.repaint();
  154.    }
  155.  
  156.    void collapseBeneath() {
  157.       this.theApp.setWaitCursor();
  158.       ElemNode var1 = this.selectedElem;
  159.       Enumeration var2 = ((DefaultMutableTreeNode)var1).postorderEnumeration();
  160.  
  161.       while(var2.hasMoreElements()) {
  162.          var1 = (ElemNode)var2.nextElement();
  163.          if (!((DefaultMutableTreeNode)var1).isLeaf()) {
  164.             this.theTree.collapsePath(new TreePath(((DefaultMutableTreeNode)var1).getPath()));
  165.          }
  166.       }
  167.  
  168.       this.theApp.setDefaultCursor();
  169.    }
  170.  
  171.    public void dataChanged() {
  172.       if (this.selectedElem != null) {
  173.          if (this.selectedElem.e.getNodeType() == 3 || this.selectedElem.e.getNodeType() == 4 || this.selectedElem.e.getNodeType() == 8) {
  174.             this.oldText = this.selectedElem.e.getNodeValue();
  175.             String var1 = this.data.getText();
  176.             if ((this.oldText == null || !this.oldText.equals(var1)) && this.selectedElem != null) {
  177.                if (this.selectedElem.e.getNodeType() == 3) {
  178.                   var1 = StringUtils.replaceStr(var1, '<', "<");
  179.                   this.selectedElem.e.setNodeValue(var1);
  180.                } else if (this.selectedElem.e.getNodeType() == 8) {
  181.                   this.selectedElem.e.setNodeValue(var1);
  182.                } else {
  183.                   this.selectedElem.e.setNodeValue(var1);
  184.                }
  185.  
  186.                ((DefaultTreeModel)this.theTree.getModel()).nodeStructureChanged(this.selectedElem);
  187.                this.theApp.xmlDocument.validated = false;
  188.                this.theApp.xmlDocument.modified = true;
  189.                this.theApp.undoManager.nodeTextMod(this.selectedElem, this.oldText);
  190.             }
  191.  
  192.          }
  193.       }
  194.    }
  195.  
  196.    void deleteAttribType(String var1, String var2, ElemNode var3) {
  197.       Element var4 = (Element)var3.e;
  198.       String var6 = var4.getTagName();
  199.       if (var6 != null && var6.equals(var1)) {
  200.          var4.removeAttribute(var2);
  201.       }
  202.  
  203.       Enumeration var7 = ((DefaultMutableTreeNode)var3).children();
  204.  
  205.       while(var7.hasMoreElements()) {
  206.          ElemNode var5 = (ElemNode)var7.nextElement();
  207.          this.deleteAttribType(var1, var2, var5);
  208.       }
  209.  
  210.    }
  211.  
  212.    void deleteElem() {
  213.       if (this.theApp.xmlDocument.document.getDocumentElement() != this.selectedElem.e) {
  214.          ElemNode var1 = (ElemNode)this.selectedElem.getParent();
  215.          this.theApp.xmlDocument.validated = false;
  216.          this.theApp.xmlDocument.modified = true;
  217.          this.theApp.undoManager.nodeDeleted(this.selectedElem, var1, (ElemNode)this.selectedElem.getNextSibling());
  218.          this.selectedElem.e.getParentNode().removeChild(this.selectedElem.e);
  219.          ((DefaultMutableTreeNode)var1).remove(this.selectedElem);
  220.          this.selectedElem = var1;
  221.          ((DefaultTreeModel)this.theTree.getModel()).nodeStructureChanged((ElemNode)this.theTree.getModel().getRoot());
  222.          this.selectNode(var1);
  223.       }
  224.  
  225.    }
  226.  
  227.    void deleteElemType(String var1, ElemNode var2) {
  228.       Node var3 = var2.e;
  229.       String var5 = var3.getNodeName();
  230.       if (var5 != null && var5.equals(var1)) {
  231.          ElemNode var11 = (ElemNode)((DefaultMutableTreeNode)var2).getParent();
  232.          ((DefaultMutableTreeNode)var11).remove(var2);
  233.          var3.getParentNode().removeChild(var3);
  234.       } else {
  235.          Vector var6 = var2.childrenVector();
  236.          if (var6 == null) {
  237.             return;
  238.          }
  239.  
  240.          int var7 = var6.size();
  241.          ElemNode[] var8 = new ElemNode[var7];
  242.  
  243.          for(int var9 = 0; var9 < var7; ++var9) {
  244.             var8[var9] = (ElemNode)var6.elementAt(var9);
  245.          }
  246.  
  247.          for(int var10 = 0; var10 < var7; ++var10) {
  248.             ElemNode var4 = var8[var10];
  249.             this.deleteElemType(var1, var4);
  250.          }
  251.       }
  252.  
  253.    }
  254.  
  255.    void deleteElements() {
  256.       this.tree = null;
  257.       ((Container)this).removeAll();
  258.    }
  259.  
  260.    void elemDown() {
  261.       ElemNode var1 = this.elemDownImp();
  262.       if (var1 != null) {
  263.          this.theApp.xmlDocument.validated = false;
  264.          this.theApp.xmlDocument.modified = true;
  265.          this.theApp.undoManager.nodeMovedDown(var1);
  266.       }
  267.  
  268.    }
  269.  
  270.    ElemNode elemDownImp() {
  271.       ElemNode var1 = this.selectedElem;
  272.       ElemNode var2 = (ElemNode)((DefaultMutableTreeNode)var1).getParent();
  273.       if (var2 == null) {
  274.          return null;
  275.       } else {
  276.          int var3 = ((DefaultMutableTreeNode)var2).getChildCount();
  277.          int var4 = ((DefaultMutableTreeNode)var2).getIndex(var1);
  278.          if (var4 != var3 - 1) {
  279.             ((DefaultMutableTreeNode)var2).insert(var1, var4 + 1);
  280.             ((DefaultTreeModel)this.theTree.getModel()).nodeStructureChanged(var2);
  281.             this.selectNode(var1);
  282.             this.theTree.repaint();
  283.             this.theApp.xmlDocument.validated = false;
  284.             this.theApp.xmlDocument.modified = true;
  285.             this.theApp.undoManager.nodeMovedDown(var1);
  286.             Node var5 = var1.e;
  287.             int var7 = 0;
  288.             boolean var8 = false;
  289.             NodeList var9 = var2.e.getChildNodes();
  290.             int var10 = var9.getLength();
  291.  
  292.             for(int var11 = 0; var11 < var10; ++var11) {
  293.                if (var8) {
  294.                   return var1;
  295.                }
  296.  
  297.                Node var6 = var9.item(var11);
  298.                if (var6 == var5) {
  299.                   var2.e.removeChild(var5);
  300.                   if (var11 < var10 - 2) {
  301.                      Node var12 = var9.item(var11 + 1);
  302.                      var2.e.insertBefore(var5, var12);
  303.                   } else {
  304.                      var2.e.appendChild(var5);
  305.                   }
  306.  
  307.                   var8 = true;
  308.                }
  309.  
  310.                ++var7;
  311.             }
  312.          }
  313.  
  314.          return null;
  315.       }
  316.    }
  317.  
  318.    void elemUp() {
  319.       ElemNode var1 = this.elemUpImp();
  320.       if (var1 != null) {
  321.          this.theApp.xmlDocument.validated = false;
  322.          this.theApp.xmlDocument.modified = true;
  323.          this.theApp.undoManager.nodeMovedUp(var1);
  324.       }
  325.  
  326.    }
  327.  
  328.    ElemNode elemUpImp() {
  329.       ElemNode var1 = this.selectedElem;
  330.       ElemNode var2 = (ElemNode)((DefaultMutableTreeNode)var1).getParent();
  331.       if (var2 == null) {
  332.          return null;
  333.       } else {
  334.          int var3 = ((DefaultMutableTreeNode)var2).getChildCount();
  335.          int var4 = ((DefaultMutableTreeNode)var2).getIndex(var1);
  336.          if (var4 != 0) {
  337.             ((DefaultMutableTreeNode)var2).insert(var1, var4 - 1);
  338.             ((DefaultTreeModel)this.theTree.getModel()).nodeStructureChanged(var2);
  339.             this.selectNode(var1);
  340.             this.theTree.repaint();
  341.             NodeList var5 = var2.e.getChildNodes();
  342.             Node var6 = var1.e;
  343.             int var7 = 0;
  344.             Node var8 = null;
  345.             int var10 = var5.getLength();
  346.  
  347.             for(int var11 = 0; var11 < var10; ++var11) {
  348.                Node var9 = var8;
  349.                var8 = var5.item(var11);
  350.                if (var8 == var6) {
  351.                   var2.e.removeChild(var6);
  352.                   var2.e.insertBefore(var6, var9);
  353.                   return var1;
  354.                }
  355.  
  356.                ++var7;
  357.             }
  358.          }
  359.  
  360.          return null;
  361.       }
  362.    }
  363.  
  364.    void expandBeneath() {
  365.       this.theApp.setWaitCursor();
  366.       ElemNode var1 = this.selectedElem;
  367.       Enumeration var2 = ((DefaultMutableTreeNode)var1).postorderEnumeration();
  368.  
  369.       while(var2.hasMoreElements()) {
  370.          var1 = (ElemNode)var2.nextElement();
  371.          this.theTree.expandPath(new TreePath(((DefaultMutableTreeNode)var1).getPath()));
  372.       }
  373.  
  374.       this.theApp.setDefaultCursor();
  375.    }
  376.  
  377.    public Dimension getPreferredSize() {
  378.       return new Dimension(200, 400);
  379.    }
  380.  
  381.    JTree getTree() {
  382.       return this.theTree;
  383.    }
  384.  
  385.    DefaultTreeModel getTreeModel() {
  386.       return (DefaultTreeModel)this.getTree().getModel();
  387.    }
  388.  
  389.    DefaultMutableTreeNode getTreeNode(int var1) {
  390.       return (DefaultMutableTreeNode)this.getTree().getPathForRow(var1).getLastPathComponent();
  391.    }
  392.  
  393.    DefaultMutableTreeNode getTreeNode(Point var1) {
  394.       return (DefaultMutableTreeNode)this.getTree().getPathForLocation(var1.x, var1.y).getLastPathComponent();
  395.    }
  396.  
  397.    void selectNode(ElemNode var1) {
  398.       TreePath var2 = new TreePath(((DefaultMutableTreeNode)var1).getPath());
  399.       this.theTree.expandPath(var2);
  400.       this.theTree.setSelectionPath(var2);
  401.       this.theTree.scrollPathToVisible(var2);
  402.    }
  403.  
  404.    boolean validDragSource(Point var1) {
  405.       try {
  406.          Object var2 = null;
  407.          Object var3 = null;
  408.          Object var4 = null;
  409.          DefaultMutableTreeNode var6 = this.getTreeNode(var1);
  410.          DefaultMutableTreeNode var7 = this.getTreeNode(this.getTree().getLeadSelectionRow());
  411.          DefaultMutableTreeNode var8 = (DefaultMutableTreeNode)var7.getRoot();
  412.          return var7 != null && var6 == var7 && var7 != var8;
  413.       } catch (NullPointerException var5) {
  414.          return false;
  415.       }
  416.    }
  417.  
  418.    boolean validDropTarget(Point var1) {
  419.       try {
  420.          Object var2 = null;
  421.          Object var3 = null;
  422.          DefaultMutableTreeNode var6 = this.getTreeNode(var1);
  423.          DefaultMutableTreeNode var5 = this.getTreeNode(this.getTree().getLeadSelectionRow());
  424.          return var6 != null && !var5.isNodeDescendant(var6);
  425.       } catch (NullPointerException var4) {
  426.          return false;
  427.       }
  428.    }
  429. }
  430.