KickJava   Java API By Example, From Geeks To Geeks.

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


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.event.ItemEvent JavaDoc;
23 import java.awt.event.ItemListener JavaDoc;
24 import java.io.File JavaDoc;
25 import java.io.IOException JavaDoc;
26 import java.util.Arrays JavaDoc;
27 import javax.swing.DefaultComboBoxModel JavaDoc;
28 import javax.swing.JFileChooser JavaDoc;
29 import javax.swing.SwingUtilities JavaDoc;
30 import org.netbeans.api.project.Project;
31 import org.netbeans.api.project.ProjectManager;
32 import org.netbeans.api.project.ProjectUtils;
33 import org.netbeans.api.project.Sources;
34 import org.netbeans.api.project.ui.OpenProjects;
35 import org.netbeans.modules.apisupport.project.Util;
36 import org.netbeans.modules.apisupport.project.ui.UIUtil;
37 import org.netbeans.modules.apisupport.project.ui.wizard.BasicWizardIterator;
38 import org.netbeans.spi.project.ui.support.ProjectChooser;
39 import org.openide.ErrorManager;
40 import org.openide.WizardDescriptor;
41 import org.openide.filesystems.FileObject;
42 import org.openide.filesystems.FileUtil;
43 import org.openide.util.HelpCtx;
44 import org.openide.util.NbBundle;
45
46 /**
47  * Wizard for creating new project templates - selection of project to become template.
48  *
49  * @author Milos Kleint
50  */

51 final class SelectProjectPanel extends BasicWizardIterator.Panel {
52     
53     private NewProjectIterator.DataModel data;
54     private final Object JavaDoc EMPTY = getMessage("MSG_No_Projects");
55     
56     /** Creates new form SelectProjectPanel */
57     public SelectProjectPanel(WizardDescriptor setting, NewProjectIterator.DataModel data) {
58         super(setting);
59         this.data = data;
60         initComponents();
61         initAccessibility();
62         putClientProperty("NewFileWizard_Title", getMessage("LBL_ProjectWizardTitle"));
63         loadComboBox();
64         comProject.addItemListener(new ItemListener JavaDoc() {
65             public void itemStateChanged(ItemEvent JavaDoc e) {
66                 checkValidity();
67             }
68         });
69         comProject.setRenderer(UIUtil.createProjectRenderer());
70     }
71     
72     private static String JavaDoc getMessage(String JavaDoc key) {
73         return NbBundle.getMessage(SelectProjectPanel.class, key);
74     }
75     
76     /** This method is called from within the constructor to
77      * initialize the form.
78      * WARNING: Do NOT modify this code. The content of this method is
79      * always regenerated by the Form Editor.
80      */

81     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
82
private void initComponents() {
83         java.awt.GridBagConstraints JavaDoc gridBagConstraints;
84
85         lblProject = new javax.swing.JLabel JavaDoc();
86         comProject = new javax.swing.JComboBox JavaDoc();
87         btnProject = new javax.swing.JButton JavaDoc();
88         pnlHeightAdjuster = new javax.swing.JPanel JavaDoc();
89
90         setLayout(new java.awt.GridBagLayout JavaDoc());
91
92         lblProject.setLabelFor(comProject);
93         org.openide.awt.Mnemonics.setLocalizedText(lblProject, org.openide.util.NbBundle.getMessage(SelectProjectPanel.class, "LBL_Project_Label"));
94         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
95         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
96         gridBagConstraints.insets = new java.awt.Insets JavaDoc(12, 0, 0, 0);
97         add(lblProject, gridBagConstraints);
98
99         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
100         gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
101         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
102         gridBagConstraints.weightx = 0.1;
103         gridBagConstraints.insets = new java.awt.Insets JavaDoc(12, 12, 0, 0);
104         add(comProject, gridBagConstraints);
105
106         org.openide.awt.Mnemonics.setLocalizedText(btnProject, org.openide.util.NbBundle.getMessage(SelectProjectPanel.class, "LBL_Browse"));
107         btnProject.addActionListener(new java.awt.event.ActionListener JavaDoc() {
108             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
109                 btnProjectActionPerformed(evt);
110             }
111         });
112
113         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
114         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
115         gridBagConstraints.insets = new java.awt.Insets JavaDoc(12, 12, 0, 0);
116         add(btnProject, gridBagConstraints);
117
118         gridBagConstraints = new java.awt.GridBagConstraints JavaDoc();
119         gridBagConstraints.gridx = 0;
120         gridBagConstraints.gridy = 1;
121         gridBagConstraints.gridwidth = 3;
122         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
123         gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
124         gridBagConstraints.weighty = 0.1;
125         add(pnlHeightAdjuster, gridBagConstraints);
126
127     }
128     // </editor-fold>//GEN-END:initComponents
129

