[314191]  -  [NLS] Several issues found in 'New Reference Wizard' in 'Deployment Assembly' preference page
diff --git a/plugins/org.eclipse.jst.common.ui/plugin.properties b/plugins/org.eclipse.jst.common.ui/plugin.properties
index f1bec89..4b5c8ff 100644
--- a/plugins/org.eclipse.jst.common.ui/plugin.properties
+++ b/plugins/org.eclipse.jst.common.ui/plugin.properties
@@ -10,4 +10,8 @@
 ###############################################################################
 provider=Eclipse.org
 
-Bundle-Name.0 = Common JST UI Plug-in
\ No newline at end of file
+Bundle-Name.0 = Common JST UI Plug-in
+Archive=Archive
+External_Archive=External Archive
+Variable=Variable
+Classpath_Container=Classpath Container
\ No newline at end of file
diff --git a/plugins/org.eclipse.jst.common.ui/plugin.xml b/plugins/org.eclipse.jst.common.ui/plugin.xml
index f8f45f1..db69515 100644
--- a/plugins/org.eclipse.jst.common.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.common.ui/plugin.xml
@@ -8,25 +8,25 @@
              class="org.eclipse.jst.common.ui.internal.assembly.wizard.JarReferenceWizardFragment"
              icon="icons/jar_obj.gif"
              id="org.eclipse.jst.common.ui.jarReference"
-             name="Jar">
+             name="%Archive">
        </referenceFragment>
        <referenceFragment
              class="org.eclipse.jst.common.ui.internal.assembly.wizard.ExternalJarReferenceWizardFragment"
              icon="icons/jar_obj.gif"
              id="org.eclipse.jst.common.ui.externalJarReference"
-             name="External Jar">
+             name="%External_Archive">
        </referenceFragment>
        <referenceFragment
              class="org.eclipse.jst.common.ui.internal.assembly.wizard.VariableReferenceWizardFragment"
              icon="icons/jar_obj.gif"
              id="org.eclipse.jst.common.ui.variableReference"
-             name="Variable">
+             name="%Variable">
        </referenceFragment>
        <referenceFragment
              class="org.eclipse.jst.common.ui.internal.assembly.wizard.ClasspathContainerWizardFragment"
              icon="icons/util-wiz-icon.gif"
              id="org.eclipse.jst.common.ui.classpathContainer"
