KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > j2ee > sun > share > configbean > customizers > webapp > WebAppClassloaderPanel


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

19 /*
20  * WebAppClassloaderPanel.java
21  *
22  * Created on November 5, 2003, 4:56 PM
23  */

24
25 package org.netbeans.modules.j2ee.sun.share.configbean.customizers.webapp;
26
27 import java.awt.Component JavaDoc;
28 import java.awt.Container JavaDoc;
29 import java.util.ArrayList JavaDoc;
30 import java.util.ResourceBundle JavaDoc;
31
32 import java.awt.GridBagConstraints JavaDoc;
33 import java.awt.Insets JavaDoc;
34 import java.beans.PropertyVetoException JavaDoc;
35
36 import javax.swing.event.TableModelEvent JavaDoc;
37 import javax.swing.event.TableModelListener JavaDoc;
38 import org.netbeans.modules.j2ee.sun.dd.api.web.WebProperty;
39 import org.netbeans.modules.j2ee.sun.share.configbean.ASDDVersion;
40 import org.netbeans.modules.j2ee.sun.share.configbean.Utils;
41
42 import org.netbeans.modules.j2ee.sun.share.configbean.WebAppRoot;
43 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.GenericTableModel;
44 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.GenericTablePanel;
45 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.HelpContext;
46 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.data.DynamicPropertyPanel;
47 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.data.PropertyListMapping;
48
49
50 /**
51  *
52  * @author Peter Williams
53  */

