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 }