1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/minesweeper/src/main/java/org/apidesign/demo/minesweeper/IBrwsrPrsntr.java Mon Mar 10 12:56:48 2014 +0100
1.3 @@ -0,0 +1,59 @@
1.4 +package org.apidesign.demo.minesweeper;
1.5 +
1.6 +import java.io.IOException;
1.7 +import java.net.URI;
1.8 +import java.util.logging.Logger;
1.9 +import org.apidesign.html.brwsr.XtrnlBrwsrPrsntr;
1.10 +import org.robovm.cocoatouch.foundation.NSURL;
1.11 +import org.robovm.cocoatouch.uikit.UIWebView;
1.12 +import org.robovm.objc.ObjCBlock;
1.13 +import org.robovm.objc.block.VoidBlock;
1.14 +import org.robovm.rt.bro.Bro;
1.15 +import org.robovm.rt.bro.NativeObject;
1.16 +import org.robovm.rt.bro.annotation.Bridge;
1.17 +import org.robovm.rt.bro.annotation.Library;
1.18 +
1.19 +/**
1.20 + *
1.21 + * @author jtulach
1.22 + */
1.23 +@Library("dispatch")
1.24 +final class IBrwsrPrsntr extends XtrnlBrwsrPrsntr {
1.25 + private final UIWebView wv;
1.26 +
1.27 + static {
1.28 + Bro.bind();
1.29 + }
1.30 +
1.31 + public static class Queue extends NativeObject {
1.32 + }
1.33 +
1.34 + @Bridge(symbol = "dispatch_get_current_queue")
1.35 + public static native Queue getMainQueue();
1.36 +
1.37 + @Bridge(symbol = "dispatch_async")
1.38 + public static native void async(Queue queue, ObjCBlock block);
1.39 +
1.40 + public IBrwsrPrsntr(UIWebView wv) throws Exception {
1.41 + this.wv = wv;
1.42 + }
1.43 +
1.44 + @Override
1.45 + public void runSafe(final Runnable r) {
1.46 + VoidBlock vb = new VoidBlock() {
1.47 + @Override
1.48 + public void invoke() {
1.49 + r.run();
1.50 + }
1.51 + };
1.52 + ObjCBlock ocb = VoidBlock.Marshaler.toObjCBlock(vb);
1.53 + async(getMainQueue(), ocb);
1.54 + }
1.55 +
1.56 + @Override
1.57 + protected void showBrwsr(URI page) throws IOException {
1.58 + wv.loadRequest(Foo.requestWithURL(new NSURL(page.toString())));
1.59 + }
1.60 + private static final Logger LOG = Logger.getLogger(IBrwsrPrsntr.class.getName());
1.61 +
1.62 +}