[Esbox-commits] r2268 - in branches/work_Ed: org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware

eswartz at garage.maemo.org eswartz at garage.maemo.org
Tue Oct 6 21:57:23 EEST 2009


Author: eswartz
Date: 2009-10-06 21:57:22 +0300 (Tue, 06 Oct 2009)
New Revision: 2268

Modified:
   branches/work_Ed/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/ILaunchableMachineController.java
   branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BaseMachinePreferencePage.java
   branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java
   branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFolderTreeViewer.java
   branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFoldersPreferencePage.java
   branches/work_Ed/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuMachineController.java
   branches/work_Ed/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuPreferencePage.java
   branches/work_Ed/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxMachineController.java
   branches/work_Ed/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferencePage.java
   branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareMachineController.java
   branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwarePreferencePage.java
   branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareSettingsPreferencePage.java
   branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseLaunchableVirtualMachineController.java
   branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualMachineController.java
   branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/AddressFieldEditor.java
   branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/BaseVirtualMachinePreferencePage.java
   branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/CommonVirtualMachineSettingsPreferencePage.java
   branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm/ManualVirtualMachineController.java
Log:
-- Make "Launch" button use same logic as "Validate", but without validating
-- Add some tooltips to shared folder page
-- Make the successful shared folder status supply a message,for the color blind
-- Ensure shared folder "scanning..." labels go away if machine contact cancelled
-- Fix incorrect vmware running process detection (with vmware player)


Modified: branches/work_Ed/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/ILaunchableMachineController.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/ILaunchableMachineController.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/ILaunchableMachineController.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -11,6 +11,8 @@
 
 package org.maemo.esbox.internal.api.maemosdk.core;
 
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.process.IProcessLauncher;
 
@@ -37,12 +39,10 @@
 	boolean isMachineRunning();
 	
 	/**
-	 * Launch the machine and return an {@link IProcessLauncher} to track it.
-	 * The launcher is not quite ready upon return -- you need to call {@link LaunchedMachineStatus#monitor#runBlocking()}
-	 * or {@link LaunchedMachineStatus#monitor#runNonBlocking()}.
-	 * @return status of launch, which can be used to track the process
-	 * @throws MicaException if process launch fails (i.e. program not found) 
+	 * Launch the machine and wait long enough to see if it's started up.
+	 * @param monitor 
+	 * @return status of launch
 	 */
-	LaunchedMachineInfo launchMachine() throws MicaException;
+	IStatus launchMachine(IProgressMonitor monitor);
 
 }
\ No newline at end of file

Modified: branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BaseMachinePreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BaseMachinePreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BaseMachinePreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -38,7 +38,7 @@
 	/**
 	 * Refresh contents after machine was scanned. 
 	 */
-	public void validationFinished(IMachine machine) {
+	public void machineLaunched(IMachine machine) {
 		
 	}
 	

Modified: branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -59,7 +59,6 @@
 import org.maemo.esbox.internal.api.maemosdk.core.ILaunchableMachineController;
 import org.maemo.esbox.internal.maemosdk.ui.IHelpID;
 import org.maemo.esbox.internal.maemosdk.ui.UIActivator;
-import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.NetworkUtils;
 import org.maemo.mica.common.core.machine.IBuildMachine;
 import org.maemo.mica.common.core.machine.IComposablePreferencePage;
@@ -102,7 +101,7 @@
 	private Button validateButton;
 
 	private IComposablePreferencePage selectedMachinePage;
-	private IMachine lastValidatedMachine;
+	private IMachine lastLaunchedMachine;
 
 	private Button launchButton;
 	
@@ -206,7 +205,7 @@
 		}
 		
 		descr.setText(message);
-		GridLayoutWrappedTextUtils.setupLabel(parent, descr, 
+		GridLayoutWrappedTextUtils.setupLabel(composite, descr, 
 				new GridData(SWT.LEFT, SWT.TOP, true, false));
 		
 		Label sep = new Label(composite, SWT.SEPARATOR + SWT.HORIZONTAL);
@@ -514,10 +513,10 @@
 			}
 		}
 		
