KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > bluej > CustomizerRun


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19
20 package org.netbeans.bluej;
21
22 import java.awt.Dialog JavaDoc;
23 import java.awt.event.ActionEvent JavaDoc;
24 import java.awt.event.ActionListener JavaDoc;
25 import java.awt.event.MouseEvent JavaDoc;
26 import java.io.File JavaDoc;
27 import javax.swing.JButton JavaDoc;
28 import javax.swing.JFileChooser JavaDoc;
29 import javax.swing.JPanel JavaDoc;
30 import javax.swing.JTextField JavaDoc;
31 import javax.swing.event.ChangeEvent JavaDoc;
32 import javax.swing.event.ChangeListener JavaDoc;
33 import javax.swing.event.DocumentEvent JavaDoc;
34 import javax.swing.event.DocumentListener JavaDoc;
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 /**
46  *
47  * @author phrebejk
48  */

49 public class CustomizerRun extends JPanel JavaDoc 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     /** This method is called from within the constructor to
71      * initialize the form.
72      * WARNING: Do NOT modify this code. The content of this method is
73      * always regenerated by the Form Editor.
74      */

75     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
76
private void initComponents() {
77         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
78
79         jLabelMainClass = new javax.swing.JLabel JavaDoc();
80         jTextFieldMainClass = new javax.swing.JTextField JavaDoc();
81         jButtonMainClass = new javax.swing.JButton JavaDoc();
82         jLabelArgs = new javax.swing.JLabel JavaDoc();
83         jTextFieldArgs = new javax.swing.JTextField JavaDoc();
84         jLabelWorkingDirectory = new javax.swing.JLabel JavaDoc();
85         jTextWorkingDirectory = new javax.swing.JTextField JavaDoc();
86         jButtonWorkingDirectoryBrowse = new javax.swing.JButton JavaDoc();
87         jLabelVMOptions = new javax.swing.JLabel JavaDoc();
88         jTextVMOptions = new javax.swing.JTextField JavaDoc();
89         jLabelVMOptionsExample = new javax.swing.JLabel JavaDoc();
90
91         setLayout(new java.awt.GridBagLayout JavaDoc());
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 JavaDoc();
96         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
97         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 0, 5, 0);
98         add(jLabelMainClass, gridBagConstraints);
99
100         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
101         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
102         gridBagConstraints.weightx = 1.0;
103         gridBagConstraints.insets = new java.awt.Insets JavaDoc(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 JavaDoc();
109         gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
110         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
111         gridBagConstraints.insets = new java.awt.Insets JavaDoc(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 JavaDoc();
118         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
119         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 0, 12, 0);
120         add(jLabelArgs, gridBagConstraints);
121
122         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
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 JavaDoc(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 JavaDoc();
133         gridBagConstraints.gridy = 2;
134         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
135         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 0, 5, 0);
136         add(jLabelWorkingDirectory, gridBagConstraints);
137
138         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
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 JavaDoc(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 JavaDoc() {
149             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
150                 jButtonWorkingDirectoryBrowseActionPerformed(evt);
151             }
152         });
153
154         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
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 JavaDoc(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 JavaDoc();
165         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
166         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 0, 5, 0);
167         add(jLabelVMOptions, gridBagConstraints);
168
169         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
170         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
171         gridBagConstraints.weightx = 1.0;
172         gridBagConstraints.insets = new java.awt.Insets JavaDoc(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 JavaDoc();
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 JavaDoc(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     // </editor-fold>//GEN-END:initComponents
191

192     private void jButtonWorkingDirectoryBrowseActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_jButtonWorkingDirectoryBrowseActionPerformed
193
JFileChooser JavaDoc chooser = new JFileChooser JavaDoc();
194         FileUtil.preventFileChooserSymlinkTraversal(chooser, null);
195         chooser.setFileSelectionMode (JFileChooser.DIRECTORIES_ONLY);
196         chooser.setMultiSelectionEnabled(false);
197         
198         String JavaDoc workDir = jTextWorkingDirectory.getText();
199         if (workDir.equals("")) {
200             workDir = FileUtil.toFile(project.getProjectDirectory()).getAbsolutePath();
201         }
202         chooser.setSelectedFile(new File JavaDoc(workDir));
203         chooser.setDialogTitle(NbBundle.getMessage(CustomizerRun.class, "LBL_CustomizeRun_Run_Working_Directory_Browse_Title"));
204         if (JFileChooser.APPROVE_OPTION == chooser.showOpenDialog(this)) { //NOI18N
205
File JavaDoc file = FileUtil.normalizeFile(chooser.getSelectedFile());
206             jTextWorkingDirectory.setText(file.getAbsolutePath());
207         }
208     }//GEN-LAST:event_jButtonWorkingDirectoryBrowseActionPerformed
209

210     
211     // Variables declaration - do not modify//GEN-BEGIN:variables
212
private javax.swing.JButton JavaDoc jButtonMainClass;
213     private javax.swing.JButton JavaDoc jButtonWorkingDirectoryBrowse;
214     private javax.swing.JLabel JavaDoc jLabelArgs;
215     private javax.swing.JLabel JavaDoc jLabelMainClass;
216     private javax.swing.JLabel JavaDoc jLabelVMOptions;
217     private javax.swing.JLabel JavaDoc jLabelVMOptionsExample;
218     private javax.swing.JLabel JavaDoc jLabelWorkingDirectory;
219     private javax.swing.JTextField JavaDoc jTextFieldArgs;
220     private javax.swing.JTextField JavaDoc jTextFieldMainClass;
221     private javax.swing.JTextField JavaDoc jTextVMOptions;
222     private javax.swing.JTextField JavaDoc jTextWorkingDirectory;
223     // End of variables declaration//GEN-END:variables
224

225     
226     // Innercasses -------------------------------------------------------------
227

228     private class MainClassListener implements ActionListener JavaDoc /*, DocumentListener */ {
229         
230         private final JButton JavaDoc okButton;
231         private FileObject sourceRoot;
232         private JTextField JavaDoc mainClassTextField;
233         
234         MainClassListener( FileObject root, JTextField JavaDoc mainClassTextField ) {
235             this.sourceRoot = root;
236             this.mainClassTextField = mainClassTextField;
237             this.okButton = new JButton JavaDoc (NbBundle.getMessage (CustomizerRun.class, "LBL_ChooseMainClass_OK"));
238             this.okButton.getAccessibleContext().setAccessibleDescription (NbBundle.getMessage (CustomizerRun.class, "AD_ChooseMainClass_OK"));
239         }
240         
241         // Implementation of ActionListener ------------------------------------
242

243         /** Handles button events
244          */

245         public void actionPerformed( ActionEvent JavaDoc e ) {
246             
247             // only chooseMainClassButton can be performed
248

249             final MainClassChooser panel = new MainClassChooser (new FileObject[] { sourceRoot }, null, false);
250             Object JavaDoc[] options = new Object JavaDoc[] {
251                 okButton,
252                 DialogDescriptor.CANCEL_OPTION
253             };
254             panel.addChangeListener (new ChangeListener JavaDoc () {
255                public void stateChanged(ChangeEvent JavaDoc e) {
256                    if (e.getSource () instanceof MouseEvent JavaDoc && MouseUtils.isDoubleClick (((MouseEvent JavaDoc)e.getSource ()))) {
257                        // click button and finish the dialog with selected class
258
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             //desc.setMessageType (DialogDescriptor.INFORMATION_MESSAGE);
275
Dialog JavaDoc 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