package org.netbeans.gradle.project.newproject;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.swing.event.ChangeListener;
import org.netbeans.gradle.project.validate.BackgroundValidator;
import org.netbeans.gradle.project.validate.Validators;
import org.openide.WizardDescriptor;
@SuppressWarnings("serial")
public class GradleMultiProjectPropertiesPanel extends javax.swing.JPanel {
private final AtomicBoolean started;
private final BackgroundValidator bckgValidator;
private final WizardDescriptor wizard;
/**
* Creates new form GradleMultiProjectPropertiesPanel
*/
public GradleMultiProjectPropertiesPanel(WizardDescriptor wizard) {
this.started = new AtomicBoolean(false);
this.wizard = wizard;
bckgValidator = new BackgroundValidator();
initComponents();
jProjectLocationEdit.setText(NewProjectUtils.getDefaultProjectDir(wizard));
}
public void startValidation() {
if (!started.compareAndSet(false, true)) {
return;
}
bckgValidator.addValidator(
NewProjectUtils.createGroupIdValidator(),
Validators.trimmedText(jMavenGroupEdit));
bckgValidator.addValidator(
NewProjectUtils.createVersionValidator(),
Validators.trimmedText(jMavenVersionEdit));
NewProjectUtils.setupNewProjectValidators(bckgValidator,
jProjectNameEdit, jProjectFolderEdit, jProjectLocationEdit);
Validators.connectWizardDescriptorToProblems(bckgValidator, wizard);
}
public void addChangeListener(ChangeListener listener) {
bckgValidator.currentProblemForSwing().addChangeListener(listener);
}
public void removeChangeListener(ChangeListener listener) {
bckgValidator.currentProblemForSwing().removeChangeListener(listener);
}
public GradleMultiProjectConfig getConfig() {
String projectName = jProjectNameEdit.getText().trim();
String projectDirStr = jProjectFolderEdit.getText().trim();
String groupId = jMavenGroupEdit.getText().trim();
String version = jMavenVersionEdit.getText().trim();
NewProjectUtils.setDefaultProjectDir(jProjectLocationEdit.getText());
Path projectDir = Paths.get(projectDirStr);
return new GradleMultiProjectConfig(
projectName, projectDir, groupId, version);
}
public boolean containsValidData() {
return bckgValidator.isValid();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jProjectNameCaption = new javax.swing.JLabel();
jProjectNameEdit = new javax.swing.JTextField();
jProjectLocationCaption = new javax.swing.JLabel();
jProjectLocationEdit = new javax.swing.JTextField();
jBrowseButton = new javax.swing.JButton();
jProjectFolderLocationLabel = new javax.swing.JLabel();
jProjectFolderEdit = new javax.swing.JTextField();
jMavenGroupCaption = new javax.swing.JLabel();
jMavenGroupEdit = new javax.swing.JTextField();
jMavenVersionEdit = new javax.swing.JTextField();
jMavenVersionCaption = new javax.swing.JLabel();
jProjectNameCaption.setText(org.openide.util.NbBundle.getMessage(GradleMultiProjectPropertiesPanel.class, "GradleSingleProjectPropertiesPanel.jProjectNameCaption.text")); // NOI18N
jProjectNameEdit.setText(org.openide.util.NbBundle.getMessage(GradleMultiProjectPropertiesPanel.class, "GradleSingleProjectPropertiesPanel.jProjectNameEdit.text")); // NOI18N
jProjectLocationCaption.setText(org.openide.util.NbBundle.getMessage(GradleMultiProjectPropertiesPanel.class, "GradleSingleProjectPropertiesPanel.jProjectLocationCaption.text")); // NOI18N
jProjectLocationEdit.setText(org.openide.util.NbBundle.getMessage(GradleMultiProjectPropertiesPanel.class, "GradleSingleProjectPropertiesPanel.jProjectLocationEdit.text")); // NOI18N
jBrowseButton.setText(org.openide.util.NbBundle.getMessage(GradleMultiProjectPropertiesPanel.class, "GradleSingleProjectPropertiesPanel.jBrowseButton.text")); // NOI18N
jBrowseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jBrowseButtonActionPerformed(evt);
}
});
jProjectFolderLocationLabel.setText(org.openide.util.NbBundle.getMessage(GradleMultiProjectPropertiesPanel.class, "GradleSingleProjectPropertiesPanel.jProjectFolderLocationLabel.text")); // NOI18N
jProjectFolderEdit.setEditable(false);
jProjectFolderEdit.setText(org.openide.util.NbBundle.getMessage(GradleMultiProjectPropertiesPanel.class, "GradleSingleProjectPropertiesPanel.jProjectFolderEdit.text")); // NOI18N
jProjectFolderEdit.setEnabled(false);
jMavenGroupCaption.setText("Maven Group Id:");
jMavenVersionEdit.setText("1.0-SNAPSHOT");
jMavenVersionCaption.setText("Maven Version:");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jProjectLocationCaption)
.addComponent(jProjectNameCaption)
.addComponent(jProjectFolderLocationLabel)
.addComponent(jMavenGroupCaption)
.addComponent(jMavenVersionCaption))
.addGap(6, 6, 6)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jMavenVersionEdit)
.addComponent(jProjectNameEdit)
.addComponent(jMavenGroupEdit)
.addComponent(jProjectLocationEdit, javax.swing.GroupLayout.DEFAULT_SIZE, 354, Short.MAX_VALUE)
.addComponent(jProjectFolderEdit))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jBrowseButton)
.addGap(0, 0, 0))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jProjectNameCaption)
.addComponent(jProjectNameEdit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jProjectLocationCaption)
.addComponent(jProjectLocationEdit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jBrowseButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jProjectFolderEdit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jProjectFolderLocationLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jMavenGroupEdit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jMavenGroupCaption))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jMavenVersionEdit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jMavenVersionCaption)))
);
}// </editor-fold>//GEN-END:initComponents
private void jBrowseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBrowseButtonActionPerformed
NewProjectUtils.chooseProjectLocation(this, jProjectLocationEdit);
}//GEN-LAST:event_jBrowseButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jBrowseButton;
private javax.swing.JLabel jMavenGroupCaption;
private javax.swing.JTextField jMavenGroupEdit;
private javax.swing.JLabel jMavenVersionCaption;
private javax.swing.JTextField jMavenVersionEdit;
private javax.swing.JTextField jProjectFolderEdit;
private javax.swing.JLabel jProjectFolderLocationLabel;
private javax.swing.JLabel jProjectLocationCaption;
private javax.swing.JTextField jProjectLocationEdit;
private javax.swing.JLabel jProjectNameCaption;
private javax.swing.JTextField jProjectNameEdit;
// End of variables declaration//GEN-END:variables
}