-		if (lastValidatedMachine != null && current == null) {
-			if (MachineManager.getInstance().isActive(lastValidatedMachine)) {
+		if (lastLaunchedMachine != null && current == null) {
+			if (MachineManager.getInstance().isActive(lastLaunchedMachine)) {
 				vmRunning = true;
-				current = lastValidatedMachine;
+				current = lastLaunchedMachine;
 				currentMachines_ = new IMachine[] { current };
 			}
 		}
@@ -636,6 +635,7 @@
 	protected void contributeButtons(Composite parent) {
 		launchButton = new Button(parent, SWT.PUSH);
 		launchButton.setText("&Launch Machine");
+		launchButton.setToolTipText("Launch the machine with the current settings, but do not connect to it or perform any other validation.\n \nThis may be used to figure out the IP address for the Machine Access tab.");
 		launchButton.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent ev) {
@@ -659,6 +659,7 @@
 		
 		validateButton = new Button(parent, SWT.PUSH);
 		validateButton.setText("&Validate Machine");
+		validateButton.setToolTipText("Launch the machine, if needed, auto-mount any shared folders, and run tests on to ensure the settings are valid.");
 		validateButton.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent ev) {
@@ -707,59 +708,72 @@
 			UIActivator.getErrorLogger().logAndShowError("Unexpected exception running tests", e);
 		}
 		
-		lastValidatedMachine = machineToValidate;
-		if (selectedMachinePage instanceof BaseMachinePreferencePage)
-			((BaseMachinePreferencePage) selectedMachinePage).validationFinished(lastValidatedMachine);
+		setLastLaunchedMachine(machineToValidate);
 	}
 
 	/**
 	 * Launch the machine (only).  This is called on the UI thread.
 	 */
 	protected void launchMachine() {
-		final IMachine machineToValidate = getCurrentMachine();
+		final IMachine machineToLaunch = getCurrentMachine();
 		
-		IMachineController machineController = ((IMachineImpl)machineToValidate).getMachineController();
+		IMachineController machineController = ((IMachineImpl)machineToLaunch).getMachineController();
+		final Shell shell = getShell();
+		
 		if (!(machineController instanceof ILaunchableMachineController)) {
-			DialogUtils.showWarningDialog(getShell(), "Cannot Launch", "This machine cannot be launched.");
+			DialogUtils.showWarningDialog(shell, "Cannot Launch", "This machine cannot be launched.");
 			return;
 		}
 		final ILaunchableMachineController controller = (ILaunchableMachineController) machineController;
 		
-		if (controller.isMachineRunning()) {
-			DialogUtils.showWarningDialog(getShell(), "Already Running", 
-					"This machine is already running.");
-			return;
-		}
-		
-
-		shutDownMachinesBeforeSwitchingTo(machineToValidate);
-
 		ProgressMonitorDialog dialog = new ProgressMonitorDialog(
-				getShell());
+				shell);
 		try {
 			dialog.run(true, true, new IRunnableWithProgress() {
 
-				public void run(IProgressMonitor monitor)
+				public void run(final IProgressMonitor monitor)
 						throws InvocationTargetException, InterruptedException {
-					try {
-						controller.launchMachine();
-					} catch (MicaException e) {
-						throw new InvocationTargetException(e);
-					}
+					Display.getDefault().syncExec(new Runnable() {
+						public void run() {
+							monitor.beginTask("Launching machine...", 2);
+							
+							if (controller.isMachineRunning()) {
+								DialogUtils.showWarningDialog(shell, "Already Running", 
+										"This machine is already running.");
+								return;
+							}
+
+							shutDownMachinesBeforeSwitchingTo(machineToLaunch);
+
+							monitor.worked(1);
+							if (monitor.isCanceled())
+								return;
+							
+							IStatus status = controller.launchMachine(new SubProgressMonitor(monitor, 1));
+							if (!monitor.isCanceled())
+								UIActivator.getErrorLogger().show(status);
+						}
+					});
 				}
-				
 			});
 		} catch (InterruptedException e) {
 			// ignore
 		} catch (InvocationTargetException e) {
-			UIActivator.getErrorLogger().logAndShowError("Unexpected exception running tests", e.getCause());
+			UIActivator.getErrorLogger().logAndShowError("Unexpected exception launching machine", e.getCause());
 		} catch (Exception e) {
-			UIActivator.getErrorLogger().logAndShowError("Unexpected exception running tests", e);
+			UIActivator.getErrorLogger().logAndShowError("Unexpected exception launching machine", e);
 		}
 		
-		lastValidatedMachine = machineToValidate;
+		setLastLaunchedMachine(machineToLaunch);
+	}
+
+	/**
+	 * @param machineToValidate
+	 */
+	private void setLastLaunchedMachine(final IMachine machineToValidate) {
+		lastLaunchedMachine = machineToValidate;
 		if (selectedMachinePage instanceof BaseMachinePreferencePage)
-			((BaseMachinePreferencePage) selectedMachinePage).validationFinished(lastValidatedMachine);
+			((BaseMachinePreferencePage) selectedMachinePage).machineLaunched(lastLaunchedMachine);
 	}
 
 	/**

Modified: branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFolderTreeViewer.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFolderTreeViewer.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFolderTreeViewer.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -473,6 +473,8 @@
 							else if (status.getSeverity() == IStatus.INFO)
 								prefix = "Info: ";
 							return prefix + status.getMessage();
+						} else if (status.isOK()) {
+							return "Connected";
 						}
 						return "";
 					} else if (scanSharedFoldersThread != null) {
@@ -618,36 +620,39 @@
 				scanSharedFoldersThread = null;
 				return;
 			}
-			
-			InterruptedThreadMonitor monitor = new InterruptedThreadMonitor();
-			
-			SharedFolderState state;
-			boolean retry = false;
-			do {
-				MachineRegistry.getInstance().getLocalMachine().getFileSystemAccess().refresh();
-				remoteMachine.getFileSystemAccess().refresh();
 
-				// probe machine so we detect a launched one
-				MachineManager.getInstance().probeMachine(remoteMachine, new SubProgressMonitor(monitor, 0));
+			try {
+				InterruptedThreadMonitor monitor = new InterruptedThreadMonitor();
 				
-				state = SharedFolderManager.getInstance().analyzeSharedFolderState(
-						MachineRegistry.getInstance().getLocalMachine(),
-						remoteMachine,
-						mappings,
-						monitor);
-			 	synchronized (SharedFolderTreeViewer.this) {
-					retry = pendingStatusUpdate;
-					pendingStatusUpdate = false;
-			 	}
-			} while (retry && !monitor.isCanceled());
-			
-			synchronized (SharedFolderTreeViewer.this) {
-				if (!monitor.isCanceled()) {
-					shareState = state;
-					updateLabels();
+				SharedFolderState state;
+				boolean retry = false;
+				do {
+					MachineRegistry.getInstance().getLocalMachine().getFileSystemAccess().refresh();
+					remoteMachine.getFileSystemAccess().refresh();
+	
+					// probe machine so we detect a launched one
+					MachineManager.getInstance().probeMachine(remoteMachine, new SubProgressMonitor(monitor, 0));
+					
+					state = SharedFolderManager.getInstance().analyzeSharedFolderState(
+							MachineRegistry.getInstance().getLocalMachine(),
+							remoteMachine,
+							mappings,
+							monitor);
+				 	synchronized (SharedFolderTreeViewer.this) {
+						retry = pendingStatusUpdate;
+						pendingStatusUpdate = false;
+				 	}
+				} while (retry && !monitor.isCanceled());
+				
+				synchronized (SharedFolderTreeViewer.this) {
+					if (!monitor.isCanceled()) {
+						shareState = state;
+					}
+					
 				}
-				
+			} finally {
 				scanSharedFoldersThread = null;
+				updateLabels();
 			}
 		}
 		

Modified: branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFoldersPreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFoldersPreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFoldersPreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -168,7 +168,7 @@
 		
 		GridData labelLayout = new GridData(SWT.LEFT, SWT.TOP, true, false);
 		labelLayout.horizontalSpan = 2;
-		GridLayoutWrappedTextUtils.setupLabel(parent, label, labelLayout);
+		GridLayoutWrappedTextUtils.setupLabel(composite, label, labelLayout);
 
 		Composite tableComposite = new Composite(composite, SWT.NONE);
 		GridLayoutFactory.fillDefaults().applyTo(tableComposite);
@@ -189,7 +189,7 @@
 
 		final Button scanFoldersButton = new Button(tableComposite, SWT.CHECK);
 		scanFoldersButton.setSelection(scanFolders);
-		scanFoldersButton.setText("Check shared folder status while editing");
+		scanFoldersButton.setText("Check shared folder status while &editing");
 		scanFoldersButton.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
@@ -221,6 +221,7 @@
 		addLocalButton = new Button(buttonBox, SWT.PUSH);
 		addLocalButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
 		addLocalButton.setText("Add &Host Share...");
+		addLocalButton.setToolTipText("Add a shared folder from the host (e.g. to make project sources visible to the build machine)");
 		addLocalButton.addSelectionListener(new SelectionAdapter() {
 			@Override
 			public void widgetSelected(SelectionEvent e) {
@@ -231,6 +232,7 @@
 		addRemoteButton = new Button(buttonBox, SWT.PUSH);
 		addRemoteButton.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
 		addRemoteButton.setText("Add &VM Share...");
+		addRemoteButton.setToolTipText("Add a shared folder from the VM (e.g. to make SDK headers visible to the host)");
 		addRemoteButton.setEnabled(false);
 		addRemoteButton.addSelectionListener(new SelectionAdapter() {
 			@Override

Modified: branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseLaunchableVirtualMachineController.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseLaunchableVirtualMachineController.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseLaunchableVirtualMachineController.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -115,6 +115,14 @@
 	/* (non-Javadoc)
 	 * @see org.maemo.esbox.internal.api.vm.core.ILaunchableMachineController#launchMachine()
 	 */