54 public class WebAppClassloaderPanel extends javax.swing.JPanel JavaDoc implements TableModelListener JavaDoc {
55     
56     private static final ResourceBundle JavaDoc webappBundle = ResourceBundle.getBundle(
57         "org.netbeans.modules.j2ee.sun.share.configbean.customizers.webapp.Bundle"); // NOI18N
58

59     private static final ResourceBundle JavaDoc commonBundle = ResourceBundle.getBundle(
60         "org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.Bundle"); // NOI18N
61

62     private WebAppRootCustomizer masterPanel;
63
64     // Table for editing Property web classloaderProperties
65
private GenericTableModel classloaderPropertiesModel;
66     private GenericTablePanel classloaderPropertiesPanel;
67
68     // true if AS 8.1+ fields are visible.
69
private boolean as81FeaturesVisible;
70     
71     /** Creates new form WebAppClassloaderPanel */
72     public WebAppClassloaderPanel(WebAppRootCustomizer src) {
73         masterPanel = src;
74
75         initComponents();
76         initUserComponents();
77     }
78
79     /** This method is called from within the constructor to
80      * initialize the form.
81      * WARNING: Do NOT modify this code. The content of this method is
82      * always regenerated by the Form Editor.
83      */

84     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
85
private void initComponents() {
86         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
87
88         jChkClassLoader = new javax.swing.JCheckBox JavaDoc();
89         jLblExtraClassPath = new javax.swing.JLabel JavaDoc();
90         jTxtExtraClassPath = new javax.swing.JTextField JavaDoc();
91         jLblDynamicReloadInterval = new javax.swing.JLabel JavaDoc();
92         jTxtDynamicReloadInterval = new javax.swing.JTextField JavaDoc();
93         jLblDelegate = new javax.swing.JLabel JavaDoc();
94         jChkDelegate = new javax.swing.JCheckBox JavaDoc();
95
96         setLayout(new java.awt.GridBagLayout JavaDoc());
97
98         getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_WebAppGeneralTab"));
99         getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_WebAppGeneralTab"));
100         jChkClassLoader.setText(webappBundle.getString("LBL_EnableClassLoader"));
101         jChkClassLoader.addItemListener(new java.awt.event.ItemListener JavaDoc() {
102             public void itemStateChanged(java.awt.event.ItemEvent JavaDoc evt) {
103                 jChkClassLoaderItemStateChanged(evt);
104             }
105         });
106
107         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
108         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
109         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
110         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
111         gridBagConstraints.weightx = 1.0;
112         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 2, 0, 0);
113         add(jChkClassLoader, gridBagConstraints);
114         jChkClassLoader.getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_ClassLoader"));
115         jChkClassLoader.getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_ClassLoader"));
116
117         jLblExtraClassPath.setLabelFor(jTxtExtraClassPath);
118         jLblExtraClassPath.setText(webappBundle.getString("LBL_ExtraClassPath_1"));
119         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
120         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
121         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 6, 0, 0);
122         add(jLblExtraClassPath, gridBagConstraints);
123
124         jTxtExtraClassPath.addKeyListener(new java.awt.event.KeyAdapter JavaDoc() {
125             public void keyReleased(java.awt.event.KeyEvent JavaDoc evt) {
126                 jTxtExtraClassPathKeyReleased(evt);
127             }
128         });
129
130         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
131         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
132         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
133         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 6, 0, 5);
134         add(jTxtExtraClassPath, gridBagConstraints);
135         jTxtExtraClassPath.getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_ExtraClassPath"));
136         jTxtExtraClassPath.getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_ExtraClassPath"));
137
138         jLblDynamicReloadInterval.setLabelFor(jTxtDynamicReloadInterval);
139         jLblDynamicReloadInterval.setText(webappBundle.getString("LBL_DynamicReloadInterval_1"));
140         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
141         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 6, 0, 0);
142         add(jLblDynamicReloadInterval, gridBagConstraints);
143
144         jTxtDynamicReloadInterval.addKeyListener(new java.awt.event.KeyAdapter JavaDoc() {
145             public void keyReleased(java.awt.event.KeyEvent JavaDoc evt) {
146                 jTxtDynamicReloadIntervalKeyReleased(evt);
147             }
148         });
149
150         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
151         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
152         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
153         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 6, 0, 5);
154         add(jTxtDynamicReloadInterval, gridBagConstraints);
155         jTxtDynamicReloadInterval.getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_DynamicReloadInterval"));
156         jTxtDynamicReloadInterval.getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_DynamicReloadInterval"));
157
158         jLblDelegate.setLabelFor(jChkDelegate);
159         jLblDelegate.setText(webappBundle.getString("LBL_ClassLoaderDelegate_1"));
160         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
161         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
162         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 6, 5, 0);
163         add(jLblDelegate, gridBagConstraints);
164
165         jChkDelegate.addItemListener(new java.awt.event.ItemListener JavaDoc() {
166             public void itemStateChanged(java.awt.event.ItemEvent JavaDoc evt) {
167                 jChkDelegateItemStateChanged(evt);
168             }
169         });
170
171         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
172         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
173         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
174         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
175         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 2, 5, 5);
176         add(jChkDelegate, gridBagConstraints);
177         jChkDelegate.getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_ClassLoaderDelegate"));
178         jChkDelegate.getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_ClassLoaderDelegate"));
179
180     }// </editor-fold>//GEN-END:initComponents
181

182     private void jTxtDynamicReloadIntervalKeyReleased(java.awt.event.KeyEvent JavaDoc evt) {//GEN-FIRST:event_jTxtDynamicReloadIntervalKeyReleased
183
WebAppRoot bean = masterPanel.getBean();
184         if(bean != null) {
185             try {
186                 bean.setDynamicReloadInterval(jTxtDynamicReloadInterval.getText());
187             } catch(java.beans.PropertyVetoException JavaDoc exception) {
188                 jTxtDynamicReloadInterval.setText(bean.getDynamicReloadInterval());
189             }
190         }
191     }//GEN-LAST:event_jTxtDynamicReloadIntervalKeyReleased
192

193     private void jChkDelegateItemStateChanged(java.awt.event.ItemEvent JavaDoc evt) {//GEN-FIRST:event_jChkDelegateItemStateChanged
194
WebAppRoot bean = masterPanel.getBean();
195         boolean state = Utils.interpretCheckboxState(evt);
196         if(bean != null) {
197             try {
198                 bean.setDelegate(state);
199             } catch(java.beans.PropertyVetoException JavaDoc exception) {
200                 jChkDelegate.setSelected(bean.isDelegate());
201             }
202         }
203     }//GEN-LAST:event_jChkDelegateItemStateChanged
204

