package org.jetbrains.android.newProject; import com.intellij.ide.util.projectWizard.SettingsStep; import com.intellij.openapi.options.ConfigurationException; import com.intellij.ui.DocumentAdapter; import org.jetbrains.annotations.NotNull; import javax.swing.*; import javax.swing.event.DocumentEvent; /** * @author Eugene.Kudelevsky */ class AndroidLibraryModifiedSettingsStep extends AndroidModifiedSettingsStep { private final JTextField myPackageNameField; private boolean myPackageNameFieldChangedByUser; public AndroidLibraryModifiedSettingsStep(@NotNull AndroidModuleBuilder builder, @NotNull final SettingsStep settingsStep) { super(builder, settingsStep); myPackageNameField = new JTextField(); updatePackageNameField(settingsStep); settingsStep.addSettingsField("Pa\u001Bckage name: ", myPackageNameField); myPackageNameField.getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { myPackageNameFieldChangedByUser = true; } }); settingsStep.getModuleNameField().getDocument().addDocumentListener(new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { if (!myPackageNameFieldChangedByUser) { updatePackageNameField(settingsStep); myPackageNameFieldChangedByUser = false; } } }); } private void updatePackageNameField(SettingsStep settingsStep) { final String moduleName = settingsStep.getModuleNameField().getText().trim(); if (moduleName.length() > 0) { myPackageNameField.setText(AndroidAppPropertiesEditor.getDefaultPackageNameByModuleName(moduleName)); } } @Override public boolean validate() throws ConfigurationException { if (!super.validate()) return false; final String message = AndroidAppPropertiesEditor.doValidatePackageName(true, getPackageName(), null); if (message.length() > 0) { throw new ConfigurationException(message); } return true; } @Override public void updateDataModel() { super.updateDataModel(); myBuilder.setPackageName(getPackageName()); } private String getPackageName() { return myPackageNameField.getText().trim(); } }