KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > wsdl > ui > view > property > ParameterOrderPropertyPanel


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.property;
21
22 import java.util.Collection JavaDoc;
23 import java.util.HashSet JavaDoc;
24 import java.util.List JavaDoc;
25 import java.util.Set JavaDoc;
26 import java.util.Vector JavaDoc;
27
28 import javax.swing.DefaultComboBoxModel JavaDoc;
29 import javax.swing.JList JavaDoc;
30 import javax.swing.ListModel JavaDoc;
31
32 import org.netbeans.modules.xml.wsdl.model.Input;
33 import org.netbeans.modules.xml.wsdl.model.Message;
34 import org.netbeans.modules.xml.wsdl.model.Operation;
35 import org.netbeans.modules.xml.wsdl.model.Output;
36 import org.netbeans.modules.xml.wsdl.model.Part;
37 import org.netbeans.modules.xml.xam.dom.NamedComponentReference;
38 import org.openide.awt.Mnemonics;
39 import org.openide.explorer.propertysheet.PropertyEnv;
40 import org.openide.util.NbBundle;
41
42 /**
43  *
44  * @author skini
45  */

46 public class ParameterOrderPropertyPanel extends javax.swing.JPanel JavaDoc {
47     
48     /**
49      * Creates new form ParameterOrderPropertyPanel
50      */

51     public ParameterOrderPropertyPanel(Operation operation, PropertyEnv env) {
52         mOperation = operation;
53         mSelectedParts = new Vector JavaDoc<PartDelegate>();
54         mParts = getAllMessageParts(mSelectedParts);
55         mEnv = env;
56         mEnv.setState(PropertyEnv.STATE_INVALID);
57         initComponents();
58         jButton1.setEnabled(false);
59         jButton2.setEnabled(false);
60         jButton3.setEnabled(false);
61         jButton4.setEnabled(false);
62     }
63     
64     /** This method is called from within the constructor to
65      * initialize the form.
66      * WARNING: Do NOT modify this code. The content of this method is
67      * always regenerated by the Form Editor.
68      */

69     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
70
private void initComponents() {
71         jLabel1 = new javax.swing.JLabel JavaDoc();
72         jLabel2 = new javax.swing.JLabel JavaDoc();
73         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
74         jList1 = new javax.swing.JList JavaDoc();
75         jScrollPane2 = new javax.swing.JScrollPane JavaDoc();
76         jList2 = new javax.swing.JList JavaDoc();
77         jButton3 = new javax.swing.JButton JavaDoc();
78         jButton4 = new javax.swing.JButton JavaDoc();
79         jButton1 = new javax.swing.JButton JavaDoc();
80         jButton2 = new javax.swing.JButton JavaDoc();
81
82         getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.Form.AccessibleContext.accessibleName")); // NOI18N
83
getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.Form.AccessibleContext.accessibleDescription")); // NOI18N
84
getAccessibleContext().setAccessibleParent(this);
85         jLabel1.setLabelFor(jList2);
86         org.openide.awt.Mnemonics.setLocalizedText(jLabel1, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jLabel1.text")); // NOI18N
87
jLabel1.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jLabel1.toolTipText")); // NOI18N
88

89         jLabel2.setLabelFor(jList1);
90         org.openide.awt.Mnemonics.setLocalizedText(jLabel2, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jLabel2.text")); // NOI18N
91
jLabel2.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jLabel2.toolTipText")); // NOI18N
92

93         jList1.setModel(new DefaultComboBoxModel JavaDoc(mParts));
94         jList1.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList1.toolTipText")); // NOI18N
95
jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener JavaDoc() {
96             public void valueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {
97                 jList1ValueChanged(evt);
98             }
99         });
100
101         jScrollPane1.setViewportView(jList1);
102         jList1.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList1.AccessibleContext.accessibleName")); // NOI18N
103
jList1.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList1.toolTipText")); // NOI18N
104

105         jList2.setModel(new DefaultComboBoxModel JavaDoc(mSelectedParts));
106         jList2.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList2.toolTipText")); // NOI18N
107
jList2.addListSelectionListener(new javax.swing.event.ListSelectionListener JavaDoc() {
108             public void valueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {
109                 jList2ValueChanged(evt);
110             }
111         });
112
113         jScrollPane2.setViewportView(jList2);
114         jList2.getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList2.AccessibleContext.accessibleName")); // NOI18N
115
jList2.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList2.toolTipText")); // NOI18N
116

117         org.openide.awt.Mnemonics.setLocalizedText(jButton3, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton3.text")); // NOI18N
118
jButton3.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton3.toolTipText")); // NOI18N
119
jButton3.setDefaultCapable(false);
120         jButton3.addActionListener(new java.awt.event.ActionListener JavaDoc() {
121             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
122                 jButton3ActionPerformed(evt);
123             }
124         });
125
126         org.openide.awt.Mnemonics.setLocalizedText(jButton4, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton4.text")); // NOI18N
127
jButton4.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton4.toolTipText")); // NOI18N
128
jButton4.addActionListener(new java.awt.event.ActionListener JavaDoc() {
129             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
130                 jButton4ActionPerformed(evt);
131             }
132         });
133
134         org.openide.awt.Mnemonics.setLocalizedText(jButton1, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton1.text")); // NOI18N
135
jButton1.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton1.toolTipText")); // NOI18N
136
jButton1.addActionListener(new java.awt.event.ActionListener JavaDoc() {
137             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
138                 jButton1ActionPerformed(evt);
139             }
140         });
141
142         org.openide.awt.Mnemonics.setLocalizedText(jButton2, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton2.text")); // NOI18N
143
jButton2.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton2.toolTipText")); // NOI18N
144
jButton2.addActionListener(new java.awt.event.ActionListener JavaDoc() {
145             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
146                 jButton2ActionPerformed(evt);
147             }
148         });
149
150         org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
151         this.setLayout(layout);
152         layout.setHorizontalGroup(
153             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
154             .add(layout.createSequentialGroup()
155                 .addContainerGap()
156                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
157                     .add(jLabel1)
158                     .add(layout.createSequentialGroup()
159                         .add(jScrollPane1)
160                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
161                         .add(jButton1)
162                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))
163                     .add(layout.createSequentialGroup()
164                         .add(jScrollPane2)
165                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
166                         .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
167                             .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
168                                 .add(jButton4, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
169                                 .add(jButton3, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
170                             .add(jButton2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 97, Short.MAX_VALUE)))
171                     .add(jLabel2))
172                 .addContainerGap())
173         );
174
175         layout.linkSize(new java.awt.Component JavaDoc[] {jButton1, jButton2, jButton3, jButton4}, org.jdesktop.layout.GroupLayout.HORIZONTAL);
176
177         layout.setVerticalGroup(
178             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
179             .add(layout.createSequentialGroup()
180                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
181                     .add(layout.createSequentialGroup()
182                         .addContainerGap()
183                         .add(jLabel1)
184                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
185                         .add(jScrollPane2))
186                     .add(layout.createSequentialGroup()
187                         .add(58, 58, 58)
188                         .add(jButton3)
189                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
190                         .add(jButton4)
191                         .add(20, 20, 20)
192                         .add(jButton2)))
193                 .add(11, 11, 11)
194                 .add(jLabel2)
195                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
196                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
197                     .add(jScrollPane1)
198                     .add(jButton1))
199                 .addContainerGap())
200         );
201     }// </editor-fold>//GEN-END:initComponents
202

