1 19 20 package org.netbeans.modules.xml.wsdl.ui.view.property; 21 22 import java.util.Collection ; 23 import java.util.HashSet ; 24 import java.util.List ; 25 import java.util.Set ; 26 import java.util.Vector ; 27 28 import javax.swing.DefaultComboBoxModel ; 29 import javax.swing.JList ; 30 import javax.swing.ListModel ; 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 46 public class ParameterOrderPropertyPanel extends javax.swing.JPanel { 47 48 51 public ParameterOrderPropertyPanel(Operation operation, PropertyEnv env) { 52 mOperation = operation; 53 mSelectedParts = new Vector <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 69 private void initComponents() { 71 jLabel1 = new javax.swing.JLabel (); 72 jLabel2 = new javax.swing.JLabel (); 73 jScrollPane1 = new javax.swing.JScrollPane (); 74 jList1 = new javax.swing.JList (); 75 jScrollPane2 = new javax.swing.JScrollPane (); 76 jList2 = new javax.swing.JList (); 77 jButton3 = new javax.swing.JButton (); 78 jButton4 = new javax.swing.JButton (); 79 jButton1 = new javax.swing.JButton (); 80 jButton2 = new javax.swing.JButton (); 81 82 getAccessibleContext().setAccessibleName(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.Form.AccessibleContext.accessibleName")); getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.Form.AccessibleContext.accessibleDescription")); getAccessibleContext().setAccessibleParent(this); 85 jLabel1.setLabelFor(jList2); 86 org.openide.awt.Mnemonics.setLocalizedText(jLabel1, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jLabel1.text")); jLabel1.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jLabel1.toolTipText")); 89 jLabel2.setLabelFor(jList1); 90 org.openide.awt.Mnemonics.setLocalizedText(jLabel2, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jLabel2.text")); jLabel2.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jLabel2.toolTipText")); 93 jList1.setModel(new DefaultComboBoxModel (mParts)); 94 jList1.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList1.toolTipText")); jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener () { 96 public void valueChanged(javax.swing.event.ListSelectionEvent 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")); jList1.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList1.toolTipText")); 105 jList2.setModel(new DefaultComboBoxModel (mSelectedParts)); 106 jList2.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList2.toolTipText")); jList2.addListSelectionListener(new javax.swing.event.ListSelectionListener () { 108 public void valueChanged(javax.swing.event.ListSelectionEvent 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")); jList2.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jList2.toolTipText")); 117 org.openide.awt.Mnemonics.setLocalizedText(jButton3, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton3.text")); jButton3.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton3.toolTipText")); jButton3.setDefaultCapable(false); 120 jButton3.addActionListener(new java.awt.event.ActionListener () { 121 public void actionPerformed(java.awt.event.ActionEvent evt) { 122 jButton3ActionPerformed(evt); 123 } 124 }); 125 126 org.openide.awt.Mnemonics.setLocalizedText(jButton4, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton4.text")); jButton4.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton4.toolTipText")); jButton4.addActionListener(new java.awt.event.ActionListener () { 129 public void actionPerformed(java.awt.event.ActionEvent evt) { 130 jButton4ActionPerformed(evt); 131 } 132 }); 133 134 org.openide.awt.Mnemonics.setLocalizedText(jButton1, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton1.text")); jButton1.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton1.toolTipText")); jButton1.addActionListener(new java.awt.event.ActionListener () { 137 public void actionPerformed(java.awt.event.ActionEvent evt) { 138 jButton1ActionPerformed(evt); 139 } 140 }); 141 142 org.openide.awt.Mnemonics.setLocalizedText(jButton2, NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton2.text")); jButton2.setToolTipText(NbBundle.getMessage(ParameterOrderPropertyPanel.class, "ParameterOrderPropertyPanel.jButton2.toolTipText")); jButton2.addActionListener(new java.awt.event.ActionListener () { 145 public void actionPerformed(java.awt.event.ActionEvent 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 [] {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 } 203 private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) { enableOKButton(); 205 int[] selectedIndices = jList2.getSelectedIndices(); 206 for (int i = 0; i < selectedIndices.length; i++) { 207 DefaultComboBoxModel model = (DefaultComboBoxModel ) jList2.getModel(); 208 Object 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 } 216 private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { enableOKButton(); 218 int[] selectedIndices = jList2.getSelectedIndices(); 219 for (int i = 0; i < selectedIndices.length; i++) { 220 DefaultComboBoxModel model = (DefaultComboBoxModel ) jList2.getModel(); 221 Object 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 } 229 private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { enableOKButton(); 231 Object [] selectedObjects = jList2.getSelectedValues(); 232 int[] selectedIndices = new int[selectedObjects.length]; 233 int count = 0; 234 for (Object selectedObject : selectedObjects) { 235 ((DefaultComboBoxModel ) jList2.getModel()).removeElement(selectedObject); 236 ((DefaultComboBoxModel ) jList1.getModel()).addElement(selectedObject); 237 selectedIndices[count++] = jList1.getModel().getSize() - 1; 238 } 239 jList1.setSelectedIndices(selectedIndices); 240 241 } 243 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { enableOKButton(); 245 Object [] selectedObjects = jList1.getSelectedValues(); 246 int[] selectedIndices = new int[selectedObjects.length]; 247 int count = 0; 248 for (Object selectedObject : selectedObjects) { 249 ((DefaultComboBoxModel ) jList1.getModel()).removeElement(selectedObject); 250 ((DefaultComboBoxModel ) jList2.getModel()).addElement(selectedObject); 251 selectedIndices[count++] = jList2.getModel().getSize() - 1; 252 } 253 jList2.setSelectedIndices(selectedIndices); 254 } 256 private void jList2ValueChanged(javax.swing.event.ListSelectionEvent evt) { JList list = (JList ) 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 } 288 private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) { JList list = (JList ) evt.getSource(); 290 if (!list.getValueIsAdjusting()) { 291 Object [] sv = list.getSelectedValues(); 292 if (sv != null && sv.length > 0) { 293 jButton1.setEnabled(true); 294 } else { 295 jButton1.setEnabled(false); 296 } 297 } 298 } 300 301 302 private void enableOKButton() { 303 mEnv.setState(PropertyEnv.STATE_VALID); 304 } 305 306 307 @Override 308 public void removeNotify() { 309 if (mEnv.getState().equals(PropertyEnv.STATE_VALID)) { 310 ListModel model = jList2.getModel(); 311 StringBuffer strBuf = new StringBuffer (); 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 <PartDelegate> getAllMessageParts(Vector <PartDelegate> selectedParameters) { 323 Set <PartDelegate> allParts = new HashSet <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 selectedParameters.clear(); 343 List <String > parameterOrder = mOperation.getParameterOrder(); 344 if (parameterOrder != null) { 345 Set <String > set = new HashSet <String >(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 <PartDelegate>(allParts); 355 } 356 357 private void getAllMessageParts(Message message, Set <PartDelegate> allParts) { 358 359 Collection <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 380 public String toString() { 381 return this.mPart.getName(); 382 } 383 384 @Override 385 public int hashCode() { 386 return mPart.getName().hashCode(); 387 } 388 389 @Override 390 public boolean equals(Object 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 <PartDelegate> mParts; 401 private Vector <PartDelegate> mSelectedParts; 402 private PropertyEnv mEnv; 403 404 private javax.swing.JButton jButton1; 406 private javax.swing.JButton jButton2; 407 private javax.swing.JButton jButton3; 408 private javax.swing.JButton jButton4; 409 private javax.swing.JLabel jLabel1; 410 private javax.swing.JLabel jLabel2; 411 private javax.swing.JList jList1; 412 private javax.swing.JList jList2; 413 private javax.swing.JScrollPane jScrollPane1; 414 private javax.swing.JScrollPane jScrollPane2; 415 417 } 418 | Popular Tags |