1 19 20 package org.netbeans.modules.j2ee.clientproject.ui.customizer; 21 22 import java.awt.Dialog ; 23 import java.awt.event.ActionEvent ; 24 import java.awt.event.ActionListener ; 25 import java.awt.event.MouseEvent ; 26 import java.io.File ; 27 import javax.swing.JButton ; 28 import javax.swing.JFileChooser ; 29 import javax.swing.JPanel ; 30 import javax.swing.JTextField ; 31 import javax.swing.event.ChangeEvent ; 32 import javax.swing.event.ChangeListener ; 33 import org.netbeans.modules.j2ee.clientproject.AppClientProject; 34 import org.netbeans.modules.j2ee.clientproject.SourceRoots; 35 import org.openide.DialogDescriptor; 36 import org.openide.DialogDisplayer; 37 import org.openide.awt.MouseUtils; 38 import org.openide.filesystems.FileUtil; 39 import org.openide.util.HelpCtx; 40 import org.openide.util.NbBundle; 41 42 46 public class CustomizerRun extends JPanel implements HelpCtx.Provider { 47 48 private AppClientProject project; 49 50 public CustomizerRun( AppClientProjectProperties uiProperties ) { 51 initComponents(); 52 53 this.project = uiProperties.getProject(); 54 55 jTextFieldMainClass.setDocument( uiProperties.MAIN_CLASS_MODEL ); 56 jTextFieldArgs.setDocument( uiProperties.APPLICATION_ARGS_MODEL ); 57 jTextVMOptions.setDocument( uiProperties.RUN_JVM_ARGS_MODEL ); 58 jTextWorkingDirectory.setDocument( uiProperties.RUN_WORK_DIR_MODEL ); 59 60 jButtonMainClass.addActionListener( new MainClassListener( project.getSourceRoots(), jTextFieldMainClass ) ); 61 62 jComboBoxJ2eeSpecVersion.setModel (uiProperties.J2EE_PLATFORM_MODEL ); 63 jComboBoxServer.setModel (uiProperties.J2EE_SERVER_INSTANCE_MODEL ); 64 } 65 66 public HelpCtx getHelpCtx() { 67 return new HelpCtx( CustomizerRun.class ); 68 } 69 70 75 private void initComponents() { 77 java.awt.GridBagConstraints gridBagConstraints; 78 79 jLabelMainClass = new javax.swing.JLabel (); 80 jTextFieldMainClass = new javax.swing.JTextField (); 81 jButtonMainClass = new javax.swing.JButton (); 82 jLabelArgs = new javax.swing.JLabel (); 83 jTextFieldArgs = new javax.swing.JTextField (); 84 jLabelWorkingDirectory = new javax.swing.JLabel (); 85 jTextWorkingDirectory = new javax.swing.JTextField (); 86 jButtonWorkingDirectoryBrowse = new javax.swing.JButton (); 87 jLabelVMOptions = new javax.swing.JLabel (); 88 jTextVMOptions = new javax.swing.JTextField (); 89 jLabelVMOptionsExample = new javax.swing.JLabel (); 90 jLabelServer = new javax.swing.JLabel (); 91 jComboBoxServer = new javax.swing.JComboBox (); 92 jLabelJ2EE = new javax.swing.JLabel (); 93 jComboBoxJ2eeSpecVersion = new javax.swing.JComboBox (); 94 jLabelWarnDdChange = new javax.swing.JLabel (); 95 96 setLayout(new java.awt.GridBagLayout ()); 97 98 jLabelMainClass.setLabelFor(jTextFieldMainClass); 99 org.openide.awt.Mnemonics.setLocalizedText(jLabelMainClass, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_MainClass_JLabel")); gridBagConstraints = new java.awt.GridBagConstraints (); 101 gridBagConstraints.gridy = 2; 102 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 103 gridBagConstraints.insets = new java.awt.Insets (0, 0, 5, 0); 104 add(jLabelMainClass, gridBagConstraints); 105 gridBagConstraints = new java.awt.GridBagConstraints (); 106 gridBagConstraints.gridy = 2; 107 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 108 gridBagConstraints.weightx = 1.0; 109 gridBagConstraints.insets = new java.awt.Insets (0, 12, 5, 0); 110 add(jTextFieldMainClass, gridBagConstraints); 111 jTextFieldMainClass.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "AD_jTextFieldMainClass")); 113 org.openide.awt.Mnemonics.setLocalizedText(jButtonMainClass, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_MainClass_JButton")); gridBagConstraints = new java.awt.GridBagConstraints (); 115 gridBagConstraints.gridy = 2; 116 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 117 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 118 gridBagConstraints.insets = new java.awt.Insets (0, 6, 5, 0); 119 add(jButtonMainClass, gridBagConstraints); 120 jButtonMainClass.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getBundle(CustomizerRun.class).getString("AD_jButtonMainClass")); 122 jLabelArgs.setLabelFor(jTextFieldArgs); 123 org.openide.awt.Mnemonics.setLocalizedText(jLabelArgs, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Args_JLabel")); gridBagConstraints = new java.awt.GridBagConstraints (); 125 gridBagConstraints.gridy = 3; 126 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 127 gridBagConstraints.insets = new java.awt.Insets (0, 0, 12, 0); 128 add(jLabelArgs, gridBagConstraints); 129 gridBagConstraints = new java.awt.GridBagConstraints (); 130 gridBagConstraints.gridy = 3; 131 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 132 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 133 gridBagConstraints.weightx = 1.0; 134 gridBagConstraints.insets = new java.awt.Insets (0, 12, 12, 0); 135 add(jTextFieldArgs, gridBagConstraints); 136 jTextFieldArgs.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getBundle(CustomizerRun.class).getString("AD_jTextFieldArgs")); 138 jLabelWorkingDirectory.setLabelFor(jTextWorkingDirectory); 139 org.openide.awt.Mnemonics.setLocalizedText(jLabelWorkingDirectory, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Working_Directory")); gridBagConstraints = new java.awt.GridBagConstraints (); 141 gridBagConstraints.gridy = 4; 142 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 143 gridBagConstraints.insets = new java.awt.Insets (0, 0, 5, 0); 144 add(jLabelWorkingDirectory, gridBagConstraints); 145 gridBagConstraints = new java.awt.GridBagConstraints (); 146 gridBagConstraints.gridy = 4; 147 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 148 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 149 gridBagConstraints.weightx = 1.0; 150 gridBagConstraints.insets = new java.awt.Insets (0, 12, 5, 0); 151 add(jTextWorkingDirectory, gridBagConstraints); 152 jTextWorkingDirectory.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "AD_CustomizeRun_Run_Working_Directory")); 154 org.openide.awt.Mnemonics.setLocalizedText(jButtonWorkingDirectoryBrowse, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Working_Directory_Browse")); jButtonWorkingDirectoryBrowse.addActionListener(new java.awt.event.ActionListener () { 156 public void actionPerformed(java.awt.event.ActionEvent evt) { 157 jButtonWorkingDirectoryBrowseActionPerformed(evt); 158 } 159 }); 160 gridBagConstraints = new java.awt.GridBagConstraints (); 161 gridBagConstraints.gridy = 4; 162 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 163 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 164 gridBagConstraints.insets = new java.awt.Insets (0, 6, 5, 0); 165 add(jButtonWorkingDirectoryBrowse, gridBagConstraints); 166 jButtonWorkingDirectoryBrowse.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "AD_CustomizeRun_Run_Working_Directory_Browse")); 168 jLabelVMOptions.setLabelFor(jTextVMOptions); 169 org.openide.awt.Mnemonics.setLocalizedText(jLabelVMOptions, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_VM_Options")); gridBagConstraints = new java.awt.GridBagConstraints (); 171 gridBagConstraints.gridy = 5; 172 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 173 gridBagConstraints.insets = new java.awt.Insets (0, 0, 5, 0); 174 add(jLabelVMOptions, gridBagConstraints); 175 gridBagConstraints = new java.awt.GridBagConstraints (); 176 gridBagConstraints.gridy = 5; 177 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 178 gridBagConstraints.weightx = 1.0; 179 gridBagConstraints.insets = new java.awt.Insets (0, 12, 0, 0); 180 add(jTextVMOptions, gridBagConstraints); 181 jTextVMOptions.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "AD_CustomizeRun_Run_VM_Options")); 183 jLabelVMOptionsExample.setLabelFor(jTextFieldMainClass); 184 org.openide.awt.Mnemonics.setLocalizedText(jLabelVMOptionsExample, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_VM_Options_Example")); gridBagConstraints = new java.awt.GridBagConstraints (); 186 gridBagConstraints.gridx = 1; 187 gridBagConstraints.gridy = 6; 188 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 189 gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; 190 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 191 gridBagConstraints.weighty = 1.0; 192 gridBagConstraints.insets = new java.awt.Insets (0, 12, 12, 0); 193 add(jLabelVMOptionsExample, gridBagConstraints); 194 jLabelVMOptionsExample.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_VM_Options_Example")); 196 org.openide.awt.Mnemonics.setLocalizedText(jLabelServer, NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Server_JLabel")); gridBagConstraints = new java.awt.GridBagConstraints (); 198 gridBagConstraints.gridx = 0; 199 gridBagConstraints.gridy = 0; 200 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 201 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 202 gridBagConstraints.insets = new java.awt.Insets (0, 0, 5, 0); 203 add(jLabelServer, gridBagConstraints); 204 gridBagConstraints = new java.awt.GridBagConstraints (); 205 gridBagConstraints.gridx = 1; 206 gridBagConstraints.gridy = 0; 207 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 208 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 209 gridBagConstraints.insets = new java.awt.Insets (0, 12, 5, 0); 210 add(jComboBoxServer, gridBagConstraints); 211 212 org.openide.awt.Mnemonics.setLocalizedText(jLabelJ2EE, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_J2EE_JLabel")); gridBagConstraints = new java.awt.GridBagConstraints (); 214 gridBagConstraints.gridx = 0; 215 gridBagConstraints.gridy = 1; 216 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 217 gridBagConstraints.insets = new java.awt.Insets (0, 0, 12, 0); 218 add(jLabelJ2EE, gridBagConstraints); 219 220 jComboBoxJ2eeSpecVersion.setEnabled(false); 221 jComboBoxJ2eeSpecVersion.setPrototypeDisplayValue("MMMMMMMMM" ); 222 gridBagConstraints = new java.awt.GridBagConstraints (); 223 gridBagConstraints.gridx = 1; 224 gridBagConstraints.gridy = 1; 225 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 226 gridBagConstraints.insets = new java.awt.Insets (0, 12, 12, 0); 227 add(jComboBoxJ2eeSpecVersion, gridBagConstraints); 228 229 jLabelWarnDdChange.setForeground(new java.awt.Color (89, 71, 191)); 230 org.openide.awt.Mnemonics.setLocalizedText(jLabelWarnDdChange, " "); 231 gridBagConstraints = new java.awt.GridBagConstraints (); 232 gridBagConstraints.gridx = 0; 233 gridBagConstraints.gridy = 10; 234 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 235 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 236 gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTH; 237 gridBagConstraints.weightx = 1.0; 238 add(jLabelWarnDdChange, gridBagConstraints); 239 } 241 private void jButtonWorkingDirectoryBrowseActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser chooser = new JFileChooser (); 243 FileUtil.preventFileChooserSymlinkTraversal(chooser, null); 244 chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); 245 chooser.setMultiSelectionEnabled(false); 246 247 String workDir = jTextWorkingDirectory.getText(); 248 if (workDir.equals("")) { 249 workDir = FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath(); 250 } 251 chooser.setSelectedFile(new File (workDir)); 252 chooser.setDialogTitle(NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Working_Directory_Browse_Title")); 253 if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) { File file = FileUtil.normalizeFile(chooser.getSelectedFile()); 255 jTextWorkingDirectory.setText(file.getAbsolutePath()); 256 } 257 } 259 260 private javax.swing.JButton jButtonMainClass; 262 private javax.swing.JButton jButtonWorkingDirectoryBrowse; 263 private javax.swing.JComboBox jComboBoxJ2eeSpecVersion; 264 private javax.swing.JComboBox jComboBoxServer; 265 private javax.swing.JLabel jLabelArgs; 266 private javax.swing.JLabel jLabelJ2EE; 267 private javax.swing.JLabel jLabelMainClass; 268 private javax.swing.JLabel jLabelServer; 269 private javax.swing.JLabel jLabelVMOptions; 270 private javax.swing.JLabel jLabelVMOptionsExample; 271 private javax.swing.JLabel jLabelWarnDdChange; 272 private javax.swing.JLabel jLabelWorkingDirectory; 273 private javax.swing.JTextField jTextFieldArgs; 274 private javax.swing.JTextField jTextFieldMainClass; 275 private javax.swing.JTextField jTextVMOptions; 276 private javax.swing.JTextField jTextWorkingDirectory; 277 279 281 private class MainClassListener implements ActionListener { 282 283 private final JButton okButton; 284 private SourceRoots sourceRoots; 285 private JTextField mainClassTextField; 286 287 MainClassListener( SourceRoots sourceRoots, JTextField mainClassTextField ) { 288 this.sourceRoots = sourceRoots; 289 this.mainClassTextField = mainClassTextField; 290 this.okButton = new JButton (NbBundle.getMessage(CustomizerRun.class, "LBL_ChooseMainClass_OK")); 291 this.okButton.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(CustomizerRun.class, "AD_ChooseMainClass_OK")); 292 } 293 294 296 298 public void actionPerformed( ActionEvent e ) { 299 300 302 final MainClassChooser panel = new MainClassChooser(sourceRoots.getRoots()); 303 Object [] options = new Object [] { 304 okButton, 305 DialogDescriptor.CANCEL_OPTION 306 }; 307 panel.addChangeListener(new ChangeListener () { 308 public void stateChanged(ChangeEvent e) { 309 if (e.getSource() instanceof MouseEvent && MouseUtils.isDoubleClick(((MouseEvent )e.getSource()))) { 310 okButton.doClick(); 312 } else { 313 okButton.setEnabled(panel.getSelectedMainClass() != null); 314 } 315 } 316 }); 317 okButton.setEnabled(false); 318 DialogDescriptor desc = new DialogDescriptor( 319 panel, 320 NbBundle.getMessage(CustomizerRun.class, "LBL_ChooseMainClass_Title" ), 321 true, 322 options, 323 options[0], 324 DialogDescriptor.BOTTOM_ALIGN, 325 null, 326 null); 327 Dialog dlg = DialogDisplayer.getDefault().createDialog(desc); 329 dlg.setVisible(true); 330 if (desc.getValue() == options[0]) { 331 mainClassTextField.setText(panel.getSelectedMainClass()); 332 } 333 dlg.dispose(); 334 } 335 336 } 337 338 } 339 | Popular Tags |