Bug 322689 - [resolver] stringVariablePresentation extension point
requires impementation of internal interface
diff --git a/org.eclipse.debug.ui/META-INF/MANIFEST.MF b/org.eclipse.debug.ui/META-INF/MANIFEST.MF
index 2885563..d5bbbaa 100644
--- a/org.eclipse.debug.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.debug.ui/META-INF/MANIFEST.MF
@@ -70,7 +70,8 @@
  org.eclipse.debug.ui.console,
  org.eclipse.debug.ui.contexts,
  org.eclipse.debug.ui.memory,
- org.eclipse.debug.ui.sourcelookup
+ org.eclipse.debug.ui.sourcelookup,
+ org.eclipse.debug.ui.stringsubstitution
 Require-Bundle: org.eclipse.core.expressions;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.core.variables;bundle-version="[3.2.0,4.0.0)",
  org.eclipse.ui;bundle-version="[3.5.0,4.0.0)",
diff --git a/org.eclipse.debug.ui/schema/stringVariablePresentations.exsd b/org.eclipse.debug.ui/schema/stringVariablePresentations.exsd
index 44100cc..613c623 100644
--- a/org.eclipse.debug.ui/schema/stringVariablePresentations.exsd
+++ b/org.eclipse.debug.ui/schema/stringVariablePresentations.exsd
@@ -1,122 +1,122 @@
-<?xml version='1.0' encoding='UTF-8'?>

-<!-- Schema file written by PDE -->

-<schema targetNamespace="org.eclipse.debug.ui" xmlns="http://www.w3.org/2001/XMLSchema">

-<annotation>

-      <appInfo>

-         <meta.schema plugin="org.eclipse.debug.ui" id="stringVariablePresentations" name="String Variable Presentations"/>

-      </appInfo>

-      <documentation>

-         This extension point provides a mechanism for contributing a user interface/presentation for a string substitution variable (i.e. a context variable or value variable).

-      </documentation>

-   </annotation>

-

-   <element name="extension">

-      <annotation>

-         <appInfo>

-            <meta.element />

-         </appInfo>

-      </annotation>

-      <complexType>

-         <sequence>

-            <element ref="variablePresentation" minOccurs="0" maxOccurs="unbounded"/>

-         </sequence>

-         <attribute name="point" type="string" use="required">

-            <annotation>

-               <documentation>

-                  a fully qualified identifier of the target extension point

-               </documentation>

-            </annotation>

-         </attribute>

-         <attribute name="id" type="string">

-            <annotation>

-               <documentation>

-                  an optional identifier of the extension instance

-               </documentation>

-            </annotation>

-         </attribute>

-         <attribute name="name" type="string">

-            <annotation>

-               <documentation>

-                  an optional name of the extension instance

-               </documentation>

-            </annotation>

-         </attribute>

-      </complexType>

-   </element>

-

-   <element name="variablePresentation">

-      <complexType>

-         <attribute name="variableName" type="string" use="required">

-            <annotation>

-               <documentation>

-                  specifies the variable this presentation is for

-               </documentation>

-               <appInfo>

-                  <meta.attribute kind="identifier" basedOn="org.eclipse.core.variables.dynamicVariables/variable/@name"/>

-               </appInfo>

-            </annotation>

-         </attribute>

-         <attribute name="argumentSelector" type="string" use="required">

-            <annotation>

-               <documentation>

-                  specifies a fully qualified name of a Java class that implements &lt;code&gt;IArgumentSelector&lt;/code&gt;

-               </documentation>

-               <appInfo>

-                  <meta.attribute kind="java" basedOn=":org.eclipse.debug.internal.ui.stringsubstitution.IArgumentSelector"/>

-               </appInfo>

-            </annotation>

-         </attribute>

-      </complexType>

-   </element>

-

-   <annotation>

-      <appInfo>

-         <meta.section type="since"/>

-      </appInfo>

-      <documentation>

-         2.1

-      </documentation>

-   </annotation>

-

-   <annotation>

-      <appInfo>

-         <meta.section type="examples"/>

-      </appInfo>

-      <documentation>

-         The following is an example of a variable presentation contribution: 

-&lt;pre&gt;

-&lt;extension point=&quot;org.eclipse.debug.ui.stringVariablePresentations&quot;&gt;

-  &lt;variablePresentation 

-     variableName=&quot;example_variable&quot;

-     argumentSelector=&quot;com.example.ExampleArgumentChooser&quot;&gt;

-  &lt;/variablePresentation&gt;

-&lt;/extension&gt;

-&lt;/pre&gt;

