Bug #282215: BindingType default initializer and completion proposals
diff --git a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.java b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.java
index b70201a..81a80f3 100644
--- a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.java
+++ b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/initialization/AnnotationAttributeInitializer.java
@@ -17,8 +17,12 @@
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.dom.AST;
 import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.Expression;
 import org.eclipse.jdt.core.dom.MemberValuePair;
+import org.eclipse.jface.text.contentassist.CompletionProposal;
 import org.eclipse.jface.text.contentassist.ICompletionProposal;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.PlatformUI;
 
 /**
  * Base class for initializers contributed to the
@@ -36,6 +40,8 @@
 */
 public class AnnotationAttributeInitializer implements IAnnotationAttributeInitializer {
 
+    protected static final String MISSING_IDENTIFER = "$missing$";
+	 
     public List<MemberValuePair> getMemberValuePairs(IJavaElement javaElement, AST ast,
             Class<? extends Annotation> annotationClass) {
         return Collections.emptyList();
@@ -55,4 +61,34 @@
             MemberValuePair memberValuePair) {
         return Collections.emptyList();
     }
+
+	protected CompletionProposal createCompletionProposal(String proposal, Expression value) {
+		int replacementOffset = value.getStartPosition();
+		int replacementLength = 0;
+		if (value.toString().equals(MISSING_IDENTIFER)) {
+			if (proposal.charAt(0) != '\"') {
+				proposal = "\"" + proposal;
+			}
+			if (proposal.charAt(proposal.length() - 1) != '\"') {
+				proposal = proposal + "\"";
+			}
+		} else {
+			replacementOffset += 1;
+			replacementLength = value.getLength() - 2;
+		}
+
+		Image image = PlatformUI.getWorkbench().getSharedImages().getImage(org.eclipse.ui.ISharedImages.IMG_OBJ_FILE);
+		return new CompletionProposal(proposal, replacementOffset, replacementLength, proposal.length(),
+				image, proposal, null, null);
+	}
+
+	protected CompletionProposal createCompletionProposal(String proposal, Expression value, Image image, 
+			String displayString) {
+		int replacementOffset = value.getStartPosition() + 1;
+		int replacementLength = value.getLength() - 2;
+
+		return new CompletionProposal(proposal, replacementOffset, replacementLength, proposal.length(),
+				image, displayString, null, null);
+	}
+
 }
diff --git a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.java b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.java
index 0900c24..31f151e 100644
--- a/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.java
+++ b/bundles/org.eclipse.jst.ws.annotations.core/src/org/eclipse/jst/ws/annotations/core/utils/AnnotationUtils.java
@@ -70,9 +70,7 @@
 import org.eclipse.jdt.core.dom.rewrite.ListRewrite;
 import org.eclipse.jdt.ui.CodeStyleConfiguration;
 import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.contentassist.CompletionProposal;
 import org.eclipse.ltk.core.refactoring.TextFileChange;
-import org.eclipse.swt.graphics.Image;
 import org.eclipse.text.edits.MultiTextEdit;
 import org.eclipse.text.edits.TextEdit;
 import org.eclipse.text.edits.TextEditGroup;
@@ -1197,23 +1195,6 @@
         return (typeOne.equals(typeTwo)) && (nameOne.equals(nameTwo));
     }
 
