Andrew Overholt 33dd0d6
Index: src/org/eclipse/update/internal/ui/wizards/TargetPage.java
Andrew Overholt 33dd0d6
===================================================================
Andrew Overholt 33dd0d6
RCS file: /home/eclipse/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/TargetPage.java,v
Andrew Overholt 33dd0d6
retrieving revision 1.67
Andrew Overholt 33dd0d6
diff -u -r1.67 TargetPage.java
Andrew Overholt 33dd0d6
--- src/org/eclipse/update/internal/ui/wizards/TargetPage.java	1 Mar 2005 20:29:25 -0000	1.67
Andrew Overholt 33dd0d6
+++ src/org/eclipse/update/internal/ui/wizards/TargetPage.java	18 Apr 2005 19:11:43 -0000
Andrew Overholt 33dd0d6
@@ -10,24 +10,46 @@
Andrew Overholt 33dd0d6
  *******************************************************************************/
Andrew Overholt 33dd0d6
 package org.eclipse.update.internal.ui.wizards;
Andrew Overholt 33dd0d6
 
Andrew Overholt 33dd0d6
-import java.io.*;
Andrew Overholt 33dd0d6
-import java.util.*;
Andrew Overholt 33dd0d6
+import java.io.File;
Andrew Overholt 33dd0d6
+import java.util.HashSet;
Andrew Overholt 33dd0d6
+import java.util.Iterator;
Andrew Overholt 33dd0d6
+ 
Andrew Overholt 33dd0d6
+import org.eclipse.core.runtime.CoreException;
Andrew Overholt 33dd0d6
+import org.eclipse.core.runtime.IStatus;
Andrew Overholt 33dd0d6
 
Andrew Overholt 33dd0d6
 import org.eclipse.jface.dialogs.Dialog;
Andrew Overholt 33dd0d6
-import org.eclipse.jface.resource.*;
Andrew Overholt 33dd0d6
-import org.eclipse.jface.viewers.*;
Andrew Overholt 33dd0d6
-import org.eclipse.swt.*;
Andrew Overholt 33dd0d6
-import org.eclipse.swt.events.*;
Andrew Overholt 33dd0d6
-import org.eclipse.swt.graphics.*;
Andrew Overholt 33dd0d6
-import org.eclipse.swt.layout.*;
Andrew Overholt 33dd0d6
-import org.eclipse.swt.widgets.*;
Andrew Overholt 33dd0d6
-import org.eclipse.ui.help.*;
Andrew Overholt 33dd0d6
-import org.eclipse.update.configuration.*;
Andrew Overholt 33dd0d6
-import org.eclipse.update.core.*;
Andrew Overholt 33dd0d6
-import org.eclipse.update.internal.operations.*;
Andrew Overholt 33dd0d6
-import org.eclipse.update.internal.ui.*;
Andrew Overholt 33dd0d6
-import org.eclipse.update.internal.ui.parts.*;
Andrew Overholt 33dd0d6
-import org.eclipse.update.operations.*;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.resource.ImageDescriptor;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.viewers.ISelectionChangedListener;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.viewers.IStructuredContentProvider;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.viewers.IStructuredSelection;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.viewers.ITableLabelProvider;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.viewers.LabelProvider;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.viewers.SelectionChangedEvent;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.viewers.StructuredSelection;
Andrew Overholt 33dd0d6
+import org.eclipse.jface.viewers.TableViewer;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.SWT;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.events.SelectionAdapter;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.events.SelectionEvent;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.graphics.Image;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.layout.GridData;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.layout.GridLayout;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.widgets.Button;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.widgets.Composite;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.widgets.Control;
Andrew Overholt 33dd0d6
+import org.eclipse.swt.widgets.Label;
Andrew Overholt 33dd0d6
+import org.eclipse.ui.help.WorkbenchHelp;
Andrew Overholt 33dd0d6
+import org.eclipse.update.configuration.IConfiguredSite;
Andrew Overholt 33dd0d6
+import org.eclipse.update.configuration.IInstallConfiguration;
Andrew Overholt 33dd0d6
+import org.eclipse.update.configuration.IInstallConfigurationChangedListener;
Andrew Overholt 33dd0d6
+import org.eclipse.update.configuration.LocalSystemInfo;
Andrew Overholt 33dd0d6
+import org.eclipse.update.core.IFeature;
Andrew Overholt 33dd0d6
+import org.eclipse.update.internal.operations.UpdateUtils;
Andrew Overholt 33dd0d6
+import org.eclipse.update.internal.ui.UpdateLabelProvider;
Andrew Overholt 33dd0d6
+import org.eclipse.update.internal.ui.UpdateUI;
Andrew Overholt 33dd0d6
+import org.eclipse.update.internal.ui.UpdateUIImages;
Andrew Overholt 33dd0d6
+import org.eclipse.update.internal.ui.parts.DefaultContentProvider;
Andrew Overholt 33dd0d6
+import org.eclipse.update.internal.ui.parts.SWTUtil;
Andrew Overholt 33dd0d6
+import org.eclipse.update.operations.IInstallFeatureOperation;
Andrew Overholt 33dd0d6
 
