1 19 20 package org.netbeans.modules.java.ui.nodes.elements; 21 22 import org.netbeans.jmi.javamodel.JavaClass; 23 import org.netbeans.jmi.javamodel.AnnotationType; 24 import org.netbeans.jmi.javamodel.Resource; 25 import org.openide.util.HelpCtx; 26 import org.openide.util.NbBundle; 27 import org.openide.util.Utilities; 28 import org.openide.ErrorManager; 29 30 import javax.jmi.reflect.JmiException; 31 import javax.swing.*; 32 import java.awt.*; 33 import java.lang.reflect.Modifier ; 34 35 39 public class AnnotationTypeCustomizer extends javax.swing.JPanel { 40 41 private final JavaClass element; 42 45 private final JavaClass jclass; 46 47 private final Resource resource; 48 49 private boolean isOK = true; 50 51 55 public AnnotationTypeCustomizer(JavaClass jclass, AnnotationType element) { 56 this(null, jclass, element); 57 } 58 59 63 public AnnotationTypeCustomizer(Resource resource, AnnotationType element) { 64 this(resource, null, element); 65 } 66 67 private AnnotationTypeCustomizer(Resource resource, JavaClass jclass, AnnotationType element) { 68 this.resource = resource; 69 this.jclass = jclass; 70 this.element = element; 71 72 75 initComponents(); 76 77 nameTextField.setText(element.getSimpleName()); 78 79 int mask = Modifier.PUBLIC | Modifier.ABSTRACT; 80 if (resource == null) { mask |= Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE | Modifier.STATIC; 82 } 83 accessPanel.add(SourceEditSupport.createAccessModifiersPanel(this.element, mask), BorderLayout.CENTER); 84 modifiersPanel.add(SourceEditSupport.createOtherModifiersPanel(this.element, mask), BorderLayout.CENTER); 85 86 HelpCtx.setHelpIDString (this, "java.annotationType.customizer"); 88 nameLabel.setDisplayedMnemonic(NbBundle.getMessage(AnnotationTypeCustomizer.class, "CTL_Name_Mnemonic").charAt(0)); nameTextField.getAccessibleContext().setAccessibleName(NbBundle.getMessage(AnnotationTypeCustomizer.class, "ACSN_AnnotationTypeNameTextField")); nameTextField.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(AnnotationTypeCustomizer.class, "ACSD_AnnotationTypeNameTextField")); 92 accessLabel.setDisplayedMnemonic(NbBundle.getMessage(AnnotationTypeCustomizer.class, "CTL_AccessRights_Mnemonic").charAt(0)); this.getAccessibleContext().setAccessibleDescription("ACSD_AnnotationTypeCustomizer"); } 95 96 public void addNotify() { 97 super.addNotify(); 98 99 int l = nameTextField.getText().length(); 101 nameTextField.setCaretPosition(0); 102 nameTextField.moveCaretPosition(l); 103 SwingUtilities.invokeLater(new Runnable () { 104 public void run() { 105 nameTextField.requestFocus(); 106 } 107 }); 108 } 109 110 115 private void initComponents() { 117 java.awt.GridBagConstraints gridBagConstraints; 118 119 nameLabel = new javax.swing.JLabel (); 120 nameTextField = new javax.swing.JTextField (); 121 accessLabel = new javax.swing.JLabel (); 122 accessPanel = new javax.swing.JPanel (); 123 modifiersLabel = new javax.swing.JLabel (); 124 modifiersPanel = new javax.swing.JPanel (); 125 jPanel1 = new javax.swing.JPanel (); 126 127 setLayout(new java.awt.GridBagLayout ()); 128 129 setBorder(new javax.swing.border.EmptyBorder (new java.awt.Insets (5, 5, 5, 5))); 130 nameLabel.setLabelFor(nameTextField); 131 org.openide.awt.Mnemonics.setLocalizedText(nameLabel, org.openide.util.NbBundle.getMessage(AnnotationTypeCustomizer.class, "CTL_Name")); 132 gridBagConstraints = new java.awt.GridBagConstraints (); 133 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 134 gridBagConstraints.insets = new java.awt.Insets (12, 0, 0, 0); 135 add(nameLabel, gridBagConstraints); 136 137 nameTextField.setColumns(25); 138 nameTextField.addFocusListener(new java.awt.event.FocusAdapter () { 139 public void focusLost(java.awt.event.FocusEvent evt) { 140 nameTextFieldFocusLost(evt); 141 } 142 }); 143 144 gridBagConstraints = new java.awt.GridBagConstraints (); 145 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 146 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 147 gridBagConstraints.weightx = 1.0; 148 gridBagConstraints.insets = new java.awt.Insets (12, 8, 0, 0); 149 add(nameTextField, gridBagConstraints); 150 151 accessLabel.setLabelFor(accessPanel); 152 org.openide.awt.Mnemonics.setLocalizedText(accessLabel, org.openide.util.NbBundle.getMessage(AnnotationTypeCustomizer.class, "CTL_AccessRights")); 153 gridBagConstraints = new java.awt.GridBagConstraints (); 154 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 155 gridBagConstraints.insets = new java.awt.Insets (8, 0, 0, 0); 156 add(accessLabel, gridBagConstraints); 157 158 accessPanel.setLayout(new java.awt.BorderLayout ()); 159 160 gridBagConstraints = new java.awt.GridBagConstraints (); 161 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 162 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 163 gridBagConstraints.insets = new java.awt.Insets (8, 8, 0, 0); 164 add(accessPanel, gridBagConstraints); 165 166 modifiersLabel.setLabelFor(modifiersPanel); 167 org.openide.awt.Mnemonics.setLocalizedText(modifiersLabel, org.openide.util.NbBundle.getMessage(AnnotationTypeCustomizer.class, "CTL_Modifiers")); 168 gridBagConstraints = new java.awt.GridBagConstraints (); 169 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 170 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 171 gridBagConstraints.insets = new java.awt.Insets (8, 0, 0, 0); 172 add(modifiersLabel, gridBagConstraints); 173 174 modifiersPanel.setLayout(new java.awt.BorderLayout ()); 175 176 gridBagConstraints = new java.awt.GridBagConstraints (); 177 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 178 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 179 gridBagConstraints.insets = new java.awt.Insets (8, 8, 0, 8); 180 add(modifiersPanel, gridBagConstraints); 181 182 gridBagConstraints = new java.awt.GridBagConstraints (); 183 gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; 184 gridBagConstraints.weighty = 1.0; 185 add(jPanel1, gridBagConstraints); 186 187 } 188 190 private void nameTextFieldFocusLost(java.awt.event.FocusEvent evt) { if (evt != null && evt.isTemporary()) 192 return; 193 194 String newName = nameTextField.getText().trim(); 195 String oldName = element.getSimpleName(); 196 boolean ok = false; 197 198 if (!Utilities.isJavaIdentifier(newName)) { 199 IllegalArgumentException x = new IllegalArgumentException ("Invalid name: " + newName); ErrorManager.getDefault().annotate( 201 x, ErrorManager.USER, null, 202 NbBundle.getMessage(AnnotationTypeCustomizer.class, "MSG_Not_Valid_Identifier"), null, null); 204 ErrorManager.getDefault().notify (x); 205 } else if (oldName.equals(newName)) { 206 return; } else if (this.resource == null && jclass.getInnerClass(newName, true) != null) { 208 IllegalArgumentException x = new IllegalArgumentException ("Invalid name: " + newName); ErrorManager.getDefault().annotate( 210 x, ErrorManager.USER, null, 211 NbBundle.getMessage(AnnotationTypeCustomizer.class, "MSG_Not_Valid_Identifier"), null, null); 213 ErrorManager.getDefault().notify (x); 214 } else if (this.jclass == null && SourceEditSupport.findTopLevelClass(this.resource, newName) != null) { 215 IllegalArgumentException x = new IllegalArgumentException ("Invalid name: " + newName); ErrorManager.getDefault().annotate( 217 x, ErrorManager.USER, null, 218 NbBundle.getMessage(AnnotationTypeCustomizer.class, "MSG_Not_Valid_Identifier"), null, null); 220 ErrorManager.getDefault().notify (x); 221 } else { 222 try { 223 element.setSimpleName(newName); 224 ok = true; 225 } catch (JmiException e) { 226 ErrorManager.getDefault().notify(e); 227 } 228 } 229 isOK = ok; 230 if (!ok) { 231 nameTextField.setText(oldName); 232 } 233 } 235 236 private javax.swing.JLabel accessLabel; 238 private javax.swing.JPanel accessPanel; 239 private javax.swing.JPanel jPanel1; 240 private javax.swing.JLabel modifiersLabel; 241 private javax.swing.JPanel modifiersPanel; 242 private javax.swing.JLabel nameLabel; 243 private javax.swing.JTextField nameTextField; 244 246 public boolean isOK() { 247 nameTextFieldFocusLost(null); 248 return isOK; 249 } 250 251 } 252 | Popular Tags |