-             name="Classpath Container">
+             name="%Classpath_Container">
        </referenceFragment>
     </extension>
     <extension point="org.eclipse.wst.common.modulecore.ui.virtualComponentLabelProvider">
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java
new file mode 100644
index 0000000..bb14fb7
--- /dev/null
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/IJstCommonUIConstants.java
@@ -0,0 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2009 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.jst.common.ui.internal;
+
+
+/**
+ * @author: Aidyl Kareh
+ */
+public interface IJstCommonUIConstants {
+	public static final String DIALOGSTORE_LASTEXTARCHIVE= JstCommonUIPlugin.PLUGIN_ID + ".lastextarchive"; //$NON-NLS-1$
+}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java
index 89218cb..4918de3 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/Messages.java
@@ -14,10 +14,11 @@
 
 public class Messages extends NLS {
 	private static final String BUNDLE_NAME = "org.eclipse.jst.common.ui.internal"; //$NON-NLS-1$
-	public static String JarTitle;
-	public static String JarDescription;
-	public static String ExternalJarTitle;
-	public static String ExternalJarDescription;
+	public static String ArchiveTitle;
+	public static String ArchiveDescription;
+	public static String ExternalArchiveTitle;
+	public static String ExternalArchiveDescription;
+	public static String ArchiveDialogNewTitle;
 	public static String Browse;
 	public static String VariableReferenceTitle;
 	public static String VariableReferenceDescription;
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java
index 0bbc5c1..e434d5b 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ExternalJarReferenceWizardFragment.java
@@ -16,9 +16,13 @@
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.jdt.ui.wizards.BuildPathDialogAccess;
+import org.eclipse.jst.common.ui.internal.IJstCommonUIConstants;
+import org.eclipse.jst.common.ui.internal.JstCommonUIPlugin;
 import org.eclipse.jst.common.ui.internal.Messages;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualArchiveComponent;
 import org.eclipse.wst.common.componentcore.internal.resources.VirtualReference;
@@ -27,18 +31,23 @@
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
 import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
 
-public class ExternalJarReferenceWizardFragment extends JarReferenceWizardFragment {
+public class ExternalJarReferenceWizardFragment extends JarReferenceWizardFragment {	
 	public Composite createComposite(Composite parent, IWizardHandle handle) {
 		Composite c = super.createComposite(parent, handle);
-		handle.setTitle(Messages.ExternalJarTitle);
-		handle.setDescription(Messages.ExternalJarDescription);
+		handle.setTitle(Messages.ExternalArchiveTitle);
+		handle.setDescription(Messages.ExternalArchiveDescription);
 		return c;
 	}
 
 	protected void buttonPressed() {
-		selected = BuildPathDialogAccess
-			.chooseExternalJAREntries(browse.getShell());
+		selected = chooseExternalArchiveEntries(browse.getShell());
 		viewer.refresh();
+		if(selected != null && selected.length > 0) {
+			isComplete = true;			
+		} else {
+			isComplete = false;
+		}
+		handle.update();
 	}
 
 	public void performFinish(IProgressMonitor monitor) throws CoreException {
@@ -65,4 +74,34 @@
 			getTaskModel().putObject(IReferenceWizardConstants.FINAL_REFERENCE, finalRefs);
 		}
 	}
+	
+	private static IPath[] chooseExternalArchiveEntries(Shell shell) {
+		String lastUsedPath= JstCommonUIPlugin.getDefault().getDialogSettings().get(IJstCommonUIConstants.DIALOGSTORE_LASTEXTARCHIVE);
+		if (lastUsedPath == null) {
+			lastUsedPath= ""; //$NON-NLS-1$
+		}
+		
+		FileDialog dialog= new FileDialog(shell, SWT.MULTI);
+		dialog.setText(Messages.ArchiveDialogNewTitle);
+		String [] extensions = new String[] {"*.jar;*.war;*.rar;*.zip", "*.*"};  //$NON-NLS-1$//$NON-NLS-2$
+		dialog.setFilterExtensions(extensions);
+		dialog.setFilterPath(lastUsedPath);
+
+		String res= dialog.open();
+		if (res == null) {
+			return null;
+		}
+		String[] fileNames= dialog.getFileNames();
+		int nChosen= fileNames.length;
+
+		IPath filterPath= Path.fromOSString(dialog.getFilterPath());
+		IPath[] elems= new IPath[nChosen];
+		for (int i= 0; i < nChosen; i++) {
+			elems[i]= filterPath.append(fileNames[i]).makeAbsolute();
+		}
+		
+		JstCommonUIPlugin.getDefault().getDialogSettings().put(IJstCommonUIConstants.DIALOGSTORE_LASTEXTARCHIVE, dialog.getFilterPath());
+		
+		return elems;
+	}
 }
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java
index 4265f8d..d9243e3 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/JarReferenceWizardFragment.java
@@ -50,14 +50,20 @@
 	protected IPath[] paths;
 	protected IWizardHandle handle;
 	protected IPath[] selected = new IPath[]{};
+	boolean isComplete = false;
+
+	public boolean isComplete() {
+		return isComplete;
+	}
+	
 	public boolean hasComposite() {
 		return true;
 	}
 
 	public Composite createComposite(Composite parent, IWizardHandle handle) {
 		this.handle = handle;
-		handle.setTitle(Messages.JarTitle);
-		handle.setDescription(Messages.JarDescription);
+		handle.setTitle(Messages.ArchiveTitle);
+		handle.setDescription(Messages.ArchiveDescription);
 				
 		Composite c = new Composite(parent, SWT.NONE);
 		c.setLayout(new FormLayout());
@@ -96,8 +102,14 @@
 		IProject project = (IProject)getTaskModel().getObject(IReferenceWizardConstants.PROJECT);
 		selected = BuildPathDialogAccess.chooseJAREntries(
 				browse.getShell(), 
-				project.getLocation(), new IPath[0]);
+				project.getFullPath(), new IPath[0]);
 		viewer.refresh();
+		if(selected != null && selected.length > 0) {
+			isComplete = true;
+		} else {
+			isComplete = false;
+		}
+		handle.update();
 	}
 
 	public void performFinish(IProgressMonitor monitor) throws CoreException {
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java
index 0719ecc..05003b1 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/VariableReferenceWizardFragment.java
@@ -80,6 +80,8 @@
 			}
 		});
 		FormData fd = new FormData();
