home *** CD-ROM | disk | FTP | other *** search
/ Borland JBuilder 6 / jbuilder6.iso / IBM VisualAge for Java Enterprise v4.0 Retail / ivj40 / setup / IDE.Cab / F76873_XMLModelElement.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-04-25  |  5.0 KB  |  186 lines

  1. package com.ibm.ivb.jface.jfacex;
  2.  
  3. import com.ibm.ivb.jface.plus.OpenAction;
  4. import com.ibm.ivf.ui.browser.interfaces.IDomainModel;
  5. import com.ibm.ivf.ui.browser.interfaces.IElement;
  6. import com.ibm.ivf.ui.browser.interfaces.IIndexedProperty;
  7. import com.ibm.ivf.ui.browser.interfaces.IProperty;
  8. import com.ibm.ivf.ui.browser.interfaces.ISimpleProperty;
  9. import com.ibm.ivf.ui.browser.interfaces.SetPropertyVetoException;
  10. import com.ibm.ivf.ui.browser.model.ElementSetProperty;
  11. import com.ibm.ivf.ui.browser.model.IBasicProperties;
  12. import com.ibm.ivf.ui.browser.model.SimpleProperty;
  13. import com.ibm.xml.parser.Child;
  14. import com.ibm.xml.parser.Parent;
  15. import com.ibm.xml.parser.TXElement;
  16. import java.io.Serializable;
  17. import java.util.Hashtable;
  18. import javax.swing.ImageIcon;
  19. import org.w3c.dom.Node;
  20. import org.w3c.dom.NodeList;
  21.  
  22. public class XMLModelElement extends TXElement implements IElement, IBasicProperties, Serializable {
  23.    private static final String kHABIBMCopyright = "(c) Copyright IBM Corporation 1998";
  24.    private IDomainModel model;
  25.    private boolean deleted = false;
  26.    protected Hashtable caches;
  27.    private static boolean loadTime;
  28.  
  29.    public XMLModelElement(IDomainModel var1, String var2, String var3) {
  30.       super(var2);
  31.       this.model = var1;
  32.       ((TXElement)this).setAttribute("name", var3);
  33.    }
  34.  
  35.    public void addChildElement(String var1, XMLModelElement var2) {
  36.       ElementSetProperty var3 = (ElementSetProperty)this.getIndexedProperty(var1, var2.getType());
  37.       var3.add(var2);
  38.       ((Parent)this).appendChild(var2);
  39.       this.getDomain().fireDomainChanged(this, var1, var2);
  40.    }
  41.  
  42.    public IDomainModel getDomain() {
  43.       return this.model;
  44.    }
  45.  
  46.    public ImageIcon getIcon() {
  47.       IProperty var1 = this.getProperty("icon");
  48.       if (var1 != null) {
  49.          ISimpleProperty var2 = var1.toSimpleProperty();
  50.          if (var2 != null) {
  51.             return var2.toIcon();
  52.          }
  53.       }
  54.  
  55.       return null;
  56.    }
  57.  
  58.    protected IIndexedProperty getIndexedProperty(String var1, String var2) {
  59.       if (this.caches == null) {
  60.          this.caches = new Hashtable();
  61.       }
  62.  
  63.       ElementSetProperty var3 = (ElementSetProperty)this.caches.get(var1);
  64.       if (var3 == null) {
  65.          var3 = new ElementSetProperty();
  66.          this.caches.put(var1, var3);
  67.          NodeList var4 = ((Parent)this).getChildNodes();
  68.  
  69.          for(int var5 = 0; var5 < var4.getLength(); ++var5) {
  70.             Node var6 = var4.item(var5);
  71.             if (var6 instanceof XMLModelElement) {
  72.                XMLModelElement var7 = (XMLModelElement)var4.item(var5);
  73.                if (var2 == null || var2.equals(var7.getType())) {
  74.                   var3.add(var7);
  75.                }
  76.             }
  77.          }
  78.       }
  79.  
  80.       return var3;
  81.    }
  82.  
  83.    public String getName() {
  84.       if (loadTime) {
  85.          return super.getName();
  86.       } else {
  87.          IProperty var1 = this.getProperty("name");
  88.          return var1 == null ? null : var1.toString();
  89.       }
  90.    }
  91.  
  92.    public XMLModelElement getParent() {
  93.       Node var1 = ((Child)this).getParentNode();
  94.       return var1 instanceof XMLModelElement ? (XMLModelElement)var1 : null;
  95.    }
  96.  
  97.    public IProperty getProperty(String var1) {
  98.       if ("icon".equals(var1)) {
  99.          IDomainModel var2 = this.getDomain();
  100.          if (var2 != null) {
  101.             ImageIcon var3 = var2.getIcon(this.getType());
  102.             if (var3 != null) {
  103.                return new SimpleProperty(var3);
  104.             }
  105.          }
  106.       }
  107.  
  108.       if ("name".equals(var1)) {
  109.          return new SimpleProperty(((TXElement)this).getAttribute("name"));
  110.       } else if ("type".equals(var1)) {
  111.          return new SimpleProperty(((TXElement)this).getTagName());
  112.       } else {
  113.          return "JFacePlusOpenAction".equals(var1) ? new SimpleProperty(new OpenAction(this)) : null;
  114.       }
  115.    }
  116.  
  117.    public String getType() {
  118.       IProperty var1 = this.getProperty("type");
  119.       return var1 == null ? null : var1.toString();
  120.    }
  121.  
  122.    public boolean hasProperty(String var1) {
  123.       return this.getProperty(var1) != null;
  124.    }
  125.  
  126.    public boolean isDeleted() {
  127.       return this.deleted;
  128.    }
  129.  
  130.    public void removeChildElement(String var1, XMLModelElement var2) {
  131.       ((Parent)this).removeChild(var2);
  132.       ElementSetProperty var3 = (ElementSetProperty)this.getIndexedProperty(var1, var2.getType());
  133.       var3.remove(var2);
  134.       var2.setDeleted(true);
  135.       this.getDomain().fireDomainChanged(this, var1, var2);
  136.    }
  137.  
  138.    public void setChildrenDeleted(boolean var1) {
  139.       NodeList var2 = ((Parent)this).getChildNodes();
  140.  
  141.       for(int var3 = 0; var3 < var2.getLength(); ++var3) {
  142.          Node var4 = var2.item(var3);
  143.          if (var4 instanceof XMLModelElement) {
  144.             XMLModelElement var5 = (XMLModelElement)var2.item(var3);
  145.             var5.setDeleted(true);
  146.             var5.setChildrenDeleted(true);
  147.          }
  148.       }
  149.  
  150.    }
  151.  
  152.    public void setDeleted(boolean var1) {
  153.       this.deleted = var1;
  154.    }
  155.  
  156.    public static void setLoadTime(boolean var0) {
  157.       loadTime = var0;
  158.    }
  159.  
  160.    public void setName(String var1) {
  161.       ((TXElement)this).setAttribute("name", var1);
  162.    }
  163.  
  164.    public void setProperty(String var1, IProperty var2) throws SetPropertyVetoException {
  165.       if ("name".equals(var1)) {
  166.          ((TXElement)this).setAttribute("name", var2.toString());
  167.          this.getDomain().fireDomainChanged(this, var1);
  168.       } else if ("type".equals(var1)) {
  169.          ((TXElement)this).setTagName(var2.toString());
  170.          this.getDomain().fireDomainChanged(this, var1);
  171.       }
  172.    }
  173.  
  174.    public final void setType(String var1) {
  175.       try {
  176.          this.setProperty("type", new SimpleProperty(var1));
  177.       } catch (SetPropertyVetoException var2) {
  178.       }
  179.    }
  180.  
  181.    public String toString() {
  182.       String var1 = this.getName();
  183.       return var1 == null ? "???" : var1;
  184.    }
  185. }
  186.