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");
+    }
+
+}