-    public static CompletionProposal createCompletionProposal(String proposal, Expression value) {
-        int replacementOffset = value.getStartPosition() + 1;
-        int replacementLength = value.getLength() - 2;
-
-        return new CompletionProposal(proposal, replacementOffset, replacementLength,
-                proposal.length());
-    }
-    
-    public static CompletionProposal createCompletionProposal(String proposal, Expression value,
-            Image image) {
-        int replacementOffset = value.getStartPosition() + 1;
-        int replacementLength = value.getLength() - 2;
-
-        return new CompletionProposal(proposal, replacementOffset, replacementLength, proposal.length(), 
-                image, proposal, null, null);
-    }
-    
     public static String getStringValue(AnnotationMirror mirror, String attributeName) {
         AnnotationValue annotationValue = getAnnotationValue(mirror, attributeName);
         if (annotationValue != null) {
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
index a3e8c39..d6bbd04 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.jaxws.core/META-INF/MANIFEST.MF
@@ -23,8 +23,8 @@
  javax.wsdl;bundle-version="[1.6.2,1.7.0)",
  org.eclipse.jst.ws;bundle-version="[1.0.304,1.1.0)"
 Export-Package: org.eclipse.jst.ws.internal.jaxws.core;x-friends:="org.eclipse.jst.ws.jaxws.core.tests,org.eclipse.jst.ws.jaxws.ui",
- org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization;x-friends:="org.eclipse.jst.ws.annotations.core",
  org.eclipse.jst.ws.internal.jaxws.core.annotations.validation;x-friends:="org.eclipse.jst.ws.annotations.core",
+ org.eclipse.jst.ws.internal.jaxws.core.utils;x-friends:="org.eclipse.jst.ws.jaxws.ui",
  org.eclipse.jst.ws.jaxws.core.utils
 Import-Package: javax.jws,
  javax.jws.soap,
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/plugin.xml b/bundles/org.eclipse.jst.ws.jaxws.core/plugin.xml
index 62ab111..9573559 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/plugin.xml
+++ b/bundles/org.eclipse.jst.ws.jaxws.core/plugin.xml
@@ -139,37 +139,6 @@
       </annotation>
    </extension>
    
-   <extension point="org.eclipse.jst.ws.annotations.core.annotationInitializer">
-      <initializer
-            annotation="javax.jws.WebService"
-            class="org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization.WebServiceAttributeInitializer">
-      </initializer>
-      <initializer
-            annotation="javax.jws.WebMethod"
-            class="org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization.WebMethodAttributeInitializer">
-      </initializer>
-      <initializer
-            annotation="javax.jws.WebParam"
-            class="org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization.WebParamAttributeInitializer">
-      </initializer>
-      <initializer
-            annotation="javax.jws.WebResult"
-            class="org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization.WebResultAttributeInitializer">
-      </initializer>
-      <initializer
-            annotation="javax.jws.soap.SOAPBinding"
-            class="org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization.SOAPBindingAttributeInitializer">
-      </initializer>      
-      <initializer
-            annotation="javax.xml.ws.RequestWrapper"
-            class="org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization.RequestWrapperAttributeInitializer">
-      </initializer>
-      <initializer
-            annotation="javax.xml.ws.ResponseWrapper"
-            class="org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization.ResponseWrapperAttributeInitializer">
-      </initializer>
-   </extension>
-   
    <extension point="org.eclipse.jst.ws.annotations.core.annotationProcessor">
       <processor
             annotation="javax.jws.WebService"
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/META-INF/MANIFEST.MF b/bundles/org.eclipse.jst.ws.jaxws.ui/META-INF/MANIFEST.MF
index b7ae3da..d278ada 100755
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/META-INF/MANIFEST.MF
@@ -26,4 +26,6 @@
 Bundle-ActivationPolicy: lazy
 Import-Package: javax.jws,
  javax.jws.soap,
- javax.xml.ws;version="2.1.0"
+ javax.xml.ws;version="2.1.0",
+ javax.xml.ws.http;version="2.1.0",
+ javax.xml.ws.soap;version="2.1.0"
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/binding_obj.gif b/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/binding_obj.gif
new file mode 100644
index 0000000..896e2f0
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/binding_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/httpbinding_obj.gif b/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/httpbinding_obj.gif
new file mode 100644
index 0000000..4428ef3
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/httpbinding_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/soapbinding_obj.gif b/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/soapbinding_obj.gif
new file mode 100644
index 0000000..115f6bf
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/icons/obj16/soapbinding_obj.gif
Binary files differ
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/plugin.xml b/bundles/org.eclipse.jst.ws.jaxws.ui/plugin.xml
index 71772b3..5cb5ec6 100755
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/plugin.xml
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/plugin.xml
@@ -25,6 +25,41 @@
          </view>

       </perspectiveExtension>

    </extension> -->

+

+   <extension point="org.eclipse.jst.ws.annotations.core.annotationInitializer">

+      <initializer

+            annotation="javax.jws.WebService"

+            class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization.WebServiceAttributeInitializer">

+      </initializer>

+      <initializer

+            annotation="javax.jws.WebMethod"

+            class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization.WebMethodAttributeInitializer">

+      </initializer>

+      <initializer

+            annotation="javax.jws.WebParam"

+            class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization.WebParamAttributeInitializer">

+      </initializer>

+      <initializer

+            annotation="javax.jws.WebResult"

+            class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization.WebResultAttributeInitializer">

+      </initializer>

+      <initializer

+            annotation="javax.jws.soap.SOAPBinding"

+            class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization.SOAPBindingAttributeInitializer">

+      </initializer>      

+      <initializer

+            annotation="javax.xml.ws.RequestWrapper"

+            class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization.RequestWrapperAttributeInitializer">

+      </initializer>

+      <initializer

+            annotation="javax.xml.ws.ResponseWrapper"

+            class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization.ResponseWrapperAttributeInitializer">

+      </initializer>

+      <initializer

+            annotation="javax.xml.ws.BindingType"

+            class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization.BindingTypeAttributeInitializer">

+      </initializer>

+   </extension>

   

    <extension id="jaxwsProposalComputer"

          name="JAX-WS Proposals"

@@ -40,9 +75,9 @@
             activate="true"

             categoryId="org.eclipse.jst.ws.jaxws.ui.jaxwsProposalComputer"

             class="org.eclipse.jst.ws.internal.jaxws.ui.annotations.contentassist.AnnotationCompletionProposalComputer">

-         <!--<partition

+         <partition

                type="__dftl_partition_content_type">

-         </partition> -->

+         </partition>

          <partition

                type="__java_string">

          </partition>

diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/BindingTypeAttributeInitializer.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/BindingTypeAttributeInitializer.java
new file mode 100644
index 0000000..dc7113c
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/BindingTypeAttributeInitializer.java
@@ -0,0 +1,144 @@
+/*******************************************************************************

+ * Copyright (c) 2009 Shane Clarke.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Shane Clarke - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;

+

+import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.VALUE;

+import java.lang.annotation.Annotation;

+import java.util.ArrayList;

+import java.util.HashMap;

+import java.util.Iterator;

+import java.util.List;

+import java.util.Map;

+import javax.xml.ws.http.HTTPBinding;

+import javax.xml.ws.soap.SOAPBinding;

+import org.eclipse.jdt.core.IJavaElement;

+import org.eclipse.jdt.core.IType;

+import org.eclipse.jdt.core.dom.AST;

+import org.eclipse.jdt.core.dom.MemberValuePair;

+import org.eclipse.jface.text.contentassist.ICompletionProposal;

+import org.eclipse.jface.viewers.StyledString;

+import org.eclipse.jst.ws.annotations.core.AnnotationsCore;

+import org.eclipse.jst.ws.annotations.core.initialization.AnnotationAttributeInitializer;

+import org.eclipse.jst.ws.internal.jaxws.ui.JAXWSUIPlugin;

+import org.eclipse.swt.graphics.Image;

+

+public class BindingTypeAttributeInitializer extends AnnotationAttributeInitializer {

+

+    private static final String SOAPBinding_SOAP11HTTP_BINDING = "SOAPBinding.SOAP11HTTP_BINDING"; //$NON-NLS-1$

+    private static final String SOAPBinding_SOAP12HTTP_BINDING = "SOAPBinding.SOAP12HTTP_BINDING"; //$NON-NLS-1$

+    private static final String SOAPBinding_SOAP11HTTP_MTOM_BINDING = "SOAPBinding.SOAP11HTTP_MTOM_BINDING"; //$NON-NLS-1$

+    private static final String SOAPBinding_SOAP12HTTP_MTOM_BINDING = "SOAPBinding.SOAP12HTTP_MTOM_BINDING"; //$NON-NLS-1$

+    private static final String HTTPBinding_HTTP_BINDING = "HTTPBinding.HTTP_BINDING"; //$NON-NLS-1$

+

+    private static final String SOAP_BINDING = "javax.xml.ws.soap.SOAPBinding"; //$NON-NLS-1$

+    private static final String HTTP_BINDING = "javax.xml.ws.http.HTTPBinding"; //$NON-NLS-1$

+

+    public BindingTypeAttributeInitializer() {

+        JAXWSUIPlugin.getDefault().getImageRegistry().put(SOAP_BINDING, 

+        		JAXWSUIPlugin.getImageDescriptor("icons/obj16/soapbinding_obj.gif").createImage()); //$NON-NLS-1$

+        JAXWSUIPlugin.getDefault().getImageRegistry().put(HTTP_BINDING, 

+        		JAXWSUIPlugin.getImageDescriptor("icons/obj16/httpbinding_obj.gif").createImage()); //$NON-NLS-1$

+    }

+

+    @Override

+    public List<MemberValuePair> getMemberValuePairs(IJavaElement javaElement, AST ast,

+            Class<? extends Annotation> annotationClass) {

+        List<MemberValuePair> memberValuePairs = new ArrayList<MemberValuePair>();

+        if (javaElement.getElementType() == IJavaElement.TYPE) {

+            MemberValuePair value = AnnotationsCore.createStringMemberValuePair(ast, VALUE, getDefault()); //$NON-NLS-1$

+            memberValuePairs.add(value);

+        }

+        return memberValuePairs;

+    }

+

+    public List<ICompletionProposal> getCompletionProposalsForMemberValuePair(IJavaElement javaElement,

+            MemberValuePair memberValuePair) {

+        List<ICompletionProposal> completionProposals = new ArrayList<ICompletionProposal>();

+        if (javaElement.getElementType() == IJavaElement.TYPE) {

+            IType type = (IType)  javaElement;

+            String memberValuePairName = memberValuePair.getName().getIdentifier();

+            if (memberValuePairName.equals(VALUE)) { //$NON-NLS-1$

+               if (memberValuePair.getValue().toString().equals(MISSING_IDENTIFER)) {

+                    Map<String, String> bindings = getShortNameBindingsMap();

+                    Iterator<Map.Entry<String, String>> bindingsIter = bindings.entrySet().iterator();

+                    while (bindingsIter.hasNext()) {

+                        Map.Entry<String, String> bindingEntry = bindingsIter.next();

+                        String proposal = bindingEntry.getKey();

+                        String fullyQualifiedTypeName = bindingEntry.getValue();

+                        int replacementOffset = memberValuePair.getValue().getStartPosition();

+                        int replacementLength = memberValuePair.getValue().getLength();

+                        Image image = JAXWSUIPlugin.getDefault().getImageRegistry().get(fullyQualifiedTypeName);

+                        completionProposals.add(new BindingTypeCompletionProposal(proposal, type.getCompilationUnit(),

+                              replacementOffset, replacementLength, image, new StyledString(proposal), 5,

+                              fullyQualifiedTypeName));

+                    }

+                } else {

+                    Map<String, String> bindings = getQualifiedNameBindingsMap();

+                    Iterator<Map.Entry<String, String>> bindingsIter = bindings.entrySet().iterator();

+                    while (bindingsIter.hasNext()) {

+                        Map.Entry<String, String> bindingEntry = bindingsIter.next();

+                        String proposal = bindingEntry.getKey();

+                        Image image = JAXWSUIPlugin.getDefault().getImageRegistry().get(bindingEntry.getValue());

+                        completionProposals.add(createCompletionProposal(proposal, memberValuePair.getValue(),

+                                image, getDisplayString(proposal)));

+                    }

+                }

+             }

+        }

+        return completionProposals;

+    }

+

+

+

+    public String getDefault() {

+

+        return SOAPBinding.SOAP11HTTP_BINDING;

+    }

+

+    private String getDisplayString(String binding) {

+        if (binding.equals(SOAPBinding.SOAP11HTTP_BINDING)) {

+            return SOAPBinding_SOAP11HTTP_BINDING;

+        }

+        if (binding.equals(SOAPBinding.SOAP12HTTP_BINDING)) {

+            return SOAPBinding_SOAP12HTTP_BINDING;

+        }

+        if (binding.equals(SOAPBinding.SOAP11HTTP_MTOM_BINDING)) {

+            return SOAPBinding_SOAP11HTTP_MTOM_BINDING;

+        }

+        if (binding.equals(SOAPBinding.SOAP12HTTP_MTOM_BINDING)) {

+            return SOAPBinding_SOAP12HTTP_MTOM_BINDING;

+        }

+        if (binding.equals(HTTPBinding.HTTP_BINDING)) {

+            return HTTPBinding_HTTP_BINDING;

+        }

+        return binding;

+    }

+

+    private Map<String, String> getQualifiedNameBindingsMap() {

+        Map<String, String> bindings = new HashMap<String, String>();

+        bindings.put(SOAPBinding.SOAP11HTTP_BINDING, SOAPBinding.class.getCanonicalName());

+        bindings.put(SOAPBinding.SOAP12HTTP_BINDING, SOAPBinding.class.getCanonicalName());

+        bindings.put(SOAPBinding.SOAP11HTTP_MTOM_BINDING, SOAPBinding.class.getCanonicalName());

+        bindings.put(SOAPBinding.SOAP12HTTP_MTOM_BINDING, SOAPBinding.class.getCanonicalName());

+        bindings.put(HTTPBinding.HTTP_BINDING, HTTPBinding.class.getCanonicalName());

+        return bindings;

+    }

+

+    private Map<String, String> getShortNameBindingsMap() {

+        Map<String, String> bindings = new HashMap<String, String>();

+        bindings.put("SOAPBinding.SOAP11HTTP_BINDING", SOAPBinding.class.getCanonicalName());

+        bindings.put("SOAPBinding.SOAP12HTTP_BINDING", SOAPBinding.class.getCanonicalName());

+        bindings.put("SOAPBinding.SOAP11HTTP_MTOM_BINDING", SOAPBinding.class.getCanonicalName());

+        bindings.put("SOAPBinding.SOAP12HTTP_MTOM_BINDING", SOAPBinding.class.getCanonicalName());

+        bindings.put("HTTPBinding.HTTP_BINDING", HTTPBinding.class.getCanonicalName());

+        return bindings;

+    }

+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/BindingTypeCompletionProposal.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/BindingTypeCompletionProposal.java
new file mode 100644
index 0000000..67ff087
--- /dev/null
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/BindingTypeCompletionProposal.java
@@ -0,0 +1,57 @@
+/*******************************************************************************

+ * Copyright (c) 2009 Shane Clarke.

+ * All rights reserved. This program and the accompanying materials

+ * are made available under the terms of the Eclipse Public License v1.0

+ * which accompanies this distribution, and is available at

+ * http://www.eclipse.org/legal/epl-v10.html

+ *

+ * Contributors:

+ *    Shane Clarke - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;

+

+import org.eclipse.core.runtime.CoreException;

+import org.eclipse.jdt.core.ICompilationUnit;

+import org.eclipse.jdt.core.IType;

+import org.eclipse.jdt.core.dom.rewrite.ImportRewrite;

+import org.eclipse.jdt.internal.ui.text.java.JavaTypeCompletionProposal;

+import org.eclipse.jface.text.BadLocationException;

+import org.eclipse.jface.text.IDocument;

+import org.eclipse.jface.viewers.StyledString;

+import org.eclipse.swt.graphics.Image;

+

+@SuppressWarnings("restriction")

+public class BindingTypeCompletionProposal extends JavaTypeCompletionProposal {

+

+    private final String replacementString;

+    private final String fullyQualifiedTypeName;

+    

+    public BindingTypeCompletionProposal(String replacementString, ICompilationUnit compilationUnit,

+            int replacementOffset, int replacementLength, Image image, StyledString displayString,

+            int relevance, String fullyQualifiedTypeName) {

+        super(replacementString, compilationUnit, replacementOffset, replacementLength, image, displayString, 

+        		relevance, fullyQualifiedTypeName);

+        this.fullyQualifiedTypeName = fullyQualifiedTypeName;

+        this.replacementString = replacementString;

+    }

+

+    @Override

+    protected boolean updateReplacementString(IDocument document, char trigger, int offset, 

+            ImportRewrite importRewrite) throws CoreException, BadLocationException {

+    	

+        if (importRewrite != null && fullyQualifiedTypeName != null && replacementString != null) {        

+        	if (fullyQualifiedTypeName.indexOf('.') != -1) {

+                IType[] types= importRewrite.getCompilationUnit().getTypes();

+                if (types.length > 0 && types[0].getSourceRange().getOffset() <= offset) {

+                    boolean importAdded = !importRewrite.addImport(fullyQualifiedTypeName).equals(fullyQualifiedTypeName);

+                    if (!importAdded) {

+                    	setReplacementString(fullyQualifiedTypeName

+								+ replacementString.substring(replacementString.lastIndexOf('.')));

+                    }

+                    return importAdded;

+                }

+            }

+        }

+        return false;

+    }

+}
\ No newline at end of file
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/RequestWrapperAttributeInitializer.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/RequestWrapperAttributeInitializer.java
similarity index 90%
rename from bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/RequestWrapperAttributeInitializer.java
rename to bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/RequestWrapperAttributeInitializer.java
index e71f0c0..0d1b808 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/RequestWrapperAttributeInitializer.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/RequestWrapperAttributeInitializer.java
@@ -8,7 +8,7 @@
  * Contributors:
  *    Shane Clarke - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization;
+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;
 
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.CLASS_NAME;
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.DOT_CHARACTER;
@@ -35,7 +35,7 @@
 import org.eclipse.jst.ws.annotations.core.AnnotationsCore;
 import org.eclipse.jst.ws.annotations.core.initialization.AnnotationAttributeInitializer;
 import org.eclipse.jst.ws.annotations.core.utils.AnnotationUtils;
-import org.eclipse.jst.ws.internal.jaxws.core.JAXWSCorePlugin;
+import org.eclipse.jst.ws.internal.jaxws.ui.JAXWSUIPlugin;
 import org.eclipse.jst.ws.jaxws.core.utils.JDTUtils;
 
 public class RequestWrapperAttributeInitializer extends AnnotationAttributeInitializer {
@@ -67,7 +67,7 @@
     public List<ICompletionProposal> getCompletionProposalsForMemberValuePair(IJavaElement javaElement,
             MemberValuePair memberValuePair) {
         
-        List<ICompletionProposal> completionProposals = new ArrayList<ICompletionProposal>();
+        List<ICompletionProposal> completionProposals = new ArrayList<ICompletionProposal>(1);
         if (javaElement.getElementType() == IJavaElement.METHOD) {
             IMethod method = (IMethod) javaElement;
             IType type = method.getCompilationUnit().findPrimaryType();
@@ -75,15 +75,15 @@
             String memberValuePairName = memberValuePair.getName().getIdentifier();
 
             if (memberValuePairName.equals(CLASS_NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getClassName(type, method),
+                completionProposals.add(createCompletionProposal(getClassName(type, method),
                         memberValuePair.getValue()));
             }
             if (memberValuePairName.equals(LOCAL_NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getLocalName(type, method),
+                completionProposals.add(createCompletionProposal(getLocalName(type, method),
                         memberValuePair.getValue()));
             }
             if (memberValuePairName.equals(TARGET_NAMESPACE)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getTargetNamespace(type),
+                completionProposals.add(createCompletionProposal(getTargetNamespace(type),
                         memberValuePair.getValue()));
             }
         }
@@ -106,7 +106,7 @@
             return getPackageName(type) + methodName.substring(0, 1).toUpperCase()
                 + methodName.substring(1) + AnnotationUtils.accountForOverloadedMethods(type, method);
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+            JAXWSUIPlugin.log(jme.getStatus());
         }
         return ""; //$NON-NLS-1$
     }
@@ -122,7 +122,7 @@
             }
             return method.getElementName() + AnnotationUtils.accountForOverloadedMethods(type, method);
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return ""; //$NON-NLS-1$
     }
@@ -138,7 +138,7 @@
             }
             return JDTUtils.getTargetNamespaceFromPackageName(type.getPackageFragment().getElementName());
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return ""; //$NON-NLS-1$
     }
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/ResponseWrapperAttributeInitializer.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/ResponseWrapperAttributeInitializer.java
similarity index 88%
rename from bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/ResponseWrapperAttributeInitializer.java
rename to bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/ResponseWrapperAttributeInitializer.java
index eefe7c1..f651516 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/ResponseWrapperAttributeInitializer.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/ResponseWrapperAttributeInitializer.java
@@ -8,13 +8,11 @@
  * Contributors:
  *    Shane Clarke - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization;
+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;
 
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.OPERATION_NAME;
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.RESPONSE_SUFFIX;
 
-import java.util.Locale;
-
 import javax.jws.WebMethod;
 
 import org.eclipse.jdt.core.IAnnotation;
@@ -22,7 +20,7 @@
 import org.eclipse.jdt.core.IType;
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jst.ws.annotations.core.utils.AnnotationUtils;
-import org.eclipse.jst.ws.internal.jaxws.core.JAXWSCorePlugin;
+import org.eclipse.jst.ws.internal.jaxws.ui.JAXWSUIPlugin;
 
 public class ResponseWrapperAttributeInitializer extends RequestWrapperAttributeInitializer {
 
@@ -33,7 +31,7 @@
             return getPackageName(type) + methodName.substring(0, 1).toUpperCase()
                 + methodName.substring(1) + AnnotationUtils.accountForOverloadedMethods(type, method);
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return ""; //$NON-NLS-1$
     }
@@ -51,7 +49,7 @@
             return method.getElementName() + RESPONSE_SUFFIX 
                     + AnnotationUtils.accountForOverloadedMethods(type, method);
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return ""; //$NON-NLS-1$
     }
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/SOAPBindingAttributeInitializer.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/SOAPBindingAttributeInitializer.java
similarity index 96%
rename from bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/SOAPBindingAttributeInitializer.java
rename to bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/SOAPBindingAttributeInitializer.java
index 35c7dcb..dd1124f 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/SOAPBindingAttributeInitializer.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/SOAPBindingAttributeInitializer.java
@@ -8,7 +8,7 @@
  * Contributors:
  *    Shane Clarke - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization;
+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;
 
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.PARAMETER_STYLE;
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.STYLE;
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebMethodAttributeInitializer.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebMethodAttributeInitializer.java
similarity index 86%
rename from bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebMethodAttributeInitializer.java
rename to bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebMethodAttributeInitializer.java
index 262f720..be41d89 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebMethodAttributeInitializer.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebMethodAttributeInitializer.java
@@ -8,7 +8,7 @@
  * Contributors:
  *    Shane Clarke - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization;
+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;
 
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.ACTION;
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.OPERATION_NAME;
@@ -27,7 +27,7 @@
 import org.eclipse.jst.ws.annotations.core.AnnotationsCore;
 import org.eclipse.jst.ws.annotations.core.initialization.AnnotationAttributeInitializer;
 import org.eclipse.jst.ws.annotations.core.utils.AnnotationUtils;
-import org.eclipse.jst.ws.internal.jaxws.core.JAXWSCorePlugin;
+import org.eclipse.jst.ws.internal.jaxws.ui.JAXWSUIPlugin;
 
 public class WebMethodAttributeInitializer extends AnnotationAttributeInitializer {
     
@@ -66,13 +66,13 @@
             String memberValuePairName = memberValuePair.getName().getIdentifier();
 
             if (memberValuePairName.equals(OPERATION_NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(
-                        getOperationNameValue(type, method), memberValuePair.getValue()));
+                completionProposals.add(createCompletionProposal(getOperationNameValue(type, method), 
+                		memberValuePair.getValue()));
             }
             
             if (memberValuePairName.equals(ACTION)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(
-                        getActionValue(type, method), memberValuePair.getValue()));
+                completionProposals.add(createCompletionProposal(getActionValue(type, method),
+                		memberValuePair.getValue()));
             }
 
         }
@@ -83,7 +83,7 @@
         try {
             return method.getElementName() + AnnotationUtils.accountForOverloadedMethods(type, method);
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return ""; //$NON-NLS-1$
     }
@@ -94,7 +94,7 @@
             return "urn:" + methodName.substring(0, 1).toUpperCase()  //$NON-NLS-1$
                 + methodName.substring(1) + AnnotationUtils.accountForOverloadedMethods(type, method);
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return ""; //$NON-NLS-1$
     }
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebParamAttributeInitializer.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebParamAttributeInitializer.java
similarity index 94%
rename from bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebParamAttributeInitializer.java
rename to bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebParamAttributeInitializer.java
index 8a87ba4..c3e7601 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebParamAttributeInitializer.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebParamAttributeInitializer.java
@@ -8,7 +8,7 @@
  * Contributors:
  *    Shane Clarke - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization;
+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;
 
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.ARG;
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.HEADER;
@@ -66,17 +66,17 @@
             String memberValuePairName = memberValuePair.getName().getIdentifier();
             
             if (memberValuePairName.equals(NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getName(parameter),
-                        memberValuePair.getValue()));
+                completionProposals.add(createCompletionProposal(getName(parameter),
+                		memberValuePair.getValue()));
             }
             
             if (memberValuePairName.equals(PART_NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getPartName(parameter),
+                completionProposals.add(createCompletionProposal(getPartName(parameter),
                         memberValuePair.getValue()));
             }
             
             if (memberValuePairName.equals(TARGET_NAMESPACE)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getTargetNamespace(parameter),
+                completionProposals.add(createCompletionProposal(getTargetNamespace(parameter),
                         memberValuePair.getValue()));
             }
             
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebResultAttributeInitializer.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebResultAttributeInitializer.java
similarity index 90%
rename from bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebResultAttributeInitializer.java
rename to bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebResultAttributeInitializer.java
index 618e238..54dd7fa 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebResultAttributeInitializer.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebResultAttributeInitializer.java
@@ -8,7 +8,7 @@
  * Contributors:
  *    Shane Clarke - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization;
+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;
 
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.HEADER;
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.NAME;
@@ -40,8 +40,8 @@
 import org.eclipse.jst.ws.annotations.core.AnnotationsCore;
 import org.eclipse.jst.ws.annotations.core.initialization.AnnotationAttributeInitializer;
 import org.eclipse.jst.ws.annotations.core.utils.AnnotationUtils;
-import org.eclipse.jst.ws.internal.jaxws.core.JAXWSCorePlugin;
 import org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils;
+import org.eclipse.jst.ws.internal.jaxws.ui.JAXWSUIPlugin;
 import org.eclipse.jst.ws.jaxws.core.utils.JDTUtils;
 
 public class WebResultAttributeInitializer extends AnnotationAttributeInitializer {
@@ -72,17 +72,17 @@
             String memberValuePairName = memberValuePair.getName().getIdentifier();
 
             if (memberValuePairName.equals(NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getName(method), memberValuePair
+                completionProposals.add(createCompletionProposal(getName(method), memberValuePair
                     .getValue()));
             }
             
             if (memberValuePairName.equals(PART_NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getPartName(method),
+                completionProposals.add(createCompletionProposal(getPartName(method),
                         memberValuePair.getValue()));
             }
             
             if (memberValuePairName.equals(TARGET_NAMESPACE)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getTargetNamespace(method),
+                completionProposals.add(createCompletionProposal(getTargetNamespace(method),
                         memberValuePair.getValue()));
             }
 
@@ -107,7 +107,7 @@
                 }
             }
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return method.getElementName();
     }
@@ -123,7 +123,7 @@
                 return hasDocumentBareSOAPBinding((IType) method.getParent());
             }
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return false;
     }
@@ -138,7 +138,7 @@
                 }
             }
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return getName(method);
     }
@@ -161,7 +161,7 @@
                 return hasDocumentWrappedSOAPBinding((IType) method.getParent());
             }
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return true;
     }
@@ -176,7 +176,7 @@
                 }
             }
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return false;
     }
@@ -192,7 +192,7 @@
                 }
             }
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
 
         return JDTUtils.getTargetNamespaceFromPackageName(getPackageName(type));
diff --git a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebServiceAttributeInitializer.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebServiceAttributeInitializer.java
similarity index 88%
rename from bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebServiceAttributeInitializer.java
rename to bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebServiceAttributeInitializer.java
index 43563e1..1163586 100644
--- a/bundles/org.eclipse.jst.ws.jaxws.core/src/org/eclipse/jst/ws/internal/jaxws/core/annotations/initialization/WebServiceAttributeInitializer.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/annotations/initialization/WebServiceAttributeInitializer.java
@@ -8,7 +8,7 @@
  * Contributors:
  *    Shane Clarke - initial API and implementation
  *******************************************************************************/
-package org.eclipse.jst.ws.internal.jaxws.core.annotations.initialization;
+package org.eclipse.jst.ws.internal.jaxws.ui.annotations.initialization;
 
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.ENDPOINT_INTERFACE;
 import static org.eclipse.jst.ws.internal.jaxws.core.utils.JAXWSUtils.NAME;
@@ -34,8 +34,7 @@
 import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.jst.ws.annotations.core.AnnotationsCore;
 import org.eclipse.jst.ws.annotations.core.initialization.AnnotationAttributeInitializer;
-import org.eclipse.jst.ws.annotations.core.utils.AnnotationUtils;
-import org.eclipse.jst.ws.internal.jaxws.core.JAXWSCorePlugin;
+import org.eclipse.jst.ws.internal.jaxws.ui.JAXWSUIPlugin;
 import org.eclipse.jst.ws.jaxws.core.utils.JDTUtils;
 
 public class WebServiceAttributeInitializer extends AnnotationAttributeInitializer {
@@ -60,7 +59,6 @@
                 MemberValuePair targetNamespaceValuePair = AnnotationsCore.createStringMemberValuePair(ast, 
                         TARGET_NAMESPACE, getTargetNamespace(type));
     
-
                 if (type.isInterface()) {
                     memberValuePairs.add(nameValuePair);
                 }
@@ -72,7 +70,7 @@
                     memberValuePairs.add(serviceNameValuePair);
                 }
             } catch (JavaModelException jme) {
-                JAXWSCorePlugin.log(jme.getStatus());
+            	JAXWSUIPlugin.log(jme.getStatus());
             }
         }
         return memberValuePairs;