+	public IStatus launchMachine(IProgressMonitor monitor) {
+		try {
+			return doStartVirtualMachine(monitor, false);
+		} catch (MachineException e) {
+			return Activator.createErrorStatus("Failed to launch machine", e);
+		}
+	}
+	
 	public LaunchedMachineInfo launchMachine() throws MicaException {
 		
 		ProcessLauncherParameters parameters = constructLaunchParameters();

Modified: branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualMachineController.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualMachineController.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualMachineController.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -145,8 +145,7 @@
 	 * user can edit the machine settings.
 	 * @param launchInfo info used to track the process, or <code>null</code> if it is not relevant or cannot be tracked
 	 * @param monitor
-	 * @return status of connection: OK or CANCEL
-	 * @throws MachineException
+	 * @return status of connection: OK, ERROR, or CANCEL
 	 */
 	protected IStatus probeUntilConnect(LaunchedMachineInfo launchInfo,  
 			IProgressMonitor monitor) {
@@ -357,7 +356,7 @@
 		}
 		
 		try {
-			status = doStartVirtualMachine(new SubProgressMonitor(launchMonitor, 9));
+			status = doStartVirtualMachine(new SubProgressMonitor(launchMonitor, 9), true);
 			
 			if (!status.isOK())
 				return status;
@@ -444,10 +443,11 @@
 	/**
 	 * Start the machine in the VM specific way.  
 	 * @param monitor
+	 * @param connectToMachine if true, connect to the machine's target SSH address
 	 * @return status of start (OK for no-op or success)
 	 * @throws MachineException
 	 */
-	abstract protected IStatus doStartVirtualMachine(IProgressMonitor monitor)
+	abstract protected IStatus doStartVirtualMachine(IProgressMonitor monitor, boolean connectToMachine)
 			throws MachineException;
 
 	protected MachineException cancelled() {

Modified: branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/AddressFieldEditor.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/AddressFieldEditor.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/AddressFieldEditor.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -106,16 +106,32 @@
 			}
 		});
 		*/
