KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > apisupport > project > ui > wizard > project > NameAndLocationPanel


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.modules.apisupport.project.ui.wizard.project;
21
22 import java.awt.Color JavaDoc;
23 import java.util.Arrays JavaDoc;
24 import java.util.Collection JavaDoc;
25 import java.util.HashSet JavaDoc;
26 import javax.swing.JTextField JavaDoc;
27 import javax.swing.UIManager JavaDoc;
28 import javax.swing.event.DocumentEvent JavaDoc;
29 import javax.swing.event.DocumentListener JavaDoc;
30 import org.netbeans.api.project.ProjectUtils;
31 import org.netbeans.modules.apisupport.project.CreatedModifiedFiles;
32 import org.netbeans.modules.apisupport.project.NbModuleProject;
33 import org.netbeans.modules.apisupport.project.Util;
34 import org.netbeans.modules.apisupport.project.ui.UIUtil;
35 import org.netbeans.modules.apisupport.project.ui.wizard.BasicWizardIterator;
36 import org.netbeans.modules.apisupport.project.universe.ModuleEntry;
37 import org.netbeans.modules.apisupport.project.universe.NbPlatform;
38 import org.openide.WizardDescriptor;
39 import org.openide.util.HelpCtx;
40 import org.openide.util.NbBundle;
41 import org.openide.util.Utilities;
42
43 /**
44  * The second panel in project template wizard.
45  *
46  * @author Milos Kleint
47  */

