home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xa;
-
- import com.extensibility.util.Debug;
- import com.extensibility.xml.BaseDeclaration;
- import com.extensibility.xml.ExternalSubset;
- import com.extensibility.xml.MarkedSectionClose;
- import com.extensibility.xml.MarkedSectionOpen;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Stack;
- import java.util.Vector;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
-
- class OverTreeModel extends DefaultTreeModel {
- Hashtable declNodes;
- SchemaDoc doc;
-
- OverTreeModel(SchemaDoc var1) {
- super(new DefaultMutableTreeNode());
- this.doc = var1;
- this.declNodes = new Hashtable();
- }
-
- SchemaDoc getSchemaDoc() {
- return this.doc;
- }
-
- DefaultMutableTreeNode findNode(BaseDeclaration var1) {
- return (DefaultMutableTreeNode)this.declNodes.get(var1);
- }
-
- void updateTreeForMove(BaseDeclaration var1) {
- DefaultMutableTreeNode var2 = this.findNode(var1);
- if (var2 != null) {
- ((DefaultTreeModel)this).removeNodeFromParent(var2);
- this.updateTreeForInsert(var1, var2);
- }
- }
-
- void updateTreeForRemove(BaseDeclaration var1) {
- DefaultMutableTreeNode var2 = this.findNode(var1);
- ((DefaultTreeModel)this).removeNodeFromParent(var2);
- this.declNodes.remove(var1);
- }
-
- void updateTreeForInsert(BaseDeclaration var1) {
- this.updateTreeForInsert(var1, new DefaultMutableTreeNode(var1));
- }
-
- void updateTreeForInsert(BaseDeclaration var1, DefaultMutableTreeNode var2) {
- this.declNodes.put(var1, var2);
- DefaultMutableTreeNode var5 = null;
-
- BaseDeclaration var3;
- DefaultMutableTreeNode var4;
- do {
- var3 = this.getSchemaDoc().getPrevDecl(var1);
- if (var3 == null) {
- var4 = (DefaultMutableTreeNode)((DefaultTreeModel)this).getRoot();
- } else {
- var4 = this.findNode(var3);
- }
-
- while(var4 != null) {
- BaseDeclaration var6 = (BaseDeclaration)var4.getUserObject();
- if (var6.isSubordinate(var1)) {
- break;
- }
-
- if (var4 == (DefaultMutableTreeNode)((DefaultTreeModel)this).getRoot()) {
- var5 = var4;
- break;
- }
-
- var5 = var4;
- var4 = (DefaultMutableTreeNode)var4.getParent();
- }
-
- if (var4 == null) {
- var1 = var3;
- }
- } while(var4 == null && var3 != null);
-
- if (var4 == null) {
- Debug.assert(var4 != null, "unable to find parent");
- }
-
- int var7 = var5 == null ? 0 : var4.getIndex(var5) + 1;
- ((DefaultTreeModel)this).insertNodeInto(var2, var4, var7);
- }
-
- void updateTree(boolean var1) {
- Stack var2 = new Stack();
- this.declNodes.clear();
- ExternalSubset var3 = this.getSchemaDoc().getStructure();
- DefaultMutableTreeNode var4 = new DefaultMutableTreeNode(var3);
- var2.push(var4);
- var2.push(var3);
- this.declNodes.put(var3, var4);
- Enumeration var5 = var1 ? this.getSchemaDoc().getDeclarations() : this.getSchemaDoc().getDeclarations(Class.forName("com.extensibility.xml.ExternalSubset"));
-
- while(var5.hasMoreElements()) {
- BaseDeclaration var6 = (BaseDeclaration)var5.nextElement();
- if (this.getSchemaDoc().getSchema().getFlavor().isSupported(var6.getClass()) && !(var6 instanceof MarkedSectionOpen) && !(var6 instanceof MarkedSectionClose)) {
- while(!((Vector)var2).isEmpty()) {
- BaseDeclaration var7 = (BaseDeclaration)var2.pop();
- DefaultMutableTreeNode var8 = (DefaultMutableTreeNode)var2.pop();
- if (var7.isSubordinate(var6)) {
- DefaultMutableTreeNode var9 = new DefaultMutableTreeNode(var6);
- var2.push(var8);
- var2.push(var7);
- var2.push(var9);
- var2.push(var6);
- this.declNodes.put(var6, var9);
- var8.add(var9);
- break;
- }
-
- Debug.assert(!((Vector)var2).isEmpty(), String.valueOf("no parent found for ").concat(String.valueOf(var6.getName())));
- }
- }
- }
-
- ((DefaultTreeModel)this).setRoot(var4);
- }
- }
-