minesweeper/src/main/java/org/apidesign/demo/minesweeper/Main.java
author Jaroslav Tulach <jtulach@netbeans.org>
Tue, 11 Mar 2014 18:44:57 +0100
branchxtrnlbrwsr
changeset 103 60c37de4163a
parent 99 ae4e3694c2d3
permissions -rw-r--r--
Adding dependency on XtrnlBrwsrPrsntr
     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.brwsr.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         /*
    72         Logger l = Logger.getLogger("org.apidesign.html.dlvkbrwsr");
    73         l.setLevel(Level.ALL);
    74         l.setUseParentHandlers(false);
    75         ConsoleHandler ch = new ConsoleHandler();
    76         ch.setLevel(Level.ALL);
    77         l.addHandler(ch);
    78         */
    79         
    80         
    81         BrowserBuilder.newBrowser(new XtrnlBrwsrPrsntr() {
    82             @Override
    83             protected void showBrwsr(URI page) throws IOException {
    84                 Main.showBrwsr(page, null);
    85             }
    86         }).
    87             loadPage("pages/index.html").
    88             loadClass(Main.class).
    89             invoke("onPageLoad", args).
    90             showAndWait();
    91         System.in.read();
    92         System.exit(0);
    93     }
    94     
    95     /** Called when page is ready */
    96     public static void onPageLoad(String... args) throws Exception {
    97         Mines m = new Mines();
    98         m.applyBindings();
    99     }
   100 }