Bug 125418 [Field Assist] - API - Should ContentProposalPopup be public?
In the initial release of the field assist API, the ContentProposalPopup is public. There's really no reason for this to be the case, as the popup is driven by the ContentProposalAdapter. The ContentProposalPopup should likely be made an inner type of the adapter.
bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
*            filter its contents based on keys typed when it is open
	 * @param acceptance
	 *            a constant indicating how an accepted proposal should affect
	 *            the control's content. Should be one of
	 *            <code>PROPOSAL_INSERT</code>, <code>PROPOSAL_REPLACE</code>,
	 *            or <code>PROPOSAL_IGNORE</code>
	 * 
	 */
	public ContentProposalAdapter(Control control,
			IControlContentAdapter controlContentAdapter,
			IContentProposalProvider proposalProvider,
			ILabelProvider labelProvider, KeyStroke keyStroke,
			char[] autoActivationCharacters, boolean propagateKeys,
			boolean filterProposals, int acceptance) {
		super();
		
		Assert.isNotNull(control);
		Assert.isNotNull(controlContentAdapter);
		this.control = control;
		this.controlContentAdapter = controlContentAdapter;
		
		this.proposalProvider = proposalProvider;
		this.labelProvider = labelProvider;
		this.triggerKeyStroke = keyStroke;
		if (autoActivationCharacters != null)
			this.autoActivateString = new String(autoActivationCharacters);
		this.propagateKeys = propagateKeys;
		this.filterProposals = filterProposals;
		this.acceptance = acceptance;
		addControlListener(control);