diff --git a/bundles/org.eclipse.e4.ui.importer/src/org/eclipse/ui/internal/wizards/datatransfer/ImportProposalsWizardPage.java b/bundles/org.eclipse.e4.ui.importer/src/org/eclipse/ui/internal/wizards/datatransfer/ImportProposalsWizardPage.java
index bbec13a..71af3ed 100644
--- a/bundles/org.eclipse.e4.ui.importer/src/org/eclipse/ui/internal/wizards/datatransfer/ImportProposalsWizardPage.java
+++ b/bundles/org.eclipse.e4.ui.importer/src/org/eclipse/ui/internal/wizards/datatransfer/ImportProposalsWizardPage.java
@@ -63,6 +63,7 @@
 	private Button recurseInSelectedProjectsCheckbox;
 	private EasymportJob currentJob;
 	private Label selectionSummary;
+	protected Map<File, List<ProjectConfigurator>> potentialProjects;
 
 	private class FolderForProjectsLabelProvider extends CellLabelProvider implements IColorProvider {
 		public String getText(Object o) {
@@ -100,11 +101,11 @@
 	private class ProjectConfiguratorLabelProvider extends CellLabelProvider implements IColorProvider {
 		public String getText(Object o) {
 			File file = (File)o;
-			String label = file.getAbsolutePath();
-			if (alreadyExistingProjects.contains(o)) {
+			if (alreadyExistingProjects.contains(file)) {
 				return Messages.alreadyImportedAsProject_title;
 			}
-			return "todo";
+			return ProjectConfiguratorExtensionManager.getLabel(
+					ImportProposalsWizardPage.this.potentialProjects.get(file).get(0));
 		}
 
 		@Override
@@ -269,7 +270,7 @@
 			getContainer().run(false, false, new IRunnableWithProgress() {
 				@Override
 				public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-					final Map<File, List<ProjectConfigurator>> potentialProjects = getWizard().getImportJob().getImportProposals(monitor);
+					ImportProposalsWizardPage.this.potentialProjects = getWizard().getImportJob().getImportProposals(monitor);
 					if (potentialProjects.size() == 0) {
 						MessageDialog.openInformation(getShell(),
 								Messages.didntFindImportProposals_title,
diff --git a/bundles/org.eclipse.e4.ui.importer/src/org/eclipse/ui/internal/wizards/datatransfer/ProjectConfiguratorExtensionManager.java b/bundles/org.eclipse.e4.ui.importer/src/org/eclipse/ui/internal/wizards/datatransfer/ProjectConfiguratorExtensionManager.java
index afec7d4..3f21be2 100644
--- a/bundles/org.eclipse.e4.ui.importer/src/org/eclipse/ui/internal/wizards/datatransfer/ProjectConfiguratorExtensionManager.java
+++ b/bundles/org.eclipse.e4.ui.importer/src/org/eclipse/ui/internal/wizards/datatransfer/ProjectConfiguratorExtensionManager.java
@@ -159,7 +159,7 @@
 		return res;
 	}
 
-	public static Object getLabel(ProjectConfigurator configurator) {
+	public static String getLabel(ProjectConfigurator configurator) {
 		IConfigurationElement[] extensions = Platform.getExtensionRegistry().getConfigurationElementsFor(EXTENSION_POINT_ID);
 		for (IConfigurationElement extension : extensions) {
 			if (configurator.getClass().getName().equals(extension.getAttribute("class"))) {