48 final class NameAndLocationPanel extends BasicWizardIterator.Panel {
49     
50     private static final String JavaDoc PROJECT_TEMPLATES_DIR = "Templates/Project"; // NOI18N
51
private static final String JavaDoc DEFAULT_CATEGORY_PATH = PROJECT_TEMPLATES_DIR + "/Other"; // NOI18N
52

53     private NewProjectIterator.DataModel data;
54     
55     /** Creates new NameAndLocationPanel */
56     NameAndLocationPanel(WizardDescriptor setting, NewProjectIterator.DataModel data) {
57         super(setting);
58         this.data = data;
59         initComponents();
60         initAccessibility();
61         Color JavaDoc lblBgr = UIManager.getColor("Label.background"); // NOI18N
62
putClientProperty("NewFileWizard_Title", getMessage("LBL_ProjectWizardTitle"));
63         modifiedFilesValue.setBackground(lblBgr);
64         createdFilesValue.setBackground(lblBgr);
65         modifiedFilesValue.setEditable(false);
66         createdFilesValue.setEditable(false);
67         
68         DocumentListener JavaDoc dListener = new UIUtil.DocumentAdapter() {
69             public void insertUpdate(DocumentEvent JavaDoc e) {
70                 if (checkValidity()) {
71                     updateData();
72                 }
73             }
74         };
75         txtName.getDocument().addDocumentListener(dListener);
76         txtDisplayName.getDocument().addDocumentListener(dListener);
77         if (comCategory.getEditor().getEditorComponent() instanceof JTextField JavaDoc) {
78             JTextField JavaDoc txt = (JTextField JavaDoc) comCategory.getEditor().getEditorComponent();
79             txt.getDocument().addDocumentListener(dListener);
80         }
81         if (comPackageName.getEditor().getEditorComponent() instanceof JTextField JavaDoc) {
82             JTextField JavaDoc txt = (JTextField JavaDoc)comPackageName.getEditor().getEditorComponent();
83             txt.getDocument().addDocumentListener(dListener);
84         }
85     }
86     
87     protected void storeToDataModel() {
88         updateData();
89     }
90     
91     private String JavaDoc getCategoryPath() {
92         String JavaDoc path = UIUtil.getSFSPath(comCategory, PROJECT_TEMPLATES_DIR);
93         return path == null ? DEFAULT_CATEGORY_PATH : path;
94     }
95     
96     private void updateData() {
97         data.setPackageName(comPackageName.getEditor().getItem().toString());
98         data.setName(txtName.getText().trim());
99         data.setDisplayName(txtDisplayName.getText().trim());
100         data.setCategory(getCategoryPath());
101         NewProjectIterator.generateFileChanges(data);
102         CreatedModifiedFiles fls = data.getCreatedModifiedFiles();
103         createdFilesValue.setText(generateText(fls.getCreatedPaths()));
104         modifiedFilesValue.setText(generateText(fls.getModifiedPaths()));
105         //#68294 check if the paths for newly created files are valid or not..
106
String JavaDoc[] invalid = data.getCreatedModifiedFiles().getInvalidPaths();
107         if (invalid.length > 0) {
108             setError(NbBundle.getMessage(NameAndLocationPanel.class, "ERR_ToBeCreateFileExists", invalid[0]));
109         }
110         
111     }
112     
113     protected void readFromDataModel() {
114         loadCombo();
115         if (data.getPackageName() != null) {
116             comPackageName.setSelectedItem(data.getPackageName());
117         }
118         checkValidity();
119     }
120     
121     protected String JavaDoc getPanelName() {
122         return getMessage("LBL_NameLocation_Title");
123     }
124     
125     private boolean checkValidity() {
126         if (!checkPlatformValidity()) {
127             return false;
128         }
129         if (txtName.getText().trim().length() == 0) {
130             setError(getMessage("ERR_Name_Prefix_Empty"));
131             return false;
132         }
133         if (!Utilities.isJavaIdentifier(txtName.getText().trim())) {
134             setError(getMessage("ERR_Name_Prefix_Invalid"));
135             return false;
136         }
137         String JavaDoc packageName = comPackageName.getEditor().getItem().toString().trim();
138         if (packageName.length() == 0 || !UIUtil.isValidPackageName(packageName)) {
139             setError(getMessage("ERR_Package_Invalid"));
140             return false;
141         }
142         if (!Util.isValidSFSPath(getCategoryPath())) {
143             setError(getMessage("ERR_Category_Invalid"));
144             return false;
145         }
146         markValid();
147         return true;
148     }
149     
150     private boolean checkPlatformValidity() {
151         NbModuleProject nbprj = data.getProject().getLookup().lookup(NbModuleProject.class);
152         if (nbprj == null) {
153             //ignore this check for non default netbeans projects.
154
return true;
155         }
156         NbPlatform platform = nbprj.getPlatform(false);
157         if (platform == null) {
158             setError(getMessage("ERR_No_Platform"));
159             return false;
160         }
161         ModuleEntry[] entries = platform.getModules();
162         Collection JavaDoc modules = new HashSet JavaDoc(Arrays.asList(NewProjectIterator.MODULES));
163         
164         for (int i = 0; i < entries.length; i++) {
165             modules.remove(entries[i].getCodeNameBase());
166         }
167         if (modules.size() > 0) {
168             setError(getMessage("ERR_Missing_Modules"));
169             return false;
170         }
171         return true;
172     }
173     
174     private void loadCombo() {
175         comCategory.setModel(UIUtil.createLayerPresenterComboModel(
176                 data.getProject(), PROJECT_TEMPLATES_DIR));
177     }
178     
179     protected HelpCtx getHelp() {
180         return new HelpCtx(NameAndLocationPanel.class);
181     }
182     
183     private static String JavaDoc getMessage(String JavaDoc key) {
184         return NbBundle.getMessage(NameAndLocationPanel.class, key);
185     }
186     
187     /** This method is called from within the constructor to
188      * initialize the form.
189      * WARNING: Do NOT modify this code. The content of this method is
190      * always regenerated by the Form Editor.
191      */

192     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
193
private void initComponents() {
194         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
195
196         lblName = new javax.swing.JLabel JavaDoc();
197         txtName = new javax.swing.JTextField JavaDoc();
198         lblDisplayName = new javax.swing.JLabel JavaDoc();
199         txtDisplayName = new javax.swing.JTextField JavaDoc();
200         lblCategory = new javax.swing.JLabel JavaDoc();
201         comCategory = new javax.swing.JComboBox JavaDoc();
202         lblProjectName = new javax.swing.JLabel JavaDoc();
203         txtProjectName = new JTextField JavaDoc(ProjectUtils.getInformation(this.data.getProject()).getDisplayName());
204         lblPackageName = new javax.swing.JLabel JavaDoc();
205         comPackageName = UIUtil.createPackageComboBox(this.data.getSourceRootGroup());
206         createdFiles = new javax.swing.JLabel JavaDoc();
207         modifiedFiles = new javax.swing.JLabel JavaDoc();
208         filler = new javax.swing.JLabel JavaDoc();
209         createdFilesValue = new javax.swing.JTextArea JavaDoc();
210         modifiedFilesValue = new javax.swing.JTextArea JavaDoc();
211
212         setLayout(new java.awt.GridBagLayout JavaDoc());
213
214         lblName.setLabelFor(txtName);
215         org.openide.awt.Mnemonics.setLocalizedText(lblName, org.openide.util.NbBundle.getMessage(NameAndLocationPanel.class, "LBL_Name"));
216         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
217         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
218         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 0, 0, 12);
219         add(lblName, gridBagConstraints);
220
221         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
222         gridBagConstraints.gridwidth = 2;
223         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
224         add(txtName, gridBagConstraints);
225
226         lblDisplayName.setLabelFor(txtDisplayName);
227         org.openide.awt.Mnemonics.setLocalizedText(lblDisplayName, org.openide.util.NbBundle.getMessage(NameAndLocationPanel.class, "LBL_DisplayName"));
228         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
229         gridBagConstraints.gridx = 0;
230         gridBagConstraints.gridy = 1;
231         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
232         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 0, 0, 12);
233         add(lblDisplayName, gridBagConstraints);
234
235         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
236         gridBagConstraints.gridx = 1;
237         gridBagConstraints.gridy = 1;
238         gridBagConstraints.gridwidth = 2;
239         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
240         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 0, 0, 0);
241         add(txtDisplayName, gridBagConstraints);
242
243         lblCategory.setLabelFor(comCategory);
244         org.openide.awt.Mnemonics.setLocalizedText(lblCategory, org.openide.util.NbBundle.getMessage(NameAndLocationPanel.class, "LBL_Category"));
245         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
246         gridBagConstraints.gridx = 0;
247         gridBagConstraints.gridy = 2;
248         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
249         gridBagConstraints.insets = new java.awt.Insets JavaDoc(6, 0, 0, 12);
250         add(lblCategory, gridBagConstraints);
251
252         comCategory.setEditable(true);
253         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
254         gridBagConstraints.gridx = 1;
255         gridBagConstraints.gridy = 2;
256         gridBagConstraints.gridwidth = 2;
257         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
258         gridBagConstraints.insets = new java.awt.Insets JavaDoc(5, 0, 0, 0);
259         add(comCategory, gridBagConstraints);
260
261         lblProjectName.setLabelFor(txtProjectName);
262         org.openide.awt.Mnemonics.setLocalizedText(lblProjectName, java.util.ResourceBundle.getBundle("org/netbeans/modules/apisupport/project/ui/wizard/librarydescriptor/Bundle").getString("LBL_ProjectName"));
263         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
264         gridBagConstraints.gridx = 0;
265         gridBagConstraints.gridy = 3;
266         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
267         gridBagConstraints.insets = new java.awt.Insets JavaDoc(18, 0, 6, 12);
268         add(lblProjectName, gridBagConstraints);
269
270         txtProjectName.setEditable(false);
271         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
272         gridBagConstraints.gridx = 1;
273         gridBagConstraints.gridy = 3;
274         gridBagConstraints.gridwidth = 2;
275         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
276         gridBagConstraints.weightx = 1.0;
277         gridBagConstraints.insets = new java.awt.Insets JavaDoc(18, 0, 6, 0);
278         add(txtProjectName, gridBagConstraints);
279
280         lblPackageName.setLabelFor(comPackageName);
281         org.openide.awt.Mnemonics.setLocalizedText(lblPackageName, java.util.ResourceBundle.getBundle("org/netbeans/modules/apisupport/project/ui/wizard/librarydescriptor/Bundle").getString("LBL_PackageName"));
282         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
283         gridBagConstraints.gridx = 0;
284         gridBagConstraints.gridy = 4;
285         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
286         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 0, 0, 12);
287         add(lblPackageName, gridBagConstraints);
288
289         comPackageName.setEditable(true);
290         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
291         gridBagConstraints.gridx = 1;
292         gridBagConstraints.gridy = 4;
293         gridBagConstraints.gridwidth = 2;
294         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
295         gridBagConstraints.weightx = 1.0;
296         add(comPackageName, gridBagConstraints);
297
298         createdFiles.setLabelFor(createdFilesValue);
299         org.openide.awt.Mnemonics.setLocalizedText(createdFiles, java.util.ResourceBundle.getBundle("org/netbeans/modules/apisupport/project/ui/wizard/librarydescriptor/Bundle").getString("LBL_CreatedFiles"));
300         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
301         gridBagConstraints.gridx = 0;
302         gridBagConstraints.gridy = 5;
303         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
304         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
305         gridBagConstraints.insets = new java.awt.Insets JavaDoc(36, 0, 6, 12);
306         add(createdFiles, gridBagConstraints);
307
308         modifiedFiles.setLabelFor(modifiedFilesValue);
309         org.openide.awt.Mnemonics.setLocalizedText(modifiedFiles, java.util.ResourceBundle.getBundle("org/netbeans/modules/apisupport/project/ui/wizard/librarydescriptor/Bundle").getString("LBL_ModifiedFiles"));
310         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
311         gridBagConstraints.gridx = 0;
312         gridBagConstraints.gridy = 6;
313         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
314         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
315         gridBagConstraints.insets = new java.awt.Insets JavaDoc(0, 0, 0, 12);
316         add(modifiedFiles, gridBagConstraints);
317
318         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
319         gridBagConstraints.gridx = 0;
320         gridBagConstraints.gridy = 7;
321         gridBagConstraints.gridwidth = 3;
322         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
323         gridBagConstraints.weightx = 1.0;
324         gridBagConstraints.weighty = 1.0;
325         add(filler, gridBagConstraints);
326
327         createdFilesValue.setColumns(20);
328         createdFilesValue.setRows(5);
329         createdFilesValue.setBorder(null);
330         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
331         gridBagConstraints.gridx = 1;
332         gridBagConstraints.gridy = 5;
333         gridBagConstraints.gridwidth = 2;
334         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
335         gridBagConstraints.weightx = 1.0;
336         gridBagConstraints.insets = new java.awt.Insets JavaDoc(36, 0, 6, 0);
337         add(createdFilesValue, gridBagConstraints);
338
339         modifiedFilesValue.setColumns(20);
340         modifiedFilesValue.setRows(5);
341         modifiedFilesValue.setToolTipText("modifiedFilesValue");
342         modifiedFilesValue.setBorder(null);
343         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
344         gridBagConstraints.gridx = 1;
345         gridBagConstraints.gridy = 6;
346         gridBagConstraints.gridwidth = 2;
347         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
348         gridBagConstraints.weightx = 1.0;
349         add(modifiedFilesValue, gridBagConstraints);
350
351     }// </editor-fold>//GEN-END:initComponents
352

