KickJava   Java API By Example, From Geeks To Geeks.

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


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  * CacheMappingPanel.java
21  *
22  * Created on January 7, 2004, 5:11 PM
23  */

24
25 package org.netbeans.modules.j2ee.sun.share.configbean.customizers.webapp;
26
27 import java.util.ArrayList JavaDoc;
28 import java.util.List JavaDoc;
29 import java.util.ResourceBundle JavaDoc;
30
31 import java.awt.GridBagConstraints JavaDoc;
32 import java.awt.Insets JavaDoc;
33
34 import java.beans.PropertyVetoException JavaDoc;
35
36 import javax.swing.JPanel JavaDoc;
37 import javax.swing.table.AbstractTableModel JavaDoc;
38 import javax.swing.table.TableModel JavaDoc;
39 import javax.swing.table.DefaultTableModel JavaDoc;
40 import javax.swing.event.EventListenerList JavaDoc;
41 import javax.swing.event.TableModelEvent JavaDoc;
42 import javax.swing.event.TableModelListener JavaDoc;
43
44 import javax.swing.ListSelectionModel JavaDoc;
45 import javax.swing.event.ListSelectionEvent JavaDoc;
46 import javax.swing.event.ListSelectionListener JavaDoc;
47
48 import org.netbeans.modules.j2ee.sun.dd.api.web.CacheMapping;
49
50 import org.netbeans.modules.j2ee.sun.share.configbean.WebAppRoot;
51 import org.netbeans.modules.j2ee.sun.share.configbean.WebAppCache;
52
53 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.FixedHeightJTable;
54 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.GenericTableModel;
55
56
57 /**
58  *
59  * @author Peter Williams
60  */

61 public class CacheMappingPanel extends javax.swing.JPanel JavaDoc implements TableModelListener JavaDoc, ListSelectionListener JavaDoc {
62
63     private static final ResourceBundle JavaDoc webappBundle = ResourceBundle.getBundle(
64         "org.netbeans.modules.j2ee.sun.share.configbean.customizers.webapp.Bundle"); // NOI18N
65

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

69     private WebAppRootCustomizer masterPanel;
70
71     private CacheMappingTableModel cacheMappingModel;
72     private SelectedCacheMappingPanel selectedCacheMappingPanel;
73
74     /** Creates new form CacheMappingPanel */
75     public CacheMappingPanel(WebAppRootCustomizer src) {
76         masterPanel = src;
77
78         initComponents();
79         initUserComponents();
80     }
81
82     /** This method is called from within the constructor to
83      * initialize the form.
84      * WARNING: Do NOT modify this code. The content of this method is
85      * always regenerated by the Form Editor.
86      */

87     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
88
private void initComponents() {
89         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
90
91         jLblCacheMappingUsageDescription = new javax.swing.JLabel JavaDoc();
92         cacheMappingTablePanel = new javax.swing.JPanel JavaDoc();
93         jLblCacheMappings = new javax.swing.JLabel JavaDoc();
94         jScrlPnCacheMapping = new javax.swing.JScrollPane JavaDoc();
95         cacheMappingTable = new org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.FixedHeightJTable();
96         cacheMappingButtonPanel = new javax.swing.JPanel JavaDoc();
97         jBtnAddMapping = new javax.swing.JButton JavaDoc();
98         jBtnRemoveMapping = new javax.swing.JButton JavaDoc();
99
100         setLayout(new java.awt.GridBagLayout JavaDoc());
101
102         getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_CacheMappingsTab"));
103         getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_CacheMappingsTab"));
104         jLblCacheMappingUsageDescription.setText(webappBundle.getString("LBL_CacheMappingDescription"));
105         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
106         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
107         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
108         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 6, 0, 0);
109         add(jLblCacheMappingUsageDescription, gridBagConstraints);
110
111         cacheMappingTablePanel.setLayout(new java.awt.GridBagLayout JavaDoc());
112
113         jLblCacheMappings.setLabelFor(cacheMappingTable);
114         jLblCacheMappings.setText(webappBundle.getString("LBL_CacheMappings"));
115         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
116         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
117         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
118         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
119         gridBagConstraints.weightx = 1.0;
120         cacheMappingTablePanel.add(jLblCacheMappings, gridBagConstraints);
121
122         jScrlPnCacheMapping.setViewportView(cacheMappingTable);
123         cacheMappingTable.getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_CacheMappingTable"));
124         cacheMappingTable.getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_CacheMappingTable"));
125
126         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
127         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
128         gridBagConstraints.weightx = 1.0;
129         gridBagConstraints.weighty = 1.0;
130         cacheMappingTablePanel.add(jScrlPnCacheMapping, gridBagConstraints);
131
132         cacheMappingButtonPanel.setLayout(new java.awt.GridBagLayout JavaDoc());
133
134         jBtnAddMapping.setText(commonBundle.getString("LBL_Add"));
135         jBtnAddMapping.addActionListener(new java.awt.event.ActionListener JavaDoc() {
136             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
137                 jBtnAddMappingActionPerformed(evt);
138             }
139         });
140
141         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
142         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
143         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
144         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
145         cacheMappingButtonPanel.add(jBtnAddMapping, gridBagConstraints);
146         jBtnAddMapping.getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_AddCacheMapping"));
147         jBtnAddMapping.getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_AddCacheMapping"));
148
149         jBtnRemoveMapping.setText(commonBundle.getString("LBL_Remove"));
150         jBtnRemoveMapping.addActionListener(new java.awt.event.ActionListener JavaDoc() {
151             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
152                 jBtnRemoveMappingActionPerformed(evt);
153             }
154         });
155
156         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
157         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
158         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
159         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
160         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 0, 0, 0);
161         cacheMappingButtonPanel.add(jBtnRemoveMapping, gridBagConstraints);
162         jBtnRemoveMapping.getAccessibleContext().setAccessibleName(webappBundle.getString("ACSN_RemoveCacheMapping"));
163         jBtnRemoveMapping.getAccessibleContext().setAccessibleDescription(webappBundle.getString("ACSD_RemoveCacheMapping"));
164
165         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
166         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
167         gridBagConstraints.gridheight = 2;
168         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
169         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 6, 0, 0);
170         cacheMappingTablePanel.add(cacheMappingButtonPanel, gridBagConstraints);
171
172         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
173         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
174         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
175         gridBagConstraints.weightx = 1.0;
176         gridBagConstraints.weighty = 1.0;
177         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 6, 5, 5);
178         add(cacheMappingTablePanel, gridBagConstraints);
179
180     }// </editor-fold>//GEN-END:initComponents
181

