[Esbox-commits] r2044 - in branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal: api/vm/vmware vm/vmware/ui/wizards

raul at garage.maemo.org raul at garage.maemo.org
Fri Aug 28 21:26:34 EEST 2009


Author: raul
Date: 2009-08-28 21:26:30 +0300 (Fri, 28 Aug 2009)
New Revision: 2044

Modified:
   branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/api/vm/vmware/MaemoSDKVMDescription.java
   branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/api/vm/vmware/MaemoSDKVMInfo.java
   branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMConfigurationWizardPage.java
   branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMInstallerContentLabelProvider.java
   branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMSelectionWizardPage.java
   branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/NewMaemoSDKVMWizard.java
Log:
Adapting table view based on newest information pattern at website.

Modified: branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/api/vm/vmware/MaemoSDKVMDescription.java
===================================================================
--- branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/api/vm/vmware/MaemoSDKVMDescription.java	2009-08-28 15:16:06 UTC (rev 2043)
+++ branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/api/vm/vmware/MaemoSDKVMDescription.java	2009-08-28 18:26:30 UTC (rev 2044)
@@ -14,7 +14,7 @@
  * @author raulherbster
  *
  */
-public class MaemoSDKVMDescription {
+public class MaemoSDKVMDescription implements Comparable<MaemoSDKVMDescription> {
 	
 	private static final String LINE_SEPARATOR = System.getProperty("line.separator");
 	
@@ -28,6 +28,8 @@
 	
 	private String name;
 	
+	private String version;
+	
 	private String description;
 
 	/** 
@@ -38,14 +40,15 @@
 	 * @param description
 	 */
 	public MaemoSDKVMDescription(boolean isServerImage, String name,
-			String description) {
+			String version, String description) {
 		this.isServerImage = isServerImage;
 		this.name = name;
+		this.version = version;
 		this.description = description;
 	}
 	
 	public MaemoSDKVMDescription() {
-		this(true,"","");
+		this(true,"","","");
 	}
 
 	/**
@@ -61,6 +64,13 @@
 	public String getName() {
 		return name;
 	}
+	
+	/**
+	 * @return the version
+	 */
+	public String getVersion() {
+		return version;
+	}
 
 	/**
 	 * @return the description
@@ -69,5 +79,24 @@
 		return description;
 	}
 	
+	@Override
+	public boolean equals(Object obj) {
+		if (obj == null)
+			return false;
+		if (obj.getClass() != this.getClass())
+			return false;
+		MaemoSDKVMDescription descriptor = (MaemoSDKVMDescription)obj;
+		return descriptor.getName().equals(this.getName());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.lang.Comparable#compareTo(java.lang.Object)
+	 */
+	public int compareTo(MaemoSDKVMDescription o) {		
+		if (o == null)
+			return 1;
+		return (-1) * (getVersion() + (isServerImage() ? "server" : "desktop")).compareTo(o.getVersion() + (o.isServerImage() ? "server" : "desktop"));
+	}	
 	
-}
+}
\ No newline at end of file

Modified: branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/api/vm/vmware/MaemoSDKVMInfo.java
===================================================================
--- branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/api/vm/vmware/MaemoSDKVMInfo.java	2009-08-28 15:16:06 UTC (rev 2043)
+++ branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/api/vm/vmware/MaemoSDKVMInfo.java	2009-08-28 18:26:30 UTC (rev 2044)
@@ -19,7 +19,7 @@
  * @author raulherbster
  * 
  */
