       1 /*
       2  * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
       3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       4  *
       5  * This code is free software; you can redistribute it and/or modify it
       6  * under the terms of the GNU General Public License version 2 only, as
       7  * published by the Free Software Foundation.  Oracle designates this
       8  * particular file as subject to the "Classpath" exception as provided
       9  * by Oracle in the LICENSE file that accompanied this code.
      10  *
      11  * This code is distributed in the hope that it will be useful, but WITHOUT
      12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      14  * version 2 for more details (a copy is included in the LICENSE file that
      15  * accompanied this code).
      16  *
      17  * You should have received a copy of the GNU General Public License version
      18  * 2 along with this work; if not, write to the Free Software Foundation,
      19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
      20  *
      21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
      22  * or visit www.oracle.com if you need additional information or have any
      23  * questions.
      24  */
      25 package com.sun.glass.ui;
      26
      27 import java.security.AccessController;
      28 import java.security.PrivilegedAction;
      29
      30 final class Platform {
      31
      32     public static final String MAC = "Mac";
      33     public static final String WINDOWS = "Win";
      34     public static final String GTK = "Gtk";
      35     public static final String IOS = "Ios";
      36     public static final String UNKNOWN = "unknown";
      37
      38     static private String type = null;
      39
      40     static public synchronized String determinePlatform() {
      41         if (type == null) {
      42
      43             // Provide for a runtime override, allowing EGL for example
      44             String userPlatform =
      45                 AccessController.doPrivileged(new PrivilegedAction<String>() {
      46                     public String run() {
      47                         return System.getProperty("glass.platform");
      48                     }
      49                 });
      50
      51             if (userPlatform != null) {
      52                 if (userPlatform.equals("macosx"))
      53                    type = MAC;
      54                 else if (userPlatform.equals("windows"))
      55                    type = WINDOWS;
      56                 else if (userPlatform.equals("linux"))
      57                    type = GTK;
      58                 else if (userPlatform.equals("gtk"))
      59                    type = GTK;
      60                 else if (userPlatform.equals("ios"))
      61                    type = IOS;
      62                 else
      63                    type = userPlatform;
      64                 return type;
      65             }
      66
      67             String osName = System.getProperty("os.name");
      68             String osNameLowerCase = osName.toLowerCase();
      69             if (osNameLowerCase.startsWith("mac") || osNameLowerCase.startsWith("darwin")) {
      70                 type = MAC;
      71             } else if (osNameLowerCase.startsWith("wind")) {
      72                 type = WINDOWS;
      73             } else if (osNameLowerCase.startsWith("linux")) {
      74                 type = GTK;
      75             }
      76         }
      77
      78         return type;
      79     }
      80 }