1 19 package org.netbeans.modules.javacore.jmiimpl.javamodel; 20 21 import org.netbeans.jmi.javamodel.MultipartId; 22 import org.netbeans.jmi.javamodel.TypeReference; 23 import org.netbeans.lib.java.parser.ASTree; 24 import org.netbeans.mdr.storagemodel.StorableObject; 25 import java.util.*; 26 import org.netbeans.jmi.javamodel.Element; 27 28 32 public abstract class TypeReferenceImpl extends ElementReferenceImpl implements TypeReference { 33 private MultipartId parent; 34 35 36 public TypeReferenceImpl(StorableObject o) { 37 super(o); 38 } 39 40 public MultipartId getParent() { 41 if (!childrenInited) { 42 initChildren(); 43 } 44 return parent; 45 } 46 47 public void setParent(MultipartId parent) { 48 MultipartId oldParent = getParent(); 49 if (parent != oldParent) { 50 objectChanged(CHANGED_PARENT); 51 changeChild(oldParent, parent); 52 this.parent = parent; 53 } 54 } 55 56 void setData(String name, MultipartId parent) { 57 super.setData(name); 58 changeChild(null, parent); 59 this.parent = parent; 60 } 61 62 public List getChildren() { 63 List list = new ArrayList(1); 64 addIfNotNull(list, getParent()); 65 return list; 66 } 67 68 protected void initChildren() { 69 childrenInited = false; 70 ASTree[] children = getASTree().getSubTrees(); 71 if (children == null || children.length < 2) { 72 parent = null; 73 } else { 74 parent = (MultipartId) initOrCreate(parent, children[0]); 75 } 76 childrenInited = true; 77 } 78 79 protected void _delete() { 80 if (childrenInited) { 82 deleteChild(parent); 83 } 84 super._delete(); 88 } 89 90 public void replaceChild(Element oldElement,Element newElement) { 91 if (childrenInited) { 92 if (oldElement.equals(parent)) { 93 setParent((MultipartId)newElement); 94 } 95 } 96 } 97 98 public void setName(String name) { 99 super.setName(name); 100 childChanged(this); 101 } 102 103 void childChanged(MetadataElement element) { 104 MetadataElement parent = (MetadataElement) refImmediateComposite(); 105 if (parent!=null){ 106 parent.childChanged(this); 107 } 108 } 109 } 110 | Popular Tags |