/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.internal.ui.refactoring.contentassist; import org.eclipse.che.jdt.util.JavaModelUtil; public class JavaTypeCompletionProcessor/* extends CUPositionCompletionProcessor*/ { public static final String DUMMY_CLASS_NAME= "$$__$$"; //$NON-NLS-1$ /** * The CU name to be used if no parent ICompilationUnit is available. * The main type of this class will be filtered out from the proposals list. */ public static final String DUMMY_CU_NAME= DUMMY_CLASS_NAME + JavaModelUtil.DEFAULT_CU_SUFFIX; // /** // * Creates a <code>JavaTypeCompletionProcessor</code>. // * The completion context must be set via {@link #setPackageFragment(IPackageFragment)}. // * // * @param enableBaseTypes complete java base types iff <code>true</code> // * @param enableVoid complete <code>void</code> base type iff <code>true</code> // */ // public JavaTypeCompletionProcessor(boolean enableBaseTypes, boolean enableVoid) { // this(enableBaseTypes, enableVoid, false); // } // // /** // * Creates a <code>JavaTypeCompletionProcessor</code>. // * The completion context must be set via {@link #setPackageFragment(IPackageFragment)}. // * // * @param enableBaseTypes complete java base types iff <code>true</code> // * @param enableVoid complete <code>void</code> base type iff <code>true</code> // * @param fullyQualify always complete to fully qualifies type iff <code>true</code> // */ // public JavaTypeCompletionProcessor(boolean enableBaseTypes, boolean enableVoid, boolean fullyQualify) { // super(new TypeCompletionRequestor(enableBaseTypes, enableVoid, fullyQualify)); // } // // @Override // public char[] getCompletionProposalAutoActivationCharacters() { // // disable auto activation in dialog fields, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=89476 // return null; // } // // /** // * @param packageFragment the new completion context // */ // public void setPackageFragment(IPackageFragment packageFragment) { // //TODO: Some callers have a better completion context and should include imports // // and nested classes of their declaring CU in WC's source. // if (packageFragment == null) { // setCompletionContext(null, null, null); // } else { // String before= "public class " + DUMMY_CLASS_NAME + " { "; //$NON-NLS-1$//$NON-NLS-2$ // String after= " }"; //$NON-NLS-1$ // setCompletionContext(packageFragment.getCompilationUnit(DUMMY_CU_NAME), before, after); // } // } // // public void setExtendsCompletionContext(IJavaElement javaElement) { // if (javaElement instanceof IPackageFragment) { // IPackageFragment packageFragment= (IPackageFragment) javaElement; // ICompilationUnit cu= packageFragment.getCompilationUnit(DUMMY_CU_NAME); // setCompletionContext(cu, "public class " + DUMMY_CLASS_NAME + " extends ", " {}"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ // } else if (javaElement instanceof IType) { // // pattern: public class OuterType { public class Type extends /*caret*/ {} } // IType type= (IType) javaElement; // String before= "public class " + type.getElementName() + " extends "; //$NON-NLS-1$ //$NON-NLS-2$ // String after= " {}"; //$NON-NLS-1$ // IJavaElement parent= type.getParent(); // while (parent instanceof IType) { // type= (IType) parent; // before+= "public class " + type.getElementName() + " {"; //$NON-NLS-1$ //$NON-NLS-2$ // after+= "}"; //$NON-NLS-1$ // parent= type.getParent(); // } // ICompilationUnit cu= type.getCompilationUnit(); // setCompletionContext(cu, before, after); // } else { // setCompletionContext(null, null, null); // } // } // //// public void setImplementsCompletionContext(IPackageFragment packageFragment) { //// ICompilationUnit cu= packageFragment.getCompilationUnit(DUMMY_CU_NAME); //// setCompletionContext(cu, "public class " + DUMMY_CLASS_NAME + " implements ", " {}"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //// } // // protected static class TypeCompletionRequestor extends CUPositionCompletionRequestor { // private static final String VOID= "void"; //$NON-NLS-1$ // private static final List<String> BASE_TYPES= Arrays.asList( // new String[] {"boolean", "byte", "char", "double", "float", "int", "long", "short"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ // // private boolean fEnableBaseTypes; // private boolean fEnableVoid; // private final boolean fFullyQualify; // // public TypeCompletionRequestor(boolean enableBaseTypes, boolean enableVoid, boolean fullyQualify) { // fFullyQualify= fullyQualify; // fEnableBaseTypes= enableBaseTypes; // fEnableVoid= enableVoid; // setIgnored(CompletionProposal.ANONYMOUS_CLASS_DECLARATION, true); // setIgnored(CompletionProposal.ANONYMOUS_CLASS_CONSTRUCTOR_INVOCATION, true); // setIgnored(CompletionProposal.FIELD_REF, true); // setIgnored(CompletionProposal.FIELD_REF_WITH_CASTED_RECEIVER, true); // setIgnored(CompletionProposal.LABEL_REF, true); // setIgnored(CompletionProposal.LOCAL_VARIABLE_REF, true); // setIgnored(CompletionProposal.METHOD_DECLARATION, true); // setIgnored(CompletionProposal.METHOD_REF, true); // setIgnored(CompletionProposal.CONSTRUCTOR_INVOCATION, true); // setIgnored(CompletionProposal.METHOD_REF_WITH_CASTED_RECEIVER, true); // setIgnored(CompletionProposal.VARIABLE_DECLARATION, true); // setIgnored(CompletionProposal.POTENTIAL_METHOD_DECLARATION, true); // setIgnored(CompletionProposal.METHOD_NAME_REFERENCE, true); // } // // @Override // public void accept(CompletionProposal proposal) { // switch (proposal.getKind()) { // case CompletionProposal.PACKAGE_REF : // char[] packageName= proposal.getDeclarationSignature(); // if (TypeFilter.isFiltered(packageName)) // return; // addAdjustedCompletion( // new String(packageName), // new String(proposal.getCompletion()), // proposal.getReplaceStart(), // proposal.getReplaceEnd(), // proposal.getRelevance(), // JavaPluginImages.DESC_OBJS_PACKAGE); // return; // // case CompletionProposal.TYPE_REF : // char[] signature= proposal.getSignature(); // char[] fullName= Signature.toCharArray(signature); // if (TypeFilter.isFiltered(fullName)) // return; // StringBuffer buf= new StringBuffer(); // buf.append(Signature.getSimpleName(fullName)); // if (buf.length() == 0) // return; // this is the dummy class, whose $ have been converted to dots // char[] typeQualifier= Signature.getQualifier(fullName); // if (typeQualifier.length > 0) { // buf.append(JavaElementLabels.CONCAT_STRING); // buf.append(typeQualifier); // } // String name= buf.toString(); // // // Only fully qualify if it's a top level type: // boolean fullyQualify= fFullyQualify && CharOperation.equals(proposal.getDeclarationSignature(), typeQualifier); // // ImageDescriptor typeImageDescriptor; // switch (Signature.getTypeSignatureKind(signature)) { // case Signature.TYPE_VARIABLE_SIGNATURE : // typeImageDescriptor= JavaPluginImages.DESC_OBJS_TYPEVARIABLE; // break; // case Signature.CLASS_TYPE_SIGNATURE : // typeImageDescriptor= JavaElementImageProvider.getTypeImageDescriptor(false, false, proposal.getFlags(), false); // break; // default : // typeImageDescriptor= null; // } // // addAdjustedTypeCompletion( // name, // new String(proposal.getCompletion()), // proposal.getReplaceStart(), // proposal.getReplaceEnd(), // proposal.getRelevance(), // typeImageDescriptor, // fullyQualify ? new String(fullName) : null); // return; // // case CompletionProposal.KEYWORD: // if (! fEnableBaseTypes) // return; // String keyword= new String(proposal.getName()); // if ( (fEnableVoid && VOID.equals(keyword)) || (fEnableBaseTypes && BASE_TYPES.contains(keyword)) ) // addAdjustedCompletion( // keyword, // new String(proposal.getCompletion()), // proposal.getReplaceStart(), // proposal.getReplaceEnd(), // proposal.getRelevance(), // null); // return; // // default : // return; // } // // } // } }