[332160] Manifest entries with backslash are not handled correctly by manifest page in deployment assembly page
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java
index 1bb5889..65ee3d2 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/AddManifestEntryTaskWizard.java
@@ -149,7 +149,7 @@
 		
 		private void addCustomPressed() {
 			IVirtualReference ref = ManifestModuleDependencyControl.createDummyReference(
-					customEntryText.getText(), parentProject, ComponentCore.createComponent(parentProject));
+					new Path(customEntryText.getText()).toString(), parentProject, ComponentCore.createComponent(parentProject));
 			contentProvider.addPossibleReference(ref);
 			customEntryText.setText(""); //$NON-NLS-1$
 			addCustom.setEnabled(false);
diff --git a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java
index 1da1305..145d1ec 100644
--- a/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java
+++ b/plugins/org.eclipse.jst.common.ui/src/org/eclipse/jst/common/ui/internal/assembly/wizard/ManifestModuleDependencyControl.java
@@ -223,7 +223,7 @@
 			int size = manifestEntryViewer.getTable().getItems().length;
 			removeButton.setEnabled(index != -1);
 			moveUpButton.setEnabled(index != -1 && index != 0);
-			moveDownButton.setEnabled(index != size-1);
+			moveDownButton.setEnabled(index != -1 && index != size-1);
 		}
 	}
 	
@@ -288,8 +288,12 @@
 		public String getColumnText(Object element, int columnIndex) {
 			if( element instanceof IVirtualReference ) {
 				IVirtualReference ref = (IVirtualReference)element;
-				if( columnIndex == 0 && ref.getArchiveName() != null)
-					return ref.getRuntimePath().append(ref.getArchiveName()).toString();
+				if( columnIndex == 0 && ref.getArchiveName() != null) {
+					if(ref.getRuntimePath().toString().length() > 0)
+						return ref.getRuntimePath().append(ref.getArchiveName()).toString();
+					else
+						return ref.getArchiveName();
+				}
 				if( columnIndex == 1 )
 					return handleSourceText(ref.getReferencedComponent());
 			}
@@ -372,7 +376,11 @@
 		HashMap<String, IVirtualReference> unsortedRefMap = new HashMap<String, IVirtualReference>();
 		for (int i = 0; i < currentRefs.length; i++) {
 			IVirtualReference ref = currentRefs[i];
-			String entryName = ref.getRuntimePath().append(ref.getArchiveName()).toString();
+			String entryName;
+			if(ref.getRuntimePath().toString().length() > 0)
+				entryName = ref.getRuntimePath().append(ref.getArchiveName()).toString();
+			else
+				entryName = ref.getArchiveName();
 			unsortedRefMap.put(entryName, ref);
 		}
 		List<IVirtualReference> sortedRefs = new ArrayList<IVirtualReference>();
@@ -439,6 +447,11 @@
 	public static IVirtualReference createDummyReference(String path, IProject project, IVirtualComponent rootComponent) {
 		IVirtualComponent comp = new DummyVirtualComponent(project, rootComponent);
 		IVirtualReference ref = ComponentCore.createReference(rootComponent, comp);
+		if(path.indexOf("\\") > 0) {
+			ref.setRuntimePath(new Path(""));
+			ref.setArchiveName(path);
+			return ref;
+		}
 		IPath path2 = new Path(path.trim());
 		IPath runtimePath = path2.segmentCount() > 1 ? path2.removeLastSegments(1) : new Path("/"); //$NON-NLS-1$
 		runtimePath = runtimePath.makeRelative();
@@ -491,8 +504,12 @@
 			IVirtualReference tmp;
 			while(i.hasNext()) {
 				tmp = i.next();
-				if(tmp.getArchiveName() != null)
-					asStrings.add(tmp.getRuntimePath().append(tmp.getArchiveName()).toString());
+				if(tmp.getArchiveName() != null) {
+					if(tmp.getRuntimePath().toString().length() > 0 )
+						asStrings.add(tmp.getRuntimePath().append(tmp.getArchiveName()).toString());
+					else
+						asStrings.add(tmp.getArchiveName());
+				}
 			}
 			updateManifestDataModel.setProperty(UpdateManifestDataModelProperties.JAR_LIST, asStrings);
 			try {