auto import from //branches/cupcake_rel/...@138607
diff --git a/tools/annotation-helper/src/spechelper/SimpleComputer.java b/tools/annotation-helper/src/spechelper/SimpleComputer.java
new file mode 100644
index 0000000..757b1a8
--- /dev/null
+++ b/tools/annotation-helper/src/spechelper/SimpleComputer.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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 spechelper;
+
+import dalvik.annotation.TestTargetClass;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jdt.ui.text.java.ContentAssistInvocationContext;
+import org.eclipse.jdt.ui.text.java.IJavaCompletionProposalComputer;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.contentassist.ICompletionProposal;
+
+import java.util.List;
+import java.util.Vector;
+import java.util.regex.Pattern;
+
+/**
+ * <p>
+ * a plugin to auto-insert the following annotation constructs:
+ * TestInfo.java, TestStatus.java, TestTarget.java, and TestTargetClass.java
+ * under
+ * /android/device/dalvik/libcore/dalvik/src/main/java/dalvik/annotation/
+ * <p>
+ * usage:<br>
+ * - install export/plugins/spechelper_1.0.0.jar into your eclipse/plugin folder.<br>
+ * - restart eclipse<br>
+ * - open a java file<br>
+ * - insert the TestTargetClass annotation above the class declaration, e.g.
+ * <code>@TestTargetClass(Pattern.class)</code><br>
+ * - insert a ":" one line above the signature of a method to be annotated,
+ * and press ctrl-space for eclipse autocompletion. a popup appears which
+ * lists all target methods. choose one, and the annotation will be filled in
+ * at the cursor position.<br>
+ * <p>
+ * to annotate more than one target method, simply add a comma after the
+ * first TestTarget, press enter and insert a ":", press ctrl-space again.
+ *
+ * <p>
+ * a sample:
+ *
+<pre>
+package org.apache.harmony.tests.java.util.regex;
+
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestInfo;
+import dalvik.annotation.TestTarget;
+import dalvik.annotation.TestStatus;
+
+import junit.framework.TestCase;
+
+import java.util.regex.Pattern;
+
+@TestTargetClass(Pattern.class)
+
+public class PatternTest extends TestCase {
+
+ // add ":", press ctrl-space here to let the eclipse plugin generate
+ // the next few lines
+ @TestInfo(
+ status = TestStatus.TBR,
+ notes = "",
+ targets = {
+ @TestTarget(
+ methodName = "compile",
+ methodArgs = {String.class}
+ )
+ })
+ public void foo() {
+ //
+ }
+
+ @TestInfo(
+ status = TestStatus.TBR,
+ notes = "",
+ targets = {
+ @TestTarget(
+ methodName = "compile",
+ methodArgs = {String.class}
+ ),
+ // add ":", press ctrl-space here to insert another TestTarget
+ })
+ public void bar() {
+ //
+ }
+
+ @TestInfo(
+ status = TestStatus.TBR,
+ notes = "",
+ targets = {
+ @TestTarget(
+ methodName = "compile",
+ methodArgs = {String.class}
+ ),
+ @TestTarget(
+ methodName = "split",
+ methodArgs = {CharSequence.class, int.class}
+ )
+
+ })
+ public void foobarsample() {
+ //
+ }
+
+}
+</pre>
+ *
+ *
+ *
+ */
+public class SimpleComputer implements IJavaCompletionProposalComputer {
+
+ public List<ICompletionProposal> computeCompletionProposals(
+ ContentAssistInvocationContext context, IProgressMonitor monitor) {
+ List<ICompletionProposal> ret = new Vector<ICompletionProposal>();
+ try {
+ int offs = context.getInvocationOffset();
+ String buffer = context.getDocument().get(0, offs);
+ //System.out.println("buffer:'"+buffer+"'");
+ //System.out.println("offset:"+offs);
+ String keyWord = ":";
+ String keyWordInfo = "':': noser: autofills the annotation";
+
+ int idx = 0;
+ // find the replacement position
+ int klen = keyWord.length();
+ for (int i = 0; i < klen; i++) {
+ String test = keyWord.substring(0, klen - i);
+ if (buffer.endsWith(test)) {
+ idx = klen - i;
+ break;
+ }
+ }
+ if (idx != 0) {
+ System.out.println("idx:"+idx);
+ String replace ="hi there! a longer sample text\nnew line";
+ ICompletionProposal ci = new MyCompletion(buffer, replace,
+ context.getInvocationOffset() - idx, idx, replace
+ .length(), null, keyWordInfo, null, null);
+ ret.add(ci);
+ }
+ } catch (BadLocationException e) {
+ e.printStackTrace();
+ }
+ return ret;
+ }
+
+
+ public List<ICompletionProposal> computeContextInformation(
+ ContentAssistInvocationContext context, IProgressMonitor monitor) {
+ return new Vector<ICompletionProposal>();
+ }
+
+ public String getErrorMessage() {
+ return "Error from SimpleComputer";
+ }
+
+ public void sessionEnded() {
+ //System.out.println("session ended");
+ }
+
+ public void sessionStarted() {
+ //System.out.println("session started");
+ }
+
+}