1 19 20 package org.netbeans.modules.apisupport.project.ui.wizard.project; 21 22 import java.awt.event.ItemEvent ; 23 import java.awt.event.ItemListener ; 24 import java.io.File ; 25 import java.io.IOException ; 26 import java.util.Arrays ; 27 import javax.swing.DefaultComboBoxModel ; 28 import javax.swing.JFileChooser ; 29 import javax.swing.SwingUtilities ; 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 51 final class SelectProjectPanel extends BasicWizardIterator.Panel { 52 53 private NewProjectIterator.DataModel data; 54 private final Object EMPTY = getMessage("MSG_No_Projects"); 55 56 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 () { 65 public void itemStateChanged(ItemEvent e) { 66 checkValidity(); 67 } 68 }); 69 comProject.setRenderer(UIUtil.createProjectRenderer()); 70 } 71 72 private static String getMessage(String key) { 73 return NbBundle.getMessage(SelectProjectPanel.class, key); 74 } 75 76 81 private void initComponents() { 83 java.awt.GridBagConstraints gridBagConstraints; 84 85 lblProject = new javax.swing.JLabel (); 86 comProject = new javax.swing.JComboBox (); 87 btnProject = new javax.swing.JButton (); 88 pnlHeightAdjuster = new javax.swing.JPanel (); 89 90 setLayout(new java.awt.GridBagLayout ()); 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 (); 95 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 96 gridBagConstraints.insets = new java.awt.Insets (12, 0, 0, 0); 97 add(lblProject, gridBagConstraints); 98 99 gridBagConstraints = new java.awt.GridBagConstraints (); 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 (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 () { 108 public void actionPerformed(java.awt.event.ActionEvent evt) { 109 btnProjectActionPerformed(evt); 110 } 111 }); 112 113 gridBagConstraints = new java.awt.GridBagConstraints (); 114 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; 115 gridBagConstraints.insets = new java.awt.Insets (12, 12, 0, 0); 116 add(btnProject, gridBagConstraints); 117 118 gridBagConstraints = new java.awt.GridBagConstraints (); 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 130 private void btnProjectActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser chooser = ProjectChooser.projectChooser(); 132 int res = chooser.showOpenDialog(SwingUtilities.getWindowAncestor(this)); 133 if (res == JFileChooser.APPROVE_OPTION) { 134 File fil = chooser.getSelectedFile(); 135 FileObject fo = FileUtil.toFileObject(fil); 136 if (fo != null) { 137 try { 138 Project p = ProjectManager.getDefault().findProject(fo); 139 DefaultComboBoxModel model = (DefaultComboBoxModel )comProject.getModel(); 140 model.addElement(p); 141 model.setSelectedItem(p); 142 if (EMPTY == model.getElementAt(0)) { 143 model.removeElement(EMPTY); 144 } 145 } catch (IOException exc) { 146 ErrorManager.getDefault().notify(exc); 147 } 148 } 149 } 150 } 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 model = new DefaultComboBoxModel (); 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 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 sel = comProject.getModel().getSelectedItem(); 178 if (sel == EMPTY) { 179 setError(getMessage("MSG_NoProjectSelected")); 180 return; 181 } 182 Sources srcs = ProjectUtils.getSources((Project) sel); if (srcs.getSourceGroups(Sources.TYPE_GENERIC).length > 1) { 184 setError(getMessage("MSG_NoExternalRoots")); 185 return; 186 } 187 markValid(); 188 } 189 190 protected String 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 private javax.swing.JButton btnProject; 206 private javax.swing.JComboBox comProject; 207 private javax.swing.JLabel lblProject; 208 private javax.swing.JPanel pnlHeightAdjuster; 209 211 } 212 | Popular Tags |