diff --git a/modeling/plugins/org.eclipse.pde.ds.ui/META-INF/MANIFEST.MF b/modeling/plugins/org.eclipse.pde.ds.ui/META-INF/MANIFEST.MF
index d8b3d38..ce9f369 100644
--- a/modeling/plugins/org.eclipse.pde.ds.ui/META-INF/MANIFEST.MF
+++ b/modeling/plugins/org.eclipse.pde.ds.ui/META-INF/MANIFEST.MF
@@ -16,7 +16,8 @@
  org.eclipse.wst.xml.core;bundle-version="1.1.400";resolution:=optional,
  org.eclipse.wst.xml.ui;bundle-version="1.1.0";resolution:=optional,
  org.eclipse.jface.text;bundle-version="3.5.0",
- org.eclipse.ui.ide;bundle-version="3.5.0"
+ org.eclipse.ui.ide;bundle-version="3.5.0",
+ org.eclipse.ui
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: J2SE-1.5
 Bundle-Localization: plugin
@@ -26,7 +27,8 @@
  org.eclipse.pde.ds.ui.internal.editor.detailpart.properties;x-internal:=true,
  org.eclipse.pde.ds.ui.internal.editor.detailpart.services;x-internal:=true,
  org.eclipse.pde.ds.ui.internal.editor.masterdetail;x-internal:=true,
- org.eclipse.pde.ds.ui.internal.editor.wizard;x-internal:=true
+ org.eclipse.pde.ds.ui.internal.editor.wizard;x-internal:=true,
+ org.eclipse.pde.ds.ui.internal.handlers;x-internal:=true
 Import-Package: org.eclipse.core.databinding,
  org.eclipse.core.databinding.observable,
  org.eclipse.core.databinding.observable.value,
diff --git a/modeling/plugins/org.eclipse.pde.ds.ui/plugin.properties b/modeling/plugins/org.eclipse.pde.ds.ui/plugin.properties
index dac6ed4..42be1ff 100644
--- a/modeling/plugins/org.eclipse.pde.ds.ui/plugin.properties
+++ b/modeling/plugins/org.eclipse.pde.ds.ui/plugin.properties
@@ -7,9 +7,10 @@
 # Contributors:
 #     Anyware Technologies - initial API and implementation
 #
-# $Id: plugin.properties,v 1.1 2009/02/13 13:26:26 bcabe Exp $
+# $Id: plugin.properties,v 1.2 2009/07/18 20:10:11 bcabe Exp $
 
 pluginName = Declarative Services 1.1 Editor
 providerName = Eclipse.org
 
-editor.name = Component Definition Editor (experimental)
\ No newline at end of file
+editor.name = Component Definition Editor (experimental)
+command.configureDSBuilder.name = Configure experimental DS Builder
\ No newline at end of file
diff --git a/modeling/plugins/org.eclipse.pde.ds.ui/plugin.xml b/modeling/plugins/org.eclipse.pde.ds.ui/plugin.xml
index c101919..1d113f7 100644
--- a/modeling/plugins/org.eclipse.pde.ds.ui/plugin.xml
+++ b/modeling/plugins/org.eclipse.pde.ds.ui/plugin.xml
@@ -17,4 +17,28 @@
          </contentTypeBinding>
       </editor>
    </extension>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            defaultHandler="org.eclipse.pde.ds.ui.internal.handlers.AddScrBuilderHandler"
+            id="org.eclipse.pde.ds.ui.experimental.commands.addScrBuilder"
+            name="%command.configureDSBuilder.name"/>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            locationURI="popup:org.eclipse.ui.popup.any">
+         <command
+               commandId="org.eclipse.pde.ds.ui.experimental.commands.addScrBuilder"
+               style="push">
+            <visibleWhen
+                  checkEnabled="false">
+               <iterate>
+                  <adapt
+                        type="org.eclipse.core.resources.IProject">
+                  </adapt></iterate>
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
 </plugin>
diff --git a/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/handlers/AddScrBuilderHandler.java b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/handlers/AddScrBuilderHandler.java
new file mode 100644
index 0000000..c727c97
--- /dev/null
+++ b/modeling/plugins/org.eclipse.pde.ds.ui/src/org/eclipse/pde/ds/ui/internal/handlers/AddScrBuilderHandler.java
@@ -0,0 +1,58 @@
+package org.eclipse.pde.ds.ui.internal.handlers;
+
+import org.eclipse.core.commands.*;
+import org.eclipse.core.resources.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Our sample handler extends AbstractHandler, an IHandler base class.
+ * @see org.eclipse.core.commands.IHandler
+ * @see org.eclipse.core.commands.AbstractHandler
+ */
+public class AddScrBuilderHandler extends AbstractHandler {
+	/**
+	 * The constructor.
+	 */
+	public AddScrBuilderHandler() {
+	}
+
+	/**
+	 * the command has been executed, so extract extract the needed information
+	 * from the application context.
+	 */
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		ISelection sel = HandlerUtil.getCurrentSelection(event);
+		if (!sel.isEmpty()) {
+			if (sel instanceof IStructuredSelection) {
+				IProject project = (IProject) ((IStructuredSelection) sel).getFirstElement();
+
+				IProjectDescription projectDescription = null;
+				try {
+					projectDescription = project.getDescription();
+				} catch (CoreException e) {
+					// TODO handle exception ...
+				}
+
+				ICommand[] buildCommands = projectDescription.getBuildSpec();
+				ICommand[] newBuildCommands = new ICommand[buildCommands.length + 1];
+				System.arraycopy(buildCommands, 0, newBuildCommands, 0, buildCommands.length);
+				ICommand buildCommand = projectDescription.newCommand();
+				buildCommand.setBuilderName("org.eclipse.pde.ds.builder.scrBuilder"); //$NON-NLS-1$
+				newBuildCommands[buildCommands.length] = buildCommand; //$NON-NLS-1$
+				projectDescription.setBuildSpec(newBuildCommands);
+
+				try {
+					project.setDescription(projectDescription, IResource.FORCE, null);
+					project.build(IncrementalProjectBuilder.FULL_BUILD, new NullProgressMonitor());
+				} catch (CoreException e) {
+					// TODO handle exception ...
+				}
+			}
+		}
+		return null;
+	}
+}
