// Copyright (c) 2003-2008 by Leif Frenzel. All rights reserved. // This code is made available under the terms of the Eclipse Public License, // version 1.0 (EPL). See http://www.eclipse.org/legal/epl-v10.html package net.sf.eclipsefp.haskell.debug.ui.internal.launch; import java.util.List; import net.sf.eclipsefp.haskell.core.cabalmodel.PackageDescriptionStanza; import net.sf.eclipsefp.haskell.debug.core.internal.launch.ExecutableHaskellLaunchDelegate; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchConfiguration; /** * <p> * encapsulates the work involved in finding a launch configuration (if one * exists) for some element and launching it. * </p> * * @author Leif Frenzel */ class ExecutableLaunchOperation extends ExecutableOrTestSuiteLaunchOperation implements IExecutableTestSuiteLaunchOperation { public static final String EXECUTABLE_CONFIG_TYPE = ExecutableHaskellLaunchDelegate.class.getName(); // helping methods ////////////////// // private IFile findExecutable( final IResource res ) throws CoreException { // IFile result = null; // IFile[] exes = ResourceUtil.getProjectExecutables( res.getProject() ); // for( IFile exe: exes ) { // if( res.equals( exe ) ) { // result = exe; // } // } // if( result == null && exes.length == 1 ) { // result = exes[ 0 ]; // } // if( result == null ) { // String pattern = UITexts.executableLaunchOperations_errorMsg; // String msg = NLS.bind( pattern, res.getName() ); // String pluginId = HaskellUIPlugin.getPluginId(); // Status status = new Status( IStatus.ERROR, pluginId, 0, msg, null ); // throw new CoreException( status ); // } // return result; // } @Override protected String getConfigTypeName() { return EXECUTABLE_CONFIG_TYPE; } public static List<ILaunchConfiguration> findConfiguration( final IProject project,final PackageDescriptionStanza stanza ) throws CoreException { return ExecutableOrTestSuiteLaunchOperation.findConfiguration( project, EXECUTABLE_CONFIG_TYPE,stanza ); } }