minesweeper/src/main/java/org/apidesign/demo/minesweeper/Main.java
author Jaroslav Tulach <jtulach@netbeans.org>
Thu, 06 Mar 2014 21:58:38 +0100
branchxtrnlbrwsr
changeset 96 edf8e8c4abc0
parent 89 5a8a80e18430
child 99 ae4e3694c2d3
permissions -rw-r--r--
Enable logging, so we know what is happening during the asynchronus execution
     1 /**
     2  * The MIT License (MIT)
     3  *
     4  * Copyright (C) 2013 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     5  *
     6  * Permission is hereby granted, free of charge, to any person obtaining a copy
     7  * of this software and associated documentation files (the "Software"), to deal
     8  * in the Software without restriction, including without limitation the rights
     9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    10  * copies of the Software, and to permit persons to whom the Software is
    11  * furnished to do so, subject to the following conditions:
    12  *
    13  * The above copyright notice and this permission notice shall be included in
    14  * all copies or substantial portions of the Software.
    15  *
    16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    22  * THE SOFTWARE.
    23  */
    24 package org.apidesign.demo.minesweeper;
    25 
    26 import java.io.IOException;
    27 import java.net.URI;
    28 import java.util.Arrays;
    29 import java.util.logging.ConsoleHandler;
    30 import java.util.logging.Level;
    31 import java.util.logging.Logger;
    32 import net.java.html.boot.BrowserBuilder;
    33 import org.apidesign.html.dlvkbrwsr.XtrnlBrwsrPrsntr;
    34 
    35 
    36 /** Bootstrap and initialization. */
    37 public final class Main {
    38     private static final Logger LOG = Logger.getLogger(Main.class.getName());
    39     private Main() {
    40     }
    41 
    42     static Object[] showBrwsr(URI uri, String cmd) throws IOException {
    43         LOG.log(Level.INFO, "Showing {0}", uri);
    44         if (cmd == null) {
    45             try {
    46                 LOG.log(Level.INFO, "Trying Desktop.browse on {0} {2} by {1}", new Object[]{
    47                     System.getProperty("java.vm.name"),
    48                     System.getProperty("java.vm.vendor"),
    49                     System.getProperty("java.vm.version"),});
    50                 java.awt.Desktop.getDesktop().browse(uri);
    51                 LOG.log(Level.INFO, "Desktop.browse successfully finished");
    52                 return null;
    53             } catch (UnsupportedOperationException ex) {
    54                 LOG.log(Level.INFO, "Desktop.browse not supported: {0}", ex.getMessage());
    55                 LOG.log(Level.FINE, null, ex);
    56             }
    57         }
    58         {
    59             String cmdName = cmd == null ? "xdg-open" : cmd;
    60             String[] cmdArr = {
    61                 cmdName, uri.toString()
    62             };
    63             LOG.log(Level.INFO, "Launching {0}", Arrays.toString(cmdArr));
    64             final Process process = Runtime.getRuntime().exec(cmdArr);
    65             return new Object[]{process, null};
    66         }
    67     }
    68     
    69     /** Launches the browser */
    70     public static void main(String... args) throws Exception {
    71         Logger l = Logger.getLogger("org.apidesign.html.dlvkbrwsr");
    72         l.setLevel(Level.ALL);
    73         ConsoleHandler ch = new ConsoleHandler();
    74         ch.setLevel(Level.ALL);
    75         l.addHandler(ch);
    76         
    77         
    78         BrowserBuilder.newBrowser(new XtrnlBrwsrPrsntr() {
    79             @Override
    80             protected void showBrwsr(URI page) throws IOException {
    81                 Main.showBrwsr(page, null);
    82             }
    83         }).
    84             loadPage("pages/index.html").
    85             loadClass(Main.class).
    86             invoke("onPageLoad", args).
    87             showAndWait();
    88         System.in.read();
    89         System.exit(0);
    90     }
    91     
    92     /** Called when page is ready */
    93     public static void onPageLoad(String... args) throws Exception {
    94         Mines m = new Mines();
    95         m.applyBindings();
    96     }
    97 }