-public class MaemoSDKVMInfo {
+public class MaemoSDKVMInfo implements Comparable<MaemoSDKVMInfo> {
 
 	public static final String DOWNLOAD_PAGE = "http://tablets-dev.nokia.com/maemo-dev-env-downloads.php";
 
@@ -226,4 +226,16 @@
 	public IRunnableWithProgress downloadFile() {
 		return new DownloadExecution(this);
 	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see java.lang.Comparable#compareTo(java.lang.Object)
+	 */
+	public int compareTo(MaemoSDKVMInfo o) {
+		if (o == null)
+			return 1;
+		return getDescriptor().compareTo(o.getDescriptor());
+	}
+	
+	
 }

Modified: branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMConfigurationWizardPage.java
===================================================================
--- branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMConfigurationWizardPage.java	2009-08-28 15:16:06 UTC (rev 2043)
+++ branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMConfigurationWizardPage.java	2009-08-28 18:26:30 UTC (rev 2044)
@@ -16,6 +16,7 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
@@ -74,11 +75,14 @@
 		setControl(composite);
 
 		mainMessage = new Label(composite, SWT.WRAP);
-		updateMainMessage();
+		mainMessage.setText("");
+		GridData labelData = new GridData();
+		labelData.horizontalSpan = 2;
+	    labelData.horizontalAlignment = SWT.FILL;
+	    Rectangle rect = getShell().getMonitor().getClientArea();
+	    labelData.widthHint = rect.width / 4;
+	    mainMessage.setLayoutData(labelData);
 
-		GridDataFactory.swtDefaults().span(1, 1).align(SWT.LEFT, SWT.CENTER)
-				.applyTo(mainMessage);
-
 		Label separator = new Label(composite, SWT.NONE);
 		GridDataFactory.swtDefaults().span(1, 1).align(SWT.LEFT, SWT.CENTER)
 				.applyTo(separator);
@@ -107,8 +111,6 @@
 
 		createProgrammingEnvironmentArea(composite);
 		
-		setValues();
-		
 	}
 
 	/**
@@ -285,30 +287,50 @@
 					installPythonEnv.getSelection());
 			installData.setInstallSbox(installScratchbox.getSelection() || installScratchboxTargets.getSelection());
 	}
-	
+
+	@Override
+	public void setVisible(boolean visible) {
+		super.setVisible(visible);
+		setValues();
+	}
+
+	/**
+	 * Update main message area.
+	 */
 	private void updateMainMessage() {
-		String imageName = ((NewMaemoSDKVMWizard)getWizard()).getInstallData().getFileToDownload().getDescriptor().getName();
-		mainMessage.setText("You just selected virtual image ''" +  imageName + "'' to be installed on your machine.\n" +
-								" Please, select the following options in order to properly configure your Maemo SDK virtual machine");
+		MaemoSDKVMInstallData installData = ((NewMaemoSDKVMWizard)getWizard()).getInstallData();
+		String message = "";
+		if (installData.canUsePreviousInstallation())
+			message = "You just selected a previously downloaded virtual image to be installed on your machine. Default values for virtual images with Ubuntu Server are considered in this case.";
+		else {
+			String imageName = installData.getFileToDownload().getDescriptor().getName();
+			message = "You just selected virtual image ''" +  imageName + "'' to be installed on your machine.";
+		}
+		message += " Please, select the following options in order to properly configure your Maemo SDK virtual machine.";
+		mainMessage.setText(message);
+		((Composite)getControl()).layout();
 	}
 	
+	/**
+	 * Set default values based on virtual image.
+	 */
 	private void setValues() {
-		boolean isServer = ((NewMaemoSDKVMWizard)getWizard()).getInstallData().getFileToDownload().getDescriptor().isServerImage();
-
+		MaemoSDKVMInstallData installData = ((NewMaemoSDKVMWizard)getWizard()).getInstallData();
+		
+		// if use previous installation, it takes Server default values
+		boolean isServer = true;
+		if (!installData.canUsePreviousInstallation())
+			isServer = ((NewMaemoSDKVMWizard)getWizard()).getInstallData().getFileToDownload().getDescriptor().isServerImage();
+		
 		installEverything.setSelection(isServer);
 		setInstallationDetailsButtonsSelection(isServer);
 		setInstallationDetailsGroupEnabled(false);
 		setProgrammingEnvButtonsSelection(true);
 		setProgrammignEnvGroupEnabled(false);
 		
+		updateMainMessage();
+		
 		updateInstallData();
 	}
-	
-	@Override
-	public void setVisible(boolean visible) {
-		super.setVisible(visible);
-		updateMainMessage();
-		setValues();
-	}
 
 }

Modified: branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMInstallerContentLabelProvider.java
===================================================================
--- branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMInstallerContentLabelProvider.java	2009-08-28 15:16:06 UTC (rev 2043)
+++ branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMInstallerContentLabelProvider.java	2009-08-28 18:26:30 UTC (rev 2044)
@@ -126,14 +126,15 @@
 				 * parts.
 				 */
 				Pattern maemoVMPattern = Pattern
