KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > view > grapheditor > widget > PartTypeChooserWidget


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 package org.netbeans.modules.xml.wsdl.ui.view.grapheditor.widget;
21
22 import java.awt.Color JavaDoc;
23 import java.awt.Dialog JavaDoc;
24 import java.awt.Insets JavaDoc;
25 import java.awt.event.ActionEvent JavaDoc;
26 import java.awt.event.ActionListener JavaDoc;
27 import java.beans.PropertyChangeEvent JavaDoc;
28 import java.beans.PropertyChangeListener JavaDoc;
29 import java.util.HashMap JavaDoc;
30 import java.util.Map JavaDoc;
31
32 import org.netbeans.api.project.FileOwnerQuery;
33 import org.netbeans.api.project.Project;
34 import org.netbeans.api.visual.border.Border;
35 import org.netbeans.api.visual.widget.LabelWidget;
36 import org.netbeans.api.visual.widget.Scene;
37 import org.netbeans.api.visual.widget.Widget;
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.Part;
42 import org.netbeans.modules.xml.wsdl.model.WSDLModel;
43 import org.netbeans.modules.xml.wsdl.ui.netbeans.module.Utility;
44 import org.netbeans.modules.xml.wsdl.ui.view.ElementOrType;
45 import org.netbeans.modules.xml.wsdl.ui.view.ElementOrTypeChooserEditorPanel;
46 import org.netbeans.modules.xml.wsdl.ui.view.ElementOrTypeChooserPanel;
47 import org.netbeans.modules.xml.wsdl.ui.view.grapheditor.border.FilledBorder;
48 import org.netbeans.modules.xml.wsdl.ui.view.grapheditor.layout.LeftRightLayout;
49 import org.netbeans.modules.xml.xam.ModelSource;
50 import org.netbeans.modules.xml.xam.dom.AbstractDocumentComponent;
51 import org.openide.DialogDescriptor;
52 import org.openide.DialogDisplayer;
53 import org.openide.filesystems.FileObject;
54 import org.openide.util.NbBundle;
55
56 /**
57  *
58  * @author anjeleevich
59  */

60 public class PartTypeChooserWidget extends Widget implements ActionListener JavaDoc {
61     
62     private LabelWidget partTypeLabel;
63     private ButtonWidget showPartTypeChooserButton;
64     private Part part;
65     
66     public PartTypeChooserWidget(Scene scene, Part part) {
67         super(scene);
68         
69         this.part = part;
70         
71         partTypeLabel = new LabelWidget(scene,
72                 MessagesUtils.getPartTypeOrElementString(part));
73         partTypeLabel.setFont(scene.getDefaultFont());
74         
75         showPartTypeChooserButton = new ButtonWidget(scene, "...");
76         showPartTypeChooserButton.setMargin(new Insets JavaDoc(1, 2, 1, 2));
77         showPartTypeChooserButton.setActionListener(this);
78         
79         addChild(partTypeLabel);
80         addChild(showPartTypeChooserButton);
81         
82         setLayout(new LeftRightLayout(8));
83         setBorder(BORDER);
84     }
85     
86     
87     ButtonWidget getPartTypeChooserButton() {
88         return showPartTypeChooserButton;
89     }
90     
91     public void actionPerformed(ActionEvent JavaDoc event) {
92         WSDLModel wsdlModel = part.getModel();
93         ModelSource modelSource = wsdlModel.getModelSource();
94         FileObject wsdlFile = (FileObject) modelSource.getLookup().lookup(FileObject.class);
95         if(wsdlFile != null) {
96             Project project = FileOwnerQuery.getOwner(wsdlFile);
97             if(project != null) {
98                 Map JavaDoc<String JavaDoc, String JavaDoc> namespaceToPrefixMap = new HashMap JavaDoc<String JavaDoc, String JavaDoc>();
99                 Map JavaDoc<String JavaDoc, String JavaDoc> map = ((AbstractDocumentComponent)wsdlModel.getDefinitions()).getPrefixes();
100                 for (String JavaDoc prefix : map.keySet()) {
101                     namespaceToPrefixMap.put(map.get(prefix), prefix);
102                 }
103                 
104                 SchemaComponent comp = part.getElement() == null ? null : part.getElement().get();
105                 if (comp == null) {
106                     comp = part.getType() == null ? null : part.getType().get();
107                 }
108                 
109                 final ElementOrTypeChooserPanel panel = new ElementOrTypeChooserPanel(project, namespaceToPrefixMap, wsdlModel, comp);
110                 final DialogDescriptor descriptor = new DialogDescriptor(panel , NbBundle.getMessage(ElementOrTypeChooserEditorPanel.class, "ElementOrTypeChooserEditorPanel.Dialog.title"), true, null);
111                 final PropertyChangeListener JavaDoc pcl = new PropertyChangeListener JavaDoc() {
112                     public void propertyChange(PropertyChangeEvent JavaDoc evt) {
113                         if(evt.getSource()== panel && evt.getPropertyName().
114                                 equals(ElementOrTypeChooserPanel.PROP_ACTION_APPLY)) {
115                             descriptor.setValid(((Boolean JavaDoc) evt.getNewValue()).booleanValue());
116                         }
117                     }
118                 };
119                 panel.addPropertyChangeListener(pcl);
120                 // dialog's action listener
121
ActionListener JavaDoc al = new ActionListener JavaDoc() {
122                     public void actionPerformed(ActionEvent JavaDoc evt) {
123                         if (evt.getSource().equals(DialogDescriptor.OK_OPTION) ||
124                                 evt.getSource().equals(DialogDescriptor.CANCEL_OPTION) ||
125                                 evt.getSource().equals(DialogDescriptor.CLOSED_OPTION)) {
126                             panel.removePropertyChangeListener(pcl);
127                         }
128                         if (evt.getSource().equals(DialogDescriptor.OK_OPTION)) {
129                             panel.apply();
130                             SchemaComponent comp1 = panel.getSelectedSchemaComponent();
131                             if (comp1 == null) return;
132                             WSDLModel model = part.getModel();
133                             if (comp1 instanceof GlobalType) {
134                                 try {
135                                     if (model.startTransaction()) {
136                                         Utility.addSchemaImport(comp1, model);
137                                         Utility.addNamespacePrefix(comp1.getModel().getSchema(), model, null);
138                                         part.setType(model.getDefinitions().createSchemaReference(
139                                                 (GlobalType) comp1, GlobalType.class));
140                                         part.setElement(null);
141                                     }
142                                 } finally {
143                                     model.endTransaction();
144                                 }
145                             } else if (comp1 instanceof GlobalElement) {
146                                 try {
147                                     if (model.startTransaction()) {
148                                         Utility.addSchemaImport(comp1, model);
149                                         Utility.addNamespacePrefix(comp1.getModel().getSchema(), model, null);
150                                         part.setElement(model.getDefinitions().createSchemaReference(
151                                                 (GlobalElement) comp1, GlobalElement.class));
152                                         part.setType(null);
153                                     }
154                                 } finally {
155                                     model.endTransaction();
156                                 }
157                             }
158
159                         }
160                     }
161                 };
162                 descriptor.setButtonListener(al);
163                 descriptor.setValid(false);
164                 Dialog JavaDoc dialog = DialogDisplayer.getDefault().createDialog(descriptor);
165                 dialog.setVisible(true);
166                 dialog.toFront();
167             }
168         }
169     }
170     
171     
172     public static final Border BORDER = new FilledBorder(
173             new Insets JavaDoc(0, 0, 0, 0), new Insets JavaDoc(1, 8, 1, 1), null, Color.WHITE);
174     
175 }
176
Popular Tags