diff options
author | Darin Wright | 2003-09-23 16:22:25 +0000 |
---|---|---|
committer | Darin Wright | 2003-09-23 16:22:25 +0000 |
commit | 10a3de6a27c1b6fa7783f24600f93a895c89e239 (patch) | |
tree | 184b077f7434921ad4a5c58821e81fc1c39af19a /org.eclipse.ui.externaltools | |
parent | 7cc48b10eee323f1dd284869c17c709a9c98edc2 (diff) | |
download | eclipse.platform.debug-10a3de6a27c1b6fa7783f24600f93a895c89e239.tar.gz eclipse.platform.debug-10a3de6a27c1b6fa7783f24600f93a895c89e239.tar.xz eclipse.platform.debug-10a3de6a27c1b6fa7783f24600f93a895c89e239.zip |
bug 43332 - Re-work launch variable API
Diffstat (limited to 'org.eclipse.ui.externaltools')
12 files changed, 248 insertions, 177 deletions
diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuilderTab.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuilderTab.java index 6788399fc..dfd9f171c 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuilderTab.java +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuilderTab.java @@ -18,7 +18,7 @@ import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.ui.AbstractLaunchConfigurationTab; import org.eclipse.debug.ui.IDebugUIConstants; -import org.eclipse.debug.ui.launchVariables.RefreshTab; +import org.eclipse.debug.ui.RefreshTab; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsMainTab.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsMainTab.java index 33fdf74d9..edbc131fa 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsMainTab.java +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsMainTab.java @@ -12,7 +12,6 @@ package org.eclipse.ui.externaltools.internal.launchConfigurations; import java.io.File; -import java.text.MessageFormat; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; @@ -21,10 +20,9 @@ import org.eclipse.core.runtime.IPath; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; -import org.eclipse.debug.core.variables.ILaunchVariableManager; -import org.eclipse.debug.core.variables.LaunchVariableUtil; +import org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager; +import org.eclipse.debug.internal.ui.stringsubstitution.StringVariableSelectionDialog; import org.eclipse.debug.ui.AbstractLaunchConfigurationTab; -import org.eclipse.debug.ui.launchVariables.LaunchVariableSelectionDialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; @@ -231,9 +229,9 @@ public abstract class ExternalToolsMainTab extends AbstractLaunchConfigurationTa variableButton.setLayoutData(gridData); variableButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { - LaunchVariableSelectionDialog dialog= new LaunchVariableSelectionDialog(getShell()); + StringVariableSelectionDialog dialog= new StringVariableSelectionDialog(getShell()); if (dialog.open() == Window.OK) { - argumentField.insert(dialog.getForm().getSelectedVariable()); + argumentField.insert(dialog.getVariableExpression()); } } }); @@ -333,24 +331,7 @@ public abstract class ExternalToolsMainTab extends AbstractLaunchConfigurationTa public boolean isValid(ILaunchConfiguration launchConfig) { setErrorMessage(null); setMessage(null); - return validateLocation() && validateWorkDirectory() && validateArguments(); - } - - /** - * Validates the content of the arguments field - */ - protected boolean validateArguments() { - String value= argumentField.getText().trim(); - // Check if variables exist - if (!containsVariable(value)) { - return true; - } - String variableError= validateVariables(value); - if (variableError != null) { - setErrorMessage(variableError); - return false; - } - return true; + return validateLocation() && validateWorkDirectory(); } /** @@ -363,18 +344,17 @@ public abstract class ExternalToolsMainTab extends AbstractLaunchConfigurationTa setMessage(null); return false; } - - // Check if variables exist - if (containsVariable(value)) { - String variableError= validateVariables(value); - if (variableError != null) { - setErrorMessage(variableError); - return false; - } - return true; + + String location = null; + try { + location= getValue(value); + } catch (CoreException e) { + setErrorMessage(e.getMessage()); + return false; } - File file = new File(value); + + File file = new File(location); if (!file.exists()) { // The file does not exist. setErrorMessage(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsMainTab.External_tool_location_does_not_exist_19")); //$NON-NLS-1$ return false; @@ -387,32 +367,15 @@ public abstract class ExternalToolsMainTab extends AbstractLaunchConfigurationTa } /** - * Returns an error string to be displayed to the user if any variable - * errors are found in the given string or <code>null</code> if no errors - * are found. + * Returns the value of the given string with all variables substituted (if any). + * + * @param expression expression with variables + * @return resolved value of expression + * @exception CoreException if variable substitution fails */ - private String validateVariables(String value) { - int start= 0; - LaunchVariableUtil.VariableDefinition variable = LaunchVariableUtil.extractVariableDefinition(value, start); - while (variable.start != -1) { - if (variable.end == -1) { - return ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsMainTab.Invalid_Expected_closing_}"); //$NON-NLS-1$ - } - if (variable.name == null || variable.name.length() == 0) { - return ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsMainTab.No_variable_specified"); //$NON-NLS-1$ - } - ILaunchVariableManager manager= DebugPlugin.getDefault().getLaunchVariableManager(); - if (manager.getContextVariable(variable.name) == null && manager.getSimpleVariable(variable.name) == null) { - return MessageFormat.format(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsMainTab.Unknown_variable"), new String[] {variable.name}); //$NON-NLS-1$ - } - start= variable.end; - variable = LaunchVariableUtil.extractVariableDefinition(value, start); - } - return null; - } - - private boolean containsVariable(String value) { - return LaunchVariableUtil.extractVariableDefinition(value, 0).start != -1; + private String getValue(String expression) throws CoreException { + IStringVariableManager manager = DebugPlugin.getDefault().getStringVariableManager(); + return manager.performStringSubstitution(expression); } /** @@ -424,17 +387,16 @@ public abstract class ExternalToolsMainTab extends AbstractLaunchConfigurationTa if (value.length() <= 0) { return true; } - // Check if variables exist - if (containsVariable(value)) { - String variableError= validateVariables(value); - if (variableError != null) { - setErrorMessage(variableError); - return false; - } - return true; + + String dir = null; + try { + dir= getValue(value); + } catch (CoreException e) { + setErrorMessage(e.getMessage()); + return false; } - File file = new File(value); + File file = new File(dir); if (!file.exists()) { // The directory does not exist. setErrorMessage(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsMainTab.External_tool_working_directory_does_not_exist_or_is_invalid_21")); //$NON-NLS-1$ return false; @@ -469,7 +431,11 @@ public abstract class ExternalToolsMainTab extends AbstractLaunchConfigurationTa return; } IResource resource = (IResource)results[0]; - locationField.setText(LaunchVariableUtil.newVariableExpression(ILaunchVariableManager.VAR_WORKSPACE_LOC, resource.getFullPath().toString())); + locationField.setText(newVariableExpression("workspace_loc", resource.getFullPath().toString())); //$NON-NLS-1$ + } + + protected String newVariableExpression(String varName, String arg) { + return DebugPlugin.getDefault().getStringVariableManager().generateVariableExpression(varName, arg); } /** @@ -488,7 +454,7 @@ public abstract class ExternalToolsMainTab extends AbstractLaunchConfigurationTa Object[] resource = containerDialog.getResult(); String text= null; if (resource != null && resource.length > 0) { - text= LaunchVariableUtil.newVariableExpression(ILaunchVariableManager.VAR_WORKSPACE_LOC, ((IPath)resource[0]).toString()); + text= newVariableExpression("workspace_loc", ((IPath)resource[0]).toString()); //$NON-NLS-1$ } if (text != null) { workDirectoryField.setText(text); diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsUtil.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsUtil.java index 2a957db94..d3ecc7f41 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsUtil.java +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsUtil.java @@ -14,6 +14,8 @@ package org.eclipse.ui.externaltools.internal.launchConfigurations; import java.io.File; import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import org.eclipse.core.resources.IResource; @@ -21,14 +23,12 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunchConfiguration; -import org.eclipse.debug.core.variables.LaunchVariableUtil; -import org.eclipse.debug.ui.launchVariables.RefreshTab; -import org.eclipse.debug.ui.launchVariables.LaunchVariableContextManager; +import org.eclipse.debug.internal.core.stringsubstitution.IStringVariableManager; +import org.eclipse.debug.ui.RefreshTab; import org.eclipse.ui.externaltools.internal.model.IExternalToolConstants; import org.eclipse.ui.externaltools.internal.registry.ExternalToolMigration; @@ -43,6 +43,13 @@ public class ExternalToolsUtil { private static final String LAUNCH_CONFIG_HANDLE = "LaunchConfigHandle"; //$NON-NLS-1$ /** + * Argument parsing constants + */ + private static final char ARG_DELIMITER = ' '; + private static final char ARG_DBL_QUOTE = '"'; + private static final char ARG_BACKSLASH = '\\'; + + /** * Not to be instantiated. */ private ExternalToolsUtil() { @@ -78,23 +85,18 @@ public class ExternalToolsUtil { if (location == null) { 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, ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.Could_not_resolve_location._3"), null); //$NON-NLS-1$ - String expandedLocation = LaunchVariableUtil.expandVariables(location, status, LaunchVariableContextManager.getDefault().getVariableContext()); - if (status.isOK()) { - if (expandedLocation == null || expandedLocation.length() == 0) { + String expandedLocation = getStringVariableManager().performStringSubstitution(location); + if (expandedLocation == null || expandedLocation.length() == 0) { + String msg = MessageFormat.format(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.invalidLocation_{0}"), 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 = MessageFormat.format(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.invalidLocation_{0}"), 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 = MessageFormat.format(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.invalidLocation_{0}"), new Object[] { configuration.getName()}); //$NON-NLS-1$ - abort(msg, null, 0); - } } - } else { - throw new CoreException(status); } } // execution will not reach here @@ -116,13 +118,11 @@ public class ExternalToolsUtil { /** * Expands and returns the working directory attribute of the given launch - * configuration, based on the given variable context. Returns - * <code>null</code> if a working directory is not specified. If specified, - * the working is verified to point to an existing directory in the local - * file system. + * configuration. Returns <code>null</code> 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 directory in the local file system, or * <code>null</code> if unspecified * @throws CoreException if unable to retrieve the associated launch @@ -133,20 +133,15 @@ public class ExternalToolsUtil { public static IPath getWorkingDirectory(ILaunchConfiguration configuration) throws CoreException { String location = configuration.getAttribute(IExternalToolConstants.ATTR_WORKING_DIRECTORY, (String) null); if (location != null) { - MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.Could_not_resolve_working_directory._4"), null); //$NON-NLS-1$ - String expandedLocation = LaunchVariableUtil.expandVariables(location, status, LaunchVariableContextManager.getDefault().getVariableContext()); - if (status.isOK()) { - if (expandedLocation != null && expandedLocation.length() > 0) { - File path = new File(expandedLocation); - if (path.isDirectory()) { - return new Path(expandedLocation); - } else { - String msg = MessageFormat.format(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.invalidDirectory_{0}"), new Object[] { expandedLocation, configuration.getName()}); //$NON-NLS-1$ - abort(msg, null, 0); - } + String expandedLocation = getStringVariableManager().performStringSubstitution(location); + if (expandedLocation.length() > 0) { + File path = new File(expandedLocation); + if (path.isDirectory()) { + return new Path(expandedLocation); + } else { + String msg = MessageFormat.format(ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.invalidDirectory_{0}"), new Object[] { expandedLocation, configuration.getName()}); //$NON-NLS-1$ + abort(msg, null, 0); } - } else { - throw new CoreException(status); } } return null; @@ -154,11 +149,9 @@ public class ExternalToolsUtil { /** * Expands and returns the arguments attribute of the given launch - * configuration, based on the given variable context. Returns - * <code>null</code> if arguments are not specified. + * configuration. Returns <code>null</code> if arguments are not specified. * * @param configuration launch configuration - * @param context context used to expand variables * @return an array of resolved arguments, or <code>null</code> if * unspecified * @throws CoreException if unable to retrieve the associated launch @@ -167,17 +160,16 @@ public class ExternalToolsUtil { public static String[] getArguments(ILaunchConfiguration configuration) throws CoreException { String args = configuration.getAttribute(IExternalToolConstants.ATTR_TOOL_ARGUMENTS, (String) null); if (args != null) { - MultiStatus status = new MultiStatus(IExternalToolConstants.PLUGIN_ID, 0, ExternalToolsLaunchConfigurationMessages.getString("ExternalToolsUtil.Could_not_resolve_an_argument._1"), null); //$NON-NLS-1$ - String[] expandedArgs = LaunchVariableUtil.expandStrings(args, status, LaunchVariableContextManager.getDefault().getVariableContext()); - if (status.isOK()) { - return expandedArgs; - } else { - throw new CoreException(status); - } + String expanded = getStringVariableManager().performStringSubstitution(args); + return parseStringIntoList(expanded); } return null; } + private static IStringVariableManager getStringVariableManager() { + return DebugPlugin.getDefault().getStringVariableManager(); + } + /** * Returns whether the given launch configuration is enabled. This property * is intended only to apply to external tool builder configurations and @@ -234,4 +226,72 @@ public class ExternalToolsUtil { return null; } } + + /** + * Parses the argument text into an array of individual + * strings using the space character as the delimiter. + * An individual argument containing spaces must have a + * double quote (") at the start and end. Two double + * quotes together is taken to mean an embedded double + * quote in the argument text. + * + * @param arguments the arguments as one string + * @return the array of arguments + */ + public static String[] parseStringIntoList(String arguments) { + if (arguments == null || arguments.length() == 0) { + return new String[0]; + } + + List list = new ArrayList(10); + boolean inQuotes = false; + int start = 0; + int end = arguments.length(); + StringBuffer buffer = new StringBuffer(end); + + while (start < end) { + char ch = arguments.charAt(start); + start++; + + switch (ch) { + case ARG_DELIMITER : + if (inQuotes) { + buffer.append(ch); + } else { + if (buffer.length() > 0) { + list.add(buffer.toString()); + buffer.setLength(0); + } + } + break; + + case ARG_BACKSLASH: + if (start < end && (arguments.charAt(start) == ARG_DBL_QUOTE)) { + // Escaped double-quote + buffer.append('\"'); + start++; + } else { + buffer.append(ch); + } + break; + + case ARG_DBL_QUOTE : + inQuotes = !inQuotes; + break; + + default : + buffer.append(ch); + break; + } + + } + + if (buffer.length() > 0) { + list.add(buffer.toString()); + } + + String[] results = new String[list.size()]; + list.toArray(results); + return results; + } } diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/registry/ExternalToolMigration.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/registry/ExternalToolMigration.java index 3dc2463e9..bf8208c6c 100644 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/registry/ExternalToolMigration.java +++ b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/registry/ExternalToolMigration.java @@ -21,10 +21,8 @@ import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.core.ILaunchManager; -import org.eclipse.debug.core.variables.ILaunchVariableManager; -import org.eclipse.debug.core.variables.LaunchVariableUtil; import org.eclipse.debug.ui.IDebugUIConstants; -import org.eclipse.debug.ui.launchVariables.RefreshTab; +import org.eclipse.debug.ui.RefreshTab; import org.eclipse.ui.externaltools.internal.model.ExternalToolsPlugin; import org.eclipse.ui.externaltools.internal.model.IExternalToolConstants; import org.eclipse.ui.externaltools.internal.ui.ExternalToolsUIMessages; @@ -37,6 +35,54 @@ public final class ExternalToolMigration { /* * Ant tags */ + + /** + * Structure to represent a variable definition within a + * source string. + */ + public static final class VariableDefinition { + /** + * Index in the source text where the variable started + * or <code>-1</code> if no valid variable start tag + * identifier found. + */ + public int start = -1; + + /** + * Index in the source text of the character following + * the end of the variable or <code>-1</code> if no + * valid variable end tag found. + */ + public int end = -1; + + /** + * The variable's name found in the source text, or + * <code>null</code> if no valid variable found. + */ + public String name = null; + + /** + * The variable's argument found in the source text, or + * <code>null</code> if no valid variable found or if + * the variable did not specify an argument + */ + public String argument = null; + + /** + * Create an initialized variable definition. + */ + private VariableDefinition() { + super(); + } + } + + /** + * Variable tag indentifiers + */ + private static final String VAR_TAG_START = "${"; //$NON-NLS-1$ + private static final String VAR_TAG_END = "}"; //$NON-NLS-1$ + private static final String VAR_TAG_SEP = ":"; //$NON-NLS-1$ + /** * External tool type for Ant build files (value <code>antBuildType</code>). */ @@ -64,7 +110,7 @@ public final class ExternalToolMigration { */ private static final String TAG_TOOL_TYPE = "!{tool_type}"; //$NON-NLS-1$ private static final String TAG_TOOL_NAME = "!{tool_name}"; //$NON-NLS-1$ - private static final String TAG_TOOL_LOCATION = "!{tool_loc}"; //$NON-NLS-1$ + //private static final String TAG_TOOL_LOCATION = "!{tool_loc}"; //$NON-NLS-1$ private static final String TAG_TOOL_ARGUMENTS = "!{tool_args}"; //$NON-NLS-1$ private static final String TAG_TOOL_DIRECTORY = "!{tool_dir}"; //$NON-NLS-1$ private static final String TAG_TOOL_REFRESH = "!{tool_refresh}"; //$NON-NLS-1$ @@ -182,20 +228,10 @@ public final class ExternalToolMigration { return null; } - // Update the location... - String location = (String) args.get(TAG_TOOL_LOCATION); - if (location != null) { - LaunchVariableUtil.VariableDefinition varDef = LaunchVariableUtil.extractVariableDefinition(location, 0); - if (ILaunchVariableManager.VAR_WORKSPACE_LOC.equals(varDef.name)) { - location = LaunchVariableUtil.newVariableExpression(ILaunchVariableManager.VAR_RESOURCE_LOC, varDef.argument); - } - config.setAttribute(IExternalToolConstants.ATTR_LOCATION, location); - } - // Update the refresh scope... String refresh = (String) args.get(TAG_TOOL_REFRESH); if (refresh != null) { - LaunchVariableUtil.VariableDefinition varDef = LaunchVariableUtil.extractVariableDefinition(refresh, 0); + VariableDefinition varDef = extractVariableDefinition(refresh, 0); if ("none".equals(varDef.name)) { //$NON-NLS-1$ refresh = null; } @@ -209,7 +245,7 @@ public final class ExternalToolMigration { int start = 0; ArrayList targets = new ArrayList(); StringBuffer buffer = new StringBuffer(); - LaunchVariableUtil.VariableDefinition varDef = LaunchVariableUtil.extractVariableDefinition(arguments, start); + VariableDefinition varDef = extractVariableDefinition(arguments, start); while (varDef.end != -1) { if ("ant_target".equals(varDef.name) && varDef.argument != null) { //$NON-NLS-1$ targets.add(varDef.argument); @@ -218,7 +254,7 @@ public final class ExternalToolMigration { buffer.append(arguments.substring(start, varDef.end)); } start = varDef.end; - varDef = LaunchVariableUtil.extractVariableDefinition(arguments, start); + varDef = extractVariableDefinition(arguments, start); } buffer.append(arguments.substring(start, arguments.length())); arguments = buffer.toString(); @@ -323,4 +359,45 @@ public final class ExternalToolMigration { } return config; } + + /** + * Extracts a variable name and argument from the given string. + * + * @param text the source text to parse for a variable tag + * @param start the index in the string to start the search + * @return the variable definition + */ + public static VariableDefinition extractVariableDefinition(String text, int start) { + VariableDefinition varDef = new VariableDefinition(); + + varDef.start = text.indexOf(VAR_TAG_START, start); + if (varDef.start < 0){ + return varDef; + } + start = varDef.start + VAR_TAG_START.length(); + + int end = text.indexOf(VAR_TAG_END, start); + if (end < 0) { + return varDef; + } + varDef.end = end + VAR_TAG_END.length(); + if (end == start) { + return varDef; + } + + int mid = text.indexOf(VAR_TAG_SEP, start); + if (mid < 0 || mid > end) { + varDef.name = text.substring(start, end); + } else { + if (mid > start) { + varDef.name = text.substring(start, mid); + } + mid = mid + VAR_TAG_SEP.length(); + if (mid < end) { + varDef.argument = text.substring(mid, end); + } + } + + return varDef; + } } diff --git a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildTypeExpander.java b/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildTypeExpander.java deleted file mode 100644 index 34e107161..000000000 --- a/org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildTypeExpander.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2003 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are 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: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.ui.externaltools.internal.variables; - -import org.eclipse.debug.core.variables.DefaultVariableExpander; -import org.eclipse.debug.core.variables.ExpandVariableContext; -import org.eclipse.ui.externaltools.internal.model.ExternalToolBuilder; - - -public class BuildTypeExpander extends DefaultVariableExpander { - - public String getText(String varTag, String varValue, ExpandVariableContext context) { - return ExternalToolBuilder.getBuildType(); - } -} diff --git a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/BackgroundResourceRefresher.java b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/BackgroundResourceRefresher.java index f93c07f6b..5bd166b6c 100644 --- a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/BackgroundResourceRefresher.java +++ b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/BackgroundResourceRefresher.java @@ -21,7 +21,7 @@ import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IDebugEventSetListener; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.model.IProcess; -import org.eclipse.debug.ui.launchVariables.RefreshTab; +import org.eclipse.debug.ui.RefreshTab; import org.eclipse.ui.externaltools.internal.model.ExternalToolsPlugin; /** diff --git a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramBuilderTabGroup.java b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramBuilderTabGroup.java index 78e71c18e..1c4ec53fb 100644 --- a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramBuilderTabGroup.java +++ b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramBuilderTabGroup.java @@ -14,7 +14,7 @@ package org.eclipse.ui.externaltools.internal.program.launchConfigurations; import org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup; import org.eclipse.debug.ui.ILaunchConfigurationDialog; import org.eclipse.debug.ui.ILaunchConfigurationTab; -import org.eclipse.debug.ui.launchVariables.RefreshTab; +import org.eclipse.debug.ui.RefreshTab; import org.eclipse.ui.externaltools.internal.launchConfigurations.ExternalToolsBuilderTab; public class ProgramBuilderTabGroup extends AbstractLaunchConfigurationTabGroup { diff --git a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java index 73852d6a0..56511394e 100644 --- a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java +++ b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java @@ -29,10 +29,8 @@ import org.eclipse.debug.core.ILaunchConfigurationType; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.model.ILaunchConfigurationDelegate; import org.eclipse.debug.core.model.IProcess; -import org.eclipse.debug.core.variables.LaunchVariableUtil; import org.eclipse.debug.ui.CommonTab; -import org.eclipse.debug.ui.launchVariables.LaunchVariableContextManager; -import org.eclipse.debug.ui.launchVariables.RefreshTab; +import org.eclipse.debug.ui.RefreshTab; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.ui.IWindowListener; import org.eclipse.ui.IWorkbenchWindow; @@ -141,7 +139,7 @@ public class ProgramLaunchDelegate implements ILaunchConfigurationDelegate { return; } - String[] envp = LaunchVariableUtil.getEnvironment(configuration, LaunchVariableContextManager.getDefault().getVariableContext()); + String[] envp = DebugPlugin.getDefault().getLaunchManager().getEnvironment(configuration); if (monitor.isCanceled()) { return; diff --git a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramMainTab.java b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramMainTab.java index 33999644c..e6db7b0d3 100644 --- a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramMainTab.java +++ b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramMainTab.java @@ -13,8 +13,6 @@ package org.eclipse.ui.externaltools.internal.program.launchConfigurations; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.debug.core.variables.ILaunchVariableManager; -import org.eclipse.debug.core.variables.LaunchVariableUtil; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.externaltools.internal.launchConfigurations.ExternalToolsMainTab; import org.eclipse.ui.externaltools.internal.model.IExternalToolsHelpContextIds; @@ -36,7 +34,11 @@ public class ProgramMainTab extends ExternalToolsMainTab { if (file == null) { return; } - locationField.setText(LaunchVariableUtil.newVariableExpression(ILaunchVariableManager.VAR_WORKSPACE_LOC, file.getFullPath().toString())); + StringBuffer expression = new StringBuffer(); + expression.append("${workspace_loc:"); //$NON-NLS-1$ + expression.append(file.getFullPath().toString()); + expression.append("}"); //$NON-NLS-1$ + locationField.setText(expression.toString()); } diff --git a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramTabGroup.java b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramTabGroup.java index 1b185273b..188678fa4 100644 --- a/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramTabGroup.java +++ b/org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramTabGroup.java @@ -15,7 +15,7 @@ import org.eclipse.debug.ui.CommonTab; import org.eclipse.debug.ui.EnvironmentTab; import org.eclipse.debug.ui.ILaunchConfigurationDialog; import org.eclipse.debug.ui.ILaunchConfigurationTab; -import org.eclipse.debug.ui.launchVariables.RefreshTab; +import org.eclipse.debug.ui.RefreshTab; public class ProgramTabGroup extends AbstractLaunchConfigurationTabGroup { diff --git a/org.eclipse.ui.externaltools/plugin.properties b/org.eclipse.ui.externaltools/plugin.properties index 84d58c895..54b29a8d3 100644 --- a/org.eclipse.ui.externaltools/plugin.properties +++ b/org.eclipse.ui.externaltools/plugin.properties @@ -12,7 +12,7 @@ Plugin.name = External Tools Plugin.providerName = Eclipse.org -build_type.description= Expands to the type of build, one of "incremental", "full", "auto", or "none". +build_type.description= The type of build being performed - "incremental", "full", "auto", or "none". ExtPoint.configurationDuplicationMaps = Launch Configuration Duplication Maps ExtPoint.toolTypes = External Tool Types diff --git a/org.eclipse.ui.externaltools/plugin.xml b/org.eclipse.ui.externaltools/plugin.xml index 540d62e0d..9708d5668 100644 --- a/org.eclipse.ui.externaltools/plugin.xml +++ b/org.eclipse.ui.externaltools/plugin.xml @@ -191,15 +191,6 @@ resolver="org.eclipse.ui.externaltools.internal.variables.BuildTypeResolver" description="%build_type.description"> </variable> - </extension> -<!-- Variable Extensions --> - <extension - point="org.eclipse.debug.core.contextLaunchVariables"> - <variable - name="build_type" - expanderClass="org.eclipse.ui.externaltools.internal.variables.BuildTypeExpander" - description="%build_type.description"> - </variable> </extension> <extension point="org.eclipse.debug.core.launchConfigurationComparators"> |