Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarin Wright2003-09-23 16:22:25 +0000
committerDarin Wright2003-09-23 16:22:25 +0000
commit10a3de6a27c1b6fa7783f24600f93a895c89e239 (patch)
tree184b077f7434921ad4a5c58821e81fc1c39af19a /org.eclipse.ui.externaltools
parent7cc48b10eee323f1dd284869c17c709a9c98edc2 (diff)
downloadeclipse.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')
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsBuilderTab.java2
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsMainTab.java106
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/launchConfigurations/ExternalToolsUtil.java152
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/registry/ExternalToolMigration.java111
-rw-r--r--org.eclipse.ui.externaltools/External Tools Base/org/eclipse/ui/externaltools/internal/variables/BuildTypeExpander.java23
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/BackgroundResourceRefresher.java2
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramBuilderTabGroup.java2
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramLaunchDelegate.java6
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramMainTab.java8
-rw-r--r--org.eclipse.ui.externaltools/Program Tools Support/org/eclipse/ui/externaltools/internal/program/launchConfigurations/ProgramTabGroup.java2
-rw-r--r--org.eclipse.ui.externaltools/plugin.properties2
-rw-r--r--org.eclipse.ui.externaltools/plugin.xml9
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">

Back to the top