aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/manifest/descriptors/PostReceiverCreationAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/manifest/descriptors/PostReceiverCreationAction.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/manifest/descriptors/PostReceiverCreationAction.java89
1 files changed, 89 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/manifest/descriptors/PostReceiverCreationAction.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/manifest/descriptors/PostReceiverCreationAction.java
new file mode 100644
index 000000000..8b2c36144
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/editors/manifest/descriptors/PostReceiverCreationAction.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2007 The Android Open Source Project
+ *
+ * Licensed under the Eclipse Public License, Version 1.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.eclipse.org/org/documents/epl-v10.php
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ide.eclipse.adt.internal.editors.manifest.descriptors;
+
+import com.android.SdkConstants;
+import com.android.ide.eclipse.adt.internal.editors.manifest.model.UiClassAttributeNode.IPostTypeCreationAction;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IType;
+import org.eclipse.jdt.core.JavaModelException;
+
+/**
+ * Action to be executed after an BroadcastReceiver class is created.
+ */
+class PostReceiverCreationAction implements IPostTypeCreationAction {
+
+ private final static PostReceiverCreationAction sAction = new PostReceiverCreationAction();
+
+ private PostReceiverCreationAction() {
+ // private constructor to enforce singleton.
+ }
+
+ /**
+ * Returns the action.
+ */
+ public static IPostTypeCreationAction getAction() {
+ return sAction;
+ }
+
+ /**
+ * Processes a newly created Activity.
+ *
+ */
+ @Override
+ public void processNewType(IType newType) {
+ try {
+ String methodContent =
+ " @Override\n" +
+ " public void onReceive(Context context, Intent intent) {\n" +
+ " // TODO Auto-generated method stub\n" +
+ " }";
+ newType.createMethod(methodContent, null /* sibling*/, false /* force */,
+ new NullProgressMonitor());
+
+ // we need to add the import for Bundle, so we need the compilation unit.
+ // Since the type could be enclosed in other types, we loop till we find it.
+ ICompilationUnit compilationUnit = null;
+ IJavaElement element = newType;
+ do {
+ IJavaElement parentElement = element.getParent();
+ if (parentElement != null) {
+ if (parentElement.getElementType() == IJavaElement.COMPILATION_UNIT) {
+ compilationUnit = (ICompilationUnit)parentElement;
+ }
+
+ element = parentElement;
+ } else {
+ break;
+ }
+ } while (compilationUnit == null);
+
+ if (compilationUnit != null) {
+ compilationUnit.createImport(SdkConstants.CLASS_CONTEXT,
+ null /* sibling */, new NullProgressMonitor());
+ compilationUnit.createImport(SdkConstants.CLASS_INTENT,
+ null /* sibling */, new NullProgressMonitor());
+ }
+ } catch (JavaModelException e) {
+ // looks like the class already existed (this happens when the user check to create
+ // inherited abstract methods).
+ }
+ }
+}