Experimenting with external browser xtrnlbrwsr
authorJaroslav Tulach <jtulach@netbeans.org>
Tue, 04 Mar 2014 08:24:11 +0100
branchxtrnlbrwsr
changeset 895a8a80e18430
parent 88 10e6f6e09811
child 96 edf8e8c4abc0
Experimenting with external browser
minesweeper/pom.xml
minesweeper/src/main/java/org/apidesign/demo/minesweeper/Main.java
minesweeper/src/main/webapp/pages/index.html
pom.xml
     1.1 --- a/minesweeper/pom.xml	Sat Feb 22 16:35:11 2014 +0100
     1.2 +++ b/minesweeper/pom.xml	Tue Mar 04 08:24:11 2014 +0100
     1.3 @@ -224,6 +224,12 @@
     1.4                    <scope>provided</scope>
     1.5                </dependency>
     1.6                <dependency>
     1.7 +                  <groupId>org.apidesign.html</groupId>
     1.8 +                  <artifactId>dlvkbrwsr</artifactId>
     1.9 +                  <version>0.2-SNAPSHOT</version>
    1.10 +                  <type>jar</type>
    1.11 +              </dependency>
    1.12 +              <dependency>
    1.13                    <groupId>org.netbeans.html</groupId>
    1.14                    <artifactId>ko-ws-tyrus</artifactId>
    1.15                    <version>${net.java.html.version}</version>
    1.16 @@ -234,12 +240,6 @@
    1.17                        </exclusion>
    1.18                    </exclusions>
    1.19                </dependency>
    1.20 -              <dependency>
    1.21 -                  <groupId>org.apidesign.html</groupId>
    1.22 -                  <artifactId>dlvkbrwsr</artifactId>
    1.23 -                  <version>0.1-SNAPSHOT</version>
    1.24 -                  <type>jar</type>
    1.25 -              </dependency>
    1.26            </dependencies>
    1.27            <build>
    1.28                <plugins>
     2.1 --- a/minesweeper/src/main/java/org/apidesign/demo/minesweeper/Main.java	Sat Feb 22 16:35:11 2014 +0100
     2.2 +++ b/minesweeper/src/main/java/org/apidesign/demo/minesweeper/Main.java	Tue Mar 04 08:24:11 2014 +0100
     2.3 @@ -23,21 +23,61 @@
     2.4   */
     2.5  package org.apidesign.demo.minesweeper;
     2.6  
     2.7 +import java.io.IOException;
     2.8 +import java.net.URI;
     2.9 +import java.util.Arrays;
    2.10 +import java.util.logging.Level;
    2.11 +import java.util.logging.Logger;
    2.12  import net.java.html.boot.BrowserBuilder;
    2.13 +import org.apidesign.html.dlvkbrwsr.XtrnlBrwsrPrsntr;
    2.14  
    2.15  
    2.16  /** Bootstrap and initialization. */
    2.17  public final class Main {
    2.18 +    private static final Logger LOG = Logger.getLogger(Main.class.getName());
    2.19      private Main() {
    2.20      }
    2.21 +
    2.22 +    static Object[] showBrwsr(URI uri, String cmd) throws IOException {
    2.23 +        LOG.log(Level.INFO, "Showing {0}", uri);
    2.24 +        if (cmd == null) {
    2.25 +            try {
    2.26 +                LOG.log(Level.INFO, "Trying Desktop.browse on {0} {2} by {1}", new Object[]{
    2.27 +                    System.getProperty("java.vm.name"),
    2.28 +                    System.getProperty("java.vm.vendor"),
    2.29 +                    System.getProperty("java.vm.version"),});
    2.30 +                java.awt.Desktop.getDesktop().browse(uri);
    2.31 +                LOG.log(Level.INFO, "Desktop.browse successfully finished");
    2.32 +                return null;
    2.33 +            } catch (UnsupportedOperationException ex) {
    2.34 +                LOG.log(Level.INFO, "Desktop.browse not supported: {0}", ex.getMessage());
    2.35 +                LOG.log(Level.FINE, null, ex);
    2.36 +            }
    2.37 +        }
    2.38 +        {
    2.39 +            String cmdName = cmd == null ? "xdg-open" : cmd;
    2.40 +            String[] cmdArr = {
    2.41 +                cmdName, uri.toString()
    2.42 +            };
    2.43 +            LOG.log(Level.INFO, "Launching {0}", Arrays.toString(cmdArr));
    2.44 +            final Process process = Runtime.getRuntime().exec(cmdArr);
    2.45 +            return new Object[]{process, null};
    2.46 +        }
    2.47 +    }
    2.48      
    2.49      /** Launches the browser */
    2.50      public static void main(String... args) throws Exception {
    2.51 -        BrowserBuilder.newBrowser().
    2.52 +        BrowserBuilder.newBrowser(new XtrnlBrwsrPrsntr() {
    2.53 +            @Override
    2.54 +            protected void showBrwsr(URI page) throws IOException {
    2.55 +                Main.showBrwsr(page, null);
    2.56 +            }
    2.57 +        }).
    2.58              loadPage("pages/index.html").
    2.59              loadClass(Main.class).
    2.60              invoke("onPageLoad", args).
    2.61              showAndWait();
    2.62 +        System.in.read();
    2.63          System.exit(0);
    2.64      }
    2.65      
     3.1 --- a/minesweeper/src/main/webapp/pages/index.html	Sat Feb 22 16:35:11 2014 +0100
     3.2 +++ b/minesweeper/src/main/webapp/pages/index.html	Tue Mar 04 08:24:11 2014 +0100
     3.3 @@ -149,6 +149,6 @@
     3.4              var vm = bck2brwsr('${project.build.finalName}.jar');
     3.5              vm.loadClass('org.apidesign.demo.minesweeper.MainBrwsr');
     3.6          </script>
     3.7 -        
     3.8 +
     3.9      </body>
    3.10  </html>
     4.1 --- a/pom.xml	Sat Feb 22 16:35:11 2014 +0100
     4.2 +++ b/pom.xml	Tue Mar 04 08:24:11 2014 +0100
     4.3 @@ -13,7 +13,7 @@
     4.4    </parent>  
     4.5    <properties>
     4.6        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     4.7 -      <net.java.html.version>0.7.5</net.java.html.version>
     4.8 +      <net.java.html.version>0.8-SNAPSHOT</net.java.html.version>
     4.9        <bck2brwsr.version>0.8.1</bck2brwsr.version>
    4.10        <license>COPYING</license>
    4.11    </properties>