content: /*******************************************************************************
   * Copyright (c) 2006, 2007 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.internal.ui.viewsupport;
  
  import java.util.List;
  
  import org.eclipse.jface.action.Action;
  import org.eclipse.jface.action.IAction;
  import org.eclipse.jface.action.MenuManager;
  import org.eclipse.jface.resource.ImageDescriptor;
  import org.eclipse.swt.widgets.Shell;
  
  
  /**
   * 
   */
  public abstract class ViewHistory {
  
  	/**
  	 * Configure the history List action.
  	 * Clients typically want to set a text and an image.
  	 * 
  	 * @param action the action
  	 */
  	public abstract void configureHistoryListAction(IAction action);
  	
  	/**
  	 * Configure the history drop down action.
  	 * Clients typically want to set a tooltip and an image.
  	 * 
  	 * @param action the action
  	 */
  	public abstract void configureHistoryDropDownAction(IAction action);
  	
  	/**
  	 * @return action to clear history entries, or <code>null</code>
  	 */
  	public abstract Action getClearAction();
  
  	public abstract String getHistoryListDialogTitle();
  
  	public abstract String getHistoryListDialogMessage();
  
  	public abstract Shell getShell();
  	
  	
  	/**
  	 * @return An unmodifiable list of history entries, can be empty. The list
  	 *         is sorted by age, youngest first.
  	 */
  	public abstract List getHistoryEntries();
  	
  	/**
  	 * @return the active entry from the history
  	 */
  	public abstract Object getCurrentEntry();
  	
  	/**
  	 * @param entry the entry to activate, or <code>null</code> if none should be active
  	 */
  	public abstract void setActiveEntry(Object entry);
  	
  	/**
  	 * @param remainingEntries all the remaining history entries, can be empty
  	 * @param activeEntry the entry to activate, or <code>null</code> if none should be active
  	 */
  	public abstract void setHistoryEntries(List remainingEntries, Object activeEntry);
  	
  	/**
  	 * @param element the element to render
  	 * @return the image descriptor for the given element, or <code>null</code>
  	 */
  	public abstract ImageDescriptor getImageDescriptor(Object element);
  	
  	/**
  	 * @param element the element to render
  	 * @return the label text for the given element
  	 */
  	public abstract String getText(Object element);
  	
  	/**
  	 * @return a history drop down action, ready for inclusion in a view toolbar
  	 */
  	public final IAction createHistoryDropDownAction() {
  		return new HistoryDropDownAction(this);
  	}
  
  	public abstract void addMenuEntries(MenuManager manager);
  	
  	public abstract String getMaxEntriesMessage();
  	public abstract int getMaxEntries();
  	public abstract void setMaxEntries(int maxEntries);
  
  }
  