-						.compile("Maemo([\\w\\s]*)Virtual([\\w\\s]*)Image([\\w\\s]*)");
+						.compile("Maemo(\\s)+SDK(\\s)+Virtual(\\s)+Image(\\s)+with(\\s)+Ubuntu(\\s)+(\\w)+(\\s)+([\\d]*\\.[\\d]*)(\\s)+(Server|Desktop)(\\s\\-(Part)\\s\\d)?");
 				Matcher matcher = maemoVMPattern.matcher(content);
 				while (matcher.find()) {
 					String virtualImageName = matcher.group(0);
+					String version = matcher.group(9);
 					virtualImageName = processVirtualImageName(virtualImageName);
 					boolean isServer = virtualImageName.toLowerCase().contains("server");
 					String virtualImageDescription = isServer ? MaemoSDKVMDescription.SERVER_IMAGE_DESCRIPTION : MaemoSDKVMDescription.DESKTOP_IMAGE_DESCRIPTION;
-					virtualImagesDescriptors.add(new MaemoSDKVMDescription(isServer,virtualImageName,virtualImageDescription));
+					virtualImagesDescriptors.add(new MaemoSDKVMDescription(isServer,virtualImageName,version,virtualImageDescription));
 				}
 			} catch (Exception e) {
 				if (e instanceof InterruptedException)

Modified: branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMSelectionWizardPage.java
===================================================================
--- branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMSelectionWizardPage.java	2009-08-28 15:16:06 UTC (rev 2043)
+++ branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/MaemoSDKVMSelectionWizardPage.java	2009-08-28 18:26:30 UTC (rev 2044)
@@ -11,6 +11,7 @@
 package org.maemo.esbox.internal.vm.vmware.ui.wizards;
 
 import java.io.File;
+import java.util.Arrays;
 
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.layout.GridLayoutFactory;
@@ -20,10 +21,13 @@
 import org.eclipse.jface.viewers.LabelProviderChangedEvent;
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerComparator;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
@@ -37,12 +41,12 @@
 import org.eclipse.swt.widgets.Table;
 import org.eclipse.swt.widgets.TableColumn;
 import org.eclipse.swt.widgets.Text;
-import org.maemo.esbox.internal.api.vm.vmware.MaemoSDKVMDescription;
 import org.maemo.esbox.internal.api.vm.vmware.MaemoSDKVMInfo;
 import org.maemo.esbox.internal.vm.vmware.Activator;
 import org.maemo.mica.common.core.machine.MachineRegistry;
 import org.maemo.mica.common.ui.NetworkSettingsUI;
 import org.maemo.mica.common.ui.dialogs.DialogUtils;
+import org.maemo.mica.internal.api.common.ui.LazyLoadingThreadTableContentProvider;
 
 /**
  * Page that displays general information about the Maemo SDK virtual image to
@@ -51,18 +55,10 @@
  * @author raulherbster
  * 
  */
-public class MaemoSDKVMSelectionWizardPage extends WizardPage {
+public class MaemoSDKVMSelectionWizardPage extends WizardPage implements ILabelProviderListener {
+	
+	private MaemoSDKVMInfo latestVMInstallData;
 
-	private static final MaemoSDKVMInfo latestVMInstallData = getLatestVMInstallFile();
-
-	private static MaemoSDKVMInfo getLatestVMInstallFile() {
-		MaemoSDKVMDescription descriptor = new MaemoSDKVMDescription(true,
-				"Maemo Diablo SDK Virtual Image with Ubuntu Intrepid Server",MaemoSDKVMDescription.SERVER_IMAGE_DESCRIPTION);
-		MaemoSDKVMInfo downloadFile = new MaemoSDKVMInfo();
-		downloadFile.setDescriptor(descriptor);
-		return downloadFile;
-	}
-
 	// Virtual images area
 	private Button downloadLatest;
 	private TableViewer virtualImagesTable;
@@ -83,6 +79,23 @@
 	private Text imageDescription;
 	
 	/**
+	 * Comparator for virtual images table viewer.
+	 */
+	private class VirtualImagesComparator extends ViewerComparator {
+		
+		public int compare(Viewer iviewer, Object e1, Object e2) {
+			if (e1 == null) {
+				return -1;
+			} else if (e2 == null) {
+				return 1;
+			} else {
+				return ((MaemoSDKVMInfo)e1).getDescriptor().compareTo(((MaemoSDKVMInfo)e2).getDescriptor());
+			}
+		}
+	
+	}
+	
+	/**
 	 * Constructor.
 	 * 
 	 * @param wizard
@@ -94,7 +107,7 @@
 		setDescription("A virtual image is a disk image with an installation of Linux/x86 " +
 								"capable of hosting Scratchbox and the Maemo SDK.");
 		setWizard(wizard);
-				
+		setPageComplete(false);
 		textFieldsValidator = createTextFieldValidatorListener();
 	}
 
@@ -127,7 +140,7 @@
 			column.pack();
 		}
 		
-		validatePage();
+		//validatePage();
 	}
 
 	/**
@@ -178,10 +191,12 @@
 				});
 
 		MaemoSDKVMInstallerContentLabelProvider platformProvider = new MaemoSDKVMInstallerContentLabelProvider();
-
+		platformProvider.addListener(this);
 		virtualImagesTable.setContentProvider(platformProvider);
 		virtualImagesTable.setLabelProvider(platformProvider);
 
+		virtualImagesTable.setComparator(new VirtualImagesComparator());
+		
 		platformProvider.addListener(new ILabelProviderListener() {
 
 			public void labelProviderChanged(LabelProviderChangedEvent event) {
@@ -351,8 +366,14 @@
 		
 		imageDescription = new Text(composite, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
 		imageDescription.setEditable(false);
-		GridDataFactory.fillDefaults().grab(true, true).span(4, 1).applyTo(
-				imageDescription);
+		GridData labelData = new GridData();
+		labelData.horizontalSpan = 4;
+	    labelData.horizontalAlignment = SWT.FILL;
+	    labelData.verticalSpan = 2;
+	    labelData.verticalAlignment = SWT.FILL;
+	    Rectangle rect = getShell().getMonitor().getClientArea();
+	    labelData.widthHint = rect.width / 4;
+	    imageDescription.setLayoutData(labelData);
 	}
 	
 	private void setInitialValues() {
@@ -361,8 +382,6 @@
 		destinationTextField.setText(MachineRegistry.getInstance().getLocalMachine().getUserHome().toString());
 		existingVirtualImageTextField.setText("");
 		
-		// set latest maemo SDK VM
-		doChangeVMChoice(latestVMInstallData);
 	}
 
 	/**
@@ -479,6 +498,10 @@
 		existingVirtualImageTextField.setEnabled(isEnabled);
 	}
 	
+	/**
+	 * Create validator for text fields.
+	 * @return
+	 */
 	protected Listener createTextFieldValidatorListener(){
         return new Listener() {
 			public void handleEvent(Event event) {
@@ -486,5 +509,31 @@
 			}
 		};
 	}
+
+	/**
+	 * Method to receive notification that information about images on website was properly retrieved. Based on
+	 * that, it 
+	 */
+	public void labelProviderChanged(LabelProviderChangedEvent event) {
+		if (event.getClass() == LabelProviderChangedEvent.class) {
+			latestVMInstallData = getLatestVMInstallData(event);
+			doChangeVMChoice(latestVMInstallData);
+			setPageComplete(true);
+			validatePage();
+			((Composite)getControl()).layout();
+		}
+	}
+	
+	/**
+	 * Get latest Maemo SDK VM from website.
+	 * @param event the event to get resource.
+	 * @return the latest Maemo SDK VM.
+	 */
+	private MaemoSDKVMInfo getLatestVMInstallData(LabelProviderChangedEvent event) {
+		LazyLoadingThreadTableContentProvider provider = (LazyLoadingThreadTableContentProvider)event.getSource();
+		Object[] elements = provider.getElements(new Object[0]);
+		Arrays.sort(elements);
+		return (MaemoSDKVMInfo) elements[0];
+	}
 		
 }

Modified: branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/NewMaemoSDKVMWizard.java
===================================================================
--- branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/NewMaemoSDKVMWizard.java	2009-08-28 15:16:06 UTC (rev 2043)
+++ branches/work_Raul/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/ui/wizards/NewMaemoSDKVMWizard.java	2009-08-28 18:26:30 UTC (rev 2044)
@@ -17,6 +17,7 @@
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.IWizardPage;
 import org.eclipse.jface.wizard.Wizard;
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;



More information about the Esbox-commits mailing list