PageRenderTime 73ms CodeModel.GetById 44ms RepoModel.GetById 0ms app.codeStats 0ms

/plugins/html/ext/src/browserlauncher2-1_3/source/edu/stanford/ejalbert/launching/BrowserLaunchingFactory.java

https://github.com/srnsw/xena
Java | 127 lines | 81 code | 3 blank | 43 comment | 28 complexity | 6051a6c45b4b2319ad9c9e30267f0e78 MD5 | raw file
  1. /************************************************
  2. Copyright 2004,2005,2006,2007 Markus Gebhard, Jeff Chapman
  3. This file is part of BrowserLauncher2.
  4. BrowserLauncher2 is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU Lesser General Public License as published by
  6. the Free Software Foundation; either version 2 of the License, or
  7. (at your option) any later version.
  8. BrowserLauncher2 is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU Lesser General Public License for more details.
  12. You should have received a copy of the GNU Lesser General Public License
  13. along with BrowserLauncher2; if not, write to the Free Software
  14. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  15. ************************************************/
  16. // $Id$
  17. package edu.stanford.ejalbert.launching;
  18. import edu.stanford.ejalbert.exception.UnsupportedOperatingSystemException;
  19. import edu.stanford.ejalbert.launching.macos.MacOs2_0BrowserLaunching;
  20. import edu.stanford.ejalbert.launching.macos.MacOs2_1BrowserLaunching;
  21. import edu.stanford.ejalbert.launching.macos.MacOs3_0BrowserLaunching;
  22. import edu.stanford.ejalbert.launching.macos.MacOs3_1BrowserLaunching;
  23. import edu.stanford.ejalbert.launching.misc.SunOSBrowserLaunching;
  24. import edu.stanford.ejalbert.launching.misc.UnixNetscapeBrowserLaunching;
  25. import edu.stanford.ejalbert.launching.windows.WindowsBrowserLaunching;
  26. import net.sf.wraplog.AbstractLogger;
  27. /**
  28. * Factory for determining the OS and returning the appropriate version
  29. * of IBrowserLaunching. The factory uses
  30. * {@link System#getProperty(String) System.getProperty("os.name")} to
  31. * determine the OS.
  32. *
  33. * @author Markus Gebhard
  34. */
  35. public class BrowserLaunchingFactory {
  36. /**
  37. * Analyzes the name of the underlying operating system
  38. * based on the "os.name" system property and returns
  39. * the IBrowserLaunching version appropriate for the
  40. * O/S.
  41. *
  42. * @param logger AbstractLogger
  43. * @return IBrowserLaunching
  44. * @throws UnsupportedOperatingSystemException
  45. */
  46. public static IBrowserLaunching createSystemBrowserLaunching(
  47. AbstractLogger logger)
  48. throws UnsupportedOperatingSystemException {
  49. String osName = System.getProperty("os.name");
  50. if (osName.startsWith("Mac OS")) {
  51. logger.info("Mac OS");
  52. String mrjVersion = System.getProperty("mrj.version");
  53. String majorMRJVersion = mrjVersion.substring(0, 3);
  54. try {
  55. double version = Double.valueOf(majorMRJVersion).doubleValue();
  56. logger.info("version=" + Double.toString(version));
  57. if (version == 2) {
  58. return new MacOs2_0BrowserLaunching();
  59. }
  60. else if (version >= 2.1 && version < 3) {
  61. // Assume that all 2.x versions of MRJ work the same. MRJ 2.1 actually
  62. // works via Runtime.exec() and 2.2 supports that but has an openURL() method
  63. // as well that we currently ignore.
  64. return new MacOs2_1BrowserLaunching();
  65. }
  66. else if (version == 3.0) {
  67. return new MacOs3_0BrowserLaunching();
  68. }
  69. else if (version >= 3.1) {
  70. // Assume that all 3.1 and later versions of MRJ work the same.
  71. return new MacOs3_1BrowserLaunching();
  72. }
  73. else {
  74. throw new UnsupportedOperatingSystemException(
  75. "Unsupported MRJ version: " + version);
  76. }
  77. }
  78. catch (NumberFormatException nfe) {
  79. throw new UnsupportedOperatingSystemException(
  80. "Invalid MRJ version: " + mrjVersion);
  81. }
  82. }
  83. else if (osName.startsWith("Windows")) {
  84. logger.info("Windows OS");
  85. if (osName.indexOf("9") != -1 ||
  86. osName.indexOf("Windows Me") != -1) {
  87. return new WindowsBrowserLaunching(
  88. logger,
  89. WindowsBrowserLaunching.WINKEY_WIN9X);
  90. }
  91. else if(osName.indexOf("Vista") != -1) {
  92. return new WindowsBrowserLaunching(
  93. logger,
  94. WindowsBrowserLaunching.WINKEY_WINVISTA);
  95. }
  96. else if (osName.indexOf("2000") != -1 ||
  97. osName.indexOf("XP") != -1) {
  98. return new WindowsBrowserLaunching(
  99. logger,
  100. WindowsBrowserLaunching.WINKEY_WIN2000);
  101. }
  102. else {
  103. return new WindowsBrowserLaunching(
  104. logger,
  105. WindowsBrowserLaunching.WINKEY_WINNT);
  106. }
  107. }
  108. else if (osName.startsWith("SunOS")) {
  109. logger.info("SunOS");
  110. return new SunOSBrowserLaunching(logger);
  111. }
  112. else {
  113. logger.info("Unix-type OS");
  114. return new UnixNetscapeBrowserLaunching(
  115. logger,
  116. UnixNetscapeBrowserLaunching.CONFIGFILE_LINUX_UNIX);
  117. }
  118. }
  119. }