[Esbox-commits] r1557 - in branches/work_Ed: 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/ui/preferences org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm/ui/actions
eswartz at garage.maemo.org
eswartz at garage.maemo.org
Fri May 8 02:08:55 EEST 2009
Author: eswartz
Date: 2009-05-08 02:08:54 +0300 (Fri, 08 May 2009)
New Revision: 1557
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/ValidateMachineRunner.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/ui/actions/ValidateVirtualMachineCommand.java
Log:
Move the virtual machine validation into a dialog.
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-05-07 22:00:37 UTC (rev 1556)
+++ branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java 2009-05-07 23:08:54 UTC (rev 1557)
@@ -60,6 +60,7 @@
import org.maemo.mica.common.core.machine.MachineRegistry;
import org.maemo.mica.common.core.sdk.SDKFactory;
import org.maemo.mica.common.ui.common.PixelConverter;
+import org.maemo.mica.common.ui.dialogs.StyledTextProgressDialog;
/**
* Configure virtual machine preferences. This allows the user to select which
@@ -520,11 +521,19 @@
Display.getDefault().asyncExec(new Runnable() {
public void run() {
- ProgressMonitorDialog dialog = new ProgressMonitorDialog(getShell());
+ StyledTextProgressDialog dialog = new StyledTextProgressDialog(
+ getShell(),
+ "Virtual Machine Validation");
+
+ dialog.open();
+
+ ValidateMachineRunner runner = new ValidateMachineRunner(
+ dialog.getProgressReporter(),
+ selectedMachine);
try {
- dialog.run(false, true, new ValidateMachineRunner(getShell(), selectedMachine));
+ dialog.run(true, true, runner);
} catch (Exception e) {
- UIActivator.getErrorLogger().logAndShowError("Unexpected error when testing machine", e);
+ UIActivator.getErrorLogger().logAndShowError("Unexpected exception running tests", e);
}
}
Modified: branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/ValidateMachineRunner.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/ValidateMachineRunner.java 2009-05-07 22:00:37 UTC (rev 1556)
+++ branches/work_Ed/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/ValidateMachineRunner.java 2009-05-07 23:08:54 UTC (rev 1557)
@@ -11,27 +11,47 @@
package org.maemo.esbox.internal.api.maemosdk.ui.preferences;
-import org.eclipse.core.filesystem.*;
+import java.io.OutputStream;
+import java.lang.reflect.InvocationTargetException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.core.filesystem.EFS;
+import org.eclipse.core.filesystem.IFileInfo;
+import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
-import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.console.MessageConsole;
import org.maemo.esbox.internal.maemosdk.ui.UIActivator;
-import org.maemo.mica.common.core.*;
-import org.maemo.mica.common.core.machine.*;
-import org.maemo.mica.common.core.process.*;
+import org.maemo.mica.common.core.IProgressReporter;
+import org.maemo.mica.common.core.MicaCanceledException;
+import org.maemo.mica.common.core.MicaException;
+import org.maemo.mica.common.core.Policy;
+import org.maemo.mica.common.core.ProgressReporterStreamTextMonitor;
+import org.maemo.mica.common.core.machine.IMachine;
+import org.maemo.mica.common.core.machine.ISharedFilesystemProvider;
+import org.maemo.mica.common.core.machine.ISharedFolder;
+import org.maemo.mica.common.core.machine.MachineUtils;
+import org.maemo.mica.common.core.process.CommandLineArguments;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.IProcessLauncherFactory;
+import org.maemo.mica.common.core.process.IStreamMonitor;
+import org.maemo.mica.common.core.process.ProcessLauncherCreator;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils;
import org.maemo.mica.common.core.sdk.ISDKTarget;
import org.maemo.mica.common.core.sdk.SDKFactory;
-import java.io.OutputStream;
-import java.lang.reflect.InvocationTargetException;
-import java.text.MessageFormat;
-import java.util.*;
-
/**
* This class validates that a machine is properly configured.
* @author eswartz
@@ -40,43 +60,36 @@
public class ValidateMachineRunner implements IRunnableWithProgress {
private IMachine machine;
+ private final IProgressReporter reporter;
- public ValidateMachineRunner(Shell shell, IMachine machine) {
- this.shell = shell;
+ public ValidateMachineRunner(IProgressReporter reporter,
+ IMachine machine) {
+ if (reporter == null || machine == null)
+ throw new NullPointerException();
+ this.reporter = reporter;
this.machine = machine;
}
private Shell shell;
protected void fail(final String msg, final Object... param) {
- Display.getDefault().syncExec(new Runnable() {
-
- public void run() {
- MessageDialog.openError(shell, "Validation Failure", MessageFormat.format(msg, param));
- }
-
- });
+ reporter.log(UIActivator.createErrorStatus(
+ MessageFormat.format(msg, param), null));
}
protected void info(final String msg, final Object... param) {
- Display.getDefault().syncExec(new Runnable() {
-
- public void run() {
- MessageDialog.openInformation(shell, "Validation Information", MessageFormat.format(msg, param));
- }
-
- });
+ reporter.logInfo(MessageFormat.format(msg, param));
}
protected void warn(final String msg, final Object... param) {
- Display.getDefault().syncExec(new Runnable() {
-
- public void run() {
- MessageDialog.openWarning(shell, "Validation Information", MessageFormat.format(msg, param));
- }
-
- });
+ reporter.log(UIActivator.createStatus(IStatus.WARNING,
+ MessageFormat.format(msg, param), null));
}
+
+ protected void step(IProgressMonitor monitor, String msg) {
+ monitor.subTask(msg);
+ reporter.logInfo(msg);
+ }
/* (non-Javadoc)
* @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
@@ -133,31 +146,26 @@
*/
private boolean testProcessLaunching(final IMachine machine, IProgressMonitor monitor) {
monitor.beginTask("", 1);
- monitor.subTask("Testing process launching");
+ step(monitor, "Testing process launching");
// check the process launcher
IProcessLauncherFactory processLauncherFactory = machine.getProcessLauncherFactory();
IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(processLauncherFactory,
"ls " + machine.getUserHome());
- MessageConsole console = CoreConsoleManager.getInstance().getConsole(
- true, null, "Remote "+machine.getUserHome()+" directory listing");
- Process process;
+ reporter.logInfo(MessageFormat.format("Launching ''{0}''", CommandLineArguments.toCommandLine(processLauncher.getLaunchCommandArguments())));
try {
- process = processLauncher.createProcess();
+ ProcessLauncherUtils.launchAndMonitorStandardStreams(processLauncher,
+ new IStreamMonitor[] {
+ new ProgressReporterStreamTextMonitor(reporter)
+ },
+ monitor);
} catch (MicaException e) {
fail("Could not run 'ls' on " + machine.getUserHome() + " directory.\nIf SSH connections to machine are failing, ensure the \nthat the virtual machine has booted properly and is running an SSH daemon:\n{0}",
e);
return false;
}
- processLauncher.redirectToConsole(console);
- try {
- process.waitFor();
- } catch (InterruptedException e) {
-
- }
-
return true;
}
@@ -167,7 +175,7 @@
*/
private boolean testBasicFileSystem(final IMachine machine, IProgressMonitor monitor) {
monitor.beginTask("", 2);
- monitor.subTask("Testing basic filesystem access");
+ step(monitor, "Testing basic filesystem access");
// check the basic filesystem access
IFileStore store = machine.getFileSystemAccess().getFileStore(machine.getUserHome());
@@ -204,14 +212,14 @@
List<ISharedFolder> sharedFolders = sharedFilesystemProvider.getSharedFolders();
monitor.beginTask("", sharedFolders.size() + 1);
- monitor.subTask("Checking shared folders");
+ step(monitor, "Checking shared folders");
// ping them all
IStatus status = machine.ensureSharesMounted(new SubProgressMonitor(monitor, 1));
if (status.getSeverity() == IStatus.WARNING)
- UIActivator.getErrorLogger().show(status);
+ reporter.log(status);
else if (status.getSeverity() == IStatus.ERROR) {
- UIActivator.getErrorLogger().show(status);
+// reporter.log(status);
return false;
}
@@ -233,7 +241,7 @@
// check the shared folder
monitor.beginTask("", 5);
- monitor.subTask("Checking " + shared + " -> " + mounted);
+ step(monitor, "Checking " + shared + " -> " + mounted);
// look at the actual shared folder ("local" from the POV of who provides the share)
IFileStore shareProviderStore = share.isHostProvidedShare()
@@ -356,7 +364,7 @@
IFileStore remoteStore;
monitor.beginTask("", 2);
- monitor.subTask("Testing visibility of shared folders in installed targets");
+ step(monitor, "Testing visibility of shared folders in installed targets");
SDKFactory.getInstance().waitForRefreshComplete(new SubProgressMonitor(monitor, 1));
ISDKTarget[] sdkTargets = getMachineProvidedTargets();
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-05-07 22:00:37 UTC (rev 1556)
+++ branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/CommonVirtualMachineSettingsPreferencePage.java 2009-05-07 23:08:54 UTC (rev 1557)
@@ -11,11 +11,12 @@
package org.maemo.esbox.internal.api.vm.ui.preferences;
+import java.lang.reflect.InvocationTargetException;
import java.net.InetAddress;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.jface.preference.StringFieldEditor;
@@ -23,18 +24,16 @@
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.maemo.esbox.internal.vm.Activator;
import org.maemo.esbox.vm.core.IVirtualMachineConfiguration;
import org.maemo.esbox.vm.core.VirtualMachinePreferenceConstants;
import org.maemo.mica.common.core.PasswordStorage;
import org.maemo.mica.common.ui.StyledTextProgressReporter;
+import org.maemo.mica.common.ui.dialogs.StyledTextProgressDialog;
import org.maemo.mica.common.ui.preferences.BaseComposableFieldEditorPreferencePage;
/**
@@ -45,81 +44,6 @@
*/
public class CommonVirtualMachineSettingsPreferencePage extends BaseComposableFieldEditorPreferencePage
implements IVirtualMachineSettingsPreferencePage {
- /**
- * @author eswartz
- *
- */
- private static class StyledTextProgressDialog extends Dialog {
- private StyledTextProgressReporter reporter;
- private final String title;
- /**
- * @param parent
- * @param title
- */
- private StyledTextProgressDialog(Shell parent, String title) {
- super(parent);
- setShellStyle(getShellStyle() | SWT.RESIZE);
- this.title = title;
- setBlockOnOpen(false);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
- */
- @Override
- protected void configureShell(Shell newShell) {
- super.configureShell(newShell);
- newShell.setText(title);
- newShell.setCursor(newShell.getDisplay().getSystemCursor(SWT.CURSOR_WAIT));
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.Dialog#getInitialSize()
- */
- @Override
- protected Point getInitialSize() {
- return new Point(500, 300);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.ProgressMonitorDialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
- */
- @Override
- protected void createButtonsForButtonBar(Composite parent) {
- super.createButtonsForButtonBar(parent);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
- */
- @Override
- protected Control createDialogArea(Composite parent) {
- Composite composite = (Composite) super.createDialogArea(parent);
-
- reporter = new StyledTextProgressReporter(composite);
- GridDataFactory.fillDefaults().grab(true, true).applyTo(
- reporter.getStyledText());
-
- return composite;
- }
-
- /**
- * Get the progress reporter
- * @return
- */
- public StyledTextProgressReporter getProgressReporter() {
- return reporter;
- }
-
- public void done() {
- getButton(IDialogConstants.OK_ID).setEnabled(true);
- getButton(IDialogConstants.CANCEL_ID).setEnabled(false);
- getShell().setCursor(null);
- }
- }
-
-
private StringFieldEditor feUserName;
private StringFieldEditor feUserPassword;
private AddressFieldEditor feSshTargetAddr;
@@ -326,12 +250,17 @@
final StyledTextProgressDialog dialog = new StyledTextProgressDialog(
getShell(), "Configuring network...");
- dialog.open(); // no block
-
+
+ // open to ensure we have the reporter
+ dialog.open();
+
try {
- doConfigureNetwork(dialog.getProgressReporter());
-
- dialog.done();
+ dialog.run(true, true, new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor)
+ throws InvocationTargetException, InterruptedException {
+ doConfigureNetwork(dialog.getProgressReporter());
+ }
+ });
} catch (Exception e) {
Activator.getErrorLogger().logAndShowError("Unexpected error configuring network defaults", e);
}
Modified: branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm/ui/actions/ValidateVirtualMachineCommand.java
===================================================================
--- branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm/ui/actions/ValidateVirtualMachineCommand.java 2009-05-07 22:00:37 UTC (rev 1556)
+++ branches/work_Ed/org.maemo.esbox.vm/src/org/maemo/esbox/internal/vm/ui/actions/ValidateVirtualMachineCommand.java 2009-05-07 23:08:54 UTC (rev 1557)
@@ -11,17 +11,22 @@
package org.maemo.esbox.internal.vm.ui.actions;
-import org.eclipse.core.commands.*;
-import org.eclipse.core.runtime.*;
+import java.text.MessageFormat;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.maemo.esbox.internal.api.maemosdk.ui.preferences.ValidateMachineRunner;
import org.maemo.esbox.internal.vm.Activator;
-import org.maemo.mica.common.core.machine.*;
+import org.maemo.mica.common.core.machine.IBuildMachine;
+import org.maemo.mica.common.core.machine.MachineRegistry;
+import org.maemo.mica.common.ui.dialogs.StyledTextProgressDialog;
-import java.text.MessageFormat;
-
/**
* @author eswartz
*
@@ -40,16 +45,6 @@
});
}
- protected void info(final String msg, final Object... param) {
- Display.getDefault().syncExec(new Runnable() {
-
- public void run() {
- MessageDialog.openInformation(getShell(), "Validation Information", MessageFormat.format(msg, param));
- }
-
- });
- }
-
/**
* @return
*/
@@ -63,15 +58,23 @@
public Object execute(ExecutionEvent event) throws ExecutionException {
setupContext(event.getApplicationContext());
+ // make a dialog
+ StyledTextProgressDialog dialog = new StyledTextProgressDialog(
+ shell, "Virtual Machine Validation");
+
+ // open to ensure we have the reporter
+ dialog.open();
+
// find a virtual machine
boolean found = false;
IBuildMachine[] machines = MachineRegistry.getInstance().getBuildMachines();
for (IBuildMachine machine : machines) {
ValidateMachineRunner runner = new ValidateMachineRunner(
- shell, machine);
+ dialog.getProgressReporter(),
+ machine);
try {
- runner.run(new NullProgressMonitor());
+ dialog.run(true, true, runner);
} catch (Exception e) {
Activator.getErrorLogger().logAndShowError("Unexpected exception running tests", e);
}
@@ -79,10 +82,11 @@
}
if (!found) {
- fail("No build machine registered -- please consult ESbox > Build Machines to configure.");
- return null;
+ dialog.getProgressReporter().log(Activator.createErrorStatus(
+ "No build machine registered -- please consult ESbox > Build Machines to configure.",
+ null));
}
-
+
return null;
}
More information about the Esbox-commits
mailing list