@@ -90,25 +88,25 @@
             if (memberValuePairName.equals(ENDPOINT_INTERFACE)) {
                 List<String> interfaces = getInterfaces(type);
                 for (String anInterface : interfaces) {
-                    completionProposals.add(AnnotationUtils.createCompletionProposal(anInterface,
+                    completionProposals.add(createCompletionProposal(anInterface,
                             memberValuePair.getValue(), JavaUI.getSharedImages().getImage(
-                                    ISharedImages.IMG_OBJS_INTERFACE)));
+                                    ISharedImages.IMG_OBJS_INTERFACE), anInterface));
                 }
             }
             if (memberValuePairName.equals(NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getName(type),
+                completionProposals.add(createCompletionProposal(getName(type),
                         memberValuePair.getValue()));
             }
             if (memberValuePairName.equals(PORT_NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getPortName(type),
+                completionProposals.add(createCompletionProposal(getPortName(type),
                         memberValuePair.getValue()));
             }
             if (memberValuePairName.equals(SERVICE_NAME)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getServiceName(type),
+                completionProposals.add(createCompletionProposal(getServiceName(type),
                         memberValuePair.getValue()));
             }
             if (memberValuePairName.equals(TARGET_NAMESPACE)) {
-                completionProposals.add(AnnotationUtils.createCompletionProposal(getTargetNamespace(type),
+                completionProposals.add(createCompletionProposal(getTargetNamespace(type),
                         memberValuePair.getValue()));
             }
         }
@@ -149,7 +147,7 @@
             }
             return interfaces;
         } catch (JavaModelException jme) {
-            JAXWSCorePlugin.log(jme.getStatus());
+        	JAXWSUIPlugin.log(jme.getStatus());
         }
         return Collections.emptyList();
     }
diff --git a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsView.java b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsView.java
index d0bb96f..dbc73eb 100755
--- a/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsView.java
+++ b/bundles/org.eclipse.jst.ws.jaxws.ui/src/org/eclipse/jst/ws/internal/jaxws/ui/views/AnnotationsView.java
@@ -165,7 +165,7 @@
         IWorkbenchPage workbenchPage = getViewSite().getWorkbenchWindow().getActivePage();
         IWorkbenchPartReference workbenchPartReference = workbenchPage.getActivePartReference();
        
-        if ( workbenchPartReference.getId().equals(getViewSite().getId()) 
+        if (workbenchPartReference == null || workbenchPartReference.getId().equals(getViewSite().getId()) 
                 || !workbenchPartReference.getId().equals(JavaUI.ID_CU_EDITOR)) {
             return;
         }