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/ExperimentalProposal.java
String replacementString= getReplacementString();
		
		try {
			LinkedPositionManager manager= new LinkedPositionManager(document);
			for (int i= 0; i != fPositionOffsets.length; i++)
				manager.addPosition(replacementOffset + fPositionOffsets[i], fPositionLengths[i]);
			
			LinkedPositionUI editor= new LinkedPositionUI(fViewer, manager);
			editor.setFinalCaretOffset(replacementOffset + replacementString.length());
			editor.enter();
			fSelectedRegion= editor.getSelectedRegion();
		} catch (BadLocationException e) {
			JavaPlugin.log(e);	
			openErrorDialog(e);
		}		
	}
	
	/**
	 * @see ICompletionProposal#getSelection(IDocument)
	 */
	public Point getSelection(IDocument document) {
		if (fSelectedRegion == null)
			return new Point(getReplacementOffset(), 0);
		return new Point(fSelectedRegion.getOffset(), fSelectedRegion.getLength());
	}
	private void openErrorDialog(BadLocationException e) {
		Shell shell= fViewer.getTextWidget().getShell();
		MessageDialog.openError(shell, TemplateMessages.getString("TemplateEvaluator.error.title"), e.getMessage()); 
	}	
}