core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/wizard/ExportWizard.java
changeset 1884 94c9fe3693ea
parent 1824 7e34f628583a
child 1885 988b4ab1b8c1
--- a/core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/wizard/ExportWizard.java	Wed Aug 25 14:02:53 2010 -0500
+++ b/core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/wizard/ExportWizard.java	Wed Aug 25 15:24:01 2010 -0500
@@ -19,14 +19,24 @@
 package com.nokia.carbide.internal.discovery.ui.wizard;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.OutputStream;
+import java.net.URI;
+import java.net.URL;
 import java.text.MessageFormat;
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.osgi.service.datalocation.Location;
 import org.eclipse.ui.IExportWizard;
 import org.eclipse.ui.IWorkbench;
 
@@ -61,8 +71,42 @@
 	public void init(IWorkbench workbench, IStructuredSelection selection) {
 		setDefaultPageImageDescriptor(Activator.getImageDescriptor("icons\\install_wiz.gif")); //$NON-NLS-1$
 		setWindowTitle(Messages.ExportWizard_Title);
-		exportPage = new ExportPage();
+		exportPage = new ExportPage(getFilteredFeatureIds());
 		addPage(exportPage);
 	}
 
+	private Collection<String> getFilteredFeatureIds() {
+		Collection<FeatureInfo> installedFeatures = null;
+		Location installLocation = Platform.getInstallLocation();
+		URL url = installLocation.getURL();
+		IPath path = new Path(url.getPath());
+		path = path.append("configuration/installedFeatures.xml"); //$NON-NLS-1$
+		File file = path.toFile();
+		if (!file.exists()) {
+			installedFeatures = P2Utils.getInstalledFeatures(new NullProgressMonitor());
+			ImportExportData data = new ImportExportData(false, Collections.<URI>emptyList(), installedFeatures);
+			try {
+				Streamer.writeToXML(new FileOutputStream(file), data);
+			} catch (Exception e) {
+				Activator.logError("Could not write installed features file: " + file, e);
+			}
+		}
+		else {
+			try {
+				ImportExportData data = Streamer.readFromXML(new FileInputStream(file));
+				installedFeatures = data.getFeatureInfos();
+			} catch (Exception e) {
+				Activator.logError("Could not read installed features file: " + file, e);
+			}
+		}
+		
+		Collection<String> filteredIds = new ArrayList<String>();
+		if (installedFeatures != null) {
+			for (FeatureInfo featureInfo : installedFeatures) {
+				filteredIds.add(featureInfo.getId());
+			}
+		}
+		return filteredIds;
+	}
+
 }