001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package org.netbeans.modules.project.ui.groups;
043:
044: import java.io.File;
045: import java.io.IOException;
046: import java.util.Arrays;
047: import java.util.HashSet;
048: import javax.swing.JFileChooser;
049: import javax.swing.JPanel;
050: import javax.swing.event.DocumentEvent;
051: import javax.swing.event.DocumentListener;
052: import org.netbeans.api.project.Project;
053: import org.netbeans.api.project.ProjectManager;
054: import org.netbeans.api.project.ProjectUtils;
055: import org.netbeans.api.project.ui.OpenProjects;
056: import org.netbeans.spi.project.ui.support.ProjectChooser;
057: import org.openide.filesystems.FileObject;
058: import org.openide.filesystems.FileStateInvalidException;
059: import org.openide.filesystems.FileUtil;
060: import org.openide.util.Exceptions;
061:
062: /**
063: * Panel permitting user to create a new project group.
064: * Applicable in advanced mode.
065: * @author Jesse Glick
066: */
067: public class NewGroupPanel extends JPanel {
068:
069: public static final String PROP_READY = "ready"; // NOI18N
070:
071: public NewGroupPanel() {
072: initComponents();
073: DocumentListener l = new DocumentListener() {
074: public void insertUpdate(DocumentEvent e) {
075: firePropertyChange(PROP_READY, null, null);
076: }
077:
078: public void removeUpdate(DocumentEvent e) {
079: firePropertyChange(PROP_READY, null, null);
080: }
081:
082: public void changedUpdate(DocumentEvent e) {
083: }
084: };
085: directoryField.getDocument().addDocumentListener(l);
086: nameField.getDocument().addDocumentListener(l);
087: updateNameField();
088: }
089:
090: public boolean isReady() {
091: if (adHocKindRadio.isSelected()) {
092: return nameField.getText() != null
093: && nameField.getText().trim().length() > 0;
094: } else if (subprojectsKindRadio.isSelected()) {
095: String s = masterProjectField.getText();
096: if (s != null && s.length() > 0) {
097: File f = new File(s);
098: FileObject fo = FileUtil.toFileObject(f);
099: if (fo != null && fo.isFolder()) {
100: try {
101: return ProjectManager.getDefault().findProject(
102: fo) != null;
103: } catch (IOException x) {
104: Exceptions.printStackTrace(x);
105: }
106: }
107: }
108: return false;
109: } else {
110: assert directoryKindRadio.isSelected();
111: if (nameField.getText() == null
112: || nameField.getText().trim().length() == 0) {
113: return false;
114: }
115: String s = directoryField.getText();
116: if (s != null) {
117: return new File(s.trim()).isDirectory();
118: } else {
119: return false;
120: }
121: }
122: }
123:
124: private void updateNameField() {
125: if (adHocKindRadio.isSelected() && useOpenCheckbox.isSelected()) {
126: Project p = OpenProjects.getDefault().getMainProject();
127: if (p != null) {
128: nameField.setText(ProjectUtils.getInformation(p)
129: .getDisplayName());
130: }
131: } else if (subprojectsKindRadio.isSelected()) {
132: String s = masterProjectField.getText();
133: if (s != null && s.length() > 0) {
134: File f = new File(s);
135: FileObject fo = FileUtil.toFileObject(f);
136: if (fo != null && fo.isFolder()) {
137: try {
138: Project p = ProjectManager.getDefault()
139: .findProject(fo);
140: if (p != null) {
141: nameField
142: .setText(ProjectUtils
143: .getInformation(p)
144: .getDisplayName());
145: }
146: } catch (IOException x) {
147: Exceptions.printStackTrace(x);
148: }
149: }
150: }
151: } else if (directoryKindRadio.isSelected()) {
152: String s = directoryField.getText();
153: if (s != null && s.length() > 0) {
154: File f = new File(s);
155: nameField.setText(f.getName());
156: }
157: }
158: }
159:
160: public Group create() {
161: assert isReady();
162: if (adHocKindRadio.isSelected()) {
163: AdHocGroup g = AdHocGroup.create(
164: nameField.getText().trim(), autoSynchCheckbox
165: .isSelected());
166: if (useOpenCheckbox.isSelected()) {
167: g.setProjects(new HashSet<Project>(Arrays
168: .asList(OpenProjects.getDefault()
169: .getOpenProjects())));
170: g.setMainProject(OpenProjects.getDefault()
171: .getMainProject());
172: }
173: return g;
174: } else if (subprojectsKindRadio.isSelected()) {
175: FileObject fo = FileUtil.toFileObject(new File(
176: masterProjectField.getText()));
177: try {
178: return SubprojectsGroup.create(ProjectManager
179: .getDefault().findProject(fo));
180: } catch (IOException x) {
181: throw new AssertionError(x);
182: }
183: } else {
184: assert directoryKindRadio.isSelected();
185: FileObject f = FileUtil.toFileObject(FileUtil
186: .normalizeFile(new File(directoryField.getText()
187: .trim())));
188: try {
189: return DirectoryGroup.create(
190: nameField.getText().trim(), f);
191: } catch (FileStateInvalidException x) {
192: throw new AssertionError(x);
193: }
194: }
195: }
196:
197: /** This method is called from within the constructor to
198: * initialize the form.
199: * WARNING: Do NOT modify this code. The content of this method is
200: * always regenerated by the Form Editor.
201: */
202: // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
203: private void initComponents() {
204:
205: kindButtonGroup = new javax.swing.ButtonGroup();
206: adHocKindRadio = new javax.swing.JRadioButton();
207: adHocKindLabel = new javax.swing.JLabel();
208: useOpenCheckbox = new javax.swing.JCheckBox();
209: autoSynchCheckbox = new javax.swing.JCheckBox();
210: subprojectsKindRadio = new javax.swing.JRadioButton();
211: subprojectsKindLabel = new javax.swing.JLabel();
212: masterProjectLabel = new javax.swing.JLabel();
213: masterProjectField = new javax.swing.JTextField();
214: masterProjectButton = new javax.swing.JButton();
215: directoryKindRadio = new javax.swing.JRadioButton();
216: directoryKindLabel = new javax.swing.JLabel();
217: directoryLabel = new javax.swing.JLabel();
218: directoryField = new javax.swing.JTextField();
219: directoryButton = new javax.swing.JButton();
220: nameLabel = new javax.swing.JLabel();
221: nameField = new javax.swing.JTextField();
222:
223: kindButtonGroup.add(adHocKindRadio);
224: adHocKindRadio.setSelected(true);
225: org.openide.awt.Mnemonics.setLocalizedText(adHocKindRadio,
226: org.openide.util.NbBundle.getMessage(
227: NewGroupPanel.class,
228: "NewGroupPanel.adHocKindRadio.text")); // NOI18N
229: adHocKindRadio.setBorder(javax.swing.BorderFactory
230: .createEmptyBorder(0, 0, 0, 0));
231: adHocKindRadio
232: .addActionListener(new java.awt.event.ActionListener() {
233: public void actionPerformed(
234: java.awt.event.ActionEvent evt) {
235: adHocKindRadioActionPerformed(evt);
236: }
237: });
238:
239: adHocKindLabel.setLabelFor(adHocKindRadio);
240: org.openide.awt.Mnemonics.setLocalizedText(adHocKindLabel,
241: org.openide.util.NbBundle.getMessage(
242: NewGroupPanel.class,
243: "NewGroupPanel.adHocKindLabel.text")); // NOI18N
244:
245: useOpenCheckbox.setSelected(true);
246: org.openide.awt.Mnemonics.setLocalizedText(useOpenCheckbox,
247: org.openide.util.NbBundle.getMessage(
248: NewGroupPanel.class,
249: "NewGroupPanel.useOpenCheckbox.text")); // NOI18N
250:
251: autoSynchCheckbox.setSelected(true);
252: org.openide.awt.Mnemonics.setLocalizedText(autoSynchCheckbox,
253: org.openide.util.NbBundle.getMessage(
254: NewGroupPanel.class,
255: "NewGroupPanel.autoSynchCheckbox.text")); // NOI18N
256:
257: kindButtonGroup.add(subprojectsKindRadio);
258: org.openide.awt.Mnemonics.setLocalizedText(
259: subprojectsKindRadio,
260: org.openide.util.NbBundle.getMessage(
261: NewGroupPanel.class,
262: "NewGroupPanel.subprojectsKindRadio.text")); // NOI18N
263: subprojectsKindRadio.setBorder(javax.swing.BorderFactory
264: .createEmptyBorder(0, 0, 0, 0));
265: subprojectsKindRadio
266: .addActionListener(new java.awt.event.ActionListener() {
267: public void actionPerformed(
268: java.awt.event.ActionEvent evt) {
269: subprojectsKindRadioActionPerformed(evt);
270: }
271: });
272:
273: subprojectsKindLabel.setLabelFor(subprojectsKindRadio);
274: org.openide.awt.Mnemonics.setLocalizedText(
275: subprojectsKindLabel,
276: org.openide.util.NbBundle.getMessage(
277: NewGroupPanel.class,
278: "NewGroupPanel.subprojectsKindLabel.text")); // NOI18N
279: subprojectsKindLabel.setEnabled(false);
280:
281: masterProjectLabel.setLabelFor(masterProjectField);
282: org.openide.awt.Mnemonics.setLocalizedText(masterProjectLabel,
283: org.openide.util.NbBundle.getMessage(
284: NewGroupPanel.class,
285: "NewGroupPanel.masterProjectLabel.text")); // NOI18N
286: masterProjectLabel.setEnabled(false);
287:
288: masterProjectField.setEditable(false);
289: masterProjectField.setEnabled(false);
290:
291: org.openide.awt.Mnemonics.setLocalizedText(masterProjectButton,
292: org.openide.util.NbBundle.getMessage(
293: NewGroupPanel.class,
294: "NewGroupPanel.masterProjectButton.text")); // NOI18N
295: masterProjectButton.setEnabled(false);
296: masterProjectButton
297: .addActionListener(new java.awt.event.ActionListener() {
298: public void actionPerformed(
299: java.awt.event.ActionEvent evt) {
300: masterProjectButtonActionPerformed(evt);
301: }
302: });
303:
304: kindButtonGroup.add(directoryKindRadio);
305: org.openide.awt.Mnemonics.setLocalizedText(directoryKindRadio,
306: org.openide.util.NbBundle.getMessage(
307: NewGroupPanel.class,
308: "NewGroupPanel.directoryKindRadio.text")); // NOI18N
309: directoryKindRadio.setBorder(javax.swing.BorderFactory
310: .createEmptyBorder(0, 0, 0, 0));
311: directoryKindRadio
312: .addActionListener(new java.awt.event.ActionListener() {
313: public void actionPerformed(
314: java.awt.event.ActionEvent evt) {
315: directoryKindRadioActionPerformed(evt);
316: }
317: });
318:
319: directoryKindLabel.setLabelFor(directoryKindRadio);
320: org.openide.awt.Mnemonics.setLocalizedText(directoryKindLabel,
321: org.openide.util.NbBundle.getMessage(
322: NewGroupPanel.class,
323: "NewGroupPanel.directoryKindLabel.text")); // NOI18N
324: directoryKindLabel.setEnabled(false);
325:
326: directoryLabel.setLabelFor(directoryField);
327: org.openide.awt.Mnemonics.setLocalizedText(directoryLabel,
328: org.openide.util.NbBundle.getMessage(
329: NewGroupPanel.class,
330: "NewGroupPanel.directoryLabel.text")); // NOI18N
331: directoryLabel.setEnabled(false);
332:
333: directoryField.setEnabled(false);
334:
335: org.openide.awt.Mnemonics.setLocalizedText(directoryButton,
336: org.openide.util.NbBundle.getMessage(
337: NewGroupPanel.class,
338: "NewGroupPanel.directoryButton.text")); // NOI18N
339: directoryButton.setEnabled(false);
340: directoryButton
341: .addActionListener(new java.awt.event.ActionListener() {
342: public void actionPerformed(
343: java.awt.event.ActionEvent evt) {
344: directoryButtonActionPerformed(evt);
345: }
346: });
347:
348: nameLabel.setLabelFor(nameField);
349: org.openide.awt.Mnemonics.setLocalizedText(nameLabel,
350: org.openide.util.NbBundle.getMessage(
351: NewGroupPanel.class,
352: "NewGroupPanel.nameLabel.text")); // NOI18N
353:
354: org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(
355: this );
356: this .setLayout(layout);
357: layout
358: .setHorizontalGroup(layout
359: .createParallelGroup(
360: org.jdesktop.layout.GroupLayout.LEADING)
361: .add(
362: layout
363: .createSequentialGroup()
364: .addContainerGap()
365: .add(
366: layout
367: .createParallelGroup(
368: org.jdesktop.layout.GroupLayout.LEADING)
369: .add(
370: layout
371: .createSequentialGroup()
372: .add(
373: nameLabel)
374: .addPreferredGap(
375: org.jdesktop.layout.LayoutStyle.RELATED)
376: .add(
377: nameField,
378: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
379: 570,
380: Short.MAX_VALUE))
381: .add(
382: directoryKindRadio)
383: .add(
384: adHocKindRadio)
385: .add(
386: layout
387: .createSequentialGroup()
388: .add(
389: 17,
390: 17,
391: 17)
392: .add(
393: layout
394: .createParallelGroup(
395: org.jdesktop.layout.GroupLayout.LEADING)
396: .add(
397: layout
398: .createSequentialGroup()
399: .add(
400: directoryLabel)
401: .addPreferredGap(
402: org.jdesktop.layout.LayoutStyle.RELATED)
403: .add(
404: directoryField,
405: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
406: 465,
407: Short.MAX_VALUE)
408: .addPreferredGap(
409: org.jdesktop.layout.LayoutStyle.RELATED)
410: .add(
411: directoryButton))
412: .add(
413: directoryKindLabel)))
414: .add(
415: subprojectsKindRadio)
416: .add(
417: layout
418: .createSequentialGroup()
419: .add(
420: 17,
421: 17,
422: 17)
423: .add(
424: layout
425: .createParallelGroup(
426: org.jdesktop.layout.GroupLayout.LEADING)
427: .add(
428: layout
429: .createSequentialGroup()
430: .add(
431: masterProjectLabel)
432: .addPreferredGap(
433: org.jdesktop.layout.LayoutStyle.RELATED)
434: .add(
435: masterProjectField,
436: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
437: 495,
438: Short.MAX_VALUE))
439: .add(
440: subprojectsKindLabel))
441: .addPreferredGap(
442: org.jdesktop.layout.LayoutStyle.RELATED)
443: .add(
444: masterProjectButton))
445: .add(
446: layout
447: .createSequentialGroup()
448: .add(
449: 17,
450: 17,
451: 17)
452: .add(
453: adHocKindLabel))
454: .add(
455: layout
456: .createSequentialGroup()
457: .add(
458: 17,
459: 17,
460: 17)
461: .add(
462: layout
463: .createParallelGroup(
464: org.jdesktop.layout.GroupLayout.LEADING)
465: .add(
466: autoSynchCheckbox)
467: .add(
468: useOpenCheckbox))))
469: .addContainerGap()));
470: layout
471: .setVerticalGroup(layout
472: .createParallelGroup(
473: org.jdesktop.layout.GroupLayout.LEADING)
474: .add(
475: layout
476: .createSequentialGroup()
477: .addContainerGap()
478: .add(
479: layout
480: .createParallelGroup(
481: org.jdesktop.layout.GroupLayout.BASELINE)
482: .add(nameLabel)
483: .add(
484: nameField,
485: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
486: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
487: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
488: .add(18, 18, 18)
489: .add(adHocKindRadio)
490: .addPreferredGap(
491: org.jdesktop.layout.LayoutStyle.RELATED)
492: .add(adHocKindLabel)
493: .addPreferredGap(
494: org.jdesktop.layout.LayoutStyle.RELATED)
495: .add(
496: useOpenCheckbox,
497: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
498: 23,
499: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
500: .addPreferredGap(
501: org.jdesktop.layout.LayoutStyle.RELATED)
502: .add(autoSynchCheckbox)
503: .addPreferredGap(
504: org.jdesktop.layout.LayoutStyle.RELATED)
505: .add(subprojectsKindRadio)
506: .addPreferredGap(
507: org.jdesktop.layout.LayoutStyle.RELATED)
508: .add(subprojectsKindLabel)
509: .addPreferredGap(
510: org.jdesktop.layout.LayoutStyle.RELATED)
511: .add(
512: layout
513: .createParallelGroup(
514: org.jdesktop.layout.GroupLayout.BASELINE)
515: .add(
516: masterProjectLabel)
517: .add(
518: masterProjectButton)
519: .add(
520: masterProjectField,
521: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
522: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
523: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
524: .addPreferredGap(
525: org.jdesktop.layout.LayoutStyle.RELATED)
526: .add(directoryKindRadio)
527: .addPreferredGap(
528: org.jdesktop.layout.LayoutStyle.RELATED)
529: .add(directoryKindLabel)
530: .addPreferredGap(
531: org.jdesktop.layout.LayoutStyle.RELATED)
532: .add(
533: layout
534: .createParallelGroup(
535: org.jdesktop.layout.GroupLayout.BASELINE)
536: .add(
537: directoryLabel)
538: .add(
539: directoryField,
540: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
541: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
542: org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
543: .add(
544: directoryButton))
545: .addContainerGap(
546: org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
547: Short.MAX_VALUE)));
548: }// </editor-fold>//GEN-END:initComponents
549:
550: private void directoryButtonActionPerformed(
551: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_directoryButtonActionPerformed
552: JFileChooser chooser = new JFileChooser();
553: chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
554: chooser.setMultiSelectionEnabled(false);
555: File start = ProjectChooser.getProjectsFolder();
556: if (directoryField.getText() != null
557: && directoryField.getText().trim().length() > 0) {
558: start = new File(directoryField.getText().trim());
559: }
560: FileUtil.preventFileChooserSymlinkTraversal(chooser, start);
561: if (chooser.showOpenDialog(this ) == JFileChooser.APPROVE_OPTION) {
562: File f = chooser.getSelectedFile();
563: if (f != null) {
564: directoryField.setText(f.getAbsolutePath());
565: updateNameField();
566: }
567: }
568: }//GEN-LAST:event_directoryButtonActionPerformed
569:
570: private void masterProjectButtonActionPerformed(
571: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_masterProjectButtonActionPerformed
572: JFileChooser chooser = ProjectChooser.projectChooser();
573: if (chooser.showOpenDialog(this ) == JFileChooser.APPROVE_OPTION) {
574: File f = chooser.getSelectedFile();
575: if (f != null) {
576: masterProjectField.setText(f.getAbsolutePath());
577: updateNameField();
578: firePropertyChange(PROP_READY, null, null);
579: }
580: }
581: }//GEN-LAST:event_masterProjectButtonActionPerformed
582:
583: private void directoryKindRadioActionPerformed(
584: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_directoryKindRadioActionPerformed
585: adHocKindLabel.setEnabled(false);
586: useOpenCheckbox.setEnabled(false);
587: autoSynchCheckbox.setEnabled(false);
588: subprojectsKindLabel.setEnabled(false);
589: masterProjectLabel.setEnabled(false);
590: masterProjectField.setEnabled(false);
591: masterProjectButton.setEnabled(false);
592: directoryKindLabel.setEnabled(true);
593: directoryLabel.setEnabled(true);
594: directoryField.setEnabled(true);
595: directoryButton.setEnabled(true);
596: updateNameField();
597: firePropertyChange(PROP_READY, null, null);
598: }//GEN-LAST:event_directoryKindRadioActionPerformed
599:
600: private void subprojectsKindRadioActionPerformed(
601: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_subprojectsKindRadioActionPerformed
602: adHocKindLabel.setEnabled(false);
603: useOpenCheckbox.setEnabled(false);
604: autoSynchCheckbox.setEnabled(false);
605: subprojectsKindLabel.setEnabled(true);
606: masterProjectLabel.setEnabled(true);
607: masterProjectField.setEnabled(true);
608: masterProjectButton.setEnabled(true);
609: directoryKindLabel.setEnabled(false);
610: directoryLabel.setEnabled(false);
611: directoryField.setEnabled(false);
612: directoryButton.setEnabled(false);
613: updateNameField();
614: firePropertyChange(PROP_READY, null, null);
615: }//GEN-LAST:event_subprojectsKindRadioActionPerformed
616:
617: private void adHocKindRadioActionPerformed(
618: java.awt.event.ActionEvent evt) {//GEN-FIRST:event_adHocKindRadioActionPerformed
619: adHocKindLabel.setEnabled(true);
620: useOpenCheckbox.setEnabled(true);
621: autoSynchCheckbox.setEnabled(true);
622: subprojectsKindLabel.setEnabled(false);
623: masterProjectLabel.setEnabled(false);
624: masterProjectField.setEnabled(false);
625: masterProjectButton.setEnabled(false);
626: directoryKindLabel.setEnabled(false);
627: directoryLabel.setEnabled(false);
628: directoryField.setEnabled(false);
629: directoryButton.setEnabled(false);
630: updateNameField();
631: firePropertyChange(PROP_READY, null, null);
632: }//GEN-LAST:event_adHocKindRadioActionPerformed
633:
634: // Variables declaration - do not modify//GEN-BEGIN:variables
635: private javax.swing.JLabel adHocKindLabel;
636: private javax.swing.JRadioButton adHocKindRadio;
637: private javax.swing.JCheckBox autoSynchCheckbox;
638: private javax.swing.JButton directoryButton;
639: private javax.swing.JTextField directoryField;
640: private javax.swing.JLabel directoryKindLabel;
641: private javax.swing.JRadioButton directoryKindRadio;
642: private javax.swing.JLabel directoryLabel;
643: private javax.swing.ButtonGroup kindButtonGroup;
644: private javax.swing.JButton masterProjectButton;
645: private javax.swing.JTextField masterProjectField;
646: private javax.swing.JLabel masterProjectLabel;
647: private javax.swing.JTextField nameField;
648: private javax.swing.JLabel nameLabel;
649: private javax.swing.JLabel subprojectsKindLabel;
650: private javax.swing.JRadioButton subprojectsKindRadio;
651: private javax.swing.JCheckBox useOpenCheckbox;
652: // End of variables declaration//GEN-END:variables
653:
654: }
|