+		
+		/*
 		getComboViewer().getCombo().addKeyListener(new KeyAdapter() {
 
-            /* (non-Javadoc)
-             * @see org.eclipse.swt.events.KeyAdapter#keyReleased(org.eclipse.swt.events.KeyEvent)
-             */
             public void keyReleased(KeyEvent e) {
                 valueChanged();
             }
         });
+		*/
 		
+		// validate on focus lost, since it's costly to validate partial IP addresses as DNS names
+		getComboViewer().getCombo().addKeyListener(new KeyAdapter() {
+            public void keyPressed(KeyEvent e) {
+                clearErrorMessage();
+            }
+        });
+		getComboViewer().getCombo().addFocusListener(new FocusAdapter() {
+            public void focusGained(FocusEvent e) {
+                refreshValidState();
+            }
+
+            public void focusLost(FocusEvent e) {
+                valueChanged();
+                clearErrorMessage();
+            }
+        });
 		getComboViewer().getCombo().addSelectionListener(new SelectionAdapter() {
 			
 			/* (non-Javadoc)

Modified: branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/BaseVirtualMachinePreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/BaseVirtualMachinePreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/BaseVirtualMachinePreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -105,8 +105,8 @@
 	 * @see org.maemo.esbox.internal.api.maemosdk.ui.preferences.BaseMachinePreferencePage#validationFinished(org.maemo.mica.common.core.machine.IMachine)
 	 */
 	@Override
-	public void validationFinished(IMachine machine) {
-		super.validationFinished(machine);
+	public void machineLaunched(IMachine machine) {
+		super.machineLaunched(machine);
 		
 		sharedFoldersPrefPage.setMachine(machine);
 	}

Modified: branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/CommonVirtualMachineSettingsPreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/CommonVirtualMachineSettingsPreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/CommonVirtualMachineSettingsPreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -108,7 +108,7 @@
 		
 		feUserName = new StringFieldEditor(
 				VirtualMachinePreferenceConstants.VM_USER_NAME,
-				"User:",
+				"&User:",
 				32,
 				getFieldEditorParent());
 		feUserName.setEmptyStringAllowed(false);
@@ -118,7 +118,7 @@
 		
 		feUserPassword = new StringFieldEditor(
 				VirtualMachinePreferenceConstants.VM_USER_PASSWORD,
-				"Password:",
+				"&Password:",
 				32,
 				getFieldEditorParent()) {
 			/* (non-Javadoc)
@@ -183,7 +183,7 @@
 
 		feSshTargetAddr = new AddressFieldEditor(
 				VirtualMachinePreferenceConstants.VM_SSH_TARGET_ADDR,
-				"Target address:",
+				"&Target address:",
 				getFieldEditorParent());
 		addField(feSshTargetAddr);
 		Control control = feSshTargetAddr.getViewerControl();
@@ -213,7 +213,7 @@
 		
 		feSshTargetPort = new PortFieldEditor(
 				VirtualMachinePreferenceConstants.VM_SSH_TARGET_PORT, 
-				"Target SSH port:", 
+				"Target &SSH port:", 
 				getFieldEditorParent(), 
 				5);
 		addField(feSshTargetPort);
@@ -222,7 +222,7 @@
 
 		feSshHostAddr = new AddressFieldEditor(
 				VirtualMachinePreferenceConstants.VM_SSH_HOST_ADDR,
-				"Host address:",
+				"&Host address:",
 				getFieldEditorParent()) {
 			/* (non-Javadoc)
 			 * @see org.maemo.esbox.internal.api.vm.ui.preferences.AddressFieldEditor#customValidate(java.lang.String, java.lang.String)
@@ -261,7 +261,7 @@
 		
 		feSshHostPort = new PortFieldEditor(
 				VirtualMachinePreferenceConstants.VM_SSH_HOST_PORT,
-				"Host SSH port:",
+				"Host SSH po&rt:",
 				getFieldEditorParent(),
 				5);
 		addField(feSshHostPort);
@@ -280,7 +280,7 @@
 		*/
 		
 		configNetworkButton = new Button(getFieldEditorParent(), SWT.PUSH);
-		configNetworkButton.setText("Autoselect network settings");
+		configNetworkButton.setText("Autoselect net&work settings");
 		GridDataFactory.swtDefaults().span(
 				((GridLayout) getFieldEditorParent().getLayout()).numColumns, 1)
 			.applyTo(configNetworkButton);

Modified: branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm/ManualVirtualMachineController.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm/ManualVirtualMachineController.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm/ManualVirtualMachineController.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -38,7 +38,7 @@
 	 * @see org.maemo.esbox.internal.api.vm.core.BaseVirtualMachineController#doStartMachineImpl(org.eclipse.core.runtime.IProgressMonitor)
 	 */
 	@Override
-	protected IStatus doStartVirtualMachine(IProgressMonitor monitor)
+	protected IStatus doStartVirtualMachine(IProgressMonitor monitor, boolean connectToMachine)
 			throws MachineException {
 		return Activator.createErrorStatus(
 				MessageFormat.format("Could not contact the build machine at {0}:{1}; it must be manually launched.",

Modified: branches/work_Ed/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuMachineController.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuMachineController.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuMachineController.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -136,7 +136,7 @@
 	 * @see org.maemo.esbox.internal.api.vm.core.BaseVirtualMachineController#doStartMachineImpl(org.eclipse.core.runtime.IProgressMonitor)
 	 */
 	@Override
-	protected IStatus doStartVirtualMachine(IProgressMonitor monitor)
+	protected IStatus doStartVirtualMachine(IProgressMonitor monitor, boolean connectToMachine)
 			throws MachineException {
 		monitor.beginTask("Starting QEMU...", 10);
 		monitor.subTask("Checking existing QEMU instances...");
@@ -151,9 +151,14 @@
 		
 		launchInfo.monitor.runNonBlocking();
 		
-		IStatus status = probeUntilConnect(
+		IStatus status;
+		
+		if (connectToMachine)
+			status = probeUntilConnect(
 				launchInfo,
 				new SubProgressMonitor(monitor, 8));
+		else
+			status = Status.OK_STATUS;
 		
 		if (monitor.isCanceled() || status.getSeverity() == IStatus.CANCEL) {
 			launchInfo.cancel();

Modified: branches/work_Ed/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuPreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuPreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuPreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -59,7 +59,8 @@
 		IQemuConfiguration config = new QemuConfiguration(new DialogSettings("temp"));
 		commonPrefPage.saveTo(config);
 		config.setSharedFolders(sharedFoldersPrefPage.getSharedFolders());
-		vmPrefPage.saveTo(config);
+		if (vmPrefPage != null)
+			vmPrefPage.saveTo(config);
 		return new QemuMachine("Test QEMU Machine", config); 
 	}
 

Modified: branches/work_Ed/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxMachineController.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxMachineController.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxMachineController.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -233,7 +233,7 @@
 	 * @see org.maemo.esbox.internal.api.vm.core.BaseVirtualMachineController#doStartVirtualMachine(org.eclipse.core.runtime.IProgressMonitor)
 	 */
 	@Override
-	protected IStatus doStartVirtualMachine(IProgressMonitor monitor)
+	protected IStatus doStartVirtualMachine(IProgressMonitor monitor, boolean connectToMachine)
 			throws MachineException {
 		monitor.beginTask("Starting VirtualBox...", 10 + 5000);
 		
@@ -272,9 +272,15 @@
 			return status;
 		}
 		
-		IStatus status = probeUntilConnect(
-				null,  /* we're not watching VBoxManage */
-				new SubProgressMonitor(monitor, 8));
+		IStatus status;
+		if (connectToMachine)
+			status = probeUntilConnect(
+					null,  /* we're not watching VBoxManage */
+					new SubProgressMonitor(monitor, 8));
+		else
+			status = Status.OK_STATUS;
+
+		monitor.done();
 		
 		if (monitor.isCanceled() || status.getSeverity() == IStatus.CANCEL) {
 			launchInfo.cancel();

Modified: branches/work_Ed/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -73,7 +73,8 @@
 		IVirtualBoxConfiguration config = new VirtualBoxConfiguration(new DialogSettings("temp"));
 		commonPrefPage.saveTo(config);
 		config.setSharedFolders(sharedFoldersPrefPage.getSharedFolders());
-		vmPrefPage.saveTo(config);
+		if (vmPrefPage != null)
+			vmPrefPage.saveTo(config);
 		return config;
 	}
 	

Modified: branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareMachineController.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareMachineController.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareMachineController.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -66,9 +66,7 @@
 		// won't necessarily be the program we expect.)
 		for (IProcess process : allProcesses) {
 			if (process.getCommandLine().contains(vmx.getName())) {
-				if (process.getName().contains(program.getName())
-						|| process.getName().toLowerCase().contains("vmware")
-						|| process.getName().contains("vmware-vmx")) {
+				if (vmwareProcessMatches(program, process)) {
 					matches.add(process);
 				}
 			}
@@ -81,7 +79,7 @@
 		// lines are empty.  Be looser.
 		if (HostUtils.isWindows()) {
 			for (IProcess process : allProcesses) {
-				if (process.getName().contains(program.getName())) {
+				if (vmwareProcessMatches(program, process)) {
 					matches.add(process);
 				}
 			}
@@ -90,6 +88,13 @@
 		return (IProcess[]) matches.toArray(new IProcess[matches.size()]);
 	}
 
+	private boolean vmwareProcessMatches(File program, IProcess process) {
+		String suffix = HostUtils.isWindows() ? "(.exe)?" : "";
+		return process.getName().toLowerCase().matches(".*" + program.getName() + suffix)
+				|| process.getName().toLowerCase().matches(".*vmware" + suffix)
+				|| process.getName().matches(".*vmware-vmx" + suffix);
+	}
+
 	protected boolean doIsMachineRunning() {
 		// We can't tell if the machine stopped running just based on the process stopping
 		// (VMware may have used another instance to host the machine, or, vmrun has exited
@@ -187,7 +192,7 @@
 	 * @see org.maemo.esbox.internal.api.vm.core.BaseVirtualMachineController#doStartMachineImpl(org.eclipse.core.runtime.IProgressMonitor)
 	 */
 	@Override
-	protected IStatus doStartVirtualMachine(IProgressMonitor monitor)
+	protected IStatus doStartVirtualMachine(IProgressMonitor monitor, boolean connectToMachine)
 			throws MachineException {
 		
 		monitor.beginTask("Starting VMware...", 10);
@@ -224,6 +229,8 @@
 		
 		LaunchedMachineInfo watchStatus = null;
 		
+		monitor.subTask("Waiting for VMware to start...");
+		
 		if (usingVMrun) {
 			// wait for this to finish
 			launchInfo.monitor.waitForCompletion(null);
@@ -255,9 +262,12 @@
 				watchStatus = launchInfo;
 		}
 		
-		status = probeUntilConnect(
-				watchStatus,
-				new SubProgressMonitor(monitor, 8));
+		if (connectToMachine)
+			status = probeUntilConnect(
+					watchStatus,
+					new SubProgressMonitor(monitor, 8));
+		else
+			status = Status.OK_STATUS;	
 		
 		if (monitor.isCanceled() || status.getSeverity() == IStatus.CANCEL) {
 			launchInfo.cancel();

Modified: branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwarePreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwarePreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwarePreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -60,7 +60,8 @@
 		IVMwareConfiguration config = new VMwareConfiguration(new DialogSettings("temp"));
 		commonPrefPage.saveTo(config);
 		config.setSharedFolders(sharedFoldersPrefPage.getSharedFolders());
-		vmPrefPage.saveTo(config);
+		if (vmPrefPage != null)
+			vmPrefPage.saveTo(config);
 		return new VMwareMachine("Test VMWare Machine", config); 
 	}
 	

Modified: branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareSettingsPreferencePage.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareSettingsPreferencePage.java	2009-10-06 03:16:45 UTC (rev 2267)
+++ branches/work_Ed/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareSettingsPreferencePage.java	2009-10-06 18:57:22 UTC (rev 2268)
@@ -13,10 +13,19 @@
 
 import java.lang.reflect.Field;
 
+import org.eclipse.core.runtime.Assert;
 import org.eclipse.jface.preference.DirectoryFieldEditor;
 import org.eclipse.jface.preference.FileFieldEditor;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.preference.RadioGroupFieldEditor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.FocusAdapter;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Text;
 import org.maemo.esbox.internal.api.maemosdk.ui.preferences.BaseMachinePreferencePage;
@@ -101,7 +110,7 @@
 		text = feVMWAREPath.getTextControl(getFieldEditorParent()); 
 		text.setToolTipText(
 						"Specify the full path to a VMware installation");
-
+		
 		/*
 		feVMWARELaunchPattern = new StringFieldEditor(
 				VMwarePreferenceConstants.VMWARE_LAUNCH_PATTERN,



More information about the Esbox-commits mailing list