1 19 24 25 package org.netbeans.modules.j2ee.sun.share.configbean.customizers.webapp; 26 27 import java.util.ArrayList ; 28 import java.util.List ; 29 import java.util.ResourceBundle ; 30 31 import java.awt.GridBagConstraints ; 32 import java.awt.Insets ; 33 34 import java.beans.PropertyVetoException ; 35 36 import javax.swing.JPanel ; 37 import javax.swing.table.AbstractTableModel ; 38 import javax.swing.table.TableModel ; 39 import javax.swing.table.DefaultTableModel ; 40 import javax.swing.event.EventListenerList ; 41 import javax.swing.event.TableModelEvent ; 42 import javax.swing.event.TableModelListener ; 43 44 import javax.swing.ListSelectionModel ; 45 import javax.swing.event.ListSelectionEvent ; 46 import javax.swing.event.ListSelectionListener ; 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 61 public class CacheMappingPanel extends javax.swing.JPanel implements TableModelListener , ListSelectionListener { 62 63 private static final ResourceBundle webappBundle = ResourceBundle.getBundle( 64 "org.netbeans.modules.j2ee.sun.share.configbean.customizers.webapp.Bundle"); 66 private static final ResourceBundle commonBundle = ResourceBundle.getBundle( 67 "org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.Bundle"); 69 private WebAppRootCustomizer masterPanel; 70 71 private CacheMappingTableModel cacheMappingModel; 72 private SelectedCacheMappingPanel selectedCacheMappingPanel; 73 74 75 public CacheMappingPanel(WebAppRootCustomizer src) { 76 masterPanel = src; 77 78 initComponents(); 79 initUserComponents(); 80 } 81 82 87 private void initComponents() { 89 java.awt.GridBagConstraints gridBagConstraints; 90 91 jLblCacheMappingUsageDescription = new javax.swing.JLabel (); 92 cacheMappingTablePanel = new javax.swing.JPanel (); 93 jLblCacheMappings = new javax.swing.JLabel (); 94 jScrlPnCacheMapping = new javax.swing.JScrollPane (); 95 cacheMappingTable = new org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.FixedHeightJTable(); 96 cacheMappingButtonPanel = new javax.swing.JPanel (); 97 jBtnAddMapping = new javax.swing.JButton (); 98 jBtnRemoveMapping = new javax.swing.JButton (); 99 100 setLayout(new java.awt.GridBagLayout ()); 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 (); 106 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 107 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 108 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 0); 109 add(jLblCacheMappingUsageDescription, gridBagConstraints); 110 111 cacheMappingTablePanel.setLayout(new java.awt.GridBagLayout ()); 112 113 jLblCacheMappings.setLabelFor(cacheMappingTable); 114 jLblCacheMappings.setText(webappBundle.getString("LBL_CacheMappings")); 115 gridBagConstraints = new java.awt.GridBagConstraints (); 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 (); 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 ()); 133 134 jBtnAddMapping.setText(commonBundle.getString("LBL_Add")); 135 jBtnAddMapping.addActionListener(new java.awt.event.ActionListener () { 136 public void actionPerformed(java.awt.event.ActionEvent evt) { 137 jBtnAddMappingActionPerformed(evt); 138 } 139 }); 140 141 gridBagConstraints = new java.awt.GridBagConstraints (); 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 () { 151 public void actionPerformed(java.awt.event.ActionEvent evt) { 152 jBtnRemoveMappingActionPerformed(evt); 153 } 154 }); 155 156 gridBagConstraints = new java.awt.GridBagConstraints (); 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 (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 (); 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 (0, 6, 0, 0); 170 cacheMappingTablePanel.add(cacheMappingButtonPanel, gridBagConstraints); 171 172 gridBagConstraints = new java.awt.GridBagConstraints (); 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 (6, 6, 5, 5); 178 add(cacheMappingTablePanel, gridBagConstraints); 179 180 } 182 private void jBtnRemoveMappingActionPerformed(java.awt.event.ActionEvent evt) { int row = cacheMappingTable.getSelectedRow(); 185 186 if(row != -1) { 187 ListSelectionModel 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 } 210 private void jBtnAddMappingActionPerformed(java.awt.event.ActionEvent evt) { ListSelectionModel 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 } 227 228 private javax.swing.JPanel cacheMappingButtonPanel; 230 private org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.FixedHeightJTable cacheMappingTable; 231 private javax.swing.JPanel cacheMappingTablePanel; 232 private javax.swing.JButton jBtnAddMapping; 233 private javax.swing.JButton jBtnRemoveMapping; 234 private javax.swing.JLabel jLblCacheMappingUsageDescription; 235 private javax.swing.JLabel jLblCacheMappings; 236 private javax.swing.JScrollPane jScrlPnCacheMapping; 237 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 gridBagConstraints = new GridBagConstraints (); 246 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 247 gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; 248 gridBagConstraints.insets = new Insets (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 265 public void initFields(WebAppCache cacheBean) { 266 List cacheMappings = cacheBean.getCacheMappings(); 268 cacheMappingModel.setData(cacheMappings, cacheBean.getParent().getAppServerVersion()); 269 270 ListSelectionModel 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 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 297 public void tableChanged(TableModelEvent 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 ex) { 305 } 307 } 308 309 enableTableAffectedControls(); 310 } 311 312 315 public void valueChanged(ListSelectionEvent listSelectionEvent) { 316 if(!listSelectionEvent.getValueIsAdjusting()) { 317 handleListSelectionChanged(); 318 } 319 } 320 321 private CacheMapping getSelectedMapping() { 322 List 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 |