+		fd.width = 390;
+		fd.height = 185;
 		fd.left = new FormAttachment(0, 5);
 		fd.top = new FormAttachment(0, 5);
 		fd.right = new FormAttachment(100, -5);
@@ -103,7 +105,7 @@
 			} else if( o instanceof ExtendedVariable) {
 				p = ((ExtendedVariable)o).element.getPath().append(((ExtendedVariable)o).pathAfterElement);
 			}
-			if( p.toFile().isDirectory()) {
+			if(p == null || p.isEmpty() || p.toFile().isDirectory()) {
 				isComplete = false;
 			}
 		}
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties
index 7f469b6..34c541e 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/messages.properties
@@ -1,7 +1,8 @@
-JarTitle=Add a Jar Reference
-JarDescription=Here you can reference a workspace Jar\nThis is not a suggested use-case, but is here for backwards compatability.
-ExternalJarTitle=Add an External Jar Reference
-ExternalJarDescription=Here you can reference a filesystem Jar\nThis is not a suggested use-case, but is here for backwards compatability.
+ArchiveTitle=Add an Archive Reference
+ArchiveDescription=Here you can reference a workspace archive\nThis is not a suggested use-case, but is here for backwards compatability.
+ArchiveDialogNewTitle=Archive Selection
+ExternalArchiveTitle=Add an External Archive Reference
+ExternalArchiveDescription=Here you can reference a filesystem archive\nThis is not a suggested use-case, but is here for backwards compatability.
 Browse=Br&owse...
 VariableReferenceTitle=Add a Variable Reference
 VariableReferenceDescription=Here you can reference a variable which maps to a single jar.\nThis is not a suggested use-case, but is here for backwards compatability.
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties
index 7dae034..a8fb0c7 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.properties
@@ -10,4 +10,6 @@
 ###############################################################################
 provider=Eclipse.org
 Bundle-Name.0 = Modulecore UI Plug-in
-Module_assembly.name = Deployment Assembly
\ No newline at end of file
+Module_assembly.name = Deployment Assembly
+Project=Project
+Folder_Mapping=Folder Mapping
\ No newline at end of file
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.xml b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.xml
index 8553ef8..0fbfc6d 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/plugin.xml
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/plugin.xml
@@ -30,13 +30,13 @@
              class="org.eclipse.wst.common.componentcore.ui.internal.propertypage.ProjectReferenceWizardFragment"
              icon="icons/prj_obj.gif"
              id="org.eclipse.wst.common.componentcore.ui.newProjectReference"
-             name="Project">
+             name="%Project">
        </referenceFragment>
        <referenceFragment
              class="org.eclipse.wst.common.componentcore.ui.internal.propertypage.FolderMappingWizardFragment"
              icon="icons/folder.gif"
              id="org.eclipse.wst.common.componentcore.ui.resourceMappingReference"
-             name="Folder Mapping">
+             name="%Folder_Mapping">
        </referenceFragment>
     </extension>
 </plugin>
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
index 98b82da..af3ab88 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/FolderMappingWizardFragment.java
@@ -27,37 +27,51 @@
 import org.eclipse.jface.viewers.ViewerFilter;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.ISharedImages;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.wst.common.componentcore.ui.Messages;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.IWizardHandle;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
-import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
 import org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.ComponentResourceProxy;
