aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/Parameter.java52
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateMetadata.java4
-rw-r--r--templates/activities/BlankActivity/template.xml2
-rw-r--r--templates/activities/FullscreenActivity/template.xml2
-rw-r--r--templates/activities/LoginActivity/template.xml2
-rw-r--r--templates/activities/SettingsActivity/template.xml2
-rw-r--r--templates/docs/index.html2
7 files changed, 56 insertions, 10 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/Parameter.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/Parameter.java
index a9a3f33..3139451 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/Parameter.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/Parameter.java
@@ -15,6 +15,7 @@
*/
package com.android.ide.eclipse.adt.internal.wizards.templates;
+import static com.android.ide.eclipse.adt.internal.wizards.templates.NewProjectWizard.ATTR_PACKAGE_NAME;
import static com.android.ide.eclipse.adt.internal.wizards.templates.TemplateHandler.ATTR_CONSTRAINTS;
import static com.android.ide.eclipse.adt.internal.wizards.templates.TemplateHandler.ATTR_DEFAULT;
import static com.android.ide.eclipse.adt.internal.wizards.templates.TemplateHandler.ATTR_HELP;
@@ -26,6 +27,8 @@ import com.android.annotations.NonNull;
import com.android.annotations.Nullable;
import com.android.ide.eclipse.adt.AdtPlugin;
import com.android.ide.eclipse.adt.internal.editors.layout.gle2.DomUtilities;
+import com.android.ide.eclipse.adt.internal.editors.manifest.ManifestInfo;
+import com.android.ide.eclipse.adt.internal.project.BaseProjectHelper;
import com.android.ide.eclipse.adt.internal.resources.ResourceNameValidator;
import com.android.ide.eclipse.adt.internal.wizards.newproject.ApplicationInfoPage;
import com.android.resources.ResourceFolderType;
@@ -33,7 +36,10 @@ import com.android.resources.ResourceType;
import com.google.common.base.Splitter;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IType;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.fieldassist.ControlDecoration;
import org.eclipse.swt.widgets.Control;
@@ -146,6 +152,9 @@ class Parameter {
}
}
+ /** The template defining the parameter */
+ public final TemplateMetadata template;
+
/** The type of parameter */
@NonNull
public final Type type;
@@ -208,7 +217,8 @@ class Parameter {
/** Project associated with this validator */
private IProject mValidatorProject;
- Parameter(@NonNull Element parameter) {
+ Parameter(@NonNull TemplateMetadata template, @NonNull Element parameter) {
+ this.template = template;
element = parameter;
String typeName = parameter.getAttribute(TemplateHandler.ATTR_TYPE);
@@ -244,7 +254,12 @@ class Parameter {
}
}
- Parameter(@NonNull Type type, @NonNull String id, @NonNull String initialValue) {
+ Parameter(
+ @NonNull TemplateMetadata template,
+ @NonNull Type type,
+ @NonNull String id,
+ @NonNull String initialValue) {
+ this.template = template;
this.type = type;
this.id = id;
this.value = initialValue;
@@ -265,7 +280,7 @@ class Parameter {
}
@Nullable
- public IInputValidator getValidator(@Nullable IProject project) {
+ public IInputValidator getValidator(@Nullable final IProject project) {
if (mNoValidator) {
return null;
}
@@ -341,6 +356,37 @@ class Parameter {
return status.getMessage();
}
+ // Uniqueness
+ if (project != null && constraints.contains(Constraint.UNIQUE)) {
+ try {
+ // Determine the package.
+ // If there is a package info
+
+ IJavaProject p = BaseProjectHelper.getJavaProject(project);
+ if (p != null) {
+ String fqcn = newText;
+ if (fqcn.indexOf('.') == -1) {
+ String pkg = null;
+ Parameter parameter = template.getParameter(
+ ATTR_PACKAGE_NAME);
+ if (parameter != null && parameter.value != null) {
+ pkg = parameter.value.toString();
+ } else {
+ pkg = ManifestInfo.get(project).getPackage();
+ }
+ fqcn = pkg.isEmpty() ? newText : pkg + '.' + newText;
+ }
+
+ IType t = p.findType(fqcn);
+ if (t != null && t.exists()) {
+ return String.format("%1$s already exists", newText);
+ }
+ }
+ } catch (CoreException e) {
+ AdtPlugin.log(e, null);
+ }
+ }
+
return null;
}
};
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateMetadata.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateMetadata.java
index 13c3f00..cb184b8 100644
--- a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateMetadata.java
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/templates/TemplateMetadata.java
@@ -86,7 +86,7 @@ class TemplateMetadata {
mParameterMap = new HashMap<String, Parameter>(parameters.getLength());
for (int index = 0, max = parameters.getLength(); index < max; index++) {
Element element = (Element) parameters.item(index);
- Parameter parameter = new Parameter(element);
+ Parameter parameter = new Parameter(this, element);
mParameters.add(parameter);
if (parameter.id != null) {
mParameterMap.put(parameter.id, parameter);
@@ -221,7 +221,7 @@ class TemplateMetadata {
if (mIconState.outputName != null) {
// Register parameter such that if it is referencing other values, it gets
// updated when other values are edited
- Parameter outputParameter = new Parameter(
+ Parameter outputParameter = new Parameter(this,
Parameter.Type.STRING, "_iconname", mIconState.outputName); //$NON-NLS-1$
getParameters().add(outputParameter);
}
diff --git a/templates/activities/BlankActivity/template.xml b/templates/activities/BlankActivity/template.xml
index 0368c1a..6afe523 100644
--- a/templates/activities/BlankActivity/template.xml
+++ b/templates/activities/BlankActivity/template.xml
@@ -12,7 +12,7 @@
id="activityClass"
name="Activity Name"
type="string"
- constraints="class|nonempty"
+ constraints="class|unique|nonempty"
suggest="${layoutToActivity(layoutName)}"
default="MainActivity"
help="The name of the activity class to create" />
diff --git a/templates/activities/FullscreenActivity/template.xml b/templates/activities/FullscreenActivity/template.xml
index 8ebbb03..165854c 100644
--- a/templates/activities/FullscreenActivity/template.xml
+++ b/templates/activities/FullscreenActivity/template.xml
@@ -14,7 +14,7 @@
id="activityClass"
name="Activity Name"
type="string"
- constraints="class|nonempty"
+ constraints="class|unique|nonempty"
default="FullscreenActivity"
help="The name of the activity class to create" />
diff --git a/templates/activities/LoginActivity/template.xml b/templates/activities/LoginActivity/template.xml
index bca6efb..40a413a 100644
--- a/templates/activities/LoginActivity/template.xml
+++ b/templates/activities/LoginActivity/template.xml
@@ -14,7 +14,7 @@
id="activityClass"
name="Activity Name"
type="string"
- constraints="class|nonempty"
+ constraints="class|unique|nonempty"
default="LoginActivity"
help="The name of the activity class to create" />
diff --git a/templates/activities/SettingsActivity/template.xml b/templates/activities/SettingsActivity/template.xml
index cc990858..e024aff 100644
--- a/templates/activities/SettingsActivity/template.xml
+++ b/templates/activities/SettingsActivity/template.xml
@@ -14,7 +14,7 @@
id="activityClass"
name="Activity Name"
type="string"
- constraints="class|nonempty"
+ constraints="class|unique|nonempty"
default="SettingsActivity"
help="The name of the activity class to create" />
diff --git a/templates/docs/index.html b/templates/docs/index.html
index f8e89eb..77623fb 100644
--- a/templates/docs/index.html
+++ b/templates/docs/index.html
@@ -166,7 +166,7 @@
id="activityName"
name="Activity Name"
type="string"
- constraints="class|nonempty"
+ constraints="class|unique|nonempty"
suggest="${layoutToActivity(layoutName)}"
default="MainActivity"
help="The name of the activity class to create." /&gt;