/* $Id: Platform.java,v 1.6 2008/04/28 17:17:13 bhaible Exp $ */ /******************************************************************************* * Copyright (c) 2007-2008 SAS Institute Inc., ILOG S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAS Institute Inc. - initial API and implementation * ILOG S.A. - initial API and implementation * IBM Corporation - Java/SWT versioning code (from org.eclipse.swt.internal.Library) *******************************************************************************/ package org.eclipse.albireo.internal; import org.eclipse.swt.SWT; import org.eclipse.swt.internal.Library; public class Platform { private static String platformString = SWT.getPlatform (); private Platform () { // prevent instantiation } // Window System public static boolean isWin32 () { return "win32".equals ( platformString ); //$NON-NLS-1$ } public static boolean isGtk () { return "gtk".equals ( platformString ); //$NON-NLS-1$ } public static boolean isMotif () { return "motif".equals ( platformString ); //$NON-NLS-1$ } public static boolean isCarbon () { return "carbon".equals ( platformString ); //$NON-NLS-1$ } //Java /** * The JAVA version */ public static final int JAVA_VERSION; static { JAVA_VERSION = parseVersion ( System.getProperty ( "java.version" ) ); //$NON-NLS-1$ } static int parseVersion ( final String version ) { if ( version == null ) { return 0; } int major = 0, minor = 0, micro = 0; final int length = version.length (); int index = 0, start = 0; while ( index < length && Character.isDigit ( version.charAt ( index ) ) ) { index++; } try { if ( start < length ) { major = Integer.parseInt ( version.substring ( start, index ) ); } } catch ( final NumberFormatException e ) { } start = ++index; while ( index < length && Character.isDigit ( version.charAt ( index ) ) ) { index++; } try { if ( start < length ) { minor = Integer.parseInt ( version.substring ( start, index ) ); } } catch ( final NumberFormatException e ) { } start = ++index; while ( index < length && Character.isDigit ( version.charAt ( index ) ) ) { index++; } try { if ( start < length ) { micro = Integer.parseInt ( version.substring ( start, index ) ); } } catch ( final NumberFormatException e ) { } return javaVersion ( major, minor, micro ); } /** * Returns the Java version number as an integer. * * @param major * @param minor * @param micro * @return the version */ public static int javaVersion ( final int major, final int minor, final int micro ) { return ( major << 16 ) + ( minor << 8 ) + micro; } //SWT // It seems necessary to use private API to get this value. Provide delegating methods here so that // the internal dependency is localized. public static final int SWT_VERSION = Library.SWT_VERSION; // For the SWT version numbers, look at // <http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt/Eclipse SWT PI/common_j2me/org/eclipse/swt/internal/Library.java?view=log> public static final int SWT_33 = swtVersion ( 3, 346 ); public static final int SWT_FIX216431 = swtVersion ( 3, 426 ); // between 3.4M4 and 3.4M5 //public static final int SWT_34 = swtVersion(3, 4??); private static int swtVersion ( final int major, final int minor ) { return Library.SWT_VERSION ( major, minor ); } }