205     private void jChkClassLoaderItemStateChanged(java.awt.event.ItemEvent JavaDoc evt) {//GEN-FIRST:event_jChkClassLoaderItemStateChanged
206
WebAppRoot bean = masterPanel.getBean();
207         boolean state = Utils.interpretCheckboxState(evt);
208         if(bean != null) {
209             try {
210                 bean.setClassLoader(state);
211             } catch(java.beans.PropertyVetoException JavaDoc exception) {
212                 jChkClassLoader.setSelected(bean.isClassLoader());
213             }
214         }
215         enableClassLoaderFields(state);
216     }//GEN-LAST:event_jChkClassLoaderItemStateChanged
217

218     private void jTxtExtraClassPathKeyReleased(java.awt.event.KeyEvent JavaDoc evt) {//GEN-FIRST:event_jTxtExtraClassPathKeyReleased
219
WebAppRoot bean = masterPanel.getBean();
220         if(bean != null) {
221             try {
222                 bean.setExtraClassPath(jTxtExtraClassPath.getText());
223             } catch(java.beans.PropertyVetoException JavaDoc exception) {
224                 jTxtExtraClassPath.setText(bean.getExtraClassPath());
225             }
226         }
227     }//GEN-LAST:event_jTxtExtraClassPathKeyReleased
228

229     
230     // Variables declaration - do not modify//GEN-BEGIN:variables
231
private javax.swing.JCheckBox JavaDoc jChkClassLoader;
232     private javax.swing.JCheckBox JavaDoc jChkDelegate;
233     private javax.swing.JLabel JavaDoc jLblDelegate;
234     private javax.swing.JLabel JavaDoc jLblDynamicReloadInterval;
235     private javax.swing.JLabel JavaDoc jLblExtraClassPath;
236     private javax.swing.JTextField JavaDoc jTxtDynamicReloadInterval;
237     private javax.swing.JTextField JavaDoc jTxtExtraClassPath;
238     // End of variables declaration//GEN-END:variables
239

240     private void initUserComponents() {
241             
242         as81FeaturesVisible = true;
243         
244         /** Add call properties table panel :
245          * TableEntry list has three properties: Name, Value, Description
246          */

247         ArrayList JavaDoc tableColumns = new ArrayList JavaDoc(3);
248         tableColumns.add(new GenericTableModel.AttributeEntry(
249             WebProperty.NAME, commonBundle.getString("LBL_Name"), true)); // NOI18N
250
tableColumns.add(new GenericTableModel.AttributeEntry(
251             WebProperty.VALUE, commonBundle.getString("LBL_Value"), true)); // NOI18N
252
tableColumns.add(new GenericTableModel.ValueEntry(
253             WebProperty.DESCRIPTION, commonBundle.getString("LBL_Description"))); // NOI18N
254

255         // add classloaderProperties table
256
classloaderPropertiesModel = new GenericTableModel(WebAppRootCustomizer.webPropertyFactory, tableColumns);
257         classloaderPropertiesPanel = new GenericTablePanel(classloaderPropertiesModel,
258             webappBundle, "WebProperties", // NOI18N - property name
259
DynamicPropertyPanel.class, HelpContext.HELP_WEBAPP_CLASSLOADER_PROPERTY_POPUP,
260             PropertyListMapping.getPropertyList(PropertyListMapping.WEBAPP_CLASSLOADER_PROPERTIES));
261         
262         GridBagConstraints JavaDoc gridBagConstraints = new GridBagConstraints JavaDoc();
263         gridBagConstraints.gridwidth = GridBagConstraints.REMAINDER;
264         gridBagConstraints.fill = GridBagConstraints.BOTH;
265         gridBagConstraints.weightx = 1.0;
266         gridBagConstraints.weighty = 1.0;
267         gridBagConstraints.insets = new Insets JavaDoc(0, 6, 0, 5);
268         add(classloaderPropertiesPanel, gridBagConstraints);
269     }
270     
271     public void addListeners() {
272         classloaderPropertiesModel.addTableModelListener(this);
273     }
274     
275     public void removeListeners() {
276         classloaderPropertiesModel.removeTableModelListener(this);
277     }
278     
279     private void enableClassLoaderFields(boolean enabled) {
280         jLblExtraClassPath.setEnabled(enabled);
281         jTxtExtraClassPath.setEnabled(enabled);
282         jTxtExtraClassPath.setEditable(enabled);
283         jLblDynamicReloadInterval.setEnabled(enabled);
284         jTxtDynamicReloadInterval.setEnabled(enabled);
285         jTxtDynamicReloadInterval.setEditable(enabled);
286         jLblDelegate.setEnabled(enabled);
287         jChkDelegate.setEnabled(enabled);
288         
289         setContainerEnabled(classloaderPropertiesPanel, enabled);
290     }
291     
292     public void setContainerEnabled(Container JavaDoc container, boolean enabled) {
293         Component JavaDoc [] components = container.getComponents();
294         for(int i = 0; i < components.length; i++) {
295             components[i].setEnabled(enabled);
296             if(components[i] instanceof Container JavaDoc) {
297                 setContainerEnabled((Container JavaDoc) components[i], enabled);
298             }
299         }
300     }
301     
302     /** Initialization of all the fields in this panel from the bean that
303      * was passed in.
304      */