-In the above example, the contributed presentation will be used for the variable named &quot;example_variable&quot;. An argument selector is specified to configure an argument applicable to the variable.

-      </documentation>

-   </annotation>

-

-   <annotation>

-      <appInfo>

-         <meta.section type="apiInfo"/>

-      </appInfo>

-      <documentation>

-         Value of the attribute &lt;b&gt;argumentSelector&lt;/b&gt; must be a fully qualified name of a Java class that implements the interface &lt;b&gt;org.eclipse.debug.ui.stringsubstitution.IArgumentSelector&lt;/b&gt;.

-      </documentation>

-   </annotation>

-

-

-   <annotation>

-      <appInfo>

-         <meta.section type="copyright"/>

-      </appInfo>

-      <documentation>

-         Copyright (c) 2003, 2005 IBM Corporation and others.&lt;br&gt;

-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 

-&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;

-      </documentation>

-   </annotation>

-

-</schema>

+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.debug.ui" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+      <appInfo>
+         <meta.schema plugin="org.eclipse.debug.ui" id="stringVariablePresentations" name="String Variable Presentations"/>
+      </appInfo>
+      <documentation>
+         This extension point provides a mechanism for contributing a user interface/presentation for a string substitution variable (i.e. a context variable or value variable).
+      </documentation>
+   </annotation>
+
+   <element name="extension">
+      <annotation>
+         <appInfo>
+            <meta.element />
+         </appInfo>
+      </annotation>
+      <complexType>
+         <sequence>
+            <element ref="variablePresentation" minOccurs="0" maxOccurs="unbounded"/>
+         </sequence>
+         <attribute name="point" type="string" use="required">
+            <annotation>
+               <documentation>
+                  a fully qualified identifier of the target extension point
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="id" type="string">
+            <annotation>
+               <documentation>
+                  an optional identifier of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="name" type="string">
+            <annotation>
+               <documentation>
+                  an optional name of the extension instance
+               </documentation>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <element name="variablePresentation">
+      <complexType>
+         <attribute name="variableName" type="string" use="required">
+            <annotation>
+               <documentation>
+                  specifies the variable this presentation is for
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="identifier" basedOn="org.eclipse.core.variables.dynamicVariables/variable/@name"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+         <attribute name="argumentSelector" type="string" use="required">
+            <annotation>
+               <documentation>
+                  specifies a fully qualified name of a Java class that implements &lt;code&gt;IArgumentSelector&lt;/code&gt;
+               </documentation>
+               <appInfo>
+                  <meta.attribute kind="java" basedOn=":org.eclipse.debug.ui.stringsubstitution.IArgumentSelector"/>
+               </appInfo>
+            </annotation>
+         </attribute>
+      </complexType>
+   </element>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="since"/>
+      </appInfo>
+      <documentation>
+         2.1
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="examples"/>
+      </appInfo>
+      <documentation>
+         The following is an example of a variable presentation contribution: 
+&lt;pre&gt;
+&lt;extension point=&quot;org.eclipse.debug.ui.stringVariablePresentations&quot;&gt;
+  &lt;variablePresentation 
+     variableName=&quot;example_variable&quot;
+     argumentSelector=&quot;com.example.ExampleArgumentChooser&quot;&gt;
+  &lt;/variablePresentation&gt;
+&lt;/extension&gt;
+&lt;/pre&gt;
+In the above example, the contributed presentation will be used for the variable named &quot;example_variable&quot;. An argument selector is specified to configure an argument applicable to the variable.
+      </documentation>
+   </annotation>
+
+
+   <annotation>
+      <appInfo>
+         <meta.section type="copyright"/>
+      </appInfo>
+      <documentation>
+         Copyright (c) 2003, 2013 IBM Corporation and others.&lt;br&gt;
+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 
+&lt;a href=&quot;http://www.eclipse.org/legal/epl-v10.html&quot;&gt;http://www.eclipse.org/legal/epl-v10.html&lt;/a&gt;
+      </documentation>
+   </annotation>
+
+   <annotation>
+      <appInfo>
+         <meta.section type="apiInfo"/>
+      </appInfo>
+      <documentation>
+         Value of the attribute &lt;b&gt;argumentSelector&lt;/b&gt; must be a fully qualified name of a Java class that implements the interface &lt;b&gt;org.eclipse.debug.ui.stringsubstitution.IArgumentSelector&lt;/b&gt;.
+      </documentation>
+   </annotation>
+
+</schema>
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/IArgumentSelector.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/IArgumentSelector.java
index 025697c..ae61904 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/IArgumentSelector.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/IArgumentSelector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
  * 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
@@ -10,10 +10,6 @@
  *******************************************************************************/
 package org.eclipse.debug.internal.ui.stringsubstitution;
 
