001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.beans.beaninfo;
043:
044: import java.util.Collections;
045: import java.util.Iterator;
046: import java.util.List;
047: import org.openide.nodes.Children;
048: import org.openide.nodes.Node;
049:
050: /** Implements children for basic source code patterns
051: *
052: * @author Petr Hrebejk
053: */
054: public final class BiChildren extends Children.Keys<Class<?>> {
055:
056: /** Object for finding patterns in class */
057: private BiAnalyser biAnalyser;
058:
059: // Constructors -----------------------------------------------------------------------
060:
061: /** Create pattern children. The children are initilay unfiltered.
062: */
063:
064: public BiChildren(BiAnalyser biAnalyser, Class<?>[] keys) {
065: super ();
066: this .biAnalyser = biAnalyser;
067: setKeys(keys);
068: }
069:
070: /** Called when the preparetion of nodes is needed
071: */
072: @Override
073: protected void addNotify() {
074: //refreshAllKeys ();
075: }
076:
077: /** Called when all children are garbage collected */
078: @Override
079: protected void removeNotify() {
080: setKeys(Collections.<Class<?>> emptySet());
081: }
082:
083: /** Gets the pattern analyser which manages the patterns */
084:
085: BiAnalyser getBiAnalyser() {
086: return biAnalyser;
087: }
088:
089: // Children.keys implementation -------------------------------------------------------
090:
091: /** Creates nodes for given key.
092: */
093: protected Node[] createNodes(final Class<?> key) {
094: if (key == BiFeature.Descriptor.class)
095: return createNodesFromFeatures(biAnalyser.getDescriptor());
096: if (key == BiFeature.Property.class)
097: return createNodesFromFeatures(biAnalyser.getProperties());
098: if (key == BiFeature.IdxProperty.class)
099: return createNodesFromFeatures(biAnalyser
100: .getIdxProperties());
101: if (key == BiFeature.EventSet.class)
102: return createNodesFromFeatures(biAnalyser.getEventSets());
103: if (key == BiFeature.Method.class)
104: return createNodesFromFeatures(biAnalyser.getMethods());
105:
106: /*
107: if (key instanceof IdxPropertyPattern)
108: return new Node[] { new IdxPropertyPatternNode((IdxPropertyPattern)key, true) };
109: if (key instanceof PropertyPattern)
110: return new Node[] { new PropertyPatternNode((PropertyPattern)key, true) };
111: if (key instanceof EventSetPattern)
112: return new Node[] { new EventSetPatternNode((EventSetPattern)key, true) };
113: */
114: // Unknown pattern
115: return new Node[0];
116: }
117:
118: // Utility methods --------------------------------------------------------------------
119:
120: Node[] createNodesFromFeatures(List<? extends BiFeature> col) {
121:
122: Iterator<? extends BiFeature> it = col.iterator();
123:
124: Node[] nodes = new Node[col.size()];
125:
126: for (int i = 0; it.hasNext() && i < nodes.length; i++)
127: nodes[i] = new BiFeatureNode(it.next(), biAnalyser);
128:
129: return nodes;
130: }
131:
132: }
|