Bug 125012 [Field Assist] Clarify lifecycle of the ILabelProvider used by ContentProposalAdapter
I20060119-0800 Clients who want to port their field content assistants from jface.text.contentassist to jface.fieldassist would expect to be able to supply an image in IContentProposal, e.g. with a 'Image getImage();' method as in ICompletionProposal. Without icons, e.g. proposals for java type names would look quite different from the ones you get in the java editor. There's also a lot more functionality in ICompletionProposal and the 4 ICompletionProposalExtension* interfaces. Some of those concepts must also be supported in fieldassist if clients such as the Find/Replace dialog and Java type completions in dialogs should switch (e.g. the additionalProposalInfo to show documentation for regex proposals, etc.). I can file separate bugs for these functionalities if you want to discuss them one by one.
bundles/org.eclipse.jface/src/org/eclipse/jface/fieldassist/ContentProposalAdapter.java
private IContentProposal[] getEmptyProposalArray() {
			return new IContentProposal[0];
		}
		/*
		 * Add a listener to the target control. We monitor key and traverse
		 * events in the target control while we are open, in order to handle
		 * traversal and navigation requests.
		 */
		private void addControlListener() {
			targetControlListener = new TargetControlListener();
			control.addListener(SWT.KeyDown, targetControlListener);
			control.addListener(SWT.Traverse, targetControlListener);
			control.addListener(SWT.Move, targetControlListener);
			control.addListener(SWT.Resize, targetControlListener);
		}
		/*
		 * Remove any listeners installed on the control.
		 */
		private void removeControlListener() {
			control.removeListener(SWT.KeyDown, targetControlListener);
			control.removeListener(SWT.Traverse, targetControlListener);
			control.removeListener(SWT.Move, targetControlListener);
			control.removeListener(SWT.Resize, targetControlListener);
		}
		/*
		 * Answer true if the popup is valid, which means the table has been
		 * created and not disposed.
		 */
		private boolean isValid() {
			return proposalTable != null && !proposalTable.isDisposed();