/****************************************************************************** * Copyright (C) 2012-2013 Fabio Zadrozny * * 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: * Fabio Zadrozny <fabiofz@gmail.com> - initial API and implementation ******************************************************************************/ package org.python.pydev.shared_core.utils; import org.eclipse.core.runtime.Platform; import org.eclipse.osgi.service.environment.Constants; import org.python.pydev.shared_core.log.Log; import org.python.pydev.shared_core.utils.internal.linux.ProcessListLinux; import org.python.pydev.shared_core.utils.internal.macos.ProcessListMac; import org.python.pydev.shared_core.utils.internal.win32.ProcessListWin32; public class PlatformUtils { /** * Currently we only care for: windows, mac os or linux (if we need some other special support, * this could be improved). */ public static Integer platform; public static int WINDOWS = 1; public static int MACOS = 2; public static int LINUX = 3; static { try { String os = Platform.getOS(); if (os.equals(Constants.OS_WIN32)) { platform = WINDOWS; } else if (os.equals(Constants.OS_MACOSX)) { platform = MACOS; } else { platform = LINUX; } } catch (NullPointerException e) { String env = System.getProperty("os.name").toLowerCase(); if (env.indexOf("win") != -1) { platform = WINDOWS; } else if (env.startsWith("mac os")) { platform = MACOS; } else { platform = LINUX; } } } /** * @return whether we are in windows or not */ public static boolean isWindowsPlatform() { return platform == WINDOWS; } /** * @return whether we are in MacOs or not */ public static boolean isMacOsPlatform() { return platform == MACOS; } /** * @return whether we are in Linux or not */ public static boolean isLinuxPlatform() { return platform == LINUX; } public static IProcessList getProcessList() { if (isWindowsPlatform()) { return new ProcessListWin32(); } if (isLinuxPlatform()) { return new ProcessListLinux(); } if (isMacOsPlatform()) { return new ProcessListMac(); } Log.log("Unexpected platform. Unable to list processes."); return new IProcessList() { @Override public IProcessInfo[] getProcessList() { return new IProcessInfo[0]; } }; } }