Bug 4964 Automatic Code Assist needs to be smarter
Build 204 While writing SWT code, I type the following: button.dispose At this point, I do not realize that the code assist list is up because I am not looking. There are 2 items in the list now: DISPOSED int - Widget dispose() void - Widget I then type "(" because the line I was typing was supposed to be: button.dispose(); But as soon as I type the "(" then automatic code assist seems to insert whatever is selected. Since DISPOSED is first in the list and is selected, I ended up with: button.DISPOSED which isn't even close to what I want, and I have to delete it all and start again, paying more attention this time. Code assist should notice that I have typed a ( and that this matches "dispose ()" far better than "DISPOSED". Either that, or it needs to be case sensitive when it is automatically inserting stuff.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/java/AnonymousTypeCompletionProposal.java
* @see ICompletionProposalExtension#apply(IDocument, char)
	 */
	public void apply(IDocument document, char trigger) {
		try {
			String[] prefOrder= ImportOrganizePreferencePage.getImportOrderPreference();
			int threshold= ImportOrganizePreferencePage.getImportNumberThreshold();					
			fImportStructure= new ImportsStructure(fCompilationUnit, prefOrder, threshold, true);
			
			String replacementString= getReplacementString();
			
			
			StringBuffer buf= new StringBuffer();
			buf.append(replacementString);
			if (!replacementString.endsWith(")")) {
				buf.append(')');
			}	
			buf.append(" {\n");
			if (!createStubs(buf, fImportStructure)) {
				return;
			}
			buf.append("};");
			
			
			String lineDelim= StubUtility.getLineDelimiterFor(document);
			int tabWidth= CodeFormatterPreferencePage.getTabSize();
			IRegion region= document.getLineInformationOfOffset(getReplacementOffset());
			int indent= TextUtil.getIndent(document.get(region.getOffset(), region.getLength()), tabWidth);
			
			String replacement= StubUtility.codeFormat(buf.toString(), indent, lineDelim);
			replacement= TextUtil.removeLeadingWhiteSpaces(replacement);