305     public void initFields(WebAppRoot bean) {
306         ASDDVersion asVersion = bean.getAppServerVersion();
307         jChkClassLoader.setSelected(bean.isClassLoader());
308         jTxtExtraClassPath.setText(bean.getExtraClassPath());
309         jTxtDynamicReloadInterval.setText(bean.getDynamicReloadInterval());
310         jChkDelegate.setSelected(bean.isDelegate());
311         classloaderPropertiesPanel.setModel(bean.getClassLoaderProperties(), asVersion);
312
313         if(ASDDVersion.SUN_APPSERVER_8_1.compareTo(bean.getAppServerVersion()) <= 0) {
314             showAS81Fields();
315         } else {
316             hideAS81Fields();
317         }
318         
319         enableClassLoaderFields(bean.isClassLoader());
320     }
321         
322     // TODO after 5.0, generalize version based field display for multiple (> 2)
323
// appserver versions.
324
private void showAS81Fields() {
325         if(!as81FeaturesVisible) {
326             jLblDynamicReloadInterval.setVisible(true);
327             jTxtDynamicReloadInterval.setVisible(true);
328             classloaderPropertiesPanel.setVisible(true);
329             
330             as81FeaturesVisible = true;
331         }
332     }
333     
334     private void hideAS81Fields() {
335         if(as81FeaturesVisible) {
336             jLblDynamicReloadInterval.setVisible(false);
337             jTxtDynamicReloadInterval.setVisible(false);
338             classloaderPropertiesPanel.setVisible(false);
339             
340             as81FeaturesVisible = false;
341         }
342     }
343     
344     /** -----------------------------------------------------------------------
345      * Implementation of javax.swing.event.TableModelListener
346      */

347     public void tableChanged(TableModelEvent JavaDoc e) {
348         WebAppRoot bean = masterPanel.getBean();
349         if(bean != null) {
350             try {
351                 Object JavaDoc eventSource = e.getSource();
352                 if(eventSource == classloaderPropertiesModel) {
353                     bean.setClassLoaderProperties(classloaderPropertiesModel.getData());
354                     bean.firePropertyChange("classloaderProperties", null, classloaderPropertiesModel.getData());
355                 }
356             } catch(PropertyVetoException JavaDoc ex) {
357                 // FIXME undo whatever changed... how?
358
}
359         }
360     }
361 }
362
Popular Tags