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

  1. import javax.swing.tree.DefaultMutableTreeNode;
  2. import javax.swing.tree.DefaultTreeModel;
  3. import org.w3c.dom.Element;
  4.  
  5. public class UndoManager {
  6.    public String oldText;
  7.    public ElemNode elemNode;
  8.    public int undoType;
  9.    public String attName;
  10.    public XMLPro theApp;
  11.    public ElemNode elemParent;
  12.    public ElemNode nextElement;
  13.    static int AttributeTextMod = 0;
  14.    static int NodeTextMod = 1;
  15.    static int NodeInserted = 2;
  16.    static int NodeDeleted = 3;
  17.    static int NodeMovedUp = 4;
  18.    static int NodeMovedDown = 5;
  19.    static int NodeDND = 6;
  20.    public boolean actionUndoable = false;
  21.  
  22.    UndoManager(XMLPro var1) {
  23.       this.theApp = var1;
  24.    }
  25.  
  26.    public void attributeTextMod(ElemNode var1, String var2, String var3) {
  27.       this.actionUndoable = true;
  28.       this.elemNode = var1;
  29.       this.oldText = var3;
  30.       this.attName = var2;
  31.       this.undoType = AttributeTextMod;
  32.       this.setUndoControls();
  33.    }
  34.  
  35.    public void cantUndoMod() {
  36.       this.actionUndoable = false;
  37.       this.setUndoControls();
  38.    }
  39.  
  40.    public void nodeDND(ElemNode var1, ElemNode var2, ElemNode var3) {
  41.       this.actionUndoable = true;
  42.       this.elemNode = var1;
  43.       this.elemParent = var2;
  44.       this.nextElement = var3;
  45.       this.undoType = NodeDND;
  46.       this.setUndoControls();
  47.    }
  48.  
  49.    public void nodeDeleted(ElemNode var1, ElemNode var2, ElemNode var3) {
  50.       this.actionUndoable = true;
  51.       this.elemNode = var1;
  52.       this.elemParent = var2;
  53.       this.nextElement = var3;
  54.       this.undoType = NodeDeleted;
  55.       this.setUndoControls();
  56.    }
  57.  
  58.    public void nodeInserted(ElemNode var1) {
  59.       this.actionUndoable = true;
  60.       this.elemNode = var1;
  61.       this.undoType = NodeInserted;
  62.       this.setUndoControls();
  63.    }
  64.  
  65.    public void nodeMovedDown(ElemNode var1) {
  66.       this.actionUndoable = true;
  67.       this.elemNode = var1;
  68.       this.undoType = NodeMovedDown;
  69.       this.setUndoControls();
  70.    }
  71.  
  72.    public void nodeMovedUp(ElemNode var1) {
  73.       this.actionUndoable = true;
  74.       this.elemNode = var1;
  75.       this.undoType = NodeMovedUp;
  76.       this.setUndoControls();
  77.    }
  78.  
  79.    public void nodeTextMod(ElemNode var1, String var2) {
  80.       this.actionUndoable = true;
  81.       this.elemNode = var1;
  82.       this.oldText = var2;
  83.       this.undoType = NodeTextMod;
  84.       this.setUndoControls();
  85.    }
  86.  
  87.    void setUndoControls() {
  88.       this.theApp.setUndoWidgets(this.actionUndoable);
  89.    }
  90.  
  91.    void undo() {
  92.       if (this.actionUndoable) {
  93.          switch (this.undoType) {
  94.             case 0:
  95.                ((Element)this.elemNode.e).setAttribute(this.attName, this.oldText);
  96.                this.theApp.elems.selectNode(this.elemNode);
  97.                this.theApp.elems.treeEventHandler.nodeSelected(this.elemNode);
  98.                break;
  99.             case 1:
  100.                this.elemNode.e.setNodeValue(this.oldText);
  101.                this.theApp.elems.selectNode(this.elemNode);
  102.                this.theApp.elems.treeEventHandler.nodeSelected(this.elemNode);
  103.                break;
  104.             case 2:
  105.                ElemNode var2 = (ElemNode)this.elemNode.getParent();
  106.                this.elemNode.e.getParentNode().removeChild(this.elemNode.e);
  107.                ((DefaultMutableTreeNode)var2).remove(this.elemNode);
  108.                ((DefaultTreeModel)this.theApp.elems.theTree.getModel()).nodeStructureChanged((ElemNode)this.theApp.elems.theTree.getModel().getRoot());
  109.                this.theApp.elems.selectNode(var2);
  110.                break;
  111.             case 3:
  112.                if (this.nextElement != null) {
  113.                   this.elemParent.e.insertBefore(this.elemNode.e, this.nextElement.e);
  114.                   this.elemParent.insert(this.elemNode, this.elemParent.getIndex(this.nextElement));
  115.                } else {
  116.                   this.elemParent.e.appendChild(this.elemNode.e);
  117.                   this.elemParent.add(this.elemNode);
  118.                }
  119.  
  120.                ((DefaultTreeModel)this.theApp.elems.theTree.getModel()).nodeStructureChanged(this.elemParent);
  121.                this.theApp.elems.selectNode(this.elemNode);
  122.                break;
  123.             case 4:
  124.                this.theApp.elems.selectNode(this.elemNode);
  125.                this.theApp.elems.elemDownImp();
  126.                break;
  127.             case 5:
  128.                this.theApp.elems.selectNode(this.elemNode);
  129.                this.theApp.elems.elemUpImp();
  130.                break;
  131.             case 6:
  132.                ElemNode var1 = (ElemNode)this.elemNode.getParent();
  133.                this.elemNode.e.getParentNode().removeChild(this.elemNode.e);
  134.                ((DefaultMutableTreeNode)var1).remove(this.elemNode);
  135.                this.theApp.elems.selectNode(var1);
  136.                ((DefaultTreeModel)this.theApp.elems.theTree.getModel()).nodeStructureChanged((ElemNode)this.theApp.elems.theTree.getModel().getRoot());
  137.                if (this.nextElement != null) {
  138.                   this.elemParent.e.insertBefore(this.elemNode.e, this.nextElement.e);
  139.                   this.elemParent.insert(this.elemNode, this.elemParent.getIndex(this.nextElement));
  140.                } else {
  141.                   this.elemParent.e.appendChild(this.elemNode.e);
  142.                   this.elemParent.add(this.elemNode);
  143.                }
  144.  
  145.                ((DefaultTreeModel)this.theApp.elems.theTree.getModel()).nodeStructureChanged(this.elemParent);
  146.                this.theApp.elems.selectNode(this.elemNode);
  147.          }
  148.  
  149.          this.actionUndoable = false;
  150.          this.setUndoControls();
  151.       }
  152.    }
  153. }
  154.