203     private void jButton4ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton4ActionPerformed
204
enableOKButton();
205         int[] selectedIndices = jList2.getSelectedIndices();
206         for (int i = 0; i < selectedIndices.length; i++) {
207             DefaultComboBoxModel JavaDoc model = (DefaultComboBoxModel JavaDoc) jList2.getModel();
208             Object JavaDoc removedObj = model.getElementAt(selectedIndices[i]);
209             model.removeElementAt(selectedIndices[i]);
210             selectedIndices[i]++;
211             model.insertElementAt(removedObj, selectedIndices[i]);
212         }
213         jList2.setSelectedIndices(selectedIndices);
214     }//GEN-LAST:event_jButton4ActionPerformed
215

216     private void jButton3ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton3ActionPerformed
217
enableOKButton();
218         int[] selectedIndices = jList2.getSelectedIndices();
219         for (int i = 0; i < selectedIndices.length; i++) {
220             DefaultComboBoxModel JavaDoc model = (DefaultComboBoxModel JavaDoc) jList2.getModel();
221             Object JavaDoc removedObj = model.getElementAt(selectedIndices[i]);
222             model.removeElementAt(selectedIndices[i]);
223             selectedIndices[i]--;
224             model.insertElementAt(removedObj, selectedIndices[i]);
225         }
226         jList2.setSelectedIndices(selectedIndices);
227     }//GEN-LAST:event_jButton3ActionPerformed
228

