/* * Copyright 2008 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.dev; import java.awt.GraphicsEnvironment; import java.awt.Toolkit; import java.util.Locale; /** * Initializes platform stuff. */ public class BootStrapPlatform { public static void applyPlatformHacks() { if (isMac()) { setSystemProperties(); fixContextClassLoaderOnMainThread(); } } /** * This method allows the compiler to have a tree logger in an AWT window and * allow generators to use AWT for image generation. */ public static void initGui() { if (isMac() && !GraphicsEnvironment.isHeadless()) { // This has to be set before any UI components are initialized System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Development Mode"); GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(); Toolkit.getDefaultToolkit(); } } public static void initHostedMode() { // nothing required } /** * Return true if we are running on a Mac. */ public static boolean isMac() { String lcOSName = System.getProperty("os.name").toLowerCase(Locale.ENGLISH); return lcOSName.startsWith("mac "); } /** * This works around apple radr:5569300. When -XstartOnFirstThread is passed * as a jvm argument, the main thread returns null for * {@link Thread#getContextClassLoader()}. */ private static void fixContextClassLoaderOnMainThread() { final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); if (classLoader == null) { Thread.currentThread().setContextClassLoader( BootStrapPlatform.class.getClassLoader()); } } /** * Sets platform specific system properties. Currently, this disables * CocoaComponent CompatibilityMode. */ private static void setSystemProperties() { // Disable CocoaComponent compatibility mode. System.setProperty("com.apple.eawt.CocoaComponent.CompatibilityMode", "false"); } }