KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mc4j > console > connection > wizard > ConnectionVisualPanel


1 /*
2  * Copyright 2002-2004 Greg Hinkle
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.mc4j.console.connection.wizard;
18
19 import org.mc4j.console.connection.wizard.advanced.AdvancedPanel;
20 import org.mc4j.console.swing.ComponentBorder;
21 import org.mc4j.ems.connection.support.metadata.ConnectionTypeDescriptor;
22 import org.mc4j.ems.connection.ConnectionFactory;
23 import org.mc4j.ems.connection.settings.ConnectionSettings;
24 import org.openide.DialogDescriptor;
25 import org.openide.DialogDisplayer;
26 import org.openide.ErrorManager;
27 import org.openide.WizardDescriptor;
28 import org.openide.util.HelpCtx;
29 import org.openide.util.NbBundle;
30
31 import javax.swing.*;
32 import javax.swing.event.ChangeEvent JavaDoc;
33 import javax.swing.event.ChangeListener JavaDoc;
34 import java.awt.Color JavaDoc;
35 import java.awt.Component JavaDoc;
36 import java.awt.Dialog JavaDoc;
37 import java.awt.event.ActionEvent JavaDoc;
38 import java.awt.event.ActionListener JavaDoc;
39 import java.net.MalformedURLException JavaDoc;
40 import java.net.URL JavaDoc;
41 import java.util.*;
42
43 /**
44  * This is the visual panel for the main connector wizard. It holds a reference
45  * to the main wizard descriptor and sets each user value on it before
46  * finishing. (Note: I'm not sure if this is the best pattern, but the OpenIDE
47  * Documentation is not the clearest.)
48  *
49  * @author Greg Hinkle (ghinkle@users.sourceforge.net), August 2002
50  * @version $Revision: 570 $($Author: ghinkl $ / $Date: 2006-04-12 15:14:16 -0400 (Wed, 12 Apr 2006) $)
51  */

