/*******************************************************************************
 * Copyright (c) 2018 vogella GmbH
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v20.html
 *
 * Contributors:
 *     simon.scholz@vogella.com - initial API and implementation
 *******************************************************************************/
package org.eclipse.tips.ui;

import java.util.Map;
import java.util.function.Function;

import org.eclipse.swt.browser.BrowserFunction;
import org.eclipse.tips.core.IHtmlTip;
import org.eclipse.tips.core.IUrlTip;

/**
 * This interface is intended to be implemented by {@link IHtmlTip} or
 * {@link IUrlTip} instances to provide Java functions that can be invoked from
 * within an SWT browser.
 *
 * @see IHtmlTip
 * @see IUrlTip
 * @see BrowserFunction
 */
public interface IBrowserFunctionProvider {

	/**
	 * Provides a map with functions which can be invoked by JavaScript code
	 * provided by an {@link IHtmlTip} or {@link IUrlTip}.
	 *
	 * @return a {@link Map} containing names for a JavaScript function as key and
	 *         {@link Function} objects, which can be invoked from the JavaScript in
	 *         a SWT Browser.
	 *
	 * @see BrowserFunction
	 */
	Map<String, Function<Object[], Object>> getBrowserFunctions();
}