182     private void jBtnRemoveMappingActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jBtnRemoveMappingActionPerformed
183
// Add your handling code here:
184
int row = cacheMappingTable.getSelectedRow();
185
186         if(row != -1) {
187             ListSelectionModel JavaDoc listSelectionModel = cacheMappingTable.getSelectionModel();
188             boolean savedValueIsAdjusting = listSelectionModel.getValueIsAdjusting();
189             try {
190                 listSelectionModel.setValueIsAdjusting(true);
191
192                 cacheMappingModel.removeRow(row);
193                 if(row > 0 && row >= cacheMappingModel.getRowCount()) {
194                     row -= 1;
195                 }
196
197                 listSelectionModel.setSelectionInterval(row, row);
198             } finally {
199                 listSelectionModel.setValueIsAdjusting(savedValueIsAdjusting);
200             }
201
202             if(cacheMappingModel.getRowCount() > 0) {
203                 jBtnRemoveMapping.requestFocusInWindow();
204             } else {
205                 jBtnAddMapping.requestFocusInWindow();
206             }
207         }
208     }//GEN-LAST:event_jBtnRemoveMappingActionPerformed
209

210     private void jBtnAddMappingActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jBtnAddMappingActionPerformed
211
// Add your handling code here:
212
ListSelectionModel JavaDoc listSelectionModel = cacheMappingTable.getSelectionModel();
213         boolean savedValueIsAdjusting = listSelectionModel.getValueIsAdjusting();
214         try {
215             listSelectionModel.setValueIsAdjusting(true);
216             cacheMappingModel.addRow();
217
218             int row = cacheMappingModel.getRowCount() - 1;
219             listSelectionModel.setSelectionInterval(row, row);
220         } finally {
221             listSelectionModel.setValueIsAdjusting(savedValueIsAdjusting);
222         }
223
224 // jBtnAddMapping.requestFocusInWindow();
225
}//GEN-LAST:event_jBtnAddMappingActionPerformed
226