229     private void jButton2ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton2ActionPerformed
230
enableOKButton();
231         Object JavaDoc[] selectedObjects = jList2.getSelectedValues();
232         int[] selectedIndices = new int[selectedObjects.length];
233         int count = 0;
234         for (Object JavaDoc selectedObject : selectedObjects) {
235             ((DefaultComboBoxModel JavaDoc) jList2.getModel()).removeElement(selectedObject);
236             ((DefaultComboBoxModel JavaDoc) jList1.getModel()).addElement(selectedObject);
237             selectedIndices[count++] = jList1.getModel().getSize() - 1;
238         }
239         jList1.setSelectedIndices(selectedIndices);
240         
241     }//GEN-LAST:event_jButton2ActionPerformed
242

243     private void jButton1ActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButton1ActionPerformed
244
enableOKButton();
245         Object JavaDoc[] selectedObjects = jList1.getSelectedValues();
246         int[] selectedIndices = new int[selectedObjects.length];
247         int count = 0;
248         for (Object JavaDoc selectedObject : selectedObjects) {
249             ((DefaultComboBoxModel JavaDoc) jList1.getModel()).removeElement(selectedObject);
250             ((DefaultComboBoxModel JavaDoc) jList2.getModel()).addElement(selectedObject);
251             selectedIndices[count++] = jList2.getModel().getSize() - 1;
252         }
253         jList2.setSelectedIndices(selectedIndices);
254     }//GEN-LAST:event_jButton1ActionPerformed
255

256     private void jList2ValueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {//GEN-FIRST:event_jList2ValueChanged
257
JList JavaDoc list = (JList JavaDoc) evt.getSource();
258         if (!list.getValueIsAdjusting()) {
259             int[] si = list.getSelectedIndices();
260             if (si != null && si.length > 0) {
261                 jButton2.setEnabled(true);
262                 jButton3.setEnabled(true);
263                 jButton4.setEnabled(true);
264             } else {
265                 jButton2.setEnabled(false);
266                 jButton3.setEnabled(false);
267                 jButton4.setEnabled(false);
268             }
269             
270             if (si.length > 0) {
271                 
272                 if (si[si.length - 1] < list.getModel().getSize() - 1) {
273                     jButton4.setEnabled(true);
274                 } else {
275                     jButton4.setEnabled(false);
276                 }
277                 
278                 if (si[0] > 0) {
279                     jButton3.setEnabled(true);
280                 } else {
281                     jButton3.setEnabled(false);
282                 }
283                 
284             }
285         }
286     }//GEN-LAST:event_jList2ValueChanged
287

288     private void jList1ValueChanged(javax.swing.event.ListSelectionEvent JavaDoc evt) {//GEN-FIRST:event_jList1ValueChanged
289
JList JavaDoc list = (JList JavaDoc) evt.getSource();
290         if (!list.getValueIsAdjusting()) {
291             Object JavaDoc[] sv = list.getSelectedValues();
292             if (sv != null && sv.length > 0) {
293                 jButton1.setEnabled(true);
294             } else {
295                 jButton1.setEnabled(false);
296             }
297         }
298     }//GEN-LAST:event_jList1ValueChanged
299

