diff options
Diffstat (limited to 'tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug510905_Browser_JsConsole.java')
-rw-r--r-- | tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug510905_Browser_JsConsole.java | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug510905_Browser_JsConsole.java b/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug510905_Browser_JsConsole.java new file mode 100644 index 0000000000..4707f51c11 --- /dev/null +++ b/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/snippets/Bug510905_Browser_JsConsole.java @@ -0,0 +1,125 @@ +/******************************************************************************* + * Copyright (c) 2018 Red Hat and others. All rights reserved. + * The contents of this file are made available under the terms + * of the GNU Lesser General Public License (LGPL) Version 2.1 that + * accompanies this distribution (lgpl-v21.txt). The LGPL is also + * available at http://www.gnu.org/licenses/lgpl.html. If the version + * of the LGPL at http://www.gnu.org is different to the version of + * the LGPL accompanying this distribution and there is any conflict + * between the two license versions, the terms of the LGPL accompanying + * this distribution shall govern. + * + * Contributors: + * Red Hat - initial API and implementation + *******************************************************************************/ +package org.eclipse.swt.tests.gtk.snippets; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.browser.Browser; +import org.eclipse.swt.browser.BrowserFunction; +import org.eclipse.swt.events.KeyAdapter; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +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; +import org.eclipse.swt.widgets.Text; + +/* + * Title: [GTK3][Webkit2] Implement webkit2 support for browser function (Part 2: Java return a value from callback.) + * How to run: Snippet to execute javascript via input prompt, to test Browser Func return value ability. + * Bug description: + * Expected results: + * GTK Version(s): + */ +public class Bug510905_Browser_JsConsole { + + static int count = 0; + + public static void main(String[] args) { + Display display = new Display(); + Shell shell = new Shell(display); + shell.setSize(500, 600); + + GridLayout gridLayout = new GridLayout(); + shell.setLayout(gridLayout); + + final Text jsConsole = new Text(shell, SWT.BORDER); +// jsConsole.setText("document.body.innerHTML = theJavaFunction(123, 'hello', null, true)"); + jsConsole.setText("document.body.innerHTML = theJavaFunction()"); // Case where there are no paramaters. + jsConsole.setSelection(jsConsole.getText().length()); + GridData data = new GridData(SWT.FILL, SWT.BEGINNING, true, false); + jsConsole.setLayoutData(data); + + final Browser browser = new Browser(shell, SWT.NONE); + browser.setText("hello <b>world!</b>"); + data = new GridData(SWT.FILL, SWT.FILL, true, true); + browser.setLayoutData(data); + + jsConsole.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + if (e.keyCode == 13) { // 13 = Enter + browser.execute(jsConsole.getText()); + } + } + }); + + Button loadNewPage = new Button(shell, SWT.PUSH); + loadNewPage.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false)); + loadNewPage.setText("Load new Page"); + loadNewPage.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + browser.setText("New page!" + count++); + } + }); + + + // BrowserFunction Code + @SuppressWarnings("unused") + final BrowserFunction function = new CustomFunction (browser, "theJavaFunction"); + + shell.open(); + while (!shell.isDisposed()) { + if (!display.readAndDispatch()) + display.sleep(); + } + display.dispose(); + } + + static class CustomFunction extends BrowserFunction { // copied from snippet 307 + CustomFunction (Browser browser, String name) { + super (browser, name); + } + @Override + public Object function (Object[] arguments) { + System.out.println ("theJavaFunction() called from javascript with args:"); + for (int i = 0; i < arguments.length; i++) { + Object arg = arguments[i]; + if (arg == null) { + System.out.println ("\t-->null"); + } else { + System.out.println ("\t-->" + arg.getClass ().getName () + ": " + arg.toString ()); + } + } + return arguments; +// return new Point(1, 2); + +// Object returnValue = new Object[] { +// new Short ((short)3), +// new Boolean (true), +// null, +// new Object[] {"a string", new Boolean (false)}, +// "hi", +// new Float (2.0f / 3.0f), +// }; +// return returnValue; + +// return new Double(42.0); + } + } +} |