227
228     // Variables declaration - do not modify//GEN-BEGIN:variables
229
private javax.swing.JPanel JavaDoc cacheMappingButtonPanel;
230     private org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.FixedHeightJTable cacheMappingTable;
231     private javax.swing.JPanel JavaDoc cacheMappingTablePanel;
232     private javax.swing.JButton JavaDoc jBtnAddMapping;
233     private javax.swing.JButton JavaDoc jBtnRemoveMapping;
234     private javax.swing.JLabel JavaDoc jLblCacheMappingUsageDescription;
235     private javax.swing.JLabel JavaDoc jLblCacheMappings;
236     private javax.swing.JScrollPane JavaDoc jScrlPnCacheMapping;
237     // End of variables declaration//GEN-END:variables
238

239     private void initUserComponents() {
240         cacheMappingModel = new CacheMappingTableModel();
241         cacheMappingTable.setModel(cacheMappingModel);
242         cacheMappingTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
243
244         selectedCacheMappingPanel = new SelectedCacheMappingPanel(masterPanel);
245         GridBagConstraints JavaDoc gridBagConstraints = new GridBagConstraints JavaDoc();
246         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
247         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
248         gridBagConstraints.insets = new Insets JavaDoc(0, 6, 0, 5);
249         add(selectedCacheMappingPanel, gridBagConstraints);
250     }
251     
252     public void addListeners() {
253         cacheMappingModel.addTableModelListener(this);
254         cacheMappingTable.getSelectionModel().addListSelectionListener(this);
255     }
256     
257     public void removeListeners() {
258         cacheMappingTable.getSelectionModel().removeListSelectionListener(this);
259         cacheMappingModel.removeTableModelListener(this);
260     }
261     
262     /** Initialization of all the fields in this panel from the bean that
263      * was passed in.
264      */

265     public void initFields(WebAppCache cacheBean) {
266         // initialize cache mapping table
267
List JavaDoc cacheMappings = cacheBean.getCacheMappings();
268         cacheMappingModel.setData(cacheMappings, cacheBean.getParent().getAppServerVersion());
269
270         // select the first row of the table, if there is one.
271
ListSelectionModel JavaDoc listSelectionModel = cacheMappingTable.getSelectionModel();
272         if(cacheMappings != null && cacheMappings.size() > 0) {
273             listSelectionModel.setSelectionInterval(0,0);
274             handleListSelectionChanged();
275         } else {
276             enableTableAffectedControls();
277         }
278     }
279
280     private void enableTableAffectedControls() {
281         boolean hasMappings = (cacheMappingModel.getRowCount() > 0) ? true : false;
282         boolean hasSelection = (cacheMappingTable.getSelectionModel().getMinSelectionIndex() != -1) ? true : false;
283
284 // jBtnAddMapping.setEnabled(true);
285
jBtnRemoveMapping.setEnabled(hasMappings && hasSelection);
286         selectedCacheMappingPanel.setContainerEnabled(selectedCacheMappingPanel, hasMappings && hasSelection);
287     }
288     
289     private void handleListSelectionChanged() {
290         enableTableAffectedControls();
291         selectedCacheMappingPanel.setSelectedCacheMapping(getSelectedMapping());
292     }
293
294     /** -----------------------------------------------------------------------
295      * TableModelListener implementation
296      */

297     public void tableChanged(TableModelEvent JavaDoc tableModelEvent) {
298         WebAppRoot bean = masterPanel.getBean();
299         if(bean != null) {
300             WebAppCache cacheBean = bean.getCacheBean();
301             try {
302                 cacheBean.setCacheMappings(cacheMappingModel.getData());
303                 bean.setDirty();
304             } catch(PropertyVetoException JavaDoc ex) {
305                 // !PW What to do?
306
}
307         }
308
309         enableTableAffectedControls();
310     }
311
312     /** -----------------------------------------------------------------------
313      * ListSelectionListener implementation
314      */

315     public void valueChanged(ListSelectionEvent JavaDoc listSelectionEvent) {
316         if(!listSelectionEvent.getValueIsAdjusting()) {
317             handleListSelectionChanged();
318         }
319     }
320
321     private CacheMapping getSelectedMapping() {
322         List JavaDoc mappings = cacheMappingModel.getData();
323         int row = cacheMappingTable.getSelectedRow();
324
325         CacheMapping mapping;
326
327         if(row >= 0 && row < mappings.size()) {
328             mapping = (CacheMapping) mappings.get(row);
329         } else {
330             mapping = null;
331         }
332
333         return mapping;
334     }
335 }
336
Popular Tags