blob: 252ab31fc4707e943dccca13d5ac2171594c8996 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Red Hat 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:
* Red Hat - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.tests.gtk.snippets;
import java.util.Properties;
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
/**
* Copied and adapted from Snippet128
*
* Web-Browser that loads a static HTML page.
* Then it uses some JavaScript to modify background.
* @author lufimtse
*
*/
public class Bug430538_JS_Set_Background {
public static void main(String[] args) {
Display display = new Display();
final Shell shell = new Shell(display);
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 1;
shell.setLayout(gridLayout);
Button executeJS = new Button(shell, SWT.PUSH);
executeJS.setText("Execute JS (Red background)");
Button evauateJS = new Button(shell, SWT.PUSH);
evauateJS.setText("Evaluate JS (Green with return val)");
Button evaluateGetId = new Button(shell, SWT.PUSH);
evaluateGetId.setText("Get paragraph content");
Button execDefineMethod = new Button(shell, SWT.PUSH);
execDefineMethod.setText("Define a method");
Button execUseNewlyDefineMethod = new Button(shell, SWT.PUSH);
execUseNewlyDefineMethod.setText("Use newly defined method");
final Browser browser = new Browser(shell, SWT.WEBKIT);
GridData gd = new GridData();
gd.horizontalAlignment = GridData.FILL;
gd.verticalAlignment = GridData.FILL;
gd.grabExcessHorizontalSpace = true;
gd.grabExcessVerticalSpace = true;
browser.setLayoutData(gd);
String html = "<body>Hello<br>world</body>";
browser.setText(html);
// Append Webkit version into snippet title.
String SWT_WEBKITGTK_VERSION = "org.eclipse.swt.internal.webkitgtk.version"; //$NON-NLS-1$
Properties sp = System.getProperties();
String webkitGtkVer = sp.getProperty(SWT_WEBKITGTK_VERSION);
shell.setText("Webkit version: " + webkitGtkVer);
// EXECUTE
executeJS.addListener(SWT.MouseDown, ev -> {
String script = "document.body.style.backgroundColor = 'red'; function hullo() {return 'hi'}; hullo()";
browser.execute(script);
});
// EVALUATE << NOT EXECUTE.
evauateJS.addListener(SWT.MouseDown, ev -> {
String script = "return 1 + 2; document.body.style.backgroundColor = 'green'; function hullo() {return 'hi'}; hullo()";
String result = (String) browser.evaluate(script);
System.out.println("Java: returned: " + result);
});
evaluateGetId.addListener(SWT.MouseDown, ev -> {
String script = "function hullo() {return document.getElementById('myid').childNodes[0].nodeValue;}; hullo()";
String result = (String) browser.evaluate(script);
System.out.println("Java: returned: " + result);
});
execDefineMethod.addListener(SWT.MouseDown, ev -> {
String script = "function myNewFunc() {document.body.style.backgroundColor = 'red';return 'hello world'}";
browser.execute(script);
});
execUseNewlyDefineMethod.addListener(SWT.MouseDown, ev -> {
String script = "myNewFunc()";
browser.execute(script);
});
shell.open();
while (!shell.isDisposed ()) {
if (!display.readAndDispatch ()) display.sleep ();
}
display.dispose ();
}
}