diff --git a/plugins/org.eclipse.wst.common.project.facet.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.common.project.facet.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..9be9d65
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.project.facet.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Vendor: %providerName
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.wst.common.project.facet.ui; singleton:=true
+Bundle-Version: 1.3.11.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.wst.common.project.facet.ui.internal.FacetUiPlugin
+Bundle-Localization: plugin
+Export-Package: org.eclipse.wst.common.project.facet.ui,
+ org.eclipse.wst.common.project.facet.ui.internal;x-internal:=true
+Require-Bundle: org.eclipse.ui;bundle-version="[3.4.0,4.0.0)";visibility:=reexport,
+ org.eclipse.ui.forms;bundle-version="[3.3.100,4.0.0)",
+ org.eclipse.ui.ide;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.core.runtime;bundle-version="[3.4.0,4.0.0)";visibility:=reexport,
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)",
+ org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)";visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsSelectionDialog.java b/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsSelectionDialog.java
new file mode 100644
index 0000000..a3ceef1
--- /dev/null
+++ b/plugins/org.eclipse.wst.common.project.facet.ui/src/org/eclipse/wst/common/project/facet/ui/internal/FacetsSelectionDialog.java
@@ -0,0 +1,100 @@
+/******************************************************************************
+ * Copyright (c) 2008 BEA Systems, Inc.
+ * 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:
+ *    Konstantin Komissarchik - initial implementation and ongoing maintenance
+ ******************************************************************************/
+
+package org.eclipse.wst.common.project.facet.ui.internal;
+
+import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gdfill;
+import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gl;
+import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.glmargins;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.TitleAreaDialog;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
+
+/**
+ * @author <a href="mailto:kosta@bea.com">Konstantin Komissarchik</a>
+ */
+
+public final class FacetsSelectionDialog
+
+    extends TitleAreaDialog
+    
+{
+    private final IFacetedProjectWorkingCopy fpjwc;
+    private FacetsSelectionPanel panel;
+
+    public FacetsSelectionDialog( final Shell parentShell,
+                                  final IFacetedProjectWorkingCopy fpjwc )
+    {
+        super( parentShell );
+        
+        setShellStyle( getShellStyle() | SWT.RESIZE );
+
+        this.fpjwc = fpjwc;
+        this.panel = null;
+    }
+    
+    @Override
+    protected Control createDialogArea( final Composite parent ) 
+    {
+        parent.getShell().setText( Resources.dialogTitle );
+        setTitle( Resources.dialogTitle );
+        setMessage( Resources.dialogDescription );
+        setTitleImage( FacetedProjectFrameworkImages.BANNER_IMAGE.getImage() );
+
+        final Composite dialogComposite = (Composite) super.createDialogArea( parent );
+        
+        final Composite composite = new Composite( dialogComposite, SWT.NONE );
+        composite.setLayoutData( gdfill() );
+        composite.setLayout( glmargins( gl( 1 ), 5, 5 ) );
+        
+        this.panel = new FacetsSelectionPanel( composite, this.fpjwc );
+        this.panel.setLayoutData( gdfill() );
+        this.panel.setFocus();
+
+        return composite;
+    }
+    
+    @Override
+    protected void createButtonsForButtonBar( final Composite parent ) 
+    {
+        // Create only the OK button. There is no handling for cancel.
+        
+        createButton( parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true );
+    }
+
+    public static final void openDialog( final Shell parentShell,
+                                         final IFacetedProjectWorkingCopy fpjwc )
+    {
+         ( new FacetsSelectionDialog( parentShell, fpjwc ) ).open();
+    }
+    
+    private static final class Resources
+    
+        extends NLS
+        
+    {
+        public static String dialogTitle;
+        public static String dialogDescription;
+        
+        static
+        {
+            initializeMessages( FacetsSelectionDialog.class.getName(), 
+                                Resources.class );
+        }
+    }
+
+}