Andrew Overholt 33dd0d6
 public class TargetPage extends BannerPage implements IDynamicPage {
Andrew Overholt 33dd0d6
 	private TableViewer jobViewer;
Andrew Overholt 33dd0d6
@@ -149,7 +171,7 @@
Andrew Overholt 33dd0d6
         label.setLayoutData(gd);
Andrew Overholt 33dd0d6
 
Andrew Overholt 33dd0d6
 		installLocation = new Label(client, SWT.NULL);
Andrew Overholt 33dd0d6
-        installLocation.setText("foo");
Andrew Overholt 33dd0d6
+        installLocation.setText("");
Andrew Overholt 33dd0d6
         gd = new GridData(GridData.FILL_HORIZONTAL);
Andrew Overholt 33dd0d6
         installLocation.setLayoutData(gd);
Andrew Overholt 33dd0d6
         
Andrew Overholt 33dd0d6
@@ -363,7 +385,26 @@
Andrew Overholt 33dd0d6
 				continue;
Andrew Overholt 33dd0d6
 			}
Andrew Overholt 33dd0d6
 
Andrew Overholt 33dd0d6
-			jobs[i].setTargetSite(getFirstTargetSite(jobs[i]));
Andrew Overholt 33dd0d6
+			IConfiguredSite csite = getFirstTargetSite(jobs[i]);
Andrew Overholt 33dd0d6
+			
Andrew Overholt 33dd0d6
+			if (csite == null) {
Andrew Overholt 33dd0d6
+				// there are no updateable sites, make one in the user's home direcotry
Andrew Overholt 33dd0d6
+				String sitePath = System.getProperty("user.home") + File.separator  + ".eclipse/updates"; //$NON-NLS-1$ //$NON-NLS-2$
Andrew Overholt 33dd0d6
+
Andrew Overholt 33dd0d6
+				try {	
Andrew Overholt 33dd0d6
+					csite = config.createConfiguredSite(new File(sitePath));
Andrew Overholt 33dd0d6
+					config.addConfiguredSite(csite);
Andrew Overholt 33dd0d6
+					IStatus status = csite.verifyUpdatableStatus();
Andrew Overholt 33dd0d6
+					if (!status.isOK())
Andrew Overholt 33dd0d6
+						throw new CoreException(status);
Andrew Overholt 33dd0d6
+				
Andrew Overholt 33dd0d6
+				} catch (CoreException e) {
Andrew Overholt 33dd0d6
+						// there was a problem, the user must choose an installation site
Andrew Overholt 33dd0d6
+						csite = null;
Andrew Overholt 33dd0d6
+				}
Andrew Overholt 33dd0d6
+			}
Andrew Overholt 33dd0d6
+			
Andrew Overholt 33dd0d6
+			jobs[i].setTargetSite(csite);
Andrew Overholt 33dd0d6
 
Andrew Overholt 33dd0d6
 		}
Andrew Overholt 33dd0d6
 	}