Bug 164529 [FieldAssist] Provide the ability to listen to start and end field assist events
In the previous content assist functionality, an ICompletionListener could be specified to listen to the following events: public void assistSessionEnded(ContentAssistEvent event) public void assistSessionStarted(ContentAssistEvent event) The equivalent listener, IContentProposalListener, does not listen to those two events. PDE needs to know when an assist session is ended in order to reset the state it maintains for custom filtering of java type results. The current event does not handle the case where the user ends the content assist without selecting a proposal: public void proposalAccepted(IContentProposal proposal);
bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
sb.append(" - e: keyCode=" + e.keyCode + hex(e.keyCode)); 
				sb.append("; character=" + e.character + hex(e.character)); 
				sb.append("; stateMask=" + e.stateMask + hex(e.stateMask)); 
				sb.append("; doit=" + e.doit); 
				sb.append("; detail=" + e.detail + hex(e.detail)); 
				sb.append("; widget=" + e.widget); 
				System.out.println(sb);
			}
			private String hex(int i) {
				return "[0x" + Integer.toHexString(i) + ']'; 
			}
		};
		control.addListener(SWT.KeyDown, controlListener);
		control.addListener(SWT.Traverse, controlListener);
		control.addListener(SWT.Modify, controlListener);
		if (DEBUG) {
			System.out
					.println("ContentProposalAdapter#installControlListener() - installed"); 
		}
	}
	/**
	 * Open the proposal popup and display the proposals provided by the
	 * proposal provider. If there are no proposals to be shown, do not show the
	 * popup. This method returns immediately. That is, it does not wait for the
	 * popup to open or a proposal to be selected.
	 * 
	 * @param autoActivated
	 *            a boolean indicating whether the popup was autoactivated. If
	 *            false, a beep will sound when no proposals can be shown.
	 */