+import org.eclipse.wst.common.componentcore.ui.propertypage.IReferenceWizardConstants;
 
 public class FolderMappingWizardFragment extends WizardFragment {
 	private IProject project;
 	private TreeViewer viewer;
 	private IContainer selected = null;
+	protected IWizardHandle handle;
 
+	boolean isComplete = false;
+
+	public boolean isComplete() {
+		return isComplete;
+	}
+	
 	public boolean hasComposite() {
 		return true;
 	}
 
 	public Composite createComposite(Composite parent, IWizardHandle handle) {
+		this.handle = handle;
 		handle.setTitle(Messages.AddFolder);
 		handle.setDescription(Messages.AddFolderMappings);
 		project = (IProject)getTaskModel().getObject(IReferenceWizardConstants.PROJECT);		
 		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new FillLayout());
+		GridLayout layout = new GridLayout();
+		c.setLayout(layout);
 		this.viewer = new TreeViewer(c, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER);
 		viewer.setContentProvider(getContentProvider());
 		viewer.setLabelProvider(getLabelProvider());
 		viewer.addFilter(getFilter());
 		viewer.setInput(project);
 		viewer.addSelectionChangedListener(getListener());
+		GridData data = new GridData(GridData.FILL_BOTH);
+		data.widthHint = 390;
+		data.heightHint = 185;
+		viewer.getTree().setLayoutData(data);
 		return c;
 	}
 	
@@ -66,8 +80,13 @@
 			public void selectionChanged(SelectionChangedEvent event) {
 				IStructuredSelection sel = (IStructuredSelection)viewer.getSelection();
 				Object first = sel.getFirstElement();
-				if( first instanceof IContainer) 
+				if( first instanceof IContainer) {
 					selected = (IContainer)first;
+					if(!isComplete) {
+						isComplete = true;
+						handle.update();
+					}
+				}
 			}
 		};
 	}
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ProjectReferenceWizardFragment.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ProjectReferenceWizardFragment.java
index 7c54d9f..725cdd6 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ProjectReferenceWizardFragment.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/internal/propertypage/ProjectReferenceWizardFragment.java
@@ -32,7 +32,8 @@
 import org.eclipse.osgi.util.NLS;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.IDE;
@@ -71,7 +72,7 @@
 		handle.setDescription(Messages.ProjectReferenceDescription);
 		
 		Composite c = new Composite(parent, SWT.NONE);
-		c.setLayout(new FillLayout());
+		c.setLayout(new GridLayout());
 		viewer = new TreeViewer(c, SWT.MULTI | SWT.BORDER);
 		viewer.setContentProvider(getContentProvider());
 		viewer.setLabelProvider(getLabelProvider());
@@ -86,6 +87,10 @@
 			}
 		});
 		viewer.setInput(ResourcesPlugin.getWorkspace());
+		GridData data = new GridData(GridData.FILL_BOTH);
+		data.widthHint = 390;
+		data.heightHint = 185;
+		viewer.getTree().setLayoutData(data);
 		return c;
 	}
 	
diff --git a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
index 542444c..a4a120b 100644
--- a/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
+++ b/plugins/org.eclipse.wst.common.modulecore.ui/src/org/eclipse/wst/common/componentcore/ui/propertypage/AddModuleDependenciesPropertiesPage.java
@@ -79,8 +79,8 @@
 import org.eclipse.wst.common.componentcore.ui.ModuleCoreUIPlugin;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.ComponentDependencyContentProvider;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.DependencyPageExtensionManager;
-import org.eclipse.wst.common.componentcore.ui.internal.propertypage.NewReferenceWizard;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.DependencyPageExtensionManager.ReferenceExtension;
+import org.eclipse.wst.common.componentcore.ui.internal.propertypage.NewReferenceWizard;
 import org.eclipse.wst.common.componentcore.ui.internal.propertypage.verifier.DeploymentAssemblyVerifierHelper;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.TaskWizard;
 import org.eclipse.wst.common.componentcore.ui.internal.taskwizard.WizardFragment;
@@ -546,10 +546,12 @@
 	
 	protected void handleAddNewReference(TaskWizard wizard) {
 		Object c1 = wizard.getTaskModel().getObject(IReferenceWizardConstants.FINAL_REFERENCE);
-		IVirtualReference[] referenceArray = c1 instanceof IVirtualReference ? 
-				new IVirtualReference[] { (IVirtualReference)c1 } : 
-					(IVirtualReference[])c1;
-		currentReferences.addAll(Arrays.asList(referenceArray));
+		if(c1 != null) {
+			IVirtualReference[] referenceArray = c1 instanceof IVirtualReference ? 
+					new IVirtualReference[] { (IVirtualReference)c1 } : 
+						(IVirtualReference[])c1;
+			currentReferences.addAll(Arrays.asList(referenceArray));
+		}
 	}
 	
 	/**