001 /*
002 * $Id: OS.java,v 1.2 2005/10/10 18:02:58 rbair Exp $
003 *
004 * Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle,
005 * Santa Clara, California 95054, U.S.A. All rights reserved.
006 *
007 * This library is free software; you can redistribute it and/or
008 * modify it under the terms of the GNU Lesser General Public
009 * License as published by the Free Software Foundation; either
010 * version 2.1 of the License, or (at your option) any later version.
011 *
012 * This library is distributed in the hope that it will be useful,
013 * but WITHOUT ANY WARRANTY; without even the implied warranty of
014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015 * Lesser General Public License for more details.
016 *
017 * You should have received a copy of the GNU Lesser General Public
018 * License along with this library; if not, write to the Free Software
019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
020 */
021 package org.jdesktop.swingx.util;
022
023 import java.awt.Toolkit;
024
025 import javax.swing.UIManager;
026
027 /**
028 * Provides methods related to the runtime environment.
029 */
030 public class OS {
031
032 private static final boolean osIsMacOsX;
033 private static final boolean osIsWindows;
034 private static final boolean osIsWindowsXP;
035 private static final boolean osIsWindows2003;
036
037 static {
038 String os = System.getProperty("os.name").toLowerCase();
039
040 osIsMacOsX = "mac os x".equals(os);
041 osIsWindows = os.indexOf("windows") != -1;
042 osIsWindowsXP = "windows xp".equals(os);
043 osIsWindows2003 = "windows 2003".equals(os);
044 }
045
046 /**
047 * @return true if this VM is running on Mac OS X
048 */
049 public static boolean isMacOSX() {
050 return osIsMacOsX;
051 }
052
053 /**
054 * @return true if this VM is running on Windows
055 */
056 public static boolean isWindows() {
057 return osIsWindows;
058 }
059
060 /**
061 * @return true if this VM is running on Windows XP
062 */
063 public static boolean isWindowsXP() {
064 return osIsWindowsXP;
065 }
066
067 /**
068 * @return true if this VM is running on Windows 2003
069 */
070 public static boolean isWindows2003() {
071 return osIsWindows2003;
072 }
073
074 /**
075 * @return true if the VM is running Windows and the Java
076 * application is rendered using XP Visual Styles.
077 */
078 public static boolean isUsingWindowsVisualStyles() {
079 if (!isWindows()) {
080 return false;
081 }
082
083 boolean xpthemeActive = Boolean.TRUE.equals(Toolkit.getDefaultToolkit()
084 .getDesktopProperty("win.xpstyle.themeActive"));
085 if (!xpthemeActive) {
086 return false;
087 } else {
088 try {
089 return System.getProperty("swing.noxp") == null;
090 } catch (RuntimeException e) {
091 return true;
092 }
093 }
094 }
095
096 /**
097 * Returns the name of the current Windows visual style.
098 * <ul>
099 * <li>it looks for a property name "win.xpstyle.name" in UIManager and if not found
100 * <li>it queries the win.xpstyle.colorName desktop property ({@link Toolkit#getDesktopProperty(java.lang.String)})
101 * </ul>
102 *
103 * @return the name of the current Windows visual style if any.
104 */
105 public static String getWindowsVisualStyle() {
106 String style = UIManager.getString("win.xpstyle.name");
107 if (style == null) {
108 // guess the name of the current XPStyle
109 // (win.xpstyle.colorName property found in awt_DesktopProperties.cpp in
110 // JDK source)
111 style = (String)Toolkit.getDefaultToolkit().getDesktopProperty(
112 "win.xpstyle.colorName");
113 }
114 return style;
115 }
116
117 }