/*******************************************************************************
 * Copyright (c) 2004, 2006 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.ui.dynamic;

import org.eclipse.help.IContext;
import org.eclipse.ui.help.AbstractHelpUI;

/**
 * @since 3.1
 */
public class DynamicHelpSupport extends AbstractHelpUI {

	/* (non-Javadoc)
	 * @see org.eclipse.ui.help.AbstractHelpUI#displayHelp()
	 */
	public void displayHelp() {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see org.eclipse.ui.help.AbstractHelpUI#displayContext(org.eclipse.help.IContext, int, int)
	 */
	public void displayContext(IContext context, int x, int y) {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see org.eclipse.ui.help.AbstractHelpUI#displayHelpResource(java.lang.String)
	 */
	public void displayHelpResource(String href) {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see org.eclipse.ui.help.AbstractHelpUI#isContextHelpDisplayed()
	 */
	public boolean isContextHelpDisplayed() {
		// TODO Auto-generated method stub
		return false;
	}

}
