KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > api > property > ElementOrTypePropertyEditor


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-2007 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 /*
21  * Created on May 16, 2005
22  *
23  * To change the template for this generated file go to
24  * Window - Preferences - Java - Code Generation - Code and Comments
25  */

26 package org.netbeans.modules.xml.wsdl.ui.api.property;
27
28 import java.awt.Component JavaDoc;
29 import java.beans.FeatureDescriptor JavaDoc;
30 import java.beans.PropertyChangeEvent JavaDoc;
31 import java.beans.PropertyChangeListener JavaDoc;
32 import java.beans.PropertyEditorSupport JavaDoc;
33 import java.util.HashMap JavaDoc;
34 import java.util.Map JavaDoc;
35
36 import org.netbeans.api.project.FileOwnerQuery;
37 import org.netbeans.api.project.Project;
38 import org.netbeans.modules.xml.schema.model.GlobalElement;
39 import org.netbeans.modules.xml.schema.model.GlobalType;
40 import org.netbeans.modules.xml.schema.model.SchemaComponent;
41 import org.netbeans.modules.xml.wsdl.model.WSDLModel;
42 import org.netbeans.modules.xml.wsdl.ui.view.ElementOrTypeChooserPanel;
43 import org.netbeans.modules.xml.xam.ModelSource;
44 import org.netbeans.modules.xml.xam.dom.AbstractDocumentComponent;
45 import org.netbeans.modules.xml.xam.ui.XAMUtils;
46 import org.openide.explorer.propertysheet.ExPropertyEditor;
47 import org.openide.explorer.propertysheet.PropertyEnv;
48 import org.openide.filesystems.FileObject;
49
50
51
52 /**
53  * @author radval
54  *
55  * To change the template for this generated type comment go to
56  * Window - Preferences - Java - Code Generation - Code and Comments
57  */

58 public class ElementOrTypePropertyEditor extends PropertyEditorSupport JavaDoc
59 implements ExPropertyEditor, PropertyChangeListener JavaDoc {
60
61     /** property name used by propertyChangeEvent */
62     public static final String JavaDoc PROP_NAME = "ElementOrType";//NOI18N
63

64     /** Environment passed to the ExPropertyEditor*/
65     private PropertyEnv mEnv;
66     
67     private ElementOrTypeProvider mElementOrTypeProvider;
68     
69     
70     public ElementOrTypePropertyEditor(ElementOrTypeProvider elementOrTypeProvider) {
71         this.mElementOrTypeProvider = elementOrTypeProvider;
72     }
73     
74     /**
75      * This method is called by the IDE to pass
76      * the environment to the property editor.
77      * @param env Environment passed by the ide.
78      */

79     public void attachEnv(PropertyEnv env) {
80         this.mEnv = env;
81         FeatureDescriptor JavaDoc desc = env.getFeatureDescriptor();
82         // make this is not editable
83
desc.setValue("canEditAsText", Boolean.FALSE); // NOI18N
84
}
85     
86     
87     
88     
89     /** @return tags */
90     @Override JavaDoc
91     public String JavaDoc[] getTags() {
92         return null;
93     }
94     
95     /** @return true */
96     @Override JavaDoc
97     public boolean supportsCustomEditor () {
98         return XAMUtils.isWritable(mElementOrTypeProvider.getModel());
99     }
100     
101     /** @return editor component */
102     @Override JavaDoc
103     public Component JavaDoc getCustomEditor () {
104         WSDLModel model = mElementOrTypeProvider.getModel();
105         ModelSource modelSource = model.getModelSource();
106         FileObject wsdlFile = (FileObject) modelSource.getLookup().lookup(FileObject.class);
107         if(wsdlFile != null) {
108             Project project = FileOwnerQuery.getOwner(wsdlFile);
109             if(project != null) {
110                 
111                 Map JavaDoc<String JavaDoc, String JavaDoc> namespaceToPrefixMap = new HashMap JavaDoc<String JavaDoc, String JavaDoc>();
112                 Map JavaDoc<String JavaDoc, String JavaDoc> map = ((AbstractDocumentComponent)model.getDefinitions()).getPrefixes();
113                 for (String JavaDoc prefix : map.keySet()) {
114                     namespaceToPrefixMap.put(map.get(prefix), prefix);
115                 }
116                 ElementOrType eot = mElementOrTypeProvider.getElementOrType();
117                 SchemaComponent comp = eot.getElement();
118                 if (comp == null) {
119                     comp = eot.getType();
120                 }
121                 
122                 final ElementOrTypeChooserPanel panel = new ElementOrTypeChooserPanel(project, namespaceToPrefixMap, model, comp);
123                 
124                 panel.setEnvForPropertyEditor(mEnv);
125                 mEnv.setState(PropertyEnv.STATE_INVALID);
126                 final PropertyChangeListener JavaDoc pcl = new PropertyChangeListener JavaDoc() {
127                     public void propertyChange(PropertyChangeEvent JavaDoc evt) {
128                         if(evt.getSource()== panel && evt.getPropertyName().
129                                 equals(ElementOrTypeChooserPanel.PROP_ACTION_APPLY)) {
130                             Boolean JavaDoc b = (Boolean JavaDoc) evt.getNewValue();
131                             mEnv.setState(b.booleanValue() ? PropertyEnv.STATE_VALID : PropertyEnv.STATE_INVALID);
132                         }
133                     }
134                 };
135                 panel.addPropertyChangeListener(ElementOrTypeChooserPanel.PROP_ACTION_APPLY, pcl);
136                 panel.addPropertyChangeListener(PROP_NAME, this);
137                 return panel;
138             }
139         }
140         return null;
141     }
142     /** handles property change
143      *
144      * @param evt propertyChangeEvent
145      */

146     public void propertyChange(PropertyChangeEvent JavaDoc evt) {
147         Object JavaDoc comp = evt.getNewValue();
148         if (comp instanceof GlobalType) {
149             setValue(new ElementOrType((GlobalType) comp, mElementOrTypeProvider.getModel()));
150         } else if (comp instanceof GlobalElement){
151             setValue(new ElementOrType((GlobalElement) comp, mElementOrTypeProvider.getModel()));
152         }
153     }
154 }
155
156
157
Popular Tags