X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/launchConfigurations/ExternalToolsUtil.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/launchConfigurations/ExternalToolsUtil.java index 6bf4a73..937347d 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/launchConfigurations/ExternalToolsUtil.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/externaltools/launchConfigurations/ExternalToolsUtil.java @@ -1,13 +1,13 @@ package net.sourceforge.phpdt.externaltools.launchConfigurations; /********************************************************************** -Copyright (c) 2002 IBM Corp. and others. All rights reserved. -This file is made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html -  -Contributors: -**********************************************************************/ + Copyright (c) 2002 IBM Corp. and others. All rights reserved. + This file is made available under the terms of the Common Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/cpl-v10.html + � + Contributors: + **********************************************************************/ import java.io.File; import java.text.MessageFormat; @@ -54,23 +54,23 @@ public class ExternalToolsUtil { }; /** - * Throws a core exception with an error status object built from - * the given message, lower level exception, and error code. + * Throws a core exception with an error status object built from the given message, lower level exception, and error code. * - * @param message the status message - * @param exception lower level exception associated with the - * error, or null if none - * @param code error code + * @param message + * the status message + * @param exception + * lower level exception associated with the error, or null if none + * @param code + * error code */ protected static void abort(String message, Throwable exception, int code) throws CoreException { throw new CoreException(new Status(IStatus.ERROR, IExternalToolConstants.PLUGIN_ID, code, message, exception)); } /** - * Returns active variable context. The active variable context is used to - * expand variable expressions. If the workspace is currently being built, - * the context is associated with the project being built. Otherwise, the - * context is associated with the selected resource. + * Returns active variable context. The active variable context is used to expand variable expressions. If the workspace is + * currently being built, the context is associated with the project being built. Otherwise, the context is associated with the + * selected resource. * * @return active variable context */ @@ -79,35 +79,39 @@ public class ExternalToolsUtil { } /** - * Expands and returns the location attribute of the given launch - * configuration, based on the given variable context. The location is - * verified to point to an existing file, in the local file system. + * Expands and returns the location attribute of the given launch configuration, based on the given variable context. The location + * is verified to point to an existing file, in the local file system. * - * @param configuration launch configuration - * @param context context used to expand variables - * @return an absolute path to a file in the local file system - * @throws CoreException if unable to retrieve the associated launch - * configuration attribute, if unable to resolve any variables, or if the - * resolved location does not point to an existing file in the local file - * system + * @param configuration + * launch configuration + * @param context + * context used to expand variables + * @return an absolute path to a file in the local file system + * @throws CoreException + * if unable to retrieve the associated launch configuration attribute, if unable to resolve any variables, or if the + * resolved location does not point to an existing file in the local file system */ public static IPath getLocation(ILaunchConfiguration configuration, ExpandVariableContext context) throws CoreException { String location = configuration.getAttribute(IExternalToolConstants.ATTR_LOCATION, (String) null); if (location == null) { - abort(MessageFormat.format(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.Location_not_specified_by_{0}_1"), new String[] { configuration.getName()}), null, 0); //$NON-NLS-1$ + abort(MessageFormat.format(ExternalToolsLaunchConfigurationMessages + .getString("ExternalToolsUtil.Location_not_specified_by_{0}_1"), new String[] { configuration.getName() }), null, 0); //$NON-NLS-1$ } else { - MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsModelMessages.getString("RunExternalToolAction.runProblem"), null); //$NON-NLS-1$; + MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsModelMessages + .getString("RunExternalToolAction.runProblem"), null); //$NON-NLS-1$; String expandedLocation = ToolUtil.expandFileLocation(location, context, status); if (status.isOK()) { if (expandedLocation == null || expandedLocation.length() == 0) { - String msg = ExternalToolsModelMessages.format("DefaultRunnerContext.invalidLocation", new Object[] { configuration.getName()}); //$NON-NLS-1$ + String msg = ExternalToolsModelMessages.format( + "DefaultRunnerContext.invalidLocation", new Object[] { configuration.getName() }); //$NON-NLS-1$ abort(msg, null, 0); } else { File file = new File(expandedLocation); if (file.isFile()) { return new Path(expandedLocation); } else { - String msg = ExternalToolsModelMessages.format("DefaultRunnerContext.invalidLocation", new Object[] { configuration.getName()}); //$NON-NLS-1$ + String msg = ExternalToolsModelMessages.format( + "DefaultRunnerContext.invalidLocation", new Object[] { configuration.getName() }); //$NON-NLS-1$ abort(msg, null, 0); } } @@ -120,25 +124,24 @@ public class ExternalToolsUtil { } /** - * Expands and returns the working directory attribute of the given launch - * configuration, based on the given variable context. Returns - * null if a working directory is not specified. If specified, - * the working is verified to point to an existing directory in the local - * file system. + * Expands and returns the working directory attribute of the given launch configuration, based on the given variable context. + * Returns null if a working directory is not specified. If specified, the working is verified to point to an + * existing directory in the local file system. * - * @param configuration launch configuration - * @param context context used to expand variables - * @return an absolute path to a direcoty in the local file system, or - * null if unspecified - * @throws CoreException if unable to retrieve the associated launch - * configuration attribute, if unable to resolve any variables, or if the - * resolved location does not point to an existing directory in the local - * file system + * @param configuration + * launch configuration + * @param context + * context used to expand variables + * @return an absolute path to a direcoty in the local file system, or null if unspecified + * @throws CoreException + * if unable to retrieve the associated launch configuration attribute, if unable to resolve any variables, or if the + * resolved location does not point to an existing directory in the local file system */ public static IPath getWorkingDirectory(ILaunchConfiguration configuration, ExpandVariableContext context) throws CoreException { String location = configuration.getAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, (String) null); if (location != null) { - MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsModelMessages.getString("RunExternalToolAction.runProblem"), null); //$NON-NLS-1$; + MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsModelMessages + .getString("RunExternalToolAction.runProblem"), null); //$NON-NLS-1$; String expandedLocation = ToolUtil.expandDirectoryLocation(location, context, status); if (status.isOK()) { if (expandedLocation != null && expandedLocation.length() > 0) { @@ -146,7 +149,8 @@ public class ExternalToolsUtil { if (path.isDirectory()) { return new Path(expandedLocation); } else { - String msg = ExternalToolsModelMessages.format("DefaultRunnerContext.invalidDirectory", new Object[] { configuration.getName()}); //$NON-NLS-1$ + String msg = ExternalToolsModelMessages.format( + "DefaultRunnerContext.invalidDirectory", new Object[] { configuration.getName() }); //$NON-NLS-1$ abort(msg, null, 0); } } @@ -158,21 +162,22 @@ public class ExternalToolsUtil { } /** - * Expands and returns the arguments attribute of the given launch - * configuration, based on the given variable context. Returns + * Expands and returns the arguments attribute of the given launch configuration, based on the given variable context. Returns * null if arguments are not specified. * - * @param configuration launch configuration - * @param context context used to expand variables - * @return an array of resolved arguments, or null if - * unspecified - * @throws CoreException if unable to retrieve the associated launch - * configuration attribute, or if unable to resolve any variables + * @param configuration + * launch configuration + * @param context + * context used to expand variables + * @return an array of resolved arguments, or null if unspecified + * @throws CoreException + * if unable to retrieve the associated launch configuration attribute, or if unable to resolve any variables */ public static String[] getArguments(ILaunchConfiguration configuration, ExpandVariableContext context) throws CoreException { String args = configuration.getAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, (String) null); if (args != null) { - MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsModelMessages.getString("RunExternalToolAction.runProblem"), null); //$NON-NLS-1$; + MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsModelMessages + .getString("RunExternalToolAction.runProblem"), null); //$NON-NLS-1$; String[] expandedArgs = ToolUtil.expandArguments(args, context, status); if (status.isOK()) { return expandedArgs; @@ -184,24 +189,24 @@ public class ExternalToolsUtil { } /** - * Returns the refresh scope specified by the given launch configuration or - * null if none. + * Returns the refresh scope specified by the given launch configuration or null if none. * * @param configuration * @return refresh scope - * @throws CoreException if unable to access the associated attribute + * @throws CoreException + * if unable to access the associated attribute */ public static String getRefreshScope(ILaunchConfiguration configuration) throws CoreException { return configuration.getAttribute(IExternalToolConstants.ATTR_REFRESH_SCOPE, (String) null); } /** - * Returns whether the refresh scope specified by the given launch - * configuration is recursive. + * Returns whether the refresh scope specified by the given launch configuration is recursive. * * @param configuration * @return whether the refresh scope is recursive - * @throws CoreException if unable to access the associated attribute + * @throws CoreException + * if unable to access the associated attribute */ public static boolean isRefreshRecursive(ILaunchConfiguration configuration) throws CoreException { return configuration.getAttribute(IExternalToolConstants.ATTR_REFRESH_RECURSIVE, false); @@ -210,27 +215,33 @@ public class ExternalToolsUtil { /** * Refreshes the resources as specified by the given launch configuration. * - * @param configuration launch configuration - * @param context context used to expand variables - * @param monitor progress monitor - * @throws CoreException if an exception occurrs while refreshing resources + * @param configuration + * launch configuration + * @param context + * context used to expand variables + * @param monitor + * progress monitor + * @throws CoreException + * if an exception occurrs while refreshing resources */ public static void refreshResources(ILaunchConfiguration configuration, ExpandVariableContext context, IProgressMonitor monitor) - throws CoreException { + throws CoreException { String scope = getRefreshScope(configuration); if (scope == null) return; ToolUtil.VariableDefinition varDef = ToolUtil.extractVariableTag(scope, 0); if (varDef.start == -1 || varDef.end == -1 || varDef.name == null) { - String msg = ExternalToolsModelMessages.format("DefaultRunnerContext.invalidRefreshVarFormat", new Object[] { configuration.getName()}); //$NON-NLS-1$ + String msg = ExternalToolsModelMessages.format( + "DefaultRunnerContext.invalidRefreshVarFormat", new Object[] { configuration.getName() }); //$NON-NLS-1$ abort(msg, null, 0); } RefreshScopeVariableRegistry registry = ExternalToolsPlugin.getDefault().getRefreshVariableRegistry(); RefreshScopeVariable variable = registry.getRefreshVariable(varDef.name); if (variable == null) { - String msg = ExternalToolsModelMessages.format("DefaultRunnerContext.noRefreshVarNamed", new Object[] { configuration.getName(), varDef.name }); //$NON-NLS-1$ + String msg = ExternalToolsModelMessages.format( + "DefaultRunnerContext.noRefreshVarNamed", new Object[] { configuration.getName(), varDef.name }); //$NON-NLS-1$ abort(msg, null, 0); } @@ -246,9 +257,10 @@ public class ExternalToolsUtil { return; monitor.beginTask(ExternalToolsModelMessages.getString("DefaultRunnerContext.refreshResources"), //$NON-NLS-1$ - resources.length); + resources.length); - MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.Exception(s)_occurred_during_refresh._2"), null); //$NON-NLS-1$ + MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsLaunchConfigurationMessages + .getString("ExternalToolsUtil.Exception(s)_occurred_during_refresh._2"), null); //$NON-NLS-1$ for (int i = 0; i < resources.length; i++) { if (monitor.isCanceled()) break; @@ -273,22 +285,22 @@ public class ExternalToolsUtil { * * @param configuration * @return whether this tool is to be run in the background - * @throws CoreException if unable to access the associated attribute + * @throws CoreException + * if unable to access the associated attribute */ public static boolean isBackground(ILaunchConfiguration configuration) throws CoreException { return configuration.getAttribute(IExternalToolConstants.ATTR_RUN_IN_BACKGROUND, false); } /** - * Returns a launch configuration from the given ICommand arguments. If the - * given arguments are from an old-style external tool, an unsaved working - * copy will be created from the arguments and returned. + * Returns a launch configuration from the given ICommand arguments. If the given arguments are from an old-style external tool, + * an unsaved working copy will be created from the arguments and returned. * - * @param commandArgs the builder ICommand arguments - * @param newName a new name for the config if the one in the command is - * invalid - * @return a launch configuration, a launch configuration working copy, or - * null if not possible. + * @param commandArgs + * the builder ICommand arguments + * @param newName + * a new name for the config if the one in the command is invalid + * @return a launch configuration, a launch configuration working copy, or null if not possible. */ public static ILaunchConfiguration configFromBuildCommandArgs(Map commandArgs) { String configHandle = (String) commandArgs.get(LAUNCH_CONFIG_HANDLE); @@ -302,14 +314,25 @@ public class ExternalToolsUtil { return null; } } + /** - * Executes an external progam and saves the LaunchConfiguration under external tools - * @param command external tools command name - * @param executable executable path i.e.c:\apache\apache.exe - * @param arguments arguments for this configuration - * @param background run this configuration in background mode + * Executes an external progam and saves the LaunchConfiguration under external tools + * + * @param command + * external tools command name + * @param executable + * executable path i.e.c:\apache\apache.exe + * @param arguments + * arguments for this configuration + * @param background + * run this configuration in background mode */ public static void execute(String command, String executable, String arguments, boolean background) { + execute(command, executable, null, arguments, background); + } + + + public static void execute(String command, String executable, String workingDirectory, String arguments, boolean background) { ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager(); ILaunchConfigurationType type = manager.getLaunchConfigurationType(IExternalToolConstants.ID_PROGRAM_LAUNCH_CONFIGURATION_TYPE); @@ -320,7 +343,12 @@ public class ExternalToolsUtil { //some exception handling } wc.setAttribute(IExternalToolConstants.ATTR_LOCATION, executable); - wc.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, arguments); + if (workingDirectory != null) { + wc.setAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, workingDirectory); + } + if (arguments != null) { + wc.setAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, arguments); + } wc.setAttribute(IExternalToolConstants.ATTR_RUN_IN_BACKGROUND, background); // saving will add the configuration to the external tools configurations @@ -332,4 +360,4 @@ public class ExternalToolsUtil { } } -} +} \ No newline at end of file