diff --git a/plugins/android/src/org/jetbrains/android/newProject/AndroidAppPropertiesEditor.form b/plugins/android/src/org/jetbrains/android/newProject/AndroidAppPropertiesEditor.form index f43a933de4c7..05279b1e407c 100644 --- a/plugins/android/src/org/jetbrains/android/newProject/AndroidAppPropertiesEditor.form +++ b/plugins/android/src/org/jetbrains/android/newProject/AndroidAppPropertiesEditor.form @@ -51,7 +51,7 @@ - + diff --git a/plugins/android/src/org/jetbrains/android/newProject/AndroidAppPropertiesEditor.java b/plugins/android/src/org/jetbrains/android/newProject/AndroidAppPropertiesEditor.java index 698b7319a208..d5ca0ec5db4a 100644 --- a/plugins/android/src/org/jetbrains/android/newProject/AndroidAppPropertiesEditor.java +++ b/plugins/android/src/org/jetbrains/android/newProject/AndroidAppPropertiesEditor.java @@ -45,11 +45,11 @@ public class AndroidAppPropertiesEditor { private JLabel myErrorLabel; private JPanel myContentPanel; - private final String myModuleName; - public AndroidAppPropertiesEditor(String moduleName) { - myModuleName = moduleName; - myApplicationNameField.setText(moduleName); + if (moduleName != null) { + myApplicationNameField.setText(moduleName); + myPackageNameField.setText(getDefaultPackageNameByModuleName(moduleName)); + } myHelloAndroidCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { updateActivityPanel(); @@ -71,6 +71,31 @@ public class AndroidAppPropertiesEditor { }); } + @NotNull + public static String getDefaultPackageNameByModuleName(@NotNull String moduleName) { + return "com.example." + toIdentifier(moduleName); + } + + @NotNull + private static String toIdentifier(@NotNull String s) { + final StringBuilder result = new StringBuilder(); + + for (int i = 0, n = s.length(); i < n; i++) { + final char c = s.charAt(i); + + if (Character.isJavaIdentifierPart(c)) { + if (i == 0 && !Character.isJavaIdentifierStart(c)) { + result.append('_'); + } + result.append(c); + } + else { + result.append('_'); + } + } + return result.toString(); + } + public void updateActivityPanel() { myErrorLabel.setForeground(Color.RED); UIUtil.setEnabled(myActivtiyPanel, myHelloAndroidCheckBox.isSelected(), true); @@ -155,6 +180,10 @@ public class AndroidAppPropertiesEditor { return myApplicationNameField; } + public JTextField getPackageNameField() { + return myPackageNameField; + } + public JPanel getActivtiyPanel() { return myActivtiyPanel; } diff --git a/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleWizardStep.java b/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleWizardStep.java index 31ab03089d17..48a638f98f5e 100644 --- a/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleWizardStep.java +++ b/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleWizardStep.java @@ -241,8 +241,12 @@ public class AndroidModuleWizardStep extends ModuleWizardStep { } public JComponent getComponent() { - myAppPropertiesEditor.getApplicationNameField().setText(myModuleBuilder.getName()); + final String moduleName = myModuleBuilder.getName(); + if (moduleName != null) { + myAppPropertiesEditor.getApplicationNameField().setText(moduleName); + myAppPropertiesEditor.getPackageNameField().setText(AndroidAppPropertiesEditor.getDefaultPackageNameByModuleName(moduleName)); + } Sdk selectedSdk = mySdkComboBoxWithBrowseButton.getSelectedSdk(); final PropertiesComponent properties = PropertiesComponent.getInstance();