001 /* 002 * $Id: JVM.java 3265 2009-02-22 02:01:04Z kschaefe $ 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 javax.swing.UIManager; 024 import javax.swing.UIManager.LookAndFeelInfo; 025 026 /** 027 * Deals with the different version of the Java Virtual Machine. <br> 028 */ 029 public class JVM { 030 031 public final static int JDK1_0 = 10; 032 public final static int JDK1_1 = 11; 033 public final static int JDK1_2 = 12; 034 public final static int JDK1_3 = 13; 035 public final static int JDK1_4 = 14; 036 public final static int JDK1_5 = 15; 037 public final static int JDK1_6 = 16; 038 public final static int JDK1_6N = 1610; 039 public final static int JDK1_7 = 17; 040 041 private static JVM current; 042 static { 043 current = new JVM(); 044 } 045 046 /** 047 * @return the current JVM object 048 */ 049 public static JVM current() { 050 return current; 051 } 052 053 private int jdkVersion; 054 055 /** 056 * Creates a new JVM data from the <code>java.version</code> 057 * System property 058 * 059 */ 060 public JVM() { 061 this(System.getProperty("java.version")); 062 } 063 064 /** 065 * Constructor for the OS object 066 */ 067 public JVM(String p_JavaVersion) { 068 if (p_JavaVersion.startsWith("1.7.")) { 069 jdkVersion = JDK1_7; 070 } else if (p_JavaVersion.startsWith("1.6.")) { 071 for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { 072 if ("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel".equals(info.getClassName())) { 073 jdkVersion = JDK1_6N; 074 break; 075 } 076 } 077 078 jdkVersion = jdkVersion == 0 ? JDK1_6 : jdkVersion; 079 } else if (p_JavaVersion.startsWith("1.5.")) { 080 jdkVersion = JDK1_5; 081 } else if (p_JavaVersion.startsWith("1.4.")) { 082 jdkVersion = JDK1_4; 083 } else if (p_JavaVersion.startsWith("1.3.")) { 084 jdkVersion = JDK1_3; 085 } else if (p_JavaVersion.startsWith("1.2.")) { 086 jdkVersion = JDK1_2; 087 } else if (p_JavaVersion.startsWith("1.1.")) { 088 jdkVersion = JDK1_1; 089 } else if (p_JavaVersion.startsWith("1.0.")) { 090 jdkVersion = JDK1_0; 091 } else { 092 // unknown version, assume 1.3 093 jdkVersion = JDK1_3; 094 } 095 } 096 097 public boolean isOrLater(int p_Version) { 098 return jdkVersion >= p_Version; 099 } 100 101 public boolean isOneDotOne() { 102 return jdkVersion == JDK1_1; 103 } 104 105 public boolean isOneDotTwo() { 106 return jdkVersion == JDK1_2; 107 } 108 109 public boolean isOneDotThree() { 110 return jdkVersion == JDK1_3; 111 } 112 113 public boolean isOneDotFour() { 114 return jdkVersion == JDK1_4; 115 } 116 117 public boolean isOneDotFive() { 118 return jdkVersion == JDK1_5; 119 } 120 121 public boolean isOneDotSix() { 122 return jdkVersion == JDK1_6; 123 } 124 125 /** 126 * Determines if the version of JDK1_6 has Nimbus Look and Feel installed. 127 * 128 * @return {@code true} if Nimbus is available and the version is 1.6; 129 * {@code false} otherwise 130 */ 131 public boolean isOneDotSixUpdateN() { 132 return jdkVersion == JDK1_6N; 133 } 134 135 public boolean isOneDotSeven() { 136 return jdkVersion == JDK1_7; 137 } 138 139 }