KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xml > catalogsupport > ui > customizer > CustomizerProjectReferences


1 /*
2  * CustomizerProjectReferences.java
3  *
4  * Created on December 12, 2006, 12:30 PM
5  */

6
7 package org.netbeans.modules.xml.catalogsupport.ui.customizer;
8
9 import java.awt.Component JavaDoc;
10 import java.awt.Dimension JavaDoc;
11 import java.io.File JavaDoc;
12 import java.io.IOException JavaDoc;
13 import java.util.Set JavaDoc;
14 import javax.swing.DefaultListCellRenderer JavaDoc;
15 import javax.swing.DefaultListModel JavaDoc;
16 import javax.swing.event.ListSelectionEvent JavaDoc;
17 import javax.swing.event.ListSelectionListener JavaDoc;
18 import javax.swing.filechooser.FileFilter JavaDoc;
19 import javax.swing.JFileChooser JavaDoc;
20 import javax.swing.JList JavaDoc;
21
22 import org.openide.util.HelpCtx;
23 import org.openide.filesystems.FileObject;
24 import org.openide.filesystems.FileUtil;
25 import org.netbeans.api.project.Project;
26 import org.netbeans.api.project.ProjectInformation;
27 import org.netbeans.api.project.ProjectManager;
28 import org.netbeans.api.project.ProjectUtils;
29 import org.netbeans.spi.project.SubprojectProvider;
30 import org.netbeans.spi.project.support.ant.ReferenceHelper;
31 import org.netbeans.spi.project.ui.support.ProjectChooser;
32
33 import org.netbeans.modules.xml.catalogsupport.util.ProjectReferenceUtility;
34
35 /**
36  *
37  * @author Ajit
38  */

39 public class CustomizerProjectReferences extends javax.swing.JPanel JavaDoc implements HelpCtx.Provider {
40     
41     private ReferenceHelper refHelper;
42     private SubprojectProvider subprojectProvider;
43     /** Creates new form CustomizerProjectReferences */
44     public CustomizerProjectReferences(Project project, ReferenceHelper refHelper) {
45         this.refHelper = refHelper;
46         this.subprojectProvider = (SubprojectProvider)project.getLookup().
47                 lookup(SubprojectProvider.class);
48         initComponents();
49         projectList.addListSelectionListener( new ListSelectionListener JavaDoc() {
50             public void valueChanged(ListSelectionEvent JavaDoc e) {
51                 if(projectList.getSelectedIndices().length==0) {
52                     removeButton.setEnabled(false);
53                 } else {
54                     removeButton.setEnabled(true);
55                 }
56             }
57         });
58         refreshProjectList();
59     }
60     
61     /**
62      * Recreates the Project dependency list on UI based on subprojectprovider.
63      */

64     private void refreshProjectList() {
65         DefaultListModel JavaDoc listModel = (DefaultListModel JavaDoc) projectList.getModel();
66         listModel.clear();
67         Set JavaDoc subprojects = getSubprojectProvider().getSubprojects();
68         for(Object JavaDoc object:subprojects) {
69             Project prj = (Project)object;
70             ProjectInformation pInfo = ProjectUtils.getInformation(prj);
71             listModel.addElement(pInfo);
72         }
73     }
74     
75     private ReferenceHelper getRefHelper() {
76         return refHelper;
77     }
78     
79     private SubprojectProvider getSubprojectProvider() {
80         return subprojectProvider;
81     }
82     
83     /** This method is called from within the constructor to
84      * initialize the form.
85      * WARNING: Do NOT modify this code. The content of this method is
86      * always regenerated by the Form Editor.
87      */

88     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
89
private void initComponents() {
90         refLabel = new javax.swing.JLabel JavaDoc();
91         jScrollPane1 = new javax.swing.JScrollPane JavaDoc();
92         projectList = new javax.swing.JList JavaDoc();
93         addButton = new javax.swing.JButton JavaDoc();
94         removeButton = new javax.swing.JButton JavaDoc();
95
96         refLabel.setLabelFor(projectList);
97         org.openide.awt.Mnemonics.setLocalizedText(refLabel, org.openide.util.NbBundle.getMessage(CustomizerProjectReferences.class, "LBL_CustomizerProjectReferences_ProjectReferences"));
98         refLabel.setToolTipText(org.openide.util.NbBundle.getMessage(CustomizerProjectReferences.class, "HINT_CustomizerProjectReferences_ProjectReferences"));
99
100         projectList.setModel(new DefaultListModel JavaDoc());
101         projectList.setCellRenderer(new DefaultListCellRenderer JavaDoc() {
102             public Component JavaDoc getListCellRendererComponent(JList JavaDoc list, Object JavaDoc value, int index, boolean isSelected, boolean cellHasFocus) {
103                 ProjectInformation pInfo = (ProjectInformation)value;
104                 super.getListCellRendererComponent( projectList, pInfo, index, isSelected, cellHasFocus );
105                 setIcon(pInfo.getIcon());
106                 setText(pInfo.getDisplayName());
107                 setToolTipText(pInfo.getDisplayName());
108                 return this;
109             }
110         });
111         jScrollPane1.setViewportView(projectList);
112
113         org.openide.awt.Mnemonics.setLocalizedText(addButton, org.openide.util.NbBundle.getMessage(CustomizerProjectReferences.class, "LBL_CustomizerProjectReferences_AddProject"));
114         addButton.setToolTipText(org.openide.util.NbBundle.getMessage(CustomizerProjectReferences.class, "HINT_CustomizerProjectReferences_AddProject"));
115         addButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
116             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
117                 showProjectDialog(evt);
118             }
119         });
120
121         org.openide.awt.Mnemonics.setLocalizedText(removeButton, org.openide.util.NbBundle.getMessage(CustomizerProjectReferences.class, "LBL_CustomizerProjectReferences_RemoveProject"));
122         removeButton.setToolTipText(org.openide.util.NbBundle.getMessage(CustomizerProjectReferences.class, "HINT_CustomizerProjectReferences_RemoveProject"));
123         removeButton.setEnabled(false);
124         removeButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
125             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
126                 removeProject(evt);
127             }
128         });
129
130         org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
131         this.setLayout(layout);
132         layout.setHorizontalGroup(
133             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
134             .add(layout.createSequentialGroup()
135                 .addContainerGap()
136                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
137                     .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
138                         .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 273, Short.MAX_VALUE)
139                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
140                         .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
141                             .add(addButton)
142                             .add(removeButton)))
143                     .add(refLabel))
144                 .addContainerGap())
145         );
146
147         layout.linkSize(new java.awt.Component JavaDoc[] {addButton, removeButton}, org.jdesktop.layout.GroupLayout.HORIZONTAL);
148
149         layout.setVerticalGroup(
150             layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
151             .add(layout.createSequentialGroup()
152                 .addContainerGap()
153                 .add(refLabel)
154                 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
155                 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
156                     .add(layout.createSequentialGroup()
157                         .add(addButton)
158                         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
159                         .add(removeButton))
160                     .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE))
161                 .addContainerGap())
162         );
163     }// </editor-fold>//GEN-END:initComponents
164

