ko/kosample/js/src/main/java/org/apidesign/bck2brwsr/kosample/js/Dialogs.java
changeset 1941 621825e167d7
child 1947 12a252145892
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/ko/kosample/js/src/main/java/org/apidesign/bck2brwsr/kosample/js/Dialogs.java	Tue Apr 26 08:04:12 2016 +0200
     1.3 @@ -0,0 +1,57 @@
     1.4 +/**
     1.5 + * Back 2 Browser Bytecode Translator
     1.6 + * Copyright (C) 2012-2015 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     1.7 + *
     1.8 + * This program is free software: you can redistribute it and/or modify
     1.9 + * it under the terms of the GNU General Public License as published by
    1.10 + * the Free Software Foundation, version 2 of the License.
    1.11 + *
    1.12 + * This program is distributed in the hope that it will be useful,
    1.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
    1.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1.15 + * GNU General Public License for more details.
    1.16 + *
    1.17 + * You should have received a copy of the GNU General Public License
    1.18 + * along with this program. Look for COPYING file in the top folder.
    1.19 + * If not, see http://opensource.org/licenses/GPL-2.0.
    1.20 + */
    1.21 +package org.apidesign.bck2brwsr.kosample.js;
    1.22 +
    1.23 +import net.java.html.js.JavaScriptBody;
    1.24 +
    1.25 +/** Use {@link JavaScriptBody} annotation on methods to
    1.26 + * directly interact with JavaScript. See
    1.27 + * http://bits.netbeans.org/html+java/1.2/net/java/html/js/package-summary.html
    1.28 + * to understand how.
    1.29 + */
    1.30 +public final class Dialogs {
    1.31 +    private Dialogs() {
    1.32 +    }
    1.33 +    
    1.34 +    /** Shows confirmation dialog to the user.
    1.35 +     * 
    1.36 +     * @param msg the message
    1.37 +     * @param callback called back when the use accepts (can be null)
    1.38 +     */
    1.39 +    @JavaScriptBody(
    1.40 +        args = { "msg", "callback" }, 
    1.41 +        javacall = true, 
    1.42 +        body = "if (confirm(msg)) {\n"
    1.43 +             + "  callback.@java.lang.Runnable::run()();\n"
    1.44 +             + "}\n"
    1.45 +    )
    1.46 +    public static native void confirmByUser(String msg, Runnable callback);
    1.47 +    
    1.48 +    @JavaScriptBody(
    1.49 +        args = {}, body = 
    1.50 +        "var w = window,\n" +
    1.51 +        "    d = document,\n" +
    1.52 +        "    e = d.documentElement,\n" +
    1.53 +        "    g = d.getElementsByTagName('body')[0],\n" +
    1.54 +        "    x = w.innerWidth || e.clientWidth || g.clientWidth,\n" +
    1.55 +        "    y = w.innerHeight|| e.clientHeight|| g.clientHeight;\n" +
    1.56 +        "\n" +
    1.57 +        "return 'Screen size is ' + x + ' times ' + y;\n"
    1.58 +    )
    1.59 +    public static native String screenSize();
    1.60 +}