1 19 24 25 package org.netbeans.modules.j2ee.sun.share.configbean.customizers.common; 26 27 import java.util.ResourceBundle ; 28 import javax.accessibility.AccessibleContext ; 29 import javax.swing.JTable ; 30 import javax.swing.ListSelectionModel ; 31 import javax.swing.JButton ; 32 import javax.swing.event.ListSelectionListener ; 33 import javax.swing.event.ListSelectionEvent ; 34 35 import org.netbeans.modules.j2ee.sun.dd.api.CommonDDBean; 36 37 38 43 44 public abstract class BeanTablePanel extends javax.swing.JPanel { 45 46 protected JTable table; 47 protected JButton moveUpButton, moveDownButton, sourceButton; 48 private boolean reordable; 49 protected BeanTableModel model; 50 private boolean isSource; 51 52 static final ResourceBundle bundle = 53 ResourceBundle.getBundle( 54 "org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.Bundle"); 56 59 public BeanTablePanel(BeanTableModel model) { 60 this(model, false, false); 61 } 62 63 69 public BeanTablePanel(BeanTableModel model, boolean reordable) { 70 this(model, reordable, false); 71 } 72 73 80 public BeanTablePanel(BeanTableModel model, final boolean reordable, 81 final boolean isSource) { 82 this.model=model; 83 this.reordable=reordable; 84 this.isSource=isSource; 85 86 initComponents(); 87 88 table = new FixedHeightJTable(); 89 90 table.getAccessibleContext().setAccessibleName(getAccessibleName()); 91 table.getAccessibleContext().setAccessibleDescription(getAccessibleDesc()); 92 getAccessibleContext().setAccessibleName(getAccessibleName()); 93 getAccessibleContext().setAccessibleDescription(getAccessibleDesc()); 94 95 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 97 table.setModel(model); 98 table.getSelectionModel().addListSelectionListener( 99 new ListSelectionListener (){ 100 public void valueChanged(ListSelectionEvent e){ 101 if (e.getValueIsAdjusting()){ 103 return; 104 } 105 106 if(((ListSelectionModel )e.getSource()).isSelectionEmpty() || 107 table.getModel().getRowCount() == 0 ) { 109 editButton.setEnabled(false); 110 removeButton.setEnabled(false); 111 if (reordable) { 112 moveUpButton.setEnabled(false); 113 moveDownButton.setEnabled(false); 114 } 115 if (isSource) { 116 sourceButton.setEnabled(false); 117 } 118 } else { 119 editButton.setEnabled(true); 120 removeButton.setEnabled(true); 121 if (reordable) { 122 int row = table.getSelectedRow(); 123 if (row<table.getModel().getRowCount()-1){ 124 moveDownButton.setEnabled(true); 125 }else{ 126 moveDownButton.setEnabled(false); 127 } 128 if (row>0){ 129 moveUpButton.setEnabled(true); 130 }else{ 131 moveUpButton.setEnabled(false); 132 } 133 } 134 if (isSource) { 135 sourceButton.setEnabled(true); 136 } 137 } 138 } 139 }); 140 141 jScrollPane1.setViewportView(table); 142 if (reordable) { 143 moveUpButton = new JButton (bundle.getString("LBL_Move_Up")); moveDownButton = new JButton (bundle.getString("LBL_Move_Down")); moveUpButton.setEnabled(false); 146 moveDownButton.setEnabled(false); 147 buttonPanel.add(moveUpButton); 148 buttonPanel.add(moveDownButton); 149 } 150 if (isSource) { 151 sourceButton = new JButton (bundle.getString("LBL_Go_To_Source")); sourceButton.setEnabled(false); 153 rightPanel.add(sourceButton); 154 } 155 156 removeButton.addActionListener(new java.awt.event.ActionListener () { 157 public void actionPerformed(java.awt.event.ActionEvent evt) { 158 int row = table.getSelectedRow(); 159 if(row >= 0) { 161 getModel().removeRow(row); 162 163 if(row >= getModel().getRowCount()) { 164 --row; 165 } 166 167 if(row >= 0) { 168 table.getSelectionModel().setSelectionInterval(row, row); 169 } 170 } 171 } 172 }); 173 174 editButton.addActionListener(new java.awt.event.ActionListener () { 175 public void actionPerformed(java.awt.event.ActionEvent evt) { 176 displayDialog(true); 177 } 178 }); 179 180 addButton.addActionListener(new java.awt.event.ActionListener () { 181 public void actionPerformed(java.awt.event.ActionEvent evt) { 182 displayDialog(false); 183 } 184 }); 185 } 186 187 188 public void setModel(Object parent, CommonDDBean[] children) { 189 model.setData(parent, children); 190 } 191 192 193 protected void displayDialog(boolean isEditOperation){ 194 int row = -1; 195 BeanInputDialog dialog = null; 196 197 if(isEditOperation) { 198 row = table.getSelectedRow(); 199 if(row < 0) { 200 return; 201 } 202 203 Object [] values = model.getValues(row); 204 dialog = getInputDialog(values); 205 } else { 206 dialog = getInputDialog(); 207 } 208 209 do { 210 int result = dialog.display(); 211 if(result == dialog.CANCEL_OPTION) { 212 break; 213 } 214 215 if(result == dialog.OK_OPTION) { 216 if (dialog.hasErrors()) { 217 dialog.showErrors(); 218 } else { 219 if(isEditOperation){ 221 model.editRow(row, dialog.getValues()); 222 } else { 223 model.addRow(dialog.getValues()); 224 } 225 } 226 } 227 } while (dialog.hasErrors()); 228 } 229 230 231 private void initComponents() { 232 jScrollPane1 = new javax.swing.JScrollPane (); 233 southPanel = new javax.swing.JPanel (); 234 buttonPanel = new javax.swing.JPanel (); 235 addButton = new javax.swing.JButton (); 236 editButton = new javax.swing.JButton (); 237 removeButton = new javax.swing.JButton (); 238 rightPanel = new javax.swing.JPanel (); 239 240 setLayout(new java.awt.BorderLayout ()); 241 add(jScrollPane1, java.awt.BorderLayout.CENTER); 242 southPanel.setLayout(new java.awt.BorderLayout ()); 243 244 String buttonText = bundle.getString("LBL_New"); 245 int mnemonicIndex = buttonText.indexOf(bundle.getString("MNC_New").charAt(0)); 246 if(mnemonicIndex < 0) { 247 mnemonicIndex = 0; 248 } 249 addButton.setText(buttonText); addButton.setDisplayedMnemonicIndex(mnemonicIndex); 251 AccessibleContext accessibleContext = addButton.getAccessibleContext(); 252 accessibleContext.setAccessibleName(bundle.getString("ACSN_New")); accessibleContext.setAccessibleDescription(bundle.getString("ACSD_New")); buttonPanel.add(addButton); 255 256 buttonText = bundle.getString("LBL_Edit"); 257 mnemonicIndex = buttonText.indexOf(bundle.getString("MNC_Edit").charAt(0)); 258 if(mnemonicIndex < 0) { 259 mnemonicIndex = 0; 260 } 261 editButton.setText(buttonText); editButton.setDisplayedMnemonicIndex(mnemonicIndex); 263 editButton.setEnabled(false); 264 accessibleContext = editButton.getAccessibleContext(); 265 accessibleContext.setAccessibleName(bundle.getString("ACSN_Edit")); accessibleContext.setAccessibleDescription(bundle.getString("ACSD_Edit")); buttonPanel.add(editButton); 268 269 buttonText = bundle.getString("LBL_Delete"); 270 mnemonicIndex = buttonText.indexOf(bundle.getString("MNC_Delete").charAt(0)); 271 if(mnemonicIndex < 0) { 272 mnemonicIndex = 0; 273 } 274 removeButton.setText(buttonText); removeButton.setDisplayedMnemonicIndex(mnemonicIndex); 276 removeButton.setEnabled(false); 277 accessibleContext = removeButton.getAccessibleContext(); 278 accessibleContext.setAccessibleName(bundle.getString("ACSN_Delete")); accessibleContext.setAccessibleDescription(bundle.getString("ACSD_Delete")); buttonPanel.add(removeButton); 281 282 southPanel.add(buttonPanel, java.awt.BorderLayout.CENTER); 283 southPanel.add(rightPanel, java.awt.BorderLayout.EAST); 284 add(southPanel, java.awt.BorderLayout.SOUTH); 285 } 286 287 private javax.swing.JPanel southPanel; 288 protected javax.swing.JButton addButton; 289 private javax.swing.JPanel buttonPanel; 290 private javax.swing.JScrollPane jScrollPane1; 291 protected javax.swing.JButton editButton; 292 protected javax.swing.JButton removeButton; 293 private javax.swing.JPanel rightPanel; 294 295 abstract public BeanInputDialog getInputDialog(Object [] values); 296 abstract public BeanInputDialog getInputDialog(); 297 298 protected String getAccessibleName(){ 299 return bundle.getString("ACSN_Table"); } 302 303 protected String getAccessibleDesc(){ 304 return bundle.getString("ACSD_Table"); } 307 308 309 public BeanTableModel getModel() { 310 return model; 311 } 312 313 314 public void setTitle(String title) { 315 javax.swing.JLabel label = new javax.swing.JLabel (title); 316 label.setBorder(new javax.swing.border.EmptyBorder (5,5,5,0)); 317 add(label, java.awt.BorderLayout.NORTH); 318 } 319 320 321 public void setSelectedRow(int row) { 322 table.setRowSelectionInterval(row,row); 323 } 324 325 326 public void setButtons(boolean b1, boolean b2, boolean b3) { 327 addButton.setEnabled(b1); 328 editButton.setEnabled(b2); 329 removeButton.setEnabled(b3); 330 } 331 332 333 public void setButtons(boolean b1, boolean b2, boolean b3, boolean b4, 334 boolean b5, boolean b6) { 335 this.setButtons(b1,b2,b3); 336 moveUpButton.setEnabled(b4); 337 moveDownButton.setEnabled(b5); 338 } 339 340 341 public boolean isReordable() { 342 return reordable; 343 } 344 345 346 public boolean isSource() { 347 return isSource; 348 } 349 } 350 | Popular Tags |