home *** CD-ROM | disk | FTP | other *** search
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
- import org.w3c.dom.Element;
-
- public class UndoManager {
- public String oldText;
- public ElemNode elemNode;
- public int undoType;
- public String attName;
- public XMLPro theApp;
- public ElemNode elemParent;
- public ElemNode nextElement;
- static int AttributeTextMod = 0;
- static int NodeTextMod = 1;
- static int NodeInserted = 2;
- static int NodeDeleted = 3;
- static int NodeMovedUp = 4;
- static int NodeMovedDown = 5;
- static int NodeDND = 6;
- public boolean actionUndoable = false;
-
- UndoManager(XMLPro var1) {
- this.theApp = var1;
- }
-
- public void attributeTextMod(ElemNode var1, String var2, String var3) {
- this.actionUndoable = true;
- this.elemNode = var1;
- this.oldText = var3;
- this.attName = var2;
- this.undoType = AttributeTextMod;
- this.setUndoControls();
- }
-
- public void cantUndoMod() {
- this.actionUndoable = false;
- this.setUndoControls();
- }
-
- public void nodeDND(ElemNode var1, ElemNode var2, ElemNode var3) {
- this.actionUndoable = true;
- this.elemNode = var1;
- this.elemParent = var2;
- this.nextElement = var3;
- this.undoType = NodeDND;
- this.setUndoControls();
- }
-
- public void nodeDeleted(ElemNode var1, ElemNode var2, ElemNode var3) {
- this.actionUndoable = true;
- this.elemNode = var1;
- this.elemParent = var2;
- this.nextElement = var3;
- this.undoType = NodeDeleted;
- this.setUndoControls();
- }
-
- public void nodeInserted(ElemNode var1) {
- this.actionUndoable = true;
- this.elemNode = var1;
- this.undoType = NodeInserted;
- this.setUndoControls();
- }
-
- public void nodeMovedDown(ElemNode var1) {
- this.actionUndoable = true;
- this.elemNode = var1;
- this.undoType = NodeMovedDown;
- this.setUndoControls();
- }
-
- public void nodeMovedUp(ElemNode var1) {
- this.actionUndoable = true;
- this.elemNode = var1;
- this.undoType = NodeMovedUp;
- this.setUndoControls();
- }
-
- public void nodeTextMod(ElemNode var1, String var2) {
- this.actionUndoable = true;
- this.elemNode = var1;
- this.oldText = var2;
- this.undoType = NodeTextMod;
- this.setUndoControls();
- }
-
- void setUndoControls() {
- this.theApp.setUndoWidgets(this.actionUndoable);
- }
-
- void undo() {
- if (this.actionUndoable) {
- switch (this.undoType) {
- case 0:
- ((Element)this.elemNode.e).setAttribute(this.attName, this.oldText);
- this.theApp.elems.selectNode(this.elemNode);
- this.theApp.elems.treeEventHandler.nodeSelected(this.elemNode);
- break;
- case 1:
- this.elemNode.e.setNodeValue(this.oldText);
- this.theApp.elems.selectNode(this.elemNode);
- this.theApp.elems.treeEventHandler.nodeSelected(this.elemNode);
- break;
- case 2:
- ElemNode var2 = (ElemNode)this.elemNode.getParent();
- this.elemNode.e.getParentNode().removeChild(this.elemNode.e);
- ((DefaultMutableTreeNode)var2).remove(this.elemNode);
- ((DefaultTreeModel)this.theApp.elems.theTree.getModel()).nodeStructureChanged((ElemNode)this.theApp.elems.theTree.getModel().getRoot());
- this.theApp.elems.selectNode(var2);
- break;
- case 3:
- if (this.nextElement != null) {
- this.elemParent.e.insertBefore(this.elemNode.e, this.nextElement.e);
- this.elemParent.insert(this.elemNode, this.elemParent.getIndex(this.nextElement));
- } else {
- this.elemParent.e.appendChild(this.elemNode.e);
- this.elemParent.add(this.elemNode);
- }
-
- ((DefaultTreeModel)this.theApp.elems.theTree.getModel()).nodeStructureChanged(this.elemParent);
- this.theApp.elems.selectNode(this.elemNode);
- break;
- case 4:
- this.theApp.elems.selectNode(this.elemNode);
- this.theApp.elems.elemDownImp();
- break;
- case 5:
- this.theApp.elems.selectNode(this.elemNode);
- this.theApp.elems.elemUpImp();
- break;
- case 6:
- ElemNode var1 = (ElemNode)this.elemNode.getParent();
- this.elemNode.e.getParentNode().removeChild(this.elemNode.e);
- ((DefaultMutableTreeNode)var1).remove(this.elemNode);
- this.theApp.elems.selectNode(var1);
- ((DefaultTreeModel)this.theApp.elems.theTree.getModel()).nodeStructureChanged((ElemNode)this.theApp.elems.theTree.getModel().getRoot());
- if (this.nextElement != null) {
- this.elemParent.e.insertBefore(this.elemNode.e, this.nextElement.e);
- this.elemParent.insert(this.elemNode, this.elemParent.getIndex(this.nextElement));
- } else {
- this.elemParent.e.appendChild(this.elemNode.e);
- this.elemParent.add(this.elemNode);
- }
-
- ((DefaultTreeModel)this.theApp.elems.theTree.getModel()).nodeStructureChanged(this.elemParent);
- this.theApp.elems.selectNode(this.elemNode);
- }
-
- this.actionUndoable = false;
- this.setUndoControls();
- }
- }
- }
-