1 19 20 package org.netbeans.bluej; 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 javax.swing.event.DocumentEvent ; 34 import javax.swing.event.DocumentListener ; 35 import org.netbeans.api.project.Project; 36 import org.openide.DialogDescriptor; 37 import org.openide.DialogDisplayer; 38 import org.openide.awt.MouseUtils; 39 import org.openide.filesystems.FileObject; 40 import org.openide.filesystems.FileUtil; 41 import org.openide.util.HelpCtx; 42 import org.openide.util.NbBundle; 43 44 45 49 public class CustomizerRun extends JPanel implements HelpCtx.Provider { 50 51 private BluejProject project; 52 53 public CustomizerRun( BluejProjectProperties uiProperties ) { 54 initComponents(); 55 56 this.project = uiProperties.getProject(); 57 58 jTextFieldMainClass.setDocument( uiProperties.MAIN_CLASS_MODEL ); 59 jTextFieldArgs.setDocument( uiProperties.APPLICATION_ARGS_MODEL ); 60 jTextVMOptions.setDocument( uiProperties.RUN_JVM_ARGS_MODEL ); 61 jTextWorkingDirectory.setDocument( uiProperties.RUN_WORK_DIR_MODEL ); 62 63 jButtonMainClass.addActionListener( new MainClassListener( project.getProjectDirectory(), jTextFieldMainClass ) ); 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 91 setLayout(new java.awt.GridBagLayout ()); 92 93 jLabelMainClass.setLabelFor(jTextFieldMainClass); 94 org.openide.awt.Mnemonics.setLocalizedText(jLabelMainClass, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_MainClass_JLabel")); 95 gridBagConstraints = new java.awt.GridBagConstraints (); 96 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 97 gridBagConstraints.insets = new java.awt.Insets (0, 0, 5, 0); 98 add(jLabelMainClass, gridBagConstraints); 99 100 gridBagConstraints = new java.awt.GridBagConstraints (); 101 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 102 gridBagConstraints.weightx = 1.0; 103 gridBagConstraints.insets = new java.awt.Insets (0, 12, 5, 0); 104 add(jTextFieldMainClass, gridBagConstraints); 105 jTextFieldMainClass.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getBundle(CustomizerRun.class).getString("AD_jTextFieldMainClass")); 106 107 org.openide.awt.Mnemonics.setLocalizedText(jButtonMainClass, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_MainClass_JButton")); 108 gridBagConstraints = new java.awt.GridBagConstraints (); 109 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 110 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 111 gridBagConstraints.insets = new java.awt.Insets (0, 6, 5, 0); 112 add(jButtonMainClass, gridBagConstraints); 113 jButtonMainClass.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getBundle(CustomizerRun.class).getString("AD_jButtonMainClass")); 114 115 jLabelArgs.setLabelFor(jTextFieldArgs); 116 org.openide.awt.Mnemonics.setLocalizedText(jLabelArgs, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Args_JLabel")); 117 gridBagConstraints = new java.awt.GridBagConstraints (); 118 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 119 gridBagConstraints.insets = new java.awt.Insets (0, 0, 12, 0); 120 add(jLabelArgs, gridBagConstraints); 121 122 gridBagConstraints = new java.awt.GridBagConstraints (); 123 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 124 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 125 gridBagConstraints.weightx = 1.0; 126 gridBagConstraints.insets = new java.awt.Insets (0, 12, 12, 0); 127 add(jTextFieldArgs, gridBagConstraints); 128 jTextFieldArgs.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getBundle(CustomizerRun.class).getString("AD_jTextFieldArgs")); 129 130 jLabelWorkingDirectory.setLabelFor(jTextWorkingDirectory); 131 org.openide.awt.Mnemonics.setLocalizedText(jLabelWorkingDirectory, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Working_Directory")); 132 gridBagConstraints = new java.awt.GridBagConstraints (); 133 gridBagConstraints.gridy = 2; 134 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 135 gridBagConstraints.insets = new java.awt.Insets (0, 0, 5, 0); 136 add(jLabelWorkingDirectory, gridBagConstraints); 137 138 gridBagConstraints = new java.awt.GridBagConstraints (); 139 gridBagConstraints.gridy = 2; 140 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 141 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 142 gridBagConstraints.weightx = 1.0; 143 gridBagConstraints.insets = new java.awt.Insets (0, 12, 5, 0); 144 add(jTextWorkingDirectory, gridBagConstraints); 145 jTextWorkingDirectory.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "AD_CustomizeRun_Run_Working_Directory")); 146 147 org.openide.awt.Mnemonics.setLocalizedText(jButtonWorkingDirectoryBrowse, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Working_Directory_Browse")); 148 jButtonWorkingDirectoryBrowse.addActionListener(new java.awt.event.ActionListener () { 149 public void actionPerformed(java.awt.event.ActionEvent evt) { 150 jButtonWorkingDirectoryBrowseActionPerformed(evt); 151 } 152 }); 153 154 gridBagConstraints = new java.awt.GridBagConstraints (); 155 gridBagConstraints.gridy = 2; 156 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 157 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 158 gridBagConstraints.insets = new java.awt.Insets (0, 6, 5, 0); 159 add(jButtonWorkingDirectoryBrowse, gridBagConstraints); 160 jButtonWorkingDirectoryBrowse.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "AD_CustomizeRun_Run_Working_Directory_Browse")); 161 162 jLabelVMOptions.setLabelFor(jTextVMOptions); 163 org.openide.awt.Mnemonics.setLocalizedText(jLabelVMOptions, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_VM_Options")); 164 gridBagConstraints = new java.awt.GridBagConstraints (); 165 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 166 gridBagConstraints.insets = new java.awt.Insets (0, 0, 5, 0); 167 add(jLabelVMOptions, gridBagConstraints); 168 169 gridBagConstraints = new java.awt.GridBagConstraints (); 170 gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; 171 gridBagConstraints.weightx = 1.0; 172 gridBagConstraints.insets = new java.awt.Insets (0, 12, 0, 0); 173 add(jTextVMOptions, gridBagConstraints); 174 jTextVMOptions.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "AD_CustomizeRun_Run_VM_Options")); 175 176 jLabelVMOptionsExample.setLabelFor(jTextFieldMainClass); 177 org.openide.awt.Mnemonics.setLocalizedText(jLabelVMOptionsExample, org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_VM_Options_Example")); 178 gridBagConstraints = new java.awt.GridBagConstraints (); 179 gridBagConstraints.gridx = 1; 180 gridBagConstraints.gridy = 4; 181 gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; 182 gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; 183 gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; 184 gridBagConstraints.weighty = 1.0; 185 gridBagConstraints.insets = new java.awt.Insets (0, 12, 12, 0); 186 add(jLabelVMOptionsExample, gridBagConstraints); 187 jLabelVMOptionsExample.getAccessibleContext().setAccessibleDescription(org.openide.util.NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_VM_Options_Example")); 188 189 } 190 192 private void jButtonWorkingDirectoryBrowseActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser chooser = new JFileChooser (); 194 FileUtil.preventFileChooserSymlinkTraversal(chooser, null); 195 chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY); 196 chooser.setMultiSelectionEnabled(false); 197 198 String workDir = jTextWorkingDirectory.getText(); 199 if (workDir.equals("")) { 200 workDir = FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath(); 201 } 202 chooser.setSelectedFile(new File (workDir)); 203 chooser.setDialogTitle(NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Working_Directory_Browse_Title")); 204 if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) { File file = FileUtil.normalizeFile(chooser.getSelectedFile()); 206 jTextWorkingDirectory.setText(file.getAbsolutePath()); 207 } 208 } 210 211 private javax.swing.JButton jButtonMainClass; 213 private javax.swing.JButton jButtonWorkingDirectoryBrowse; 214 private javax.swing.JLabel jLabelArgs; 215 private javax.swing.JLabel jLabelMainClass; 216 private javax.swing.JLabel jLabelVMOptions; 217 private javax.swing.JLabel jLabelVMOptionsExample; 218 private javax.swing.JLabel jLabelWorkingDirectory; 219 private javax.swing.JTextField jTextFieldArgs; 220 private javax.swing.JTextField jTextFieldMainClass; 221 private javax.swing.JTextField jTextVMOptions; 222 private javax.swing.JTextField jTextWorkingDirectory; 223 225 226 228 private class MainClassListener implements ActionListener { 229 230 private final JButton okButton; 231 private FileObject sourceRoot; 232 private JTextField mainClassTextField; 233 234 MainClassListener( FileObject root, JTextField mainClassTextField ) { 235 this.sourceRoot = root; 236 this.mainClassTextField = mainClassTextField; 237 this.okButton = new JButton (NbBundle.getMessage (CustomizerRun.class, "LBL_ChooseMainClass_OK")); 238 this.okButton.getAccessibleContext().setAccessibleDescription (NbBundle.getMessage (CustomizerRun.class, "AD_ChooseMainClass_OK")); 239 } 240 241 243 245 public void actionPerformed( ActionEvent e ) { 246 247 249 final MainClassChooser panel = new MainClassChooser (new FileObject[] { sourceRoot }, null, false); 250 Object [] options = new Object [] { 251 okButton, 252 DialogDescriptor.CANCEL_OPTION 253 }; 254 panel.addChangeListener (new ChangeListener () { 255 public void stateChanged(ChangeEvent e) { 256 if (e.getSource () instanceof MouseEvent && MouseUtils.isDoubleClick (((MouseEvent )e.getSource ()))) { 257 okButton.doClick (); 259 } else { 260 okButton.setEnabled (panel.getSelectedMainClass () != null); 261 } 262 } 263 }); 264 okButton.setEnabled (false); 265 DialogDescriptor desc = new DialogDescriptor ( 266 panel, 267 NbBundle.getMessage (CustomizerRun.class, "LBL_ChooseMainClass_Title" ), 268 true, 269 options, 270 options[0], 271 DialogDescriptor.BOTTOM_ALIGN, 272 null, 273 null); 274 Dialog dlg = DialogDisplayer.getDefault ().createDialog (desc); 276 dlg.setVisible (true); 277 if (desc.getValue() == options[0]) { 278 mainClassTextField.setText (panel.getSelectedMainClass ()); 279 } 280 dlg.dispose(); 281 } 282 283 } 284 285 } 286
| Popular Tags
|