/******************************************************************************* | |
* 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; | |
} | |
} |