]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixing / refactoring launch files. Removed unneccessary launch file (DesktoP)
authorJani Laakso <jani.laakso@itmill.com>
Mon, 5 Nov 2007 09:36:16 +0000 (09:36 +0000)
committerJani Laakso <jani.laakso@itmill.com>
Mon, 5 Nov 2007 09:36:16 +0000 (09:36 +0000)
svn changeset:2709/svn branch:trunk

src/com/itmill/toolkit/launcher/BrowserLauncher.java [deleted file]
src/com/itmill/toolkit/launcher/ITMillDesktopLaunch.java [deleted file]
src/com/itmill/toolkit/launcher/ITMillHostedLaunch.java [deleted file]
src/com/itmill/toolkit/launcher/ITMillStandardLaunch.java [deleted file]
src/com/itmill/toolkit/launcher/ITMillToolkitHostedMode.java [new file with mode: 0644]
src/com/itmill/toolkit/launcher/ITMillToolkitWebMode.java [new file with mode: 0644]
src/com/itmill/toolkit/launcher/ITMillWebModeLaunch.java [deleted file]
src/com/itmill/toolkit/launcher/util/BrowserLauncher.java [new file with mode: 0644]

diff --git a/src/com/itmill/toolkit/launcher/BrowserLauncher.java b/src/com/itmill/toolkit/launcher/BrowserLauncher.java
deleted file mode 100644 (file)
index 082f93e..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.itmill.toolkit.launcher;\r
-\r
-import java.io.IOException;\r
-\r
-/**\r
- * This class opens default browser for ITMillDesktopLaunch class. Default\r
- * browser is detected by the operating system.\r
- * \r
- */\r
-public class BrowserLauncher {\r
-\r
-       /**\r
-        * Open browser on specified URL.\r
-        * \r
-        * @param url\r
-        */\r
-       public static void openBrowser(String url) {\r
-\r
-               Runtime runtime = Runtime.getRuntime();\r
-               boolean started = false;\r
-\r
-               String os = System.getProperty("os.name", "windows").toLowerCase();\r
-\r
-               // Linux\r
-               if (os.indexOf("linux") >= 0) {\r
-\r
-                       // Try x-www-browser\r
-                       if (!started) {\r
-                               try {\r
-                                       runtime.exec("x-www-browser " + url);\r
-                                       started = true;\r
-                               } catch (IOException e) {\r
-                               }\r
-                       }\r
-\r
-                       // Try firefox\r
-                       if (!started) {\r
-                               try {\r
-                                       runtime.exec("firefox " + url);\r
-                                       started = true;\r
-                               } catch (IOException e) {\r
-                               }\r
-                       }\r
-\r
-                       // Try mozilla\r
-                       if (!started) {\r
-                               try {\r
-                                       runtime.exec("mozilla " + url);\r
-                                       started = true;\r
-                               } catch (IOException e) {\r
-                               }\r
-                       }\r
-\r
-                       // Try konqueror\r
-                       if (!started) {\r
-                               try {\r
-                                       runtime.exec("konqueror " + url);\r
-                                       started = true;\r
-                               } catch (IOException e) {\r
-                               }\r
-                       }\r
-               }\r
-\r
-               // OS X\r
-               if (os.indexOf("mac os x") >= 0) {\r
-\r
-                       // Try open\r
-                       if (!started) {\r
-                               try {\r
-                                       runtime.exec("open " + url);\r
-                                       started = true;\r
-                               } catch (IOException e) {\r
-                               }\r
-                       }\r
-               }\r
-\r
-               // Try cmd /start command on windows\r
-               if (os.indexOf("win") >= 0) {\r
-                       if (!started) {\r
-                               try {\r
-                                       runtime.exec("cmd /c start " + url);\r
-                                       started = true;\r
-                               } catch (IOException e) {\r
-                               }\r
-                       }\r
-               }\r
-\r
-               if (!started)\r
-                       System.out.println("Failed to open browser. Please go to " + url);\r
-       }\r
-\r
-}\r
diff --git a/src/com/itmill/toolkit/launcher/ITMillDesktopLaunch.java b/src/com/itmill/toolkit/launcher/ITMillDesktopLaunch.java
deleted file mode 100644 (file)
index 396ea40..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-package com.itmill.toolkit.launcher;\r
-\r
-import java.awt.FlowLayout;\r
-import java.awt.Rectangle;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
-import java.awt.event.MouseAdapter;\r
-import java.awt.event.MouseEvent;\r
-import java.awt.event.WindowAdapter;\r
-import java.awt.event.WindowEvent;\r
-import java.io.File;\r
-import java.io.FileOutputStream;\r
-import java.io.IOException;\r
-import java.io.InputStream;\r
-import java.io.OutputStream;\r
-import java.util.Map;\r
-\r
-import javax.swing.JButton;\r
-import javax.swing.JFrame;\r
-import javax.swing.JLabel;\r
-import javax.swing.JPanel;\r
-\r
-/**\r
- * This class starts servlet container and opens a simple control dialog.\r
- * \r
- */\r
-public class ITMillDesktopLaunch {\r
-\r
-       public static void main(String[] args) {\r
-\r
-               Map serverArgs = ITMillWebModeLaunch.parseArguments(args);\r
-               boolean deployed = false;\r
-               try {\r
-                       // Default deployment: embedded.war\r
-                       deployed = deployEmbeddedWarfile(serverArgs);\r
-               } catch (IOException e1) {\r
-                       e1.printStackTrace();\r
-                       deployed = false;\r
-               }\r
-\r
-               // Check if deployment was succesful\r
-               if (!deployed && !serverArgs.containsKey("webroot")) {\r
-                       // Default deployment failed, try other means\r
-                       if (new File("WebContent").exists()) {\r
-                               // Using WebContent directory as webroot\r
-                               serverArgs.put("webroot", "WebContent");\r
-                       } else {\r
-                               System.err.print("Failed to deploy Toolkit application. "\r
-                                               + "Please add --webroot parameter. Exiting.");\r
-                               return;\r
-                       }\r
-               }\r
-\r
-               // Start the Winstone servlet container\r
-               String url = ITMillWebModeLaunch.runServer(serverArgs);\r
-\r
-               // Open browser into application URL\r
-               if (url != null) {\r
-                       BrowserLauncher.openBrowser(url);\r
-               }\r
-\r
-               // Open control dialog\r
-               if (url != null) {\r
-                       openServerControlDialog(url);\r
-               }\r
-\r
-       }\r
-\r
-       /**\r
-        * Open a control dialog for embedded server.\r
-        * \r
-        * @param applicationUrl\r
-        *            Application URL\r
-        */\r
-       private static void openServerControlDialog(final String applicationUrl) {\r
-\r
-               // Main frame\r
-               final String title = "Desktop Server";\r
-               final JFrame frame = new JFrame(title);\r
-               frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);\r
-\r
-               // Create link label and listen mouse click\r
-               final JLabel link = new JLabel("<html>"\r
-                               + "<center>Desktop Server is running at: <br>" + "<a href=\""\r
-                               + applicationUrl + "\">" + applicationUrl\r
-                               + "</a><br>Close this window to shutdown the server.</center>"\r
-                               + "</html>");\r
-               link.addMouseListener(new MouseAdapter() {\r
-                       public void mouseClicked(MouseEvent e) {\r
-                               BrowserLauncher.openBrowser(applicationUrl);\r
-                       }\r
-               });\r
-\r
-               // Create a panel and add components to it.\r
-               final JPanel contentPane = new JPanel(new FlowLayout());\r
-               frame.setContentPane(contentPane);\r
-               contentPane.add(link);\r
-\r
-               // Close confirmation\r
-               final JLabel question = new JLabel(\r
-                               "This will stop the server. Are you sure?");\r
-               final JButton okButton = new JButton("OK");\r
-               final JButton cancelButton = new JButton("Cancel");\r
-\r
-               // List for close verify buttons\r
-               ActionListener buttonListener = new ActionListener() {\r
-                       public void actionPerformed(ActionEvent e) {\r
-                               if (e.getSource() == okButton) {\r
-                                       System.exit(0);\r
-                               } else {\r
-                                       Rectangle bounds = frame.getBounds();\r
-                                       frame.setTitle(title);\r
-                                       contentPane.removeAll();\r
-                                       contentPane.add(link);\r
-                                       contentPane.setBounds(bounds);\r
-                                       frame.setBounds(bounds);\r
-                                       frame.setVisible(true);\r
-                                       frame.repaint();\r
-                               }\r
-                       }\r
-               };\r
-               okButton.addActionListener(buttonListener);\r
-               cancelButton.addActionListener(buttonListener);\r
-\r
-               frame.addWindowListener(new WindowAdapter() {\r
-                       public void windowClosing(WindowEvent e) {\r
-                               Rectangle bounds = frame.getBounds();\r
-                               frame.setTitle("Confirm close");\r
-                               contentPane.removeAll();\r
-                               contentPane.add(question);\r
-                               contentPane.add(okButton);\r
-                               contentPane.add(cancelButton);\r
-                               frame.setBounds(bounds);\r
-                               frame.setVisible(true);\r
-                               frame.repaint();\r
-                       }\r
-               });\r
-\r
-               // Position the window nicely\r
-               java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit()\r
-                               .getScreenSize();\r
-               int w = 270;\r
-               int h = 95;\r
-               int margin = 20;\r
-               frame.setBounds(new Rectangle(screenSize.width - w - margin,\r
-                               screenSize.height - h - margin * 2, w, h));\r
-               frame.toFront();\r
-               frame.setVisible(true);\r
-       }\r
-\r
-       /**\r
-        * Deploy file named "embedded.war" from classpath (inside jar file).\r
-        * \r
-        * @param args\r
-        * @return\r
-        * @throws IOException\r
-        */\r
-       protected static boolean deployEmbeddedWarfile(Map args) throws IOException {\r
-               String embeddedWarfileName = "/embedded.war";\r
-               InputStream embeddedWarfile = ITMillDesktopLaunch.class\r
-                               .getResourceAsStream(embeddedWarfileName);\r
-               if (embeddedWarfile != null) {\r
-                       File tempWarfile = File.createTempFile("embedded", ".war")\r
-                                       .getAbsoluteFile();\r
-                       tempWarfile.getParentFile().mkdirs();\r
-                       tempWarfile.deleteOnExit();\r
-\r
-                       String embeddedWebroot = "winstoneEmbeddedWAR";\r
-                       File tempWebroot = new File(tempWarfile.getParentFile(),\r
-                                       embeddedWebroot);\r
-                       tempWebroot.mkdirs();\r
-\r
-                       OutputStream out = new FileOutputStream(tempWarfile, true);\r
-                       int read = 0;\r
-                       byte buffer[] = new byte[2048];\r
-                       while ((read = embeddedWarfile.read(buffer)) != -1) {\r
-                               out.write(buffer, 0, read);\r
-                       }\r
-                       out.close();\r
-                       embeddedWarfile.close();\r
-\r
-                       args.put("warfile", tempWarfile.getAbsolutePath());\r
-                       args.put("webroot", tempWebroot.getAbsolutePath());\r
-                       args.remove("webappsDir");\r
-                       args.remove("hostsDir");\r
-                       return true;\r
-               }\r
-               return false;\r
-       }\r
-}\r
diff --git a/src/com/itmill/toolkit/launcher/ITMillHostedLaunch.java b/src/com/itmill/toolkit/launcher/ITMillHostedLaunch.java
deleted file mode 100644 (file)
index a94c6f8..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.itmill.toolkit.launcher;\r
-\r
-import java.util.Map;\r
-\r
-import com.google.gwt.dev.GWTShell;\r
-\r
-/**\r
- * Class for starting Google Web Toolkit (GWT) Hosted mode with without embedded\r
- * tomcat (-noserver). Instead of tomcat we use external servlet container\r
- * (Jetty).\r
- * \r
- * NOTE: you must edit Eclipse launcher and following parameters there.\r
- * \r
- * For program arguments:\r
- * \r
- * -noserver -out WebContent/ITMILL/widgetsets http://localhost:8080/\r
- * \r
- * \r
- * And for VM arguments:\r
- * \r
- * -XstartOnFirstThread -Xms256M -Xmx512M\r
- * \r
- * TODO: how to add *.launch files automatically when importing Eclipse\r
- * workspace?\r
- * \r
- */\r
-public class ITMillHostedLaunch extends ITMillStandardLaunch {\r
-\r
-       private final static String serverPort = "8080";\r
-\r
-       /**\r
-        * Main function for staring GWTShell and running Jetty.\r
-        * \r
-        * Command line Arguments are passed through to Jetty, see runServer method\r
-        * for options.\r
-        * \r
-        * @param args\r
-        */\r
-       public static void main(String[] args) {\r
-\r
-               // Pass-through of arguments for Jetty\r
-               Map serverArgs = parseArguments(args);\r
-\r
-               String url = runServer(serverArgs);\r
-\r
-               // Start GWTShell\r
-\r
-               GWTShell.main(args);\r
-\r
-               // Open browser into application URL\r
-               if (url != null) {\r
-                       BrowserLauncher.openBrowser(url);\r
-               }\r
-\r
-       }\r
-\r
-}\r
diff --git a/src/com/itmill/toolkit/launcher/ITMillStandardLaunch.java b/src/com/itmill/toolkit/launcher/ITMillStandardLaunch.java
deleted file mode 100644 (file)
index 41e75ca..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-package com.itmill.toolkit.launcher;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.mortbay.jetty.Connector;\r
-import org.mortbay.jetty.Server;\r
-import org.mortbay.jetty.nio.SelectChannelConnector;\r
-import org.mortbay.jetty.webapp.WebAppContext;\r
-import org.mortbay.thread.BoundedThreadPool;\r
-\r
-/**\r
- * Class for running Jetty servlet container within Eclipse project.\r
- * \r
- */\r
-public class ITMillStandardLaunch {\r
-\r
-       private final static String serverPort = "8080";\r
-\r
-       /**\r
-        * Main function for running Jetty.\r
-        * \r
-        * Command line Arguments are passed through to Jetty, see runServer method\r
-        * for options.\r
-        * \r
-        * @param args\r
-        */\r
-       public static void main(String[] args) {\r
-\r
-               // Pass-through of arguments for Jetty\r
-               Map serverArgs = parseArguments(args);\r
-\r
-               String url = runServer(serverArgs);\r
-\r
-               // Open browser into application URL\r
-               if (url != null) {\r
-                       BrowserLauncher.openBrowser(url);\r
-               }\r
-\r
-       }\r
-\r
-       /**\r
-        * Run the server with specified arguments.\r
-        * \r
-        * @param serverArgs\r
-        * @return\r
-        */\r
-       protected static String runServer(Map serverArgs) {\r
-\r
-               // Add help for System.out\r
-               System.out\r
-                               .println("-------------------------------------------------\n"\r
-                                               + "Starting IT Mill Toolkit examples.\n"\r
-                                               + "Please go to http://localhost:"\r
-                                               + serverPort\r
-                                               + "\nif your web browser is not automatically started."\r
-                                               + "\n-------------------------------------------------\n");\r
-\r
-               // Assign default values for some arguments\r
-               assignDefault(serverArgs, "webroot", "WebContent");\r
-               assignDefault(serverArgs, "httpPort", serverPort);\r
-\r
-               try {\r
-                       long started = System.currentTimeMillis();\r
-\r
-                       Server server = new Server();\r
-\r
-                       // String threadPoolName =\r
-                       // System.getProperty("jetty.threadpool.name",\r
-                       // "Jetty thread");\r
-                       // int maxIdleTimeMs = Integer.getInteger(\r
-                       // "jetty.threadpool.maxIdleTimeMs", 60000);\r
-                       // int maxThreads =\r
-                       // Integer.getInteger("jetty.threadpool.maxThreads",\r
-                       // 100);\r
-                       // int minThreads =\r
-                       // Integer.getInteger("jetty.threadpool.minThreads",\r
-                       // 1);\r
-                       // int lowThreads = Integer.getInteger(\r
-                       // "jetty.threadpool.maxIdleTimeMs", 25);\r
-                       // BoundedThreadPool threadPool = new BoundedThreadPool();\r
-                       // threadPool.setName(threadPoolName);\r
-                       // threadPool.setMaxIdleTimeMs(maxIdleTimeMs);\r
-                       // threadPool.setMaxThreads(maxThreads);\r
-                       // threadPool.setMinThreads(minThreads);\r
-                       // threadPool.setLowThreads(lowThreads);\r
-                       // server.setThreadPool(threadPool);\r
-\r
-                       Connector connector = new SelectChannelConnector();\r
-                       // FIXME httpPort hardcoded to 8080\r
-                       // connector.setPort(Integer.valueOf(serverArgs.get("httpPort")\r
-                       // .toString()));\r
-                       connector.setPort(8080);\r
-                       server.setConnectors(new Connector[] { connector });\r
-\r
-                       WebAppContext webappcontext = new WebAppContext();\r
-                       webappcontext.setContextPath("");\r
-                       webappcontext.setWar(serverArgs.get("webroot").toString());\r
-\r
-                       server.setHandler(webappcontext);\r
-\r
-                       server.start();\r
-                       System.err.println("Started Jetty in "\r
-                                       + (System.currentTimeMillis() - started) + "ms.");\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-                       return null;\r
-               }\r
-\r
-               return "http://localhost:" + serverArgs.get("httpPort");\r
-       }\r
-\r
-       /**\r
-        * Assign default value for given key.\r
-        * \r
-        * @param map\r
-        * @param key\r
-        * @param value\r
-        */\r
-       private static void assignDefault(Map map, String key, String value) {\r
-               if (!map.containsKey(key)) {\r
-                       map.put(key, value);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Parse all command line arguments into a map.\r
-        * \r
-        * Arguments format "key=value" are put into map.\r
-        * \r
-        * @param args\r
-        * @return map of arguments key value pairs.\r
-        */\r
-       protected static Map parseArguments(String[] args) {\r
-               Map map = new HashMap();\r
-               for (int i = 0; i < args.length; i++) {\r
-                       int d = args[i].indexOf("=");\r
-                       if (d > 0 && d < args[i].length() && args[i].startsWith("--")) {\r
-                               String name = args[i].substring(2, d);\r
-                               String value = args[i].substring(d + 1);\r
-                               map.put(name, value);\r
-                       }\r
-               }\r
-               return map;\r
-       }\r
-\r
-}\r
diff --git a/src/com/itmill/toolkit/launcher/ITMillToolkitHostedMode.java b/src/com/itmill/toolkit/launcher/ITMillToolkitHostedMode.java
new file mode 100644 (file)
index 0000000..fe9360d
--- /dev/null
@@ -0,0 +1,143 @@
+package com.itmill.toolkit.launcher;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.mortbay.jetty.Connector;\r
+import org.mortbay.jetty.Server;\r
+import org.mortbay.jetty.nio.SelectChannelConnector;\r
+import org.mortbay.jetty.webapp.WebAppContext;\r
+\r
+import com.google.gwt.dev.GWTShell;\r
+\r
+/**\r
+ * Class for running Jetty servlet container within Eclipse project.\r
+ * \r
+ */\r
+public class ITMillToolkitHostedMode {\r
+\r
+       private final static String serverPort = "8888";\r
+\r
+       /**\r
+        * Main function for running Jetty.\r
+        * \r
+        * Command line Arguments are passed through to Jetty, see runServer method\r
+        * for options.\r
+        * \r
+        * @param args\r
+        */\r
+       public static void main(String[] args) {\r
+\r
+               // Start Jetty\r
+               System.out.println("Starting Jetty servlet container.");\r
+               String url = runServer(new HashMap());\r
+\r
+               // Start GWT\r
+               System.out.println("Starting GWT Hosted Mode browser.");\r
+               GWTShell.main(args);\r
+\r
+       }\r
+\r
+       /**\r
+        * Run the server with specified arguments.\r
+        * \r
+        * @param serverArgs\r
+        * @return\r
+        */\r
+       protected static String runServer(Map serverArgs) {\r
+\r
+               // Add help for System.out\r
+               System.out\r
+                               .println("-------------------------------------------------\n"\r
+                                               + "Starting IT Mill Toolkit in GWT Hosted Mode.\n"\r
+                                               + "Running in  http://localhost:"\r
+                                               + serverPort\r
+                                               + "\n-------------------------------------------------\n");\r
+\r
+               // Assign default values for some arguments\r
+               assignDefault(serverArgs, "webroot", "WebContent");\r
+               assignDefault(serverArgs, "httpPort", serverPort);\r
+\r
+               try {\r
+                       long started = System.currentTimeMillis();\r
+\r
+                       Server server = new Server();\r
+\r
+                       // String threadPoolName =\r
+                       // System.getProperty("jetty.threadpool.name",\r
+                       // "Jetty thread");\r
+                       // int maxIdleTimeMs = Integer.getInteger(\r
+                       // "jetty.threadpool.maxIdleTimeMs", 60000);\r
+                       // int maxThreads =\r
+                       // Integer.getInteger("jetty.threadpool.maxThreads",\r
+                       // 100);\r
+                       // int minThreads =\r
+                       // Integer.getInteger("jetty.threadpool.minThreads",\r
+                       // 1);\r
+                       // int lowThreads = Integer.getInteger(\r
+                       // "jetty.threadpool.maxIdleTimeMs", 25);\r
+                       // BoundedThreadPool threadPool = new BoundedThreadPool();\r
+                       // threadPool.setName(threadPoolName);\r
+                       // threadPool.setMaxIdleTimeMs(maxIdleTimeMs);\r
+                       // threadPool.setMaxThreads(maxThreads);\r
+                       // threadPool.setMinThreads(minThreads);\r
+                       // threadPool.setLowThreads(lowThreads);\r
+                       // server.setThreadPool(threadPool);\r
+\r
+                       Connector connector = new SelectChannelConnector();\r
+                       // FIXME httpPort hardcoded to 8888\r
+                       // connector.setPort(Integer.valueOf(serverArgs.get("httpPort")\r
+                       // .toString()));\r
+                       connector.setPort(8888);\r
+                       server.setConnectors(new Connector[] { connector });\r
+\r
+                       WebAppContext webappcontext = new WebAppContext();\r
+                       webappcontext.setContextPath("");\r
+                       webappcontext.setWar(serverArgs.get("webroot").toString());\r
+\r
+                       server.setHandler(webappcontext);\r
+\r
+                       server.start();\r
+               } catch (Exception e) {\r
+                       e.printStackTrace();\r
+                       return null;\r
+               }\r
+\r
+               return "http://localhost:" + serverArgs.get("httpPort");\r
+       }\r
+\r
+       /**\r
+        * Assign default value for given key.\r
+        * \r
+        * @param map\r
+        * @param key\r
+        * @param value\r
+        */\r
+       private static void assignDefault(Map map, String key, String value) {\r
+               if (!map.containsKey(key)) {\r
+                       map.put(key, value);\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Parse all command line arguments into a map.\r
+        * \r
+        * Arguments format "key=value" are put into map.\r
+        * \r
+        * @param args\r
+        * @return map of arguments key value pairs.\r
+        */\r
+       protected static Map parseArguments(String[] args) {\r
+               Map map = new HashMap();\r
+               for (int i = 0; i < args.length; i++) {\r
+                       int d = args[i].indexOf("=");\r
+                       if (d > 0 && d < args[i].length() && args[i].startsWith("--")) {\r
+                               String name = args[i].substring(2, d);\r
+                               String value = args[i].substring(d + 1);\r
+                               map.put(name, value);\r
+                       }\r
+               }\r
+               return map;\r
+       }\r
+\r
+}\r
diff --git a/src/com/itmill/toolkit/launcher/ITMillToolkitWebMode.java b/src/com/itmill/toolkit/launcher/ITMillToolkitWebMode.java
new file mode 100644 (file)
index 0000000..b01f88a
--- /dev/null
@@ -0,0 +1,150 @@
+package com.itmill.toolkit.launcher;\r
+\r
+import java.util.HashMap;\r
+import java.util.Map;\r
+\r
+import org.mortbay.jetty.Connector;\r
+import org.mortbay.jetty.Server;\r
+import org.mortbay.jetty.nio.SelectChannelConnector;\r
+import org.mortbay.jetty.webapp.WebAppContext;\r
+\r
+import com.itmill.toolkit.launcher.util.BrowserLauncher;\r
+\r
+/**\r
+ * Class for running Jetty servlet container within Eclipse project.\r
+ * \r
+ */\r
+public class ITMillToolkitWebMode {\r
+\r
+       private final static String serverPort = "8888";\r
+\r
+       /**\r
+        * Main function for running Jetty.\r
+        * \r
+        * Command line Arguments are passed through to Jetty, see runServer method\r
+        * for options.\r
+        * \r
+        * @param args\r
+        */\r
+       public static void main(String[] args) {\r
+\r
+               // Pass-through of arguments for Jetty\r
+               Map serverArgs = parseArguments(args);\r
+\r
+               // Start Jetty\r
+               System.out.println("Starting Jetty servlet container.");\r
+               String url = runServer(serverArgs);\r
+\r
+               // Start Browser\r
+               System.out.println("Starting Web Browser.");\r
+               if (url != null) {\r
+                       BrowserLauncher.openBrowser(url);\r
+               }\r
+\r
+       }\r
+\r
+       /**\r
+        * Run the server with specified arguments.\r
+        * \r
+        * @param serverArgs\r
+        * @return\r
+        */\r
+       protected static String runServer(Map serverArgs) {\r
+\r
+               // Add help for System.out\r
+               System.out\r
+                               .println("-------------------------------------------------\n"\r
+                                               + "Starting IT Mill Toolkit in Web Mode.\n"\r
+                                               + "Running in http://localhost:"\r
+                                               + serverPort\r
+                                               + "\n-------------------------------------------------\n");\r
+\r
+               // Assign default values for some arguments\r
+               assignDefault(serverArgs, "webroot", "WebContent");\r
+               assignDefault(serverArgs, "httpPort", serverPort);\r
+\r
+               try {\r
+                       long started = System.currentTimeMillis();\r
+\r
+                       Server server = new Server();\r
+\r
+                       // String threadPoolName =\r
+                       // System.getProperty("jetty.threadpool.name",\r
+                       // "Jetty thread");\r
+                       // int maxIdleTimeMs = Integer.getInteger(\r
+                       // "jetty.threadpool.maxIdleTimeMs", 60000);\r
+                       // int maxThreads =\r
+                       // Integer.getInteger("jetty.threadpool.maxThreads",\r
+                       // 100);\r
+                       // int minThreads =\r
+                       // Integer.getInteger("jetty.threadpool.minThreads",\r
+                       // 1);\r
+                       // int lowThreads = Integer.getInteger(\r
+                       // "jetty.threadpool.maxIdleTimeMs", 25);\r
+                       // BoundedThreadPool threadPool = new BoundedThreadPool();\r
+                       // threadPool.setName(threadPoolName);\r
+                       // threadPool.setMaxIdleTimeMs(maxIdleTimeMs);\r
+                       // threadPool.setMaxThreads(maxThreads);\r
+                       // threadPool.setMinThreads(minThreads);\r
+                       // threadPool.setLowThreads(lowThreads);\r
+                       // server.setThreadPool(threadPool);\r
+\r
+                       Connector connector = new SelectChannelConnector();\r
+                       // FIXME httpPort hardcoded to 8888\r
+                       // connector.setPort(Integer.valueOf(serverArgs.get("httpPort")\r
+                       // .toString()));\r
+                       connector.setPort(8888);\r
+                       server.setConnectors(new Connector[] { connector });\r
+\r
+                       WebAppContext webappcontext = new WebAppContext();\r
+                       webappcontext.setContextPath("");\r
+                       webappcontext.setWar(serverArgs.get("webroot").toString());\r
+\r
+                       server.setHandler(webappcontext);\r
+\r
+                       server.start();\r
+                       // System.err.println("Started Jetty in "\r
+                       // + (System.currentTimeMillis() - started) + "ms.");\r
+               } catch (Exception e) {\r
+                       e.printStackTrace();\r
+                       return null;\r
+               }\r
+\r
+               return "http://localhost:" + serverArgs.get("httpPort");\r
+       }\r
+\r
+       /**\r
+        * Assign default value for given key.\r
+        * \r
+        * @param map\r
+        * @param key\r
+        * @param value\r
+        */\r
+       private static void assignDefault(Map map, String key, String value) {\r
+               if (!map.containsKey(key)) {\r
+                       map.put(key, value);\r
+               }\r
+       }\r
+\r
+       /**\r
+        * Parse all command line arguments into a map.\r
+        * \r
+        * Arguments format "key=value" are put into map.\r
+        * \r
+        * @param args\r
+        * @return map of arguments key value pairs.\r
+        */\r
+       protected static Map parseArguments(String[] args) {\r
+               Map map = new HashMap();\r
+               for (int i = 0; i < args.length; i++) {\r
+                       int d = args[i].indexOf("=");\r
+                       if (d > 0 && d < args[i].length() && args[i].startsWith("--")) {\r
+                               String name = args[i].substring(2, d);\r
+                               String value = args[i].substring(d + 1);\r
+                               map.put(name, value);\r
+                       }\r
+               }\r
+               return map;\r
+       }\r
+\r
+}\r
diff --git a/src/com/itmill/toolkit/launcher/ITMillWebModeLaunch.java b/src/com/itmill/toolkit/launcher/ITMillWebModeLaunch.java
deleted file mode 100644 (file)
index e689652..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-package com.itmill.toolkit.launcher;\r
-\r
-import java.util.HashMap;\r
-import java.util.Map;\r
-\r
-import org.mortbay.jetty.Connector;\r
-import org.mortbay.jetty.Server;\r
-import org.mortbay.jetty.nio.SelectChannelConnector;\r
-import org.mortbay.jetty.webapp.WebAppContext;\r
-import org.mortbay.thread.BoundedThreadPool;\r
-\r
-/**\r
- * Class for running Jetty servlet container within Eclipse project.\r
- * \r
- */\r
-public class ITMillWebModeLaunch {\r
-\r
-       private final static String serverPort = "8080";\r
-\r
-       /**\r
-        * Main function for running Jetty.\r
-        * \r
-        * Command line Arguments are passed through to Jetty, see runServer method\r
-        * for options.\r
-        * \r
-        * @param args\r
-        */\r
-       public static void main(String[] args) {\r
-\r
-               // Pass-through of arguments for Jetty\r
-               Map serverArgs = parseArguments(args);\r
-\r
-               String url = runServer(serverArgs);\r
-\r
-               // Open browser into application URL\r
-               if (url != null) {\r
-                       BrowserLauncher.openBrowser(url);\r
-               }\r
-\r
-       }\r
-\r
-       /**\r
-        * Run the server with specified arguments.\r
-        * \r
-        * @param serverArgs\r
-        * @return\r
-        */\r
-       protected static String runServer(Map serverArgs) {\r
-\r
-               // Add help for System.out\r
-               System.out\r
-                               .println("-------------------------------------------------\n"\r
-                                               + "Starting IT Mill Toolkit examples.\n"\r
-                                               + "Please go to http://localhost:"\r
-                                               + serverPort\r
-                                               + "\nif your web browser is not automatically started."\r
-                                               + "\n-------------------------------------------------\n");\r
-\r
-               // Assign default values for some arguments\r
-               assignDefault(serverArgs, "webroot", "WebContent");\r
-               assignDefault(serverArgs, "httpPort", serverPort);\r
-\r
-               try {\r
-                       long started = System.currentTimeMillis();\r
-\r
-                       Server server = new Server();\r
-\r
-                       // String threadPoolName =\r
-                       // System.getProperty("jetty.threadpool.name",\r
-                       // "Jetty thread");\r
-                       // int maxIdleTimeMs = Integer.getInteger(\r
-                       // "jetty.threadpool.maxIdleTimeMs", 60000);\r
-                       // int maxThreads =\r
-                       // Integer.getInteger("jetty.threadpool.maxThreads",\r
-                       // 100);\r
-                       // int minThreads =\r
-                       // Integer.getInteger("jetty.threadpool.minThreads",\r
-                       // 1);\r
-                       // int lowThreads = Integer.getInteger(\r
-                       // "jetty.threadpool.maxIdleTimeMs", 25);\r
-                       // BoundedThreadPool threadPool = new BoundedThreadPool();\r
-                       // threadPool.setName(threadPoolName);\r
-                       // threadPool.setMaxIdleTimeMs(maxIdleTimeMs);\r
-                       // threadPool.setMaxThreads(maxThreads);\r
-                       // threadPool.setMinThreads(minThreads);\r
-                       // threadPool.setLowThreads(lowThreads);\r
-                       // server.setThreadPool(threadPool);\r
-\r
-                       Connector connector = new SelectChannelConnector();\r
-                       // FIXME httpPort hardcoded to 8080\r
-                       // connector.setPort(Integer.valueOf(serverArgs.get("httpPort")\r
-                       // .toString()));\r
-                       connector.setPort(8080);\r
-                       server.setConnectors(new Connector[] { connector });\r
-\r
-                       WebAppContext webappcontext = new WebAppContext();\r
-                       webappcontext.setContextPath("");\r
-                       webappcontext.setWar(serverArgs.get("webroot").toString());\r
-\r
-                       server.setHandler(webappcontext);\r
-\r
-                       server.start();\r
-                       System.err.println("Started Jetty in "\r
-                                       + (System.currentTimeMillis() - started) + "ms.");\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-                       return null;\r
-               }\r
-\r
-               return "http://localhost:" + serverArgs.get("httpPort");\r
-       }\r
-\r
-       /**\r
-        * Assign default value for given key.\r
-        * \r
-        * @param map\r
-        * @param key\r
-        * @param value\r
-        */\r
-       private static void assignDefault(Map map, String key, String value) {\r
-               if (!map.containsKey(key)) {\r
-                       map.put(key, value);\r
-               }\r
-       }\r
-\r
-       /**\r
-        * Parse all command line arguments into a map.\r
-        * \r
-        * Arguments format "key=value" are put into map.\r
-        * \r
-        * @param args\r
-        * @return map of arguments key value pairs.\r
-        */\r
-       protected static Map parseArguments(String[] args) {\r
-               Map map = new HashMap();\r
-               for (int i = 0; i < args.length; i++) {\r
-                       int d = args[i].indexOf("=");\r
-                       if (d > 0 && d < args[i].length() && args[i].startsWith("--")) {\r
-                               String name = args[i].substring(2, d);\r
-                               String value = args[i].substring(d + 1);\r
-                               map.put(name, value);\r
-                       }\r
-               }\r
-               return map;\r
-       }\r
-\r
-}\r
diff --git a/src/com/itmill/toolkit/launcher/util/BrowserLauncher.java b/src/com/itmill/toolkit/launcher/util/BrowserLauncher.java
new file mode 100644 (file)
index 0000000..06870ce
--- /dev/null
@@ -0,0 +1,92 @@
+package com.itmill.toolkit.launcher.util;\r
+\r
+import java.io.IOException;\r
+\r
+/**\r
+ * This class opens default browser for ITMillDesktopLaunch class. Default\r
+ * browser is detected by the operating system.\r
+ * \r
+ */\r
+public class BrowserLauncher {\r
+\r
+       /**\r
+        * Open browser on specified URL.\r
+        * \r
+        * @param url\r
+        */\r
+       public static void openBrowser(String url) {\r
+\r
+               Runtime runtime = Runtime.getRuntime();\r
+               boolean started = false;\r
+\r
+               String os = System.getProperty("os.name", "windows").toLowerCase();\r
+\r
+               // Linux\r
+               if (os.indexOf("linux") >= 0) {\r
+\r
+                       // Try x-www-browser\r
+                       if (!started) {\r
+                               try {\r
+                                       runtime.exec("x-www-browser " + url);\r
+                                       started = true;\r
+                               } catch (IOException e) {\r
+                               }\r
+                       }\r
+\r
+                       // Try firefox\r
+                       if (!started) {\r
+                               try {\r
+                                       runtime.exec("firefox " + url);\r
+                                       started = true;\r
+                               } catch (IOException e) {\r
+                               }\r
+                       }\r
+\r
+                       // Try mozilla\r
+                       if (!started) {\r
+                               try {\r
+                                       runtime.exec("mozilla " + url);\r
+                                       started = true;\r
+                               } catch (IOException e) {\r
+                               }\r
+                       }\r
+\r
+                       // Try konqueror\r
+                       if (!started) {\r
+                               try {\r
+                                       runtime.exec("konqueror " + url);\r
+                                       started = true;\r
+                               } catch (IOException e) {\r
+                               }\r
+                       }\r
+               }\r
+\r
+               // OS X\r
+               if (os.indexOf("mac os x") >= 0) {\r
+\r
+                       // Try open\r
+                       if (!started) {\r
+                               try {\r
+                                       runtime.exec("open " + url);\r
+                                       started = true;\r
+                               } catch (IOException e) {\r
+                               }\r
+                       }\r
+               }\r
+\r
+               // Try cmd /start command on windows\r
+               if (os.indexOf("win") >= 0) {\r
+                       if (!started) {\r
+                               try {\r
+                                       runtime.exec("cmd /c start " + url);\r
+                                       started = true;\r
+                               } catch (IOException e) {\r
+                               }\r
+                       }\r
+               }\r
+\r
+               if (!started)\r
+                       System.out.println("Failed to open browser. Please go to " + url);\r
+       }\r
+\r
+}\r