KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > javacore > jmiimpl > javamodel > TypeReferenceImpl


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

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 /**
29  *
30  * @author Martin Matula
31  */

32 public abstract class TypeReferenceImpl extends ElementReferenceImpl implements TypeReference {
33     private MultipartId parent;
34
35     /** Creates a new instance of MultipartIdImpl */
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 JavaDoc 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         // --- delete components -------------------------------------------
81
if (childrenInited) {
82             deleteChild(parent);
83         }
84         // --- delete links -----------------------------------------------
85
// no links to delete
86
// --- call super ---------------------------------------
87
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 JavaDoc 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