-import org.eclipse.core.variables.IStringVariable;
-import org.eclipse.swt.widgets.Shell;
-
-
 /**
  * A variable presentation extension can contribute an argument selector
  * which is use to configure the argument for a string substitution 
@@ -21,16 +17,5 @@
  * 
  * @since 3.0
  */
-public interface IArgumentSelector {
-
-	/**
-	 * Selects and returns an argument for the given variable, 
-	 * or <code>null</code> if none.
-	 * 
-	 * @param variable the variable an arugment is being seleted for
-	 * @param the shell to create any dialogs on, or <code>null</code> if none
-	 * @return argument for the given variable or <code>null</code>
-	 *  if none
-	 */
-	public String selectArgument(IStringVariable variable, Shell shell);
+public interface IArgumentSelector extends org.eclipse.debug.ui.stringsubstitution.IArgumentSelector{
 }
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/ResourceSelector.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/ResourceSelector.java
index d6e0f6a..edc465e 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/ResourceSelector.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/ResourceSelector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
  * 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
@@ -13,6 +13,7 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.variables.IStringVariable;
+import org.eclipse.debug.ui.stringsubstitution.IArgumentSelector;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.dialogs.ResourceListSelectionDialog;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringVariablePresentationManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringVariablePresentationManager.java
index 5832140..c3c87ae 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringVariablePresentationManager.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/StringVariablePresentationManager.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
  * 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
@@ -10,7 +10,6 @@
  *******************************************************************************/
 package org.eclipse.debug.internal.ui.stringsubstitution;
 
-import com.ibm.icu.text.MessageFormat;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -20,6 +19,9 @@
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.variables.IStringVariable;
 import org.eclipse.debug.internal.ui.DebugUIPlugin;
+import org.eclipse.debug.ui.stringsubstitution.IArgumentSelector;
+
+import com.ibm.icu.text.MessageFormat;
 
 /**
  * Manages argument selectors (choosers) for string variables.
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/SystemPropertyArgumentSelector.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/SystemPropertyArgumentSelector.java
index b633cac..4f5d215 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/SystemPropertyArgumentSelector.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/stringsubstitution/SystemPropertyArgumentSelector.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
+ * Copyright (c) 2005, 2013 IBM Corporation and others.
  * 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
@@ -11,6 +11,7 @@
 package org.eclipse.debug.internal.ui.stringsubstitution;
 
 import org.eclipse.core.variables.IStringVariable;
+import org.eclipse.debug.ui.stringsubstitution.IArgumentSelector;
 import org.eclipse.jface.viewers.LabelProvider;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.widgets.Shell;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java
index e51c52c..1065f17 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/StringVariableSelectionDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
+ * Copyright (c) 2000, 2013 IBM Corporation and others.
  * 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
@@ -22,7 +22,7 @@
 import org.eclipse.debug.internal.ui.IDebugHelpContextIds;
 import org.eclipse.debug.internal.ui.SWTFactory;
 import org.eclipse.debug.internal.ui.preferences.StringVariablePreferencePage;
-import org.eclipse.debug.internal.ui.stringsubstitution.IArgumentSelector;
+import org.eclipse.debug.ui.stringsubstitution.IArgumentSelector;
 import org.eclipse.debug.internal.ui.stringsubstitution.StringSubstitutionMessages;
 import org.eclipse.debug.internal.ui.stringsubstitution.StringVariableLabelProvider;
 import org.eclipse.debug.internal.ui.stringsubstitution.StringVariablePresentationManager;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/stringsubstitution/IArgumentSelector.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/stringsubstitution/IArgumentSelector.java
new file mode 100644
index 0000000..d2c9192
--- /dev/null
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/ui/stringsubstitution/IArgumentSelector.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2013 IBM Corporation and others.
+ * 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:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.debug.ui.stringsubstitution;
+
+import org.eclipse.core.variables.IStringVariable;
+import org.eclipse.swt.widgets.Shell;
+
+
+/**
+ * A variable presentation extension can contribute an argument selector
+ * which is use to configure the argument for a string substitution 
+ * variable.
+ * 
+ * @since 3.9
+ */
+public interface IArgumentSelector {
+
+	/**
+	 * Selects and returns an argument for the given variable, 
+	 * or <code>null</code> if none.
+	 * 
+	 * @param variable the variable an argument is being selected for
+	 * @param the shell to create any dialogs on, or <code>null</code> if none
+	 * @return argument for the given variable or <code>null</code>
+	 *  if none
+	 */
+	public String selectArgument(IStringVariable variable, Shell shell);
+}