1 package org.apidesign.demo.minesweeper;
3 import java.io.IOException;
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;
21 final class IBrwsrPrsntr extends XtrnlBrwsrPrsntr {
22 private final UIWebView wv;
28 public static class Queue extends NativeObject {
31 @Bridge(symbol = "dispatch_get_current_queue")
32 public static native Queue getMainQueue();
34 @Bridge(symbol = "dispatch_async")
35 public static native void async(Queue queue, ObjCBlock block);
37 public IBrwsrPrsntr(UIWebView wv) throws Exception {
42 public void runSafe(final Runnable r) {
43 VoidBlock vb = new VoidBlock() {
45 public void invoke() {
49 ObjCBlock ocb = VoidBlock.Marshaler.toObjCBlock(vb);
50 async(getMainQueue(), ocb);
54 protected void showBrwsr(URI page) throws IOException {
55 wv.loadRequest(Foo.requestWithURL(new NSURL(page.toString())));
57 private static final Logger LOG = Logger.getLogger(IBrwsrPrsntr.class.getName());