content: /*******************************************************************************
   * Copyright (c) 2000, 2008 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
   *******************************************************************************/
  package org.eclipse.wst.jsdt.ui.dialogs;
  
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Control;
  import org.eclipse.ui.dialogs.ISelectionStatusValidator;
  
  /**
   * The class provides API to extend type selection dialogs like the
   * open type dialog. 
   * <p>
   * The class should be subclassed by clients wishing to extend the type
   * selection dialog. 
   * </p>
   * 
   * @see org.eclipse.wst.jsdt.ui.JavaScriptUI#createTypeDialog(org.eclipse.swt.widgets.Shell, org.eclipse.jface.operation.IRunnableContext, org.eclipse.wst.jsdt.core.search.IJavaScriptSearchScope, int, boolean, String, TypeSelectionExtension)
   *
   * Provisional API: This class/interface is part of an interim API that is still under development and expected to
   * change significantly before reaching stability. It is being made available at this early stage to solicit feedback
   * from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
   * (repeatedly) as the API evolves. */
  public abstract class TypeSelectionExtension {
  	
  	private ITypeSelectionComponent fComponent;
  	
  	/**
  	 * Initializes the type dialog extension with the given type dialog
  	 * 
  	 * @param component the type dialog hosting this extension
  	 */
  	public final void initialize(ITypeSelectionComponent component) {
  		fComponent= component;
  	}
  	
  	/**
  	 * Returns the type selection dialog or <code>null</code> if
  	 * the extension has not been initialized yet.
  	 * 
  	 * @return the type selection dialog or <code>null</code>
  	 */
  	public final ITypeSelectionComponent getTypeSelectionComponent() {
  		return fComponent;
  	}
  	
  	/**
  	 * Creates the content area which the extensions contributes to the
  	 * type selection dialog. The area will be presented between the
  	 * table showing the list of types and the optional status line.
  	 * 
  	 * @param parent the parent of the additional content area
  	 * @return the additional content area or <code>null</code> if no
  	 *  additional content area is required
  	 */
  	public Control createContentArea(Composite parent) {
  		return null;
  	}
  	
  	/**
  	 * Returns the filter extension or <code>null</code> if
  	 * no additional filtering is required.
  	 * 
  	 * @return the additional filter extension
  	 */
  	public ITypeInfoFilterExtension getFilterExtension() {
  		return null;
  	}
  	
  	/**
  	 * Returns the selection validator or <code>null</code> if
  	 * selection validation is not required. The elements passed
  	 * to the selection validator are of type {@link org.eclipse.wst.jsdt.core.IType}.
  	 * 
  	 * @return the selection validator or <code>null</code>
  	 */
  	public ISelectionStatusValidator getSelectionValidator() {
  		return null;
  	}
  	
  	/**
  	 * Returns an image provider or <code>null</code> if the standard
  	 * images should be used.
  	 * 
  	 * @return the image provider
  	 */
  	public ITypeInfoImageProvider getImageProvider() {
  		return null;
  	}
  }
  