[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