blob: 3bfa87410068a8548aedf653abd70afbf6909ae6 [file] [log] [blame]
/*******************************************************************************
* 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.examples.browserfunction;
import java.util.Collections;
import java.util.Date;
import java.util.Map;
import java.util.function.Function;
import org.eclipse.core.commands.ParameterizedCommand;
import org.eclipse.e4.core.commands.ECommandService;
import org.eclipse.e4.core.commands.EHandlerService;
import org.eclipse.swt.widgets.Display;
import org.eclipse.tips.core.IHtmlTip;
import org.eclipse.tips.core.Tip;
import org.eclipse.tips.core.TipImage;
import org.eclipse.tips.examples.DateUtil;
import org.eclipse.tips.ui.IBrowserFunctionProvider;
import org.eclipse.ui.PlatformUI;
@SuppressWarnings("restriction")
public class BrowserFunctionTip extends Tip implements IHtmlTip, IBrowserFunctionProvider {
public BrowserFunctionTip(String providerId) {
super(providerId);
}
@Override
public Map<String, Function<Object[], Object>> getBrowserFunctions() {
return Collections.singletonMap("openPreferencesBrowserFunction", this::openPreferences);
}
@Override
public String getHTML() {
return "<html><head><title>IHtmlTip with IBrowserFunctionProvider</title></head>"
+ "<body><p>This tip shows HTML and provides a BrowserFunction, which can be invoked by using JavaScript.</p>"
+ "<p><button onclick=\"openPreferencesBrowserFunction()\">I gonna open the preferences from the Browser</button></p></body></html>"
+ "<p><a href=\"#\" onclick=\"openPreferencesBrowserFunction()\">I do the same but with a link</a></p></body></html>";
}
@Override
public TipImage getImage() {
return null;
}
@Override
public Date getCreationDate() {
return DateUtil.getDateFromYYMMDD("25/06/2018");
}
@Override
public String getSubject() {
return "This is an IHtmlTip, which also implements IBrowserFunctionProvider";
}
private Object openPreferences(Object[] args) {
ECommandService commandService = PlatformUI.getWorkbench().getService(ECommandService.class);
EHandlerService handlerService = PlatformUI.getWorkbench().getService(EHandlerService.class);
ParameterizedCommand command = commandService.createCommand("org.eclipse.ui.window.preferences",
Collections.singletonMap("preferencePageId", "org.eclipse.ui.preferencePages.Keys"));
Display.getDefault().asyncExec(() -> {
handlerService.executeHandler(command);
});
return null;
}
}