52 public class ConnectionVisualPanel extends ComponentBorder implements WizardDescriptor.Panel {
53
54     /**
55      * The wizard panel descriptor associated with this GUI panel.
56      * If you need to fire state changes or something similar, you can
57      * use this handle to do so.
58      */

59     private final ConnectionDescriptor connectionDescriptor;
60
61     private Properties advancedProperties;
62
63
64
65     /** Create the wizard panel and set up some basic properties. */
66     public ConnectionVisualPanel(ConnectionDescriptor connectionDescriptor) {
67         super(new JComboBox(new Vector(ConnectionFactory.getConnectionTypes())), Color.darkGray, 2);
68         
69         initComponents();
70         // Provide a name in the title bar.
71
setName(NbBundle.getMessage(ConnectionVisualPanel.class, "TITLE_WizardPanel"));
72         
73         this.connectionDescriptor = connectionDescriptor;
74
75         ((JComboBox)getTitledComponent()).addActionListener(
76             new ActionListener JavaDoc() {
77                 public void actionPerformed(ActionEvent JavaDoc evt) {
78                     ConnectionTypeDescriptor type = (ConnectionTypeDescriptor) ((JComboBox)getTitledComponent()).getSelectedItem();
79                     prefill(type);
80                     fireChangeEvent();
81                 }
82         });
83         
84         ((JComboBox)getTitledComponent()).setSelectedItem(connectionDescriptor.getSettings().getConnectionType());
85         
86         
87         // Optional: provide a special description for this pane.
88
// You must have turned on WizardDescriptor.WizardPanel_helpDisplayed
89
// (see descriptor in standard iterator template for an example of this).
90
try {
91             putClientProperty("WizardPanel_helpURL", // NOI18N
92
new URL JavaDoc("nbresloc:/org/mc4j/console/connection/wizard/ConnectionVisualHelp.html")); // NOI18N
93
} catch (MalformedURLException JavaDoc mfue) {
94             throw new IllegalStateException JavaDoc(mfue.toString());
95         }
96     }
97
98     protected void prefill(ConnectionTypeDescriptor type) {
99         String JavaDoc dName = null,
100         dJndiName = null,
101         dInitialContext = null,
102         dServerUrl = null,
103         dPrinciple = null,
104         dCredentials = null,
105         dMessage = null;
106
107         Properties dAdvancedProperties = null;
108
109         dName = ""; // Everyone needs a name
110

111         if (type != null) {
112
113             dJndiName = type.getDefaultJndiName();
114             dInitialContext = type.getDefaultInitialContext();
115             dServerUrl = type.getDefaultServerUrl();
116             dPrinciple = type.getDefaultPrincipal();
117             dCredentials = type.getDefaultCredentials();
118             dMessage = type.getConnectionMessage();
119             dAdvancedProperties = type.getDefaultAdvancedProperties();
120         }
121         
122         this.messageLabel.setText(dMessage);
123
124         this.jndiNameField.setEnabled(dJndiName != null);
125         this.jndiNameLabel.setEnabled(dJndiName != null);
126         this.jndiNameField.setText((dJndiName != null)?dJndiName:"");
127
128
129         this.initialContextFactoryComboBox.setEnabled(dInitialContext != null);
130         this.initialContextFactoryLabel.setEnabled(dInitialContext != null);
131         this.initialContextFactoryComboBox.setSelectedItem((dInitialContext != null)?dInitialContext:"");
132
133         this.serverURLComboBox.setEnabled(dServerUrl != null);
134         this.serverUrlLabel.setEnabled(dServerUrl != null);
135         this.serverURLComboBox.setSelectedItem((dServerUrl != null)?dServerUrl:"");
136
137         this.principleField.setEnabled(dPrinciple != null);
138         this.principleLabel.setEnabled(dPrinciple != null);
139
140         this.credentialsField.setEnabled(dCredentials != null);
141         this.credentialsLabel.setEnabled(dCredentials != null);
142
143         if (dAdvancedProperties != null) {
144             this.advancedProperties = dAdvancedProperties;
145         }
146     }
147     
148
149     public void update() {
150         ConnectionSettings settings = this.connectionDescriptor.getSettings();
151         settings.setConnectionType((ConnectionTypeDescriptor) ((JComboBox)getTitledComponent()).getSelectedItem());
152         settings.setConnectionName(this.nameField.getText());
153         settings.setJndiName(this.jndiNameField.getText());
154         settings.setInitialContextName(this.initialContextFactoryComboBox.getSelectedItem().toString());
155         settings.setServerUrl(this.serverURLComboBox.getSelectedItem().toString());
156         settings.setPrincipal(this.principleField.getText());
157         settings.setCredentials(this.credentialsField.getText());
158         settings.setAdvancedProperties(this.advancedProperties);
159     }
160
161     public Component JavaDoc getComponent() {
162         return this;
163     }
164
165     public HelpCtx getHelp() {
166         // Show no Help button for this panel:
167
return HelpCtx.DEFAULT_HELP;
168         // If you have context help:
169
// return new HelpCtx(ConnectionPanel.class);
170
}
171
172     public boolean isValid() {
173         // If it is always OK to press Next or Finish, then:
174
return (this.nameField.getText().length() > 0);
175         // When this condition changes (last form field filled in...) then:
176
// fireChangeEvent();
177
// and uncomment the complicated stuff below.
178
}
179   
180     private final Set listeners = new HashSet(1); // Set<ChangeListener>
181
public final void addChangeListener(ChangeListener JavaDoc l) {
182         synchronized (listeners) {
183             listeners.add(l);
184         }
185     }
186     public final void removeChangeListener(ChangeListener JavaDoc l) {
187         synchronized (listeners) {
188             listeners.remove(l);
189         }
190     }
191     protected final void fireChangeEvent() {
192         update();
193         Iterator it;
194         synchronized (listeners) {
195             it = new HashSet(listeners).iterator();
196         }
197         ChangeEvent JavaDoc ev = new ChangeEvent JavaDoc(this);
198         while (it.hasNext()) {
199             ((ChangeListener JavaDoc)it.next()).stateChanged(ev);
200         }
201     }
202
203     // You can use a settings object to keep track of state.
204
// Normally the settings object will be the WizardDescriptor,
205
// so you can use WizardDescriptor.getProperty & putProperty
206
// to store information entered by the user.
207
public void readSettings(Object JavaDoc settings) {
208     }
209     public void storeSettings(Object JavaDoc settings) {
210         update();
211     }
212
213     /** This method is called from within the constructor to
214      * initialize the form.
215      * WARNING: Do NOT modify this code. The content of this method is
216      * always regenerated by the Form Editor.
217      */

218     private void initComponents() {//GEN-BEGIN:initComponents
219
java.awt.GridBagConstraints JavaDoc gridBagConstraints;
220
221         serverTypeButtonGroup = new javax.swing.ButtonGroup JavaDoc();
222         initialContextFactoryLabel = new javax.swing.JLabel JavaDoc();
223         initialContextFactoryComboBox = new javax.swing.JComboBox JavaDoc();
224         serverUrlLabel = new javax.swing.JLabel JavaDoc();
225         serverURLComboBox = new javax.swing.JComboBox JavaDoc();
226         principleLabel = new javax.swing.JLabel JavaDoc();
227         credentialsLabel = new javax.swing.JLabel JavaDoc();
228         principleField = new javax.swing.JTextField JavaDoc();
229         credentialsField = new javax.swing.JPasswordField JavaDoc();
230         nameField = new javax.swing.JTextField JavaDoc();
231         nameLabel = new javax.swing.JLabel JavaDoc();
232         jndiNameLabel = new javax.swing.JLabel JavaDoc();
233         jndiNameField = new javax.swing.JTextField JavaDoc();
234         messageLabel = new javax.swing.JTextArea JavaDoc();
235         advancedButton = new javax.swing.JButton JavaDoc();
236         jLabel1 = new javax.swing.JLabel JavaDoc();
237
238         setLayout(new java.awt.GridBagLayout JavaDoc());
239
240         initialContextFactoryLabel.setText("Initial Context Factory");
241         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
242         gridBagConstraints.gridx = 0;
243         gridBagConstraints.gridy = 4;
244         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
245         gridBagConstraints.weighty = 1.0;
246         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
247         add(initialContextFactoryLabel, gridBagConstraints);
248
249         initialContextFactoryComboBox.setEditable(true);
250         initialContextFactoryComboBox.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
251         initialContextFactoryComboBox.setModel(new javax.swing.DefaultComboBoxModel JavaDoc(new String JavaDoc[] { "com.sun.jndi.rmi.registry.RegistryContextFactory", "weblogic.jndi.WLInitialContextFactory", "com.sun.jndi.cosnaming.CNCtxFactory", "org.jnp.interfaces.NamingContextFactory" }));
252         initialContextFactoryComboBox.setToolTipText("Select the initial context factory that will allow you to connect to the server's JNDI software.");
253         initialContextFactoryComboBox.setMinimumSize(new java.awt.Dimension JavaDoc(300, 20));
254         initialContextFactoryComboBox.setPreferredSize(new java.awt.Dimension JavaDoc(300, 20));
255         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
256         gridBagConstraints.gridx = 1;
257         gridBagConstraints.gridy = 4;
258         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
259         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
260         gridBagConstraints.weightx = 1.0;
261         gridBagConstraints.weighty = 1.0;
262         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
263         add(initialContextFactoryComboBox, gridBagConstraints);
264
265         serverUrlLabel.setText("Server URL");
266         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
267         gridBagConstraints.gridx = 0;
268         gridBagConstraints.gridy = 5;
269         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
270         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
271         add(serverUrlLabel, gridBagConstraints);
272
273         serverURLComboBox.setEditable(true);
274         serverURLComboBox.setFont(new java.awt.Font JavaDoc("Dialog", 0, 12));
275         serverURLComboBox.setModel(new javax.swing.DefaultComboBoxModel JavaDoc(new String JavaDoc[] { "rmi://localhost:1099", "t3://localhost:7001", "iiop://localhost:900", "jnp://localhost:1099" }));
276         serverURLComboBox.setMinimumSize(new java.awt.Dimension JavaDoc(120, 20));
277         serverURLComboBox.setPreferredSize(new java.awt.Dimension JavaDoc(120, 20));
278         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
279         gridBagConstraints.gridx = 1;
280         gridBagConstraints.gridy = 5;
281         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
282         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
283         gridBagConstraints.weightx = 1.0;
284         gridBagConstraints.weighty = 1.0;
285         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
286         add(serverURLComboBox, gridBagConstraints);
287
288         principleLabel.setText("Principle");
289         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
290         gridBagConstraints.gridx = 0;
291         gridBagConstraints.gridy = 6;
292         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
293         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
294         add(principleLabel, gridBagConstraints);
295
296         credentialsLabel.setText("Credentials");
297         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
298         gridBagConstraints.gridx = 0;
299         gridBagConstraints.gridy = 7;
300         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
301         gridBagConstraints.weighty = 0.2;
302         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
303         add(credentialsLabel, gridBagConstraints);
304
305         principleField.setToolTipText("Principle or User Name");
306         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
307         gridBagConstraints.gridx = 1;
308         gridBagConstraints.gridy = 6;
309         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
310         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
311         gridBagConstraints.weightx = 1.0;
312         gridBagConstraints.weighty = 1.0;
313         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
314         add(principleField, gridBagConstraints);
315
316         credentialsField.setToolTipText("Credentials or password");
317         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
318         gridBagConstraints.gridx = 1;
319         gridBagConstraints.gridy = 7;
320         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
321         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
322         gridBagConstraints.weightx = 1.0;
323         gridBagConstraints.weighty = 1.0;
324         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
325         add(credentialsField, gridBagConstraints);
326
327         nameField.addKeyListener(new java.awt.event.KeyAdapter JavaDoc() {
328             public void keyTyped(java.awt.event.KeyEvent JavaDoc evt) {
329                 fireChangeEvent(evt);
330             }
331         });
332
333         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
334         gridBagConstraints.gridx = 1;
335         gridBagConstraints.gridy = 2;
336         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
337         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
338         gridBagConstraints.weightx = 1.0;
339         gridBagConstraints.weighty = 1.0;
340         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
341         add(nameField, gridBagConstraints);
342
343         nameLabel.setText("Name");
344         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
345         gridBagConstraints.gridx = 0;
346         gridBagConstraints.gridy = 2;
347         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
348         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
349         add(nameLabel, gridBagConstraints);
350
351         jndiNameLabel.setText("JNDI Name");
352         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
353         gridBagConstraints.gridx = 0;
354         gridBagConstraints.gridy = 3;
355         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
356         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
357         add(jndiNameLabel, gridBagConstraints);
358
359         jndiNameField.setText("jrmp");
360         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
361         gridBagConstraints.gridx = 1;
362         gridBagConstraints.gridy = 3;
363         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
364         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
365         gridBagConstraints.weightx = 1.0;
366         gridBagConstraints.weighty = 1.0;
367         gridBagConstraints.insets = new java.awt.Insets JavaDoc(4, 4, 4, 4);
368         add(jndiNameField, gridBagConstraints);
369
370         messageLabel.setEditable(false);
371         messageLabel.setForeground(new java.awt.Color JavaDoc(255, 0, 0));
372         messageLabel.setLineWrap(true);
373         messageLabel.setRows(3);
374         messageLabel.setText("message text");
375         messageLabel.setWrapStyleWord(true);
376         messageLabel.setOpaque(false);
377         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
378         gridBagConstraints.gridx = 0;
379         gridBagConstraints.gridy = 1;
380         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
381         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
382         gridBagConstraints.insets = new java.awt.Insets JavaDoc(5, 5, 5, 5);
383         add(messageLabel, gridBagConstraints);
384
385         advancedButton.setText("Advanced...");
386         advancedButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
387             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
388                 advancedButtonActionPerformed(evt);
389             }
390         });
391
392         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
393         gridBagConstraints.gridx = 1;
394         gridBagConstraints.gridy = 8;
395         gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHEAST;
396         add(advancedButton, gridBagConstraints);
397
398         jLabel1.setText("Start by selecting your server connection type above");
399         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
400         gridBagConstraints.gridx = 0;
401         gridBagConstraints.gridy = 0;
402         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
403         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
404         add(jLabel1, gridBagConstraints);
405
406     }//GEN-END:initComponents
407