353     private void initAccessibility() {
354         this.getAccessibleContext().setAccessibleDescription(getMessage("ACS_NameAndLocationPanel"));
355         comPackageName.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_PackageName"));
356         comCategory.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_Category"));
357         txtDisplayName.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_DisplayName"));
358         txtName.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_Name"));
359         txtProjectName.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_ProjectName"));
360         createdFilesValue.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_CreatedFilesValue"));
361         modifiedFilesValue.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_ModifiedFilesValue"));
362     }
363     
364     // Variables declaration - do not modify//GEN-BEGIN:variables
365
private javax.swing.JComboBox JavaDoc comCategory;
366     private javax.swing.JComboBox JavaDoc comPackageName;
367     private javax.swing.JLabel JavaDoc createdFiles;
368     private javax.swing.JTextArea JavaDoc createdFilesValue;
369     private javax.swing.JLabel JavaDoc filler;
370     private javax.swing.JLabel JavaDoc lblCategory;
371     private javax.swing.JLabel JavaDoc lblDisplayName;
372     private javax.swing.JLabel JavaDoc lblName;
373     private javax.swing.JLabel JavaDoc lblPackageName;
374     private javax.swing.JLabel JavaDoc lblProjectName;
375     private javax.swing.JLabel JavaDoc modifiedFiles;
376     private javax.swing.JTextArea JavaDoc modifiedFilesValue;
377     private javax.swing.JTextField JavaDoc txtDisplayName;
378     private javax.swing.JTextField JavaDoc txtName;
379     private javax.swing.JTextField JavaDoc txtProjectName;
380     // End of variables declaration//GEN-END:variables
381

382     private static String JavaDoc generateText(String JavaDoc[] relPaths) {
383         StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
384         if (relPaths.length > 0) {
385             for (int i = 0; i < relPaths.length; i++) {
386                 if (i > 0) {
387                     sb.append('\n');
388                 }
389                 sb.append(relPaths[i]);
390             }
391         }
392         return sb.toString();
393     }
394     
395 }
396
Popular Tags