minesweeper/src/main/java/org/apidesign/demo/minesweeper/IBrwsrPrsntr.java
author Jaroslav Tulach <jtulach@netbeans.org>
Mon, 10 Mar 2014 12:56:48 +0100
branchibrwsr
changeset 101 5ef40158eb9c
permissions -rw-r--r--
Can play minesweeper on iPad
     1 package org.apidesign.demo.minesweeper;
     2 
     3 import java.io.IOException;
     4 import java.net.URI;
     5 import java.util.logging.Logger;
     6 import org.apidesign.html.brwsr.XtrnlBrwsrPrsntr;
     7 import org.robovm.cocoatouch.foundation.NSURL;
     8 import org.robovm.cocoatouch.uikit.UIWebView;
     9 import org.robovm.objc.ObjCBlock;
    10 import org.robovm.objc.block.VoidBlock;
    11 import org.robovm.rt.bro.Bro;
    12 import org.robovm.rt.bro.NativeObject;
    13 import org.robovm.rt.bro.annotation.Bridge;
    14 import org.robovm.rt.bro.annotation.Library;
    15 
    16 /**
    17  *
    18  * @author jtulach
    19  */
    20 @Library("dispatch")    
    21 final class IBrwsrPrsntr extends XtrnlBrwsrPrsntr {
    22     private final UIWebView wv;
    23     
    24     static {
    25         Bro.bind();
    26     }
    27 
    28     public static class Queue extends NativeObject {
    29     }
    30 
    31     @Bridge(symbol = "dispatch_get_current_queue")
    32     public static native Queue getMainQueue();
    33 
    34     @Bridge(symbol = "dispatch_async")
    35     public static native void async(Queue queue, ObjCBlock block);
    36 
    37     public IBrwsrPrsntr(UIWebView wv) throws Exception {
    38         this.wv = wv;
    39     }
    40 
    41     @Override
    42     public void runSafe(final Runnable r) {
    43         VoidBlock vb = new VoidBlock() {
    44             @Override
    45             public void invoke() {
    46                 r.run();
    47             }
    48         };
    49         ObjCBlock ocb = VoidBlock.Marshaler.toObjCBlock(vb);
    50         async(getMainQueue(), ocb);
    51     }
    52     
    53     @Override
    54     protected void showBrwsr(URI page) throws IOException {
    55         wv.loadRequest(Foo.requestWithURL(new NSURL(page.toString())));
    56     }
    57     private static final Logger LOG = Logger.getLogger(IBrwsrPrsntr.class.getName());
    58     
    59 }