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-2007 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: package org.netbeans.modules.visualweb.propertyeditors.binding.nodes;
042:
043: import javax.swing.Icon;
044: import javax.swing.UIManager;
045: import javax.swing.tree.DefaultTreeModel;
046: import com.sun.rave.designtime.DesignBean;
047: import com.sun.rave.designtime.DesignContext;
048: import com.sun.rave.designtime.faces.FacesDesignContext;
049: import org.netbeans.modules.visualweb.propertyeditors.binding.BindingTargetNode;
050: import com.sun.data.provider.DataProvider;
051: import javax.sql.RowSet;
052:
053: public class ContextTargetNode extends BindingTargetNode {
054: public ContextTargetNode(BindingTargetNode parent,
055: DesignContext context) {
056: super (parent);
057: this .context = context;
058: this .displayText = "<html><b>" + context.getDisplayName()
059: + "</b></html>"; //NOI18N
060: }
061:
062: protected DesignContext context;
063:
064: public DesignContext getDesignContext() {
065: return context;
066: }
067:
068: public boolean lazyLoad() {
069: DesignBean[] kids = getDesignContext().getRootContainer()
070: .getChildBeans();
071: for (int i = 0; kids != null && i < kids.length; i++) {
072: // Do not show the data provider in the object binding dialog.
073: // We have explicit data provider binding dialog
074: if (!DataProvider.class.isAssignableFrom(kids[i]
075: .getInstance().getClass())
076: && !RowSet.class.isAssignableFrom(kids[i]
077: .getInstance().getClass())) {
078: super .add(_createTargetNode(this , kids[i], null,
079: kids[i].getInstance()));
080: }
081: }
082: return true;
083: }
084:
085: protected String displayText;
086:
087: public String getDisplayText(boolean enableNode) {
088: return displayText;
089: }
090:
091: public boolean hasDisplayIcon() {
092: return getChildCount() < 1;
093: }
094:
095: Icon displayIcon = UIManager.getIcon("Tree.closedIcon"); // NOI18N
096:
097: public Icon getDisplayIcon(boolean enableNode) {
098: return displayIcon;
099: }
100:
101: public boolean isValidBindingTarget() {
102: return true;
103: }
104:
105: public String getBindingExpressionPart() {
106: if (context instanceof FacesDesignContext) {
107: return ((FacesDesignContext) context).getReferenceName();
108: }
109: return context.getDisplayName();
110: }
111:
112: public Class getTargetTypeClass() {
113: return null;
114: }
115: }
|