1 19 24 25 package org.netbeans.modules.j2ee.sun.share.configbean.customizers; 26 27 import java.awt.BorderLayout ; 28 import java.awt.Dimension ; 29 import java.beans.PropertyChangeEvent ; 30 import java.beans.PropertyChangeListener ; 31 import java.text.MessageFormat ; 32 import java.util.ArrayList ; 33 import java.util.Collection ; 34 import java.util.ResourceBundle ; 35 import javax.swing.JPanel ; 36 37 import org.netbeans.modules.j2ee.sun.share.Constants; 38 import org.netbeans.modules.j2ee.sun.share.PrincipalNameMapping; 39 import org.netbeans.modules.j2ee.sun.share.configbean.ASDDVersion; 40 import org.netbeans.modules.j2ee.sun.share.configbean.Utils; 41 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.HelpContext; 42 import org.netbeans.modules.j2ee.sun.share.configbean.customizers.common.InputDialog; 43 44 48 public class SecurityEditPrincipalPanel extends JPanel { 49 50 private static final ResourceBundle customizerBundle = ResourceBundle.getBundle( 51 "org.netbeans.modules.j2ee.sun.share.configbean.customizers.Bundle"); 53 private final PrincipalTableModel principalModel; 54 55 private final String originalPrincipalName; 56 private String principalName; 57 58 private final String originalClassName; 59 private String className; 60 61 private final boolean as90FeaturesVisible; 63 64 67 public SecurityEditPrincipalPanel(PrincipalNameMapping entry, PrincipalTableModel pml, ASDDVersion asVersion) { 68 principalModel = pml; 69 originalPrincipalName = principalName = entry.getPrincipalName(); 70 originalClassName = className = entry.getClassName(); 71 72 as90FeaturesVisible = ASDDVersion.SUN_APPSERVER_9_0.compareTo(asVersion) <= 0; 73 74 initComponents(); 75 initUserComponents(); 76 initFields(); 77 } 78 79 protected String getPrincipalName() { 80 return principalName; 81 } 82 83 protected String getOriginalPrincipalName() { 84 return originalPrincipalName; 85 } 86 87 protected String getClassName() { 88 return className; 89 } 90 91 protected String getOriginalClassName() { 92 return originalClassName; 93 } 94 95 100 private void initComponents() { 102 java.awt.GridBagConstraints gridBagConstraints; 103 104 jLblPrincipalEntryDesc = new javax.swing.JLabel (); 105 jLblRequiredMark = new javax.swing.JLabel (); 106 jLblPrincipalName = new javax.swing.JLabel (); 107 jTxtPrincipalName = new javax.swing.JTextField (); 108 jLblClassName = new javax.swing.JLabel (); 109 jTxtClassName = new javax.swing.JTextField (); 110 111 setLayout(new java.awt.GridBagLayout ()); 112 113 jLblPrincipalEntryDesc.setText(customizerBundle.getString("LBL_PrincipalEntryDesc90")); 114 gridBagConstraints = new java.awt.GridBagConstraints (); 115 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 116 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 117 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 5); 118 add(jLblPrincipalEntryDesc, gridBagConstraints); 119 120 jLblRequiredMark.setLabelFor(jTxtPrincipalName); 121 jLblRequiredMark.setText("*"); 122 gridBagConstraints = new java.awt.GridBagConstraints (); 123 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 0); 124 add(jLblRequiredMark, gridBagConstraints); 125 126 jLblPrincipalName.setLabelFor(jTxtPrincipalName); 127 jLblPrincipalName.setText(customizerBundle.getString("LBL_PrincipalName_1")); 128 gridBagConstraints = new java.awt.GridBagConstraints (); 129 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 130 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 0); 131 add(jLblPrincipalName, gridBagConstraints); 132 133 jTxtPrincipalName.addKeyListener(new java.awt.event.KeyAdapter () { 134 public void keyReleased(java.awt.event.KeyEvent evt) { 135 jTxtPrincipalNameKeyReleased(evt); 136 } 137 }); 138 139 gridBagConstraints = new java.awt.GridBagConstraints (); 140 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 141 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 142 gridBagConstraints.weightx = 1.0; 143 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 11); 144 add(jTxtPrincipalName, gridBagConstraints); 145 jTxtPrincipalName.getAccessibleContext().setAccessibleName(customizerBundle.getString("ACSN_PrincipalName")); 146 jTxtPrincipalName.getAccessibleContext().setAccessibleDescription(customizerBundle.getString("ACSD_PrincipalName")); 147 148 jLblClassName.setLabelFor(jTxtClassName); 149 jLblClassName.setText(customizerBundle.getString("LBL_ClassName_1")); 150 gridBagConstraints = new java.awt.GridBagConstraints (); 151 gridBagConstraints.gridx = 1; 152 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 153 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 0); 154 add(jLblClassName, gridBagConstraints); 155 156 jTxtClassName.addKeyListener(new java.awt.event.KeyAdapter () { 157 public void keyReleased(java.awt.event.KeyEvent evt) { 158 jTxtClassNameKeyReleased(evt); 159 } 160 }); 161 162 gridBagConstraints = new java.awt.GridBagConstraints (); 163 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 164 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 165 gridBagConstraints.weightx = 1.0; 166 gridBagConstraints.insets = new java.awt.Insets (6, 6, 0, 11); 167 add(jTxtClassName, gridBagConstraints); 168 jTxtClassName.getAccessibleContext().setAccessibleName(customizerBundle.getString("ACSN_ClassName")); 169 jTxtClassName.getAccessibleContext().setAccessibleDescription(customizerBundle.getString("ACSD_ClassName")); 170 171 } 173 private void jTxtClassNameKeyReleased(java.awt.event.KeyEvent evt) { className = jTxtClassName.getText(); 175 firePropertyChange(Constants.USER_DATA_CHANGED, null, null); 176 } 178 private void jTxtPrincipalNameKeyReleased(java.awt.event.KeyEvent evt) { principalName = jTxtPrincipalName.getText(); 180 firePropertyChange(Constants.USER_DATA_CHANGED, null, null); 181 } 183 private javax.swing.JLabel jLblClassName; 185 private javax.swing.JLabel jLblPrincipalEntryDesc; 186 private javax.swing.JLabel jLblPrincipalName; 187 private javax.swing.JLabel jLblRequiredMark; 188 private javax.swing.JTextField jTxtClassName; 189 private javax.swing.JTextField jTxtPrincipalName; 190 192 private void initUserComponents() { 193 195 if(!as90FeaturesVisible) { 196 jLblPrincipalEntryDesc.setText(customizerBundle.getString("LBL_PrincipalEntryDesc81")); jLblClassName.setVisible(false); 198 jTxtClassName.setVisible(false); 199 } 200 201 getAccessibleContext().setAccessibleName(customizerBundle.getString("ACSN_EditPrincipalName")); getAccessibleContext().setAccessibleDescription(customizerBundle.getString("ACSD_EditPrincipalName")); } 204 205 private void initFields() { 206 jTxtPrincipalName.setText(principalName); 207 jTxtClassName.setText(className); 208 } 209 210 Collection getErrors() { 211 ArrayList errors = new ArrayList (); 213 String newPrincipalName = getPrincipalName(); 214 215 217 if(!Utils.notEmpty(newPrincipalName)) { 218 errors.add(customizerBundle.getString("ERR_BlankPrincipalName")); } 220 221 225 if(newPrincipalName != null && !newPrincipalName.equals(getOriginalPrincipalName()) && 226 principalModel.contains(new PrincipalNameMapping(newPrincipalName))) { 227 errors.add(MessageFormat.format(customizerBundle.getString("ERR_PrincipalExists"), new Object [] { newPrincipalName })); } 229 230 234 String newClassName = getClassName(); 235 if(Utils.notEmpty(newClassName) && !Utils.isJavaClass(newClassName)) { 236 errors.add(customizerBundle.getString("ERR_InvalidJavaClassName")); } 238 239 return errors; 240 } 241 242 250 static void editPrincipalName(JPanel parent, PrincipalNameMapping entry, PrincipalTableModel model, ASDDVersion asVersion) { 251 SecurityEditPrincipalPanel editPrincipalPanel = new SecurityEditPrincipalPanel(entry, model, asVersion); 252 editPrincipalPanel.displayDialog(parent, customizerBundle.getString("TITLE_EditPrincipal"), HelpContext.HELP_SECURITY_EDIT_PRINCIPAL); 254 } 255 256 private void displayDialog(JPanel parent, String title, String helpId) { 257 BetterInputDialog dialog = new BetterInputDialog(parent, title, helpId, this); 258 259 do { 260 int dialogChoice = dialog.display(); 261 262 if(dialogChoice == dialog.CANCEL_OPTION) { 263 break; 264 } 265 266 if(dialogChoice == dialog.OK_OPTION) { 267 Collection errors = getErrors(); 268 269 String newPrincipalName = getPrincipalName(); 270 String oldPrincipalName = getOriginalPrincipalName(); 271 String newClassName = getClassName(); 272 String oldClassName = getOriginalClassName(); 273 274 if(dialog.hasErrors()) { 275 dialog.showErrors(); 277 } else { 278 if(!Utils.strEquals(newPrincipalName, oldPrincipalName) || !Utils.strEquals(newClassName, oldClassName)) { 280 PrincipalNameMapping oldEntry = new PrincipalNameMapping(oldPrincipalName, oldClassName); 281 PrincipalNameMapping newEntry = new PrincipalNameMapping(newPrincipalName, newClassName); 282 principalModel.replaceElement(oldEntry, newEntry); 283 } 284 285 } 291 } 292 } while(dialog.hasErrors()); 293 } 294 295 private static class BetterInputDialog extends InputDialog { 296 private final SecurityEditPrincipalPanel dialogPanel; 297 private final String panelHelpId; 298 299 public BetterInputDialog(JPanel parent, String title, String helpId, SecurityEditPrincipalPanel childPanel) { 300 super(parent, title); 301 302 dialogPanel = childPanel; 303 panelHelpId = helpId; 304 305 dialogPanel.setPreferredSize(new Dimension (parent.getWidth()*3/4, 306 dialogPanel.getPreferredSize().height)); 307 308 this.getAccessibleContext().setAccessibleName(dialogPanel.getAccessibleContext().getAccessibleName()); 309 this.getAccessibleContext().setAccessibleDescription(dialogPanel.getAccessibleContext().getAccessibleDescription()); 310 311 getContentPane().add(childPanel, BorderLayout.CENTER); 312 addListeners(); 313 pack(); 314 setLocationInside(parent); 315 handleErrorDisplay(); 316 } 317 318 private void addListeners() { 319 dialogPanel.addPropertyChangeListener(Constants.USER_DATA_CHANGED, new PropertyChangeListener () { 320 public void propertyChange(PropertyChangeEvent evt) { 321 handleErrorDisplay(); 322 } 323 }); 324 } 325 326 private void handleErrorDisplay() { 327 ArrayList errors = new ArrayList (); 328 errors.addAll(dialogPanel.getErrors()); 329 setErrors(errors); 330 } 331 332 protected String getHelpId() { 333 return panelHelpId; 334 } 335 } 336 } 337 | Popular Tags |