/******************************************************************************* * Copyright (c) 2013, 2014 Red Hat, Inc. * 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: * Red Hat Inc. - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.thym.ios.ui; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.osgi.util.NLS; import org.eclipse.thym.core.HybridMobileStatus; import org.eclipse.thym.ios.core.IOSCore; import org.eclipse.thym.ios.core.simulator.IOSSimulatorLaunchConstants; import org.eclipse.thym.ios.core.xcode.XCodeBuild; import org.eclipse.thym.ios.core.xcode.XCodeSDK; import org.eclipse.thym.ui.launch.HybridProjectLaunchShortcut; import org.osgi.framework.Version; /** * Launch shortcut for launching iOS Simulator. * @see HybridProjectLaunchShortcut * * @author Gorkem Ercan * */ public class IOSLaunchShortcut extends HybridProjectLaunchShortcut{ @Override protected boolean validateBuildToolsReady() throws CoreException { XCodeBuild xcode = new XCodeBuild(); String version = xcode.version(); if ( version == null ){ throw new CoreException(new Status(IStatus.ERROR, IOSUI.PLUGIN_ID, "Can not retrieve xcode version, is xcode properly installed?")); } try{ Version minVersion = new Version(XCodeBuild.MIN_REQUIRED_VERSION); Version v = Version.parseVersion(version); if(v.compareTo(minVersion)<0){ throw new CoreException(new HybridMobileStatus(IStatus.ERROR, IOSCore.PLUGIN_ID, 300/*see org.eclipse.thym.ios.ui.xcodeVersionStatusHandler in plugin.xml*/, NLS.bind("Hybrid mobile projects require XCode version {0} or greater to build iOS applications", XCodeBuild.MIN_REQUIRED_VERSION),null)); } }catch (IllegalArgumentException e) { //ignored } List <XCodeSDK> sdks = xcode.showSdks(); boolean iosSdkAvailable = false; for (XCodeSDK xcodeSDK : sdks) { if(xcodeSDK.isIOS()){ iosSdkAvailable =true; break; } } if(!iosSdkAvailable){ throw new CoreException(new Status(IStatus.ERROR, IOSUI.PLUGIN_ID, "No iOS SDKs are found. Please install an iOS SDK and try again.")); } return true; } @Override protected String getLaunchConfigurationTypeID() { return IOSSimulatorLaunchConstants.ID_LAUNCH_CONFIG_TYPE; } @Override protected String getLaunchConfigurationNamePrefix(IProject project) { return project.getName() + " (iOS Simulator)"; } }