300     
301     
302     private void enableOKButton() {
303         mEnv.setState(PropertyEnv.STATE_VALID);
304     }
305     
306     /** Override method to detect the OK button */
307     @Override JavaDoc
308             public void removeNotify() {
309         if (mEnv.getState().equals(PropertyEnv.STATE_VALID)) {
310             ListModel JavaDoc model = jList2.getModel();
311             StringBuffer JavaDoc strBuf = new StringBuffer JavaDoc();
312             for (int i = 0; i < model.getSize(); i++) {
313                 PartDelegate delegate = (PartDelegate) model.getElementAt(i);
314                 strBuf.append(delegate.toString()).append(" ");
315             }
316             this.firePropertyChange(ParameterOrderPropertyEditor.PROP_NAME, null, strBuf.toString().trim());
317         }
318         super.removeNotify();
319     }
320     
321     
322     private Vector JavaDoc<PartDelegate> getAllMessageParts(Vector JavaDoc<PartDelegate> selectedParameters) {
323         Set JavaDoc<PartDelegate> allParts = new HashSet JavaDoc<PartDelegate>();
324         
325         Input input = mOperation.getInput();
326         Output output = this.mOperation.getOutput();
327         if(input != null) {
328             NamedComponentReference<Message> messageRef = input.getMessage();
329             if(messageRef != null && messageRef.get() != null) {
330                 getAllMessageParts(messageRef.get(), allParts);
331             }
332         }
333         
334         if(output != null) {
335             NamedComponentReference<Message> messageRef = output.getMessage();
336             if(messageRef != null && messageRef.get() != null) {
337                 getAllMessageParts(messageRef.get(), allParts);
338             }
339         }
340         
341         //REmove the ones that are already selected
342
selectedParameters.clear();
343         List JavaDoc<String JavaDoc> parameterOrder = mOperation.getParameterOrder();
344         if (parameterOrder != null) {
345             Set JavaDoc<String JavaDoc> set = new HashSet JavaDoc<String JavaDoc>(parameterOrder);
346             for (PartDelegate part : allParts) {
347                 if (set.contains(part.toString())) {
348                     selectedParameters.add(part);
349                 }
350             }
351             allParts.removeAll(selectedParameters);
352         }
353         
354         return new Vector JavaDoc<PartDelegate>(allParts);
355     }
356     
357     private void getAllMessageParts(Message message, Set JavaDoc<PartDelegate> allParts) {
358         
359         Collection JavaDoc<Part> parts = message.getParts();
360         if (parts != null) {
361             for (Part part : parts) {
362                 PartDelegate pd = new PartDelegate(part);
363                 allParts.add(pd);
364             }
365         }
366     }
367     
368     class PartDelegate {
369         Part mPart;
370        
371         PartDelegate(Part part) {
372             this.mPart = part;
373         }
374         
375         public Part getPart() {
376             return this.mPart;
377         }
378         
379         @Override JavaDoc
380         public String JavaDoc toString() {
381             return this.mPart.getName();
382         }
383
384         @Override JavaDoc
385         public int hashCode() {
386             return mPart.getName().hashCode();
387         }
388
389         @Override JavaDoc
390         public boolean equals(Object JavaDoc obj) {
391             if (obj == null) return false;
392             
393             return mPart.getName().equals(((PartDelegate)obj).toString());
394         }
395         
396         
397     }
398     
399     private Operation mOperation;
400     private Vector JavaDoc<PartDelegate> mParts;
401     private Vector JavaDoc<PartDelegate> mSelectedParts;
402     private PropertyEnv mEnv;
403     
404     // Variables declaration - do not modify//GEN-BEGIN:variables
405
private javax.swing.JButton JavaDoc jButton1;
406     private javax.swing.JButton JavaDoc jButton2;
407     private javax.swing.JButton JavaDoc jButton3;
408     private javax.swing.JButton JavaDoc jButton4;
409     private javax.swing.JLabel JavaDoc jLabel1;
410     private javax.swing.JLabel JavaDoc jLabel2;
411     private javax.swing.JList JavaDoc jList1;
412     private javax.swing.JList JavaDoc jList2;
413     private javax.swing.JScrollPane JavaDoc jScrollPane1;
414     private javax.swing.JScrollPane JavaDoc jScrollPane2;
415     // End of variables declaration//GEN-END:variables
416

417 }
418
Popular Tags