165     /**
166      * Removes project reference from UI.
167      * The project dependencies are saved automatically to relevant files,
168      * by the customizer provider, when user chooses to save project changes.
169      */

170     private void removeProject(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_removeProject
171
Object JavaDoc[] selection = projectList.getSelectedValues();
172         for(Object JavaDoc selected:selection) {
173             ProjectInformation pInfo = (ProjectInformation)selected;
174             ProjectReferenceUtility.removeProjectReference(getRefHelper(),pInfo.getProject());
175         }
176         refreshProjectList();
177     }//GEN-LAST:event_removeProject
178

179     /**
180      * Shows the add project dialog and calls addProjectReference if user chooses
181      * to the project.
182      */

183     
184     private void showProjectDialog(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_showProjectDialog
185
// create and show project chooser
186
JFileChooser JavaDoc chooser = ProjectChooser.projectChooser();
187         chooser.setDialogTitle(org.openide.util.NbBundle.getMessage(
188                 CustomizerProjectReferences.class,
189                 "LBL_CustomizerProjectReferences_ProjectChooserTitle")); // NOI18N
190
chooser.setApproveButtonText(org.openide.util.NbBundle.getMessage(
191                 CustomizerProjectReferences.class,
192                 "LBL_CustomizerProjectReferences_ProjectChooserButton")); // NOI18N
193
chooser.setPreferredSize( new Dimension JavaDoc( 650, 380 ) );
194         chooser.setFileFilter(new FileFilter JavaDoc() {
195             public boolean accept(File JavaDoc f) {
196                 if (f == null || !f.isDirectory())
197                     return false;
198                 return true;
199             }
200             public String JavaDoc getDescription() {
201                 return "Directories/Project roots only.";
202             }
203         });
204         int option = chooser.showOpenDialog(this);
205         // Add project if project selected
206
if(option == JFileChooser.APPROVE_OPTION) {
207             addProjectReference(chooser.getSelectedFile());
208         }
209     }//GEN-LAST:event_showProjectDialog
210

211     /**
212      * adds project reference on UI.
213      * The project dependencies are saved automatically to relevant files,
214      * by the customizer provider, when user chooses to save project changes.
215      */

216     private void addProjectReference(final File JavaDoc projectDirectory) {
217         FileObject projectRoot = FileUtil.toFileObject(projectDirectory);
218         if(projectRoot!=null) {
219             try {
220                 Project refProject = ProjectManager.getDefault().findProject(projectRoot);
221                 if(refProject!=null) {
222                     ProjectReferenceUtility.addProjectReference(getRefHelper(),refProject);
223                 }
224             } catch (IllegalArgumentException JavaDoc ex) {
225             } catch (IOException JavaDoc ex) {
226             }
227         }
228         refreshProjectList();
229     }
230
231     public HelpCtx getHelpCtx() {
232         return new HelpCtx(CustomizerProjectReferences.class);
233     }
234     
235     // Variables declaration - do not modify//GEN-BEGIN:variables
236
private javax.swing.JButton JavaDoc addButton;
237     private javax.swing.JScrollPane JavaDoc jScrollPane1;
238     private javax.swing.JList JavaDoc projectList;
239     private javax.swing.JLabel JavaDoc refLabel;
240     private javax.swing.JButton JavaDoc removeButton;
241     // End of variables declaration//GEN-END:variables
242

243 }
244
Popular Tags