408     private void advancedButtonActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_advancedButtonActionPerformed
409
AdvancedPanel panel = new AdvancedPanel(this.advancedProperties);
410
411         DialogDescriptor descriptor = new DialogDescriptor(panel, "Advanced connection properties");
412
413         final Dialog JavaDoc dialog = DialogDisplayer.getDefault().createDialog(descriptor);
414
415         try {
416              dialog.setVisible(true);
417         } catch (Exception JavaDoc e) { // InterruptedException, InvocationTargetException
418
ErrorManager.getDefault().notify(e);
419             return;
420         }
421
422         if (descriptor.getValue() == WizardDescriptor.FINISH_OPTION) {
423
424             System.out.println("OK'ed the advanced props");
425             this.advancedProperties = panel.getProperties();
426         }
427
428
429     }//GEN-LAST:event_advancedButtonActionPerformed
430

431     private void fireChangeEvent(java.awt.event.KeyEvent JavaDoc evt) {//GEN-FIRST:event_fireChangeEvent
432
// Add your handling code here:
433
SwingUtilities.invokeLater(new Runnable JavaDoc() {
434             public void run() {
435                 fireChangeEvent();
436             }
437         });
438     }//GEN-LAST:event_fireChangeEvent
439

440     // Variables declaration - do not modify//GEN-BEGIN:variables
441
private javax.swing.JButton JavaDoc advancedButton;
442     private javax.swing.JTextField JavaDoc credentialsField;
443     private javax.swing.JLabel JavaDoc credentialsLabel;
444     private javax.swing.JComboBox JavaDoc initialContextFactoryComboBox;
445     private javax.swing.JLabel JavaDoc initialContextFactoryLabel;
446     private javax.swing.JLabel JavaDoc jLabel1;
447     private javax.swing.JTextField JavaDoc jndiNameField;
448     private javax.swing.JLabel JavaDoc jndiNameLabel;
449     private javax.swing.JTextArea JavaDoc messageLabel;
450     private javax.swing.JTextField JavaDoc nameField;
451     private javax.swing.JLabel JavaDoc nameLabel;
452     private javax.swing.JTextField JavaDoc principleField;
453     private javax.swing.JLabel JavaDoc principleLabel;
454     private javax.swing.ButtonGroup JavaDoc serverTypeButtonGroup;
455     private javax.swing.JComboBox JavaDoc serverURLComboBox;
456     private javax.swing.JLabel JavaDoc serverUrlLabel;
457     // End of variables declaration//GEN-END:variables
458

459 }
460
Popular Tags