130     private void btnProjectActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_btnProjectActionPerformed
131
JFileChooser JavaDoc chooser = ProjectChooser.projectChooser();
132         int res = chooser.showOpenDialog(SwingUtilities.getWindowAncestor(this));
133         if (res == JFileChooser.APPROVE_OPTION) {
134             File JavaDoc fil = chooser.getSelectedFile();
135             FileObject fo = FileUtil.toFileObject(fil);
136             if (fo != null) {
137                 try {
138                     Project p = ProjectManager.getDefault().findProject(fo);
139                     DefaultComboBoxModel JavaDoc model = (DefaultComboBoxModel JavaDoc)comProject.getModel();
140                     model.addElement(p);
141                     model.setSelectedItem(p);
142                     if (EMPTY == model.getElementAt(0)) {
143                         model.removeElement(EMPTY);
144                     }
145                 } catch (IOException JavaDoc exc) {
146                     ErrorManager.getDefault().notify(exc);
147                 }
148             }
149         }
150     }//GEN-LAST:event_btnProjectActionPerformed
151
protected void storeToDataModel() {
152         data.setTemplate((Project) comProject.getSelectedItem());
153     }
154     
155     protected void readFromDataModel() {
156         checkValidity();
157     }
158     
159     private void loadComboBox() {
160         DefaultComboBoxModel JavaDoc model = new DefaultComboBoxModel JavaDoc();
161         Project[] prjs = OpenProjects.getDefault().getOpenProjects();
162         Arrays.sort(prjs, Util.projectDisplayNameComparator());
163         for (int i = 0; i < prjs.length; i++) {
164             if (prjs[i] != data.getProject()) {
165                 // ignore the currently active project..
166
model.addElement(prjs[i]);
167             }
168         }
169         if (model.getSize() == 0) {
170             model.addElement(EMPTY);
171         }
172         comProject.setModel(model);
173     }
174     
175     
176     private void checkValidity() {
177         Object JavaDoc sel = comProject.getModel().getSelectedItem();
178         if (sel == EMPTY) {
179             setError(getMessage("MSG_NoProjectSelected"));
180             return;
181         }
182         Sources srcs = ProjectUtils.getSources((Project) sel); // #63247: don't use lookup directly
183
if (srcs.getSourceGroups(Sources.TYPE_GENERIC).length > 1) {
184             setError(getMessage("MSG_NoExternalRoots"));
185             return;
186         }
187         markValid();
188     }
189     
190     protected String JavaDoc getPanelName() {
191         return getMessage("LBL_ProjectSelection_Title");
192     }
193     
194     protected HelpCtx getHelp() {
195         return new HelpCtx(SelectProjectPanel.class);
196     }
197     
198     private void initAccessibility() {
199         this.getAccessibleContext().setAccessibleDescription(getMessage("ACS_SelectProjectPanel"));
200         btnProject.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_btnProject"));
201         comProject.getAccessibleContext().setAccessibleDescription(getMessage("ACS_CTL_comProject"));
202     }
203     
204     // Variables declaration - do not modify//GEN-BEGIN:variables
205
private javax.swing.JButton JavaDoc btnProject;
206     private javax.swing.JComboBox JavaDoc comProject;
207     private javax.swing.JLabel JavaDoc lblProject;
208     private javax.swing.JPanel JavaDoc pnlHeightAdjuster;
209     // End of variables declaration//GEN-END:variables
210

211 }
212
Popular Tags