<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--

/******************************************************************************
 * Copyright (c) 2004, 2005 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    IBM Corporation - initial API and implementation 
 ****************************************************************************/

-->
</head>
<body>

<P>Provides a framework to support content assist.
The {@link org.eclipse.gmf.runtime.common.ui.contentassist.ContentAssistantHelper
ContentAssistantHelper} class provides convenience methods to instantiate a
{@link org.eclipse.ui.contentassist.ContentAssistHandler ContentAssistHandler}.
The {@link org.eclipse.gmf.runtime.common.ui.contentassist.TextPresenter
TextPresenter} class subclasses
{@link org.eclipse.jface.text.DefaultInformationControl.IInformationPresenter
IInformationPresenter} to support boldface display of text.
</P>

<h2>Using this Package</h2>
<P>Use the convenience methods from
{@link org.eclipse.gmf.runtime.common.ui.contentassist.ContentAssistantHelper
ContentAssistantHelper} to instantiate a
{@link org.eclipse.ui.contentassist.ContentAssistHandler ContentAssistHandler}.
It uses {@link org.eclipse.gmf.runtime.common.ui.contentassist.TextPresenter
TextPresenter} to support boldface text.</P>

<h2>Package Specification</h2>

<P>For more information, please see
{@link org.eclipse.ui.contentassist.ContentAssistHandler ContentAssistHandler}
and {@link org.eclipse.jface.text.IInformationControl IInformationControl}.</P>

@canBeSeenBy %partners
</body>
</html>