[Esbox-commits] r1854 - in branches/work_new_pydev: org.maemo.esbox.cpp.project/src/org/maemo/esbox/internal/cpp/project/ui/properties org.maemo.esbox.help/html/concepts org.maemo.esbox.help/html/images org.maemo.esbox.help/html/images/debian org.maemo.esbox.help/html/images/flash org.maemo.esbox.help/html/images/pref_images org.maemo.esbox.help/html/images/profiling org.maemo.esbox.help/html/reference org.maemo.esbox.help/html/tasks org.maemo.esbox.maemosdk.core/conf org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools org.maemo.esbox.maemosdk.ui org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/preferences org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/wizards org.maemo.esbox.python.project/src/org/maemo/esbox/internal/python/project/core org.maemo.esbox.scratchbox.core org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/commands org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/execEnv org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sbrsh org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sdk org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/provider org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/preferences org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin org.maemo.esbox.scratchbox.sb2 org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2 org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/provider org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/preferences org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/wizard org.maemo.esbox.scratchbox.tests org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards org.maemo.esbox.tests org.maemo.esbox.tests/src/org/maemo/esbox/tests org.maemo.esbox.tests/src/org/maemo/esbox/tests/common org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp org.maemo.esbox.tests/src/org/maemo/esbox/tests/linux org.maemo.esbox.tests/src/org/maemo/esbox/tests/protocol org.maemo.esbox.tests/src/org/maemo/esbox/tests/python org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences org.maemo.esbox.vm/src/org/maemo/esbox/vm/core org.maemo.esbox.vm/src/org/maemo/esbox/vm/ui 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

raul at garage.maemo.org raul at garage.maemo.org
Wed Jul 8 14:19:19 EEST 2009


Author: raul
Date: 2009-07-08 14:19:18 +0300 (Wed, 08 Jul 2009)
New Revision: 1854

Added:
   branches/work_new_pydev/org.maemo.esbox.help/html/images/debian/dialog-debian-confirm-install.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/oprofile-menu.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/oprofile-view.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/valgrind-menu.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/valgrind-view.jpg
Removed:
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/oprofile-menu.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/oprofile-view.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/valgrind-menu.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/valgrind-view.jpg
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling1.jpg
   branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling4.jpg
   branches/work_new_pydev/org.maemo.esbox.help/html/images/valgrind.png
   branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardCPUMethod.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardCompilerPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardNamePage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardPageFactory.java
Modified:
   branches/work_new_pydev/org.maemo.esbox.cpp.project/src/org/maemo/esbox/internal/cpp/project/ui/properties/ESboxCppBuildConfigurationsPage.java
   branches/work_new_pydev/org.maemo.esbox.help/html/concepts/Sbrsh.html
   branches/work_new_pydev/org.maemo.esbox.help/html/images/debian/wiz-debian-deploy-package.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/flash/wiz-flash-1b.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/pref_images/prefs-esbox-xserver.png
   branches/work_new_pydev/org.maemo.esbox.help/html/images/pref_images/prefs-maemo.png
   branches/work_new_pydev/org.maemo.esbox.help/html/reference/FAQ.html
   branches/work_new_pydev/org.maemo.esbox.help/html/tasks/DebianPackage.html
   branches/work_new_pydev/org.maemo.esbox.help/html/tasks/InstallingPCConnectivity.html
   branches/work_new_pydev/org.maemo.esbox.help/html/tasks/ProfilingMaemoApplications.html
   branches/work_new_pydev/org.maemo.esbox.help/html/tasks/SettingPreferences.html
   branches/work_new_pydev/org.maemo.esbox.help/html/tasks/UsingFlasherWizard.html
   branches/work_new_pydev/org.maemo.esbox.help/html/tasks/UsingVirtualMachines.html
   branches/work_new_pydev/org.maemo.esbox.maemosdk.core/conf/maemo_prefs.xml
   branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/MaemoPreferenceMigrator.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/AfSbInitMaemoLauncherAdapter.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/MaemoScriptLauncher.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/XLauncher.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/plugin.xml
   branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFolderTableViewer.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/ValidateMachineRunner.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions/BaseEmulatorStartStopRestartControlAction.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions/MaemoDropdownMenuAction.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/preferences/XServerPreferencePage.java
   branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/wizards/ESboxImportDebianSourcePackageProjectWizard.java
   branches/work_new_pydev/org.maemo.esbox.python.project/src/org/maemo/esbox/internal/python/project/core/ESboxPythonProjectPackageGatherer.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/plugin.xml
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/OldStyleProjectProperties.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/commands/SimpleCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/execEnv/MaemoExecutionEnvironmentHandler.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk/AbstractScratchboxSDK.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk/BaseScratchboxSDKTarget.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESBoxSBRSHLaunchAdapter.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESBoxSBRSHLaunchAdapterFactory.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoEmulatorExecutionEnvironmentProviderAdapter.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoEmulatorExecutionEnvironmentProviderAdapterFactory.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoTargetEnvironmentModifierAdapter.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoTargetEnvironmentModifierAdapterFactory.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command/ScratchboxCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sbrsh/SBRSHPreferenceMigrator.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sdk/ScratchboxSDKFacade.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/CreateTargetCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/GetCurrentTargetCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/GetVersionScratchboxCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/RemoveTargetCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/SB1PreferenceMigrator.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDK.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDKTarget.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/ESboxNokiaBinariesInstallationAdapter.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1EnvironmentProvider.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1PrepareTargetProcessLaunchAdapter.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1ProcessLauncher.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1ProcessLauncherFactory.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/provider/Scratchbox1SDKProvider.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/preferences/Scratchbox1PreferencesPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/BaseScratchbox1SDKInstallerEngine.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/NewScratchbox1SDKWizard.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/PreviousInstallationDetectionPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1SDKInstallerEngine.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerData.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerEngine.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerSelectionWizardPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/DiabloInstallerScriptWorkPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/FremantleLicenseAgreementPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/FremantleWorkPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/NokiaBinariesInstallerEngine.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/NokiaBinariesPackageInstaller.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/SDKTargetSelectionPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/plugin.xml
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/Activator.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/AbstractSb2Command.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/CreateMaemoRootstrapSb2Command.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/CreateTargetSb2Command.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListAvailableMaemoRootstrapsSb2Command.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListCputranspSb2Command.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListTargetsCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoRootstrapCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoSdkCommand.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/RemoveMaemoRootstrapSb2Command.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ShowPathMappingSb2Command.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core/Scratchbox2SDK.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core/Scratchbox2SDKTarget.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Sb2MaemoLauncherAdapterFactory.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2EnvironmentProvider.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2ProcessLauncher.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2ProcessLauncherFactory.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/provider/Scratchbox2SDKProvider.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/preferences/Scratchbox2PreferencesPage.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/wizard/NewScratchbox2TargetWizard.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/build.properties
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/ESboxScratchboxTestSuite.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB1ProcessLauncher.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB1SDKProvider.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB2ProcessLauncher.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB2SDKProvider.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestScratchboxProjectInfo.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/BaseTest.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/MockProcessLauncher.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/MockProcessLauncherFactory.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestListCommands.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestScratchbox2SDK.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestScratchboxFacade.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/ApplyAutoconfPatchEngine.java
   branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/ApplyAutoconfPatchTargetsPage.java
   branches/work_new_pydev/org.maemo.esbox.tests/asthelper.completions
   branches/work_new_pydev/org.maemo.esbox.tests/build.properties
   branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/ESboxProductTestSuite.java
   branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/common/SboxTestUtils.java
   branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp/TestCppBuildConfigProjectConverter.java
   branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp/TestCppBuildConfigProjectCreator.java
   branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/linux/TestFremantleAptBuildPackageMapping.java
   branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/protocol/ManualTestSBRSHMachine.java
   branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/python/TestPythonProjectProperties.java
   branches/work_new_pydev/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuMachineController.java
   branches/work_new_pydev/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuPreferenceMigrator.java
   branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxMachineController.java
   branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferenceMigrator.java
   branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferencePage.java
   branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxUtils.java
   branches/work_new_pydev/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareMachineController.java
   branches/work_new_pydev/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwarePreferenceMigrator.java
   branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseLaunchableVirtualMachineController.java
   branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualBuildMachine.java
   branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualMachineController.java
   branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/SlowVirtualMachineLaunchMonitorDialog.java
   branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/HostInterfaceAddressProvider.java
   branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/vm/core/VirtualMachinePreferenceMigrator.java
   branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/vm/ui/SelectVirtualMachineDialog.java
Log:
merge with trunk 1841

Modified: branches/work_new_pydev/org.maemo.esbox.cpp.project/src/org/maemo/esbox/internal/cpp/project/ui/properties/ESboxCppBuildConfigurationsPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.cpp.project/src/org/maemo/esbox/internal/cpp/project/ui/properties/ESboxCppBuildConfigurationsPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.cpp.project/src/org/maemo/esbox/internal/cpp/project/ui/properties/ESboxCppBuildConfigurationsPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -129,8 +129,10 @@
 		
 		uiHolder.setVisible(true);
 		
-		ICppBuildConfigurationData cppData = (ICppBuildConfigurationData) data;
-		table.initializeFrom(cppData.environmentModifierBlock());
+		if (data instanceof ICppBuildConfigurationData) {
+			ICppBuildConfigurationData cppData = (ICppBuildConfigurationData) data;
+			table.initializeFrom(cppData.environmentModifierBlock());
+		}
 	}
 	
 	/* (non-Javadoc)
@@ -138,8 +140,10 @@
 	 */
 	@Override
 	protected void applyToConfigurationData(IBuildConfigurationData data) {
-		ICppBuildConfigurationData cppData = (ICppBuildConfigurationData) data;
-		table.performApply(cppData.environmentModifierBlock());
+		if (data instanceof ICppBuildConfigurationData) {
+			ICppBuildConfigurationData cppData = (ICppBuildConfigurationData) data;
+			table.performApply(cppData.environmentModifierBlock());
+		}
 	}
 
 	/* (non-Javadoc)

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/concepts/Sbrsh.html
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.help/html/concepts/Sbrsh.html	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.help/html/concepts/Sbrsh.html	2009-07-08 11:19:18 UTC (rev 1854)
@@ -68,7 +68,7 @@
   
   <h3>SBRSH authentication setup</h3>
   <p>SBRSH requires a bit of work to set up properly. 
-  See the <a href="http://pc-connectivity.garage.maemo.org/beta1/documentation_sbrsh.html">PC Connectivity documentation</a>
+  See the <a href="http://pc-connectivity.garage.maemo.org/documentation_sbrsh.html">PC Connectivity documentation</a>
   for details.
   
   If you have already added your host IP address or range in the

Copied: branches/work_new_pydev/org.maemo.esbox.help/html/images/debian/dialog-debian-confirm-install.png (from rev 1853, trunk/org.maemo.esbox.help/html/images/debian/dialog-debian-confirm-install.png)
===================================================================
(Binary files differ)

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/images/debian/wiz-debian-deploy-package.png
===================================================================
(Binary files differ)

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/images/flash/wiz-flash-1b.png
===================================================================
(Binary files differ)

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/images/pref_images/prefs-esbox-xserver.png
===================================================================
(Binary files differ)

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/images/pref_images/prefs-maemo.png
===================================================================
(Binary files differ)

Copied: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling (from rev 1853, trunk/org.maemo.esbox.help/html/images/profiling)

Deleted: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/oprofile-menu.png
===================================================================
(Binary files differ)

Copied: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/oprofile-menu.png (from rev 1853, trunk/org.maemo.esbox.help/html/images/profiling/oprofile-menu.png)
===================================================================
(Binary files differ)

Deleted: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/oprofile-view.png
===================================================================
(Binary files differ)

Copied: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/oprofile-view.png (from rev 1853, trunk/org.maemo.esbox.help/html/images/profiling/oprofile-view.png)
===================================================================
(Binary files differ)

Deleted: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/valgrind-menu.png
===================================================================
(Binary files differ)

Copied: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/valgrind-menu.png (from rev 1853, trunk/org.maemo.esbox.help/html/images/profiling/valgrind-menu.png)
===================================================================
(Binary files differ)

Deleted: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/valgrind-view.jpg
===================================================================
(Binary files differ)

Copied: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling/valgrind-view.jpg (from rev 1853, trunk/org.maemo.esbox.help/html/images/profiling/valgrind-view.jpg)
===================================================================
(Binary files differ)

Deleted: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling1.jpg
===================================================================
(Binary files differ)

Deleted: branches/work_new_pydev/org.maemo.esbox.help/html/images/profiling4.jpg
===================================================================
(Binary files differ)

Deleted: branches/work_new_pydev/org.maemo.esbox.help/html/images/valgrind.png
===================================================================
(Binary files differ)

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/reference/FAQ.html
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.help/html/reference/FAQ.html	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.help/html/reference/FAQ.html	2009-07-08 11:19:18 UTC (rev 1854)
@@ -222,7 +222,7 @@
 	href="https://garage.maemo.org/news/?group_id=192" target="_blank">ESbox Garage Project News page</a>.
 	</p>
 	<p>For regular integration releases, see the  
-	<a href="http://esbox.garage.maemo.org/beta1/releases.html" target="_blank">ESbox releases page</a>
+	<a href="http://esbox.garage.maemo.org/2nd_edition/releases.html" target="_blank">ESbox releases page</a>
 </div>
 <hr>
 <div id="support" dir="LTR">
@@ -237,9 +237,9 @@
 projects or workspace must be visible to both Scratchbox and the host.
 When Scratchbox is running on a virtual machine, we support this via
 Samba sharing from the host to the VM.</p>
-<p>See the <a href="http://maemovmware.garage.maemo.org/beta1">Maemo SDK virtual image page</a>
+<p>See the <a href="http://maemovmware.garage.maemo.org/">Maemo SDK virtual image page</a>
 for configured and supported images and the
-<a href="http://esbox.garage.maemo.org/beta1/virtual_machines.html">ESbox virtual machine support documentation</a>.
+<a href="http://esbox.garage.maemo.org/2nd_edition/virtual_machines.html">ESbox virtual machine support documentation</a>.
 </div>
 <hr>
 <div id="ask" dir="LTR">
@@ -273,7 +273,7 @@
 <h2>Download and Installation:</h2>
 <div id="howtos" dir="LTR">
 <h3>Are there complete HowTos for setting up ESbox?</h3>
-<p>Yes, please see the <a href="http://esbox.garage.maemo.org/beta1/installation.html">ESbox installation guide</a>.
+<p>Yes, please see the <a href="http://esbox.garage.maemo.org/2nd_edition/installation.html">ESbox installation guide</a>.
 You may install either a fully packaged product or update an existing Eclipse 3.4.2 installation over the Internet.
 </p>
 </div>
@@ -337,7 +337,7 @@
 &gt; Build Machines </em> is the
 gateway to configuring this facility. </p>
 <p>Please see the 
-<a href="http://esbox.garage.maemo.org/beta1/virtual_machines.html">ESbox virtual machine support documentation</a>
+<a href="http://esbox.garage.maemo.org/2nd_edition/virtual_machines.html">ESbox virtual machine support documentation</a>
 for all the details. 
 <hr>
 <div id="new-scratchbox-sdk" dir="LTR"><a
@@ -442,7 +442,7 @@
 images or available in the <em>host-pc-connectivity</em> package.)</p>
 <p><b>All the details
 </b>are on the <a
-	href="http://pc-connectivity.garage.maemo.org/beta1/">PC connectivity garage project page</a>.</p>
+	href="http://pc-connectivity.garage.maemo.org/">PC connectivity garage project page</a>.</p>
 </div>
 <hr>
 <div id="configure-for-esbox" dir="LTR"><a

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/tasks/DebianPackage.html
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.help/html/tasks/DebianPackage.html	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.help/html/tasks/DebianPackage.html	2009-07-08 11:19:18 UTC (rev 1854)
@@ -43,7 +43,7 @@
 	<li>Select a project, right-click and select <strong>Debian&nbsp;Package</strong>
 	in the popup menu.</li>
 
-	<li>Click on <strong>Create&nbsp;Debian&nbsp;Package</strong>.
+	<li>Click on <strong>Build&nbsp;Debian&nbsp;Package</strong>.
 	
 	<p>
 <img src="../images/menu-debian-package.png" alt="Debian Package menu" />	</p>
@@ -52,6 +52,11 @@
 	<li>The package will be built, with results reported to the Console view. If the package is built successfully content of the Debian package will be shown.
 	<p/>
 	<img src="../images/debian/dialog-debian-content-reader.png" alt="Debian Package Reader" />	<br clear="left"/>
+	</li>	
+	<li>Finally, the user can choose to install the generated Debian package.
+	<p>
+	<img src="../images/debian/dialog-debian-confirm-install.png" alt="Install Debian Package?" />	<br clear="left"/>
+	<p/>	
 	</li>
 </ol>
 
@@ -77,8 +82,7 @@
 </li>
   <li>Click on <strong>Browse...</strong> to select a package if you haven't deployed it before, or type in the path to the package 
   if you're planning to build it for the first time in this step.</li>
-  <li>Check <strong>Create Debian Package</strong> to build the package.</li>
-  <li>Check <strong>Install package on device</strong> to install the package.  When enabled, the <strong>Device Address</strong> field is enabled.</li> 
+   <li>Check <strong>Install package on device</strong> to install the package.  When enabled, the <strong>Device Address</strong> field is enabled.</li> 
 
   <li>Click <strong>Finish</strong>.</li>
   <li>You may need to provide the root password to perform package management on the device:

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/tasks/InstallingPCConnectivity.html
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.help/html/tasks/InstallingPCConnectivity.html	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.help/html/tasks/InstallingPCConnectivity.html	2009-07-08 11:19:18 UTC (rev 1854)
@@ -22,7 +22,7 @@
 applet provided by the PC Connectivity project. 
 </p>
 <p>
-See <a href="http://pc-connectivity.garage.maemo.org/beta1">the PC Connectivity home page</a>
+See <a href="http://pc-connectivity.garage.maemo.org/">the PC Connectivity home page</a>
 for full instructions.
 </p>
 </body>

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/tasks/ProfilingMaemoApplications.html
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.help/html/tasks/ProfilingMaemoApplications.html	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.help/html/tasks/ProfilingMaemoApplications.html	2009-07-08 11:19:18 UTC (rev 1854)
@@ -1,71 +1,102 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <html lang="en">
 <head>
-	<meta name="copyright" content="Copyright (c) INdT 2007-2009, (c) Nokia 2008-2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-	<meta http-equiv="Content-Language" content="en-us">
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-	<title>Profiling C/C++ application</title>
-	<link rel="stylesheet" type="text/css" href="../help.css">
-    <style type="text/css">
-<!--
-.style1 {font-weight: bold}
--->
-    </style>
+ <meta name="copyright"
+       content="Copyright (c) INdT 2007-2009, (c) Nokia 2008-2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page.">
+ <meta http-equiv="Content-Language" content="en-us">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>Profiling C/C++ application</title>
+ <link rel="stylesheet" type="text/css" href="../help.css">
+ <style type="text/css">
+
+ <!--
+ .bold {
+   font-weight: bold;
+ }
+ 
+ img {
+ 	margin-top: 10px;
+   	margin-bottom: 25px;
+ }
+ 
+ -->
+ 
+ </style>
 </head>
 
 <body>
-<h2 class="style1">Profiling Maemo Applications</h2>
+ <h2 class="bold">Profiling Maemo Applications</h2>
 
-<p><span style="font-weight: bold;"></span>Profiling is one of the most
-important techniques available for programmers to discover problems in applications. By profiling an application,
-it becomes immediately apparent where the overwhelming memory and CPU
-burdens exist, and allows you to quickly squash them. ESbox provides
-support for <a href="http://www.valgrind.org/">Valgrind</a> memory profiler and <a href="http://oprofile.sourceforge.net/news/">OProfile</a> system-wide profiler for both C/C++ and Python Projects.</p>
+ <p>
+  <span style="font-weight: bold;"></span>
+  Profiling is one of the most important techniques available for programmers to discover problems
+  in applications. By profiling an application, it becomes immediately apparent where the 
+  overwhelming memory and CPU burdens exist, and allows you to quickly squash them. ESbox provides
+  support for <a href="http://www.valgrind.org/">Valgrind</a> memory profiler and 
+  <a href="http://oprofile.sourceforge.net/news/">OProfile</a> system-wide profiler for both C/C++
+  and Python Projects.
+ </p>
 
-<h3>Using Valgrind</h3>
-<p>Valgrind is a framework to build dynamic analyses tools. You can
-use Valgrind to profile your applications. It detects memory management
-(memory leaks, use of uninitialised memory, etc.) and thread bugs.
-However, Valgrind is only supported on X86/Linux, AMD64/Linux,
-PPC32/Linux and PPC64/Linux. To run Valgrind, you have to
-select an X86 Scratchbox target with the tool properly installed.</p>
+ <h3>Using Valgrind</h3>
+ <p>
+  Valgrind is a framework to build dynamic analyses tools. You can use Valgrind to profile your
+  applications. It detects memory management (memory leaks, use of uninitialised memory, etc.) and
+  thread bugs. However, Valgrind is only supported on X86/Linux, AMD64/Linux, PPC32/Linux and 
+  PPC64/Linux. To run Valgrind, you have to select an X86 Scratchbox target with the tool 
+  properly installed.
+ </p>
 
-<p>To run Valgrind, right-click on the application (binary for C/C++
-projects or the Python script for Python projects) and select <strong>Run As &gt; Local Valgrind Memory Profiler</strong>.<br>
-<br>
-<img src="../images/valgrind.png" width="509" height="428"><br>
+ <p>
+  To run Valgrind, right-click on the application (binary for C/C++ projects or the Python script
+  for Python projects) and select <strong>Run As &gt; Local Valgrind Memory Profiler</strong>.
+  
+  <img src="../images/profiling/valgrind-menu.png">
+ </p>
+ 
+ <p>
+  The Valgrind tool runs your application on the X86 target and the
+  result is shown in the Valgrind view. All problems found by Valgrind are
+  shown as a tree: problem as parent nodes and details of the problems as
+  children nodes.
+ </p>
 
+ <p>
+  <img src="../images/profiling/valgrind-view.jpg">
+ </p>
+ 
+ <h3>Using OProfile</h3>
+  <p>
+   OProfile is a system-wide profiler for Linux systems and can profile all running code.
+   It consists of a kernel driver and a daemon for collecting sample data, and several
+   post-profiling tools for turning data into information. OProfile is supported for ARM/Linux. It's
+   executed on the Internet Tablet in order to obtain a high quality of profiling information. ESbox
+   uses ssh to remotely execute OProfile and collect profiling information. So, it's necessary to 
+   properly install the application (OProfile installation information can be found 
+   <a href="http://maemo.org/development/tools/doc/chinook/oprofile/">here</a>.).
+  </p>
 
-<p>The Valgrind tool runs your application on the X86 target and the result is
-  shown in the Valgrind view. All problems found by Valgrind are shown as a
-  tree: problem as parent nodes and details of the problems as children
-  nodes.</p>
-<p><img src="../images/profiling1.jpg"><br>
-</p>
-<p>&nbsp;</p>
-<h3>Using OProfile</h3>
-<p>OProfile is a&nbsp;system-wide profiler for Linux systems and
-can profile all running code.&nbsp;It consists of a kernel driver and a daemon for collecting sample data,
-and several post-profiling tools for turning data into information. OProfile is
-supported for ARM/Linux. It's executed on the Internet Tablet in order to
-obtain a high quality of profiling information. ESbox uses ssh to
-remotely execute OProfile and collect profiling information. So, it's
-necessary to properly install the application (OProfile installation 
-information can be found <a href="http://maemo.org/development/tools/doc/chinook/oprofile/">here</a>. ).</p>
+ <p>
+  To run OProfile, in the Project View right-click on the project or application (binary for C/C++ 
+  projects or the Python script for Python projects) and select <strong>Profile As &gt; Remote 
+  OProfile Profiler</strong>. An OProfile launch configuration will be automatically created for
+  you and will be launched.
+ </p>
+ 
+ <p>
+  <img src="../images/profiling/oprofile-menu.png">  
+ </p>
+ 
+ <p>
+  After OProfile starts, ESbox launches your application on the device. You can control OProfile from
+  designated OProfile view. Controls (Start / Stop, Gather and Clear all) are located on upper-right
+  corner of the view. When the OProfile is stopped the profiling result will be shown in the OProfile View.
+ </p>
 
-<p>To run OProfile, in the Project View right-click on the project or application 
-(binary for C/C++ projects or the Python script for Python projects) and select 
-<strong>Run As &gt; OProfile Profiler</strong>. An OProfile launch configuration will be
-automatically created for you and will be launched. If you want to create or edit a launch
-configuration for Oprofile yourself, please see 
-<a href="CreateOprofileconfig.html">Creating a OProfile Run Launch Configuration</a>.</p>
+ <p>
+  <img src="../images/profiling/oprofile-view.png">
+ </p>
 
-<p>After OProfile starts, ESbox launches your application on the device.
-  Then a dialog will pop up letting you decide when to stop profiling data collecting. 
-  After you click OK on the dialog, OProfile data collecting will
-  stop and the profiling result will be shown in the OProfile View.</p>
-<br>
-<img src="../images/profiling4.jpg" width="1024" height="783">
-<br>
 </body>
 </html>
+
+

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/tasks/SettingPreferences.html
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.help/html/tasks/SettingPreferences.html	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.help/html/tasks/SettingPreferences.html	2009-07-08 11:19:18 UTC (rev 1854)
@@ -60,9 +60,9 @@
 <h2><a name="x_server"></a>X Server</h2>
 <p>The X Server page contains commands for starting the X Server.</p>
 <p>The server is launched on the host machine.</p>
-<p><b>NOTE:</b> The variable <tt>${PLATFORM_PARAMETERS}</tt> automatically takes specific values for X extension and resolution <br>
-			  parameters (e.g.: <tt>-screen 800x480x16</tt>, <tt>-extension Composite</tt>) depending on target platform. But you can<br> 
-			  have complete control if you wish, by removing the variable and manually defining the parameters values. </p>
+<p><b>NOTE:</b> The variables <tt>${RESOLUTION}</tt> and <tt>${PLATFORM_PARAMETERS}</tt> automatically take specific values for X extension and resolution <br>
+			  parameters (e.g.: <tt>800x480x16</tt>, <tt>-extension Composite</tt>) depending on target platform. But you can have complete control<br> 
+			  if you wish, by removing the variable and manually defining the parameters values.</p>
 <p><img src="../images/pref_images/prefs-esbox-xserver.png" alt="xserver"></p>
 <p>&nbsp;</p>
 
@@ -75,6 +75,17 @@
 with commands invoked by various wizards and build commands.</p>
 <p>The <em>Path for command log</em> specifies a file to which entries are appended
 when <em>Log commands</em> is enabled.</p>
+<p>The <em>Suppress warning when build platform and device platform do not match</em>
+setting disables notifications during a remote launch of a program when it was
+built or developed against a platform which is newer or older than that of the device.
+</p>
+<p>
+Such mismatches may result in programs that fail to launch, due to
+illegal instructions used in newer platforms, or due to libraries which are
+not available in the device.
+</p>
+<p>If you select the checkbox labeled "Do not tell me again", this preference is set.
+</p>
 <p></p>
 <img src="../images/pref_images/prefs-maemo.png" alt="maemo">
 <p/>

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/tasks/UsingFlasherWizard.html
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.help/html/tasks/UsingFlasherWizard.html	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.help/html/tasks/UsingFlasherWizard.html	2009-07-08 11:19:18 UTC (rev 1854)
@@ -1,240 +1,306 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <html lang="en">
 <head>
-	<meta name="copyright" content="Copyright (c) INdT 2007-2009, (c) Nokia 2008-2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
-	<meta http-equiv="Content-Language" content="en-us">
-	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-	<title>Using the Flasher Wizard</title>
-	<link rel="stylesheet" type="text/css" href="../help.css">
+  <meta name="copyright" content="Copyright (c) INdT 2007-2009, (c) Nokia 2008-2009. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >
+  <meta http-equiv="Content-Language" content="en-us">
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+  <title>Using the Flasher Wizard</title>
+  <link rel="stylesheet" type="text/css" href="../help.css">
+  
+  <style type="text/css">
+    img {
+      margin: 0.7em;
+    }
+    
+    img.inline {
+      margin: 0em;
+    }
+    
+    h2, h3 {
+      margin-bottom: 1.5em;
+    }
+  </style>
+  
 </head>
 
 <body>
-<h2>Using the Flasher Wizard</h2>
+  <h2>Using the Flasher Wizard</h2>
+  
+  <p>
+    The Maemo IDE Common Architecture includes a wizard which you can use to flash updated 
+    kernels and rootstraps onto your Nokia Internet Tablet.  You should use this to
+    ensure your tablet software is up-to-date before starting serious development,
+    as bugs may have fixed and features added. 
+  </p>
+  <p>
+    The wizard uses the same flasher tools and process as you may have done manually
+    from various <b>maemo.org</b> tutorials, but it provides a friendlier and more
+    easily repeatable UI.
+  </p>
+  <p>
+    All you need to do to prepare is to back up any personal settings and
+    files on your device which may be overwritten by the new image. 
+  </p>
+  <p>
+    The wizard is accessible from <strong>File &gt; New &gt; Other &gt; Maemo Installers 
+    &gt; Flash Images to Device</strong> or from the
+    <img class="inline" src="../images/flash/flasher-icon.png" /> icon on the toolbar.
+  </p>
+  
+  <ul>
+    <li>
+      <p>
+        On the first page, prepare for the flashing session:
+      </p>
+      
+      <img src="../images/flash/wiz-flash-1.png" />
+      
+      <p>
+        Please read the instructions carefully.  Flashing the device will usually overwrite the
+        filesystem, including your home directory.  Back up anything important first.
+      </p>
+      
+      <p>
+        Note that the flasher binary is currently only available on a Linux host.
+        If you are using Eclipse outside Linux, the current Build Machine will run the
+        flasher, and the USB connection to the device will need to be "attached" 
+        to the virtual machine.  (The device will show up as "Nokia N8x0 Update Mode".)
+      </p>
+      
+      <p>
+        <b>NOTE:</b> QEMU 0.9.x does not (currently) support USB at all, so you cannot use
+        it with the flasher wizard.  Also, VirtualBox seems to have problems connecting
+        to the Internet Tablet in the Update Mode.  Your best bet is running the flasher
+        natively from Linux or using VMware. 
+      </p>
+  
+    </li>
+    
+    <li>
+      <p>
+        Click <strong>Next</strong>. Select the way you will configure the flashing session.
+      <p/>
+      
+      <img src="../images/flash/wiz-flash-1b.png" />
+      
+      <ul>
+        <li>
+          In the Basic mode, the wizard will find the newest rootstrap image
+          for the device for you.
+        </li>
 
-<p>
-The Maemo IDE Common Architecture includes a wizard which you can use to flash updated 
-kernels and rootstraps onto your Nokia Internet Tablet.  You should use this to
-ensure your tablet software is up-to-date before starting serious development,
-as bugs may have fixed and features added. 
-</p>
-<p>
-The wizard uses the same flasher tools and process as you may have done manually
-from various <b>maemo.org</b> tutorials, but it provides a friendlier and more
-easily repeatable UI.
-</p>
-<p>
-All you need to do to prepare is to back up any personal settings and
-files on your device which may be overwritten by the new image. 
-</p>
-<p>
-The wizard is accessible from <strong>File &gt; New &gt; Other &gt; Maemo Installers &gt; Flash Images to Device</strong>
-or from the <img src="../images/flash/flasher-icon.png"> icon on the toolbar.
-</p>
+        <li>
+          In the Advanced mode, you can configure a flashing session, fully controlling
+          which images to flash and what flasher options to use.
+          <p>
+            <em>
+              In this release of the Maemo IDE Common Architecture, this mode allows
+              you to run a custom flasher binary, including one on a non-Linux host.
+            </em>
+          </p>
+        </li>
 
-<ul>
-<li>
-On the first page, prepare for the flashing session:
-<p/>
-<img src="../images/flash/wiz-flash-1.png"/>
-<p>
-Please read the instructions carefully.  Flashing the device will usually overwrite the
-filesystem, including your home directory.  Back up anything important first.
-</p>
-<p>
-Note that the flasher binary is currently only available on a Linux host.
-If you are using Eclipse outside Linux, the current Build Machine will run the
-flasher, and the USB connection to the device will need to be "attached" 
-to the virtual machine.  (The device will show up as "Nokia N8x0 Update Mode".)
-</p>
-<p><b>NOTE:</b> QEMU 0.9.x does not (currently) support USB at all, so you cannot use
-it with the flasher wizard.  Also, VirtualBox seems to have problems connecting
-to the Internet Tablet in the Update Mode.  Your best bet is running the flasher
-natively from Linux or using VMware. 
-</p>
-
-</li>
-
-<li>
-Click <strong>Next</strong>.
-Select the way you will configure the flashing session.
-<p/>  
-<img src="../images/flash/wiz-flash-1b.png"/>
-<ul>
-<li>In the Basic mode, the wizard will find the newest rootstrap image
-for the device for you.
-</li>
-<li>In the Advanced mode, you can configure a flashing session, fully controlling
-which images to flash and what flasher options to use.
-<p><em>In this release of the Maemo IDE Common Architecture, this mode allows
-you to run a custom
-flasher binary, including one on a non-Linux host.</em></p> 
-</li>
-<li>The Predefined tasks lists a convenient task for installing a kernel
-image for Diablo which fixes a bug with USB networking with Windows.  (Without
-the fix, Windows will not be able to properly configure the RNDIS driver for
-the Nokia Internet Tablet.)
-<p>See <a href="http://pc-connectivity.garage.maemo.org/beta1/documentation_usbnet.html#Setup_USB_Network_on_Windows">
-the PC Connectivity page</a> for information about setting up Windows networking after using the
-flasher wizard.</p>
-<p>See <a href="https://bugs.maemo.org/show_bug.cgi?id=3243">the original bug report</a> as well.
-</p> 
-
-<ul>
-	<li>Basic Mode
-	<p>If you select the Basic mode, you will see the Product ID page next.
-	</li>
-	<li>Advanced Mode
-	<p>If you select the Advanced mode, you will see the Session configuration page next.
-	See below.
-	</p>
-	</li>
-	<li>Predefined Tasks &gt; Update Diablo Kernel
-	<p>If you select this task, a predefined session will be used, and you
-	will see the Product ID page next.
-	</p>
-	</li> 
-</ul>
-</li>
-</ul>
-</li>
-
-<li>
-Click <strong>Next</strong>.
-On the next page, provide the Product ID (WLAN MAC ID).  This will be
-remembered between sessions.
-<p/>
-<img src="../images/flash/wiz-flash-2.png"/> 
-</li>
-
-<li>
-Click <strong>Next</strong>.
-Accept the license for using the flasher and device binaries.
-<p/>
-<img src="../images/flash/wiz-flash-3.png"/> 
-</li>
-
-<li>
-Click <strong>Next</strong>.
-The wizard will now download the flasher binary (once).
-<p/>
-<img src="../images/flash/dialog-flash-get-flasher.png"/>
-</li>
-
-<li>
-If you have not already done so, ensure the device is connected via USB,
-"attached" to the virtual machine if you use one, and ready to go.
-The <strong>Retry</strong> button will let you start over if you need
-to restart the device or adjust settings.
-<p/>
-<img src="../images/flash/wiz-flash-4.png"/>
-<p/>
-<img src="../images/flash/wiz-flash-4b.png"/>
-</li>
-
-<li>
-Select <strong>Next</strong>.  You will see a summary of the changes
-that will be made to the software on the device.
-
-<p/>
-<img src="../images/flash/wiz-flash-5.png"/>
-<p>
-By default,
-the device will be configured for R&amp;D mode and rebooted once the flashing
-is complete.  You can configure this behavior in an Advanced session.
-</p>
-</li>
-
-<li>
-Once you hit <strong>Finish</strong>,
-the wizard will download the image(s) and invoke the flasher. 
- 
-<p/>
-<img src="../images/flash/wiz-flash-6.png"/>
-<p/>
-<img src="../images/flash/wiz-flash-7.png"/>
-<p/>
-<img src="../images/flash/wiz-flash-8.png"/>
-</li>
-</ul>
-
-<h3>Session Configurations</h3>
-
-<p>If you use the <strong>Advanced</strong> configuration mode, you may define
-a set of <strong>sessions</strong> for particular images or options with which
-you flash your device.
-</p>
-<img src="../images/flash/wiz-flash-sessions.png"/>
-
-<ul>
-<li>
-On the <strong>OS Images</strong> tab, select the kinds of images to 
-flash.
-<p/>
-<img src="../images/flash/wiz-flash-session-osimage.png"/>
-<ul>
-  <li>
-  <strong>FIASCO</strong> images are combined images which update all the
-  standard boot files, kernel, and filesystems contributing to a platform
-  release.  This is the standard
-  "*.bin" format distributed by Nokia.
-  </li>
-  <li><strong>kernel</strong> images are the Linux kernel (in zImage format). 
-  </li> 
-  <li><strong>initfs</strong>, <strong>rootfs</strong>, <strong>NOLO</strong>,
-   <strong>X-Loader</strong>, <strong>NOLO Secondary</strong>, and <strong>2nd</strong>
-   images control more advanced portions of the filesystem.  
-  </li> 
-</ul>
-</li>
-<li>
-On the <strong>Modes</strong> tab, select how the flashing will be performed.
-<p/>
-<img src="../images/flash/wiz-flash-session-modes.png">
-<ul>
-	<li>
-	In <strong>Components which will be flashed</strong>, you can control whether
-	selected portions of a FIASCO image will be flashed, or the whole image.
-	</li>
-	<li>
-	<strong>Reboot after flashing</strong> controls whether the device is automatically
-	rebooted once flashing is finished.
-	</li>
-	<li>
-	<strong>Enable R&amp;D mode</strong> controls whether the device will allow you
-	to log in as <tt>root</tt> using <tt>sudo gainroot</tt> and have more
-	control over the package manager in the <strong>Application Manager</strong>.  
-	If not, you will need third-party tools to enable root access.
-	<p>
-	<b>NOTE:</b> Mica generally requires R&amp;D mode to be set, since several
-	operations like Validating Packages and Installing Debian Packages requires
-	root access.
-	</li> 
-</ul>	
-</li>
-
-<li>
-On the <strong>Options</strong> tab, control how the flasher is launched.
-<p/>
-<img src="../images/flash/wiz-flash-session-options.png">
-<ul>
-	<li>
-	The <strong>Flasher tool location</strong> will override the location
-	of the flasher binary.  If not set, the flasher will be downloaded from
-	the Internet.
-	</li>
-	<li>
-	If <strong>Use from host machine</strong> is set, the flasher binary
-	may be used on Windows or Mac OS X with an appropriate port of the flasher.
-	</li>
-	<li>
-	<strong>Additional command line arguments</strong> will be passed on the 
-	flasher command line, in addition to those derived from settings on other
-	tabs.  
-	</li> 
-</ul>	
-</li>
-</ul>
-
-<p>
+        <li>
+          <p>
+            The Predefined tasks lists a convenient task for installing a kernel
+            image for Diablo which fixes a bug with USB networking with Windows.  (Without
+            the fix, Windows will not be able to properly configure the RNDIS driver for
+            the Nokia Internet Tablet.)
+          </p>
+          <p>
+            See
+            <a href="http://pc-connectivity.garage.maemo.org/beta1/documentation_usbnet.html#Setup_USB_Network_on_Windows">
+              the PC Connectivity page
+            </a>
+            for information about setting up Windows networking after using the
+            flasher wizard.
+          </p>
+          <p>
+            See <a href="https://bugs.maemo.org/show_bug.cgi?id=3243">the original bug report</a> as well.
+          </p> 
+  
+          <ul>  
+            <li>
+              Basic Mode
+              <p>
+                If you select the Basic mode, you will see the Product ID page next.
+              </p>
+            </li>
+          
+            <li>
+              Advanced Mode
+              <p>
+                If you select the Advanced mode, you will see the Session configuration page next.
+                See below.
+              </p>
+            </li>
+            <li>
+              Predefined Tasks &gt; Update Diablo Kernel
+              <p>
+                If you select this task, a predefined session will be used, and you
+                will see the Product ID page next.
+              </p>
+            </li> 
+          </ul>
+        </li>
+      </ul>
+    </li>
+    
+    <li>
+      <p>
+        Click <strong>Next</strong>. On the next page, provide the Product ID 
+        (WLAN MAC ID).  This will be remembered between sessions.
+      <p/>
+      <img src="../images/flash/wiz-flash-2.png"/> 
+    </li>
+    
+    <li>
+      <p>
+        Click <strong>Next</strong>. Accept the license for using the flasher
+        and device binaries.
+      <p/>
+      <img src="../images/flash/wiz-flash-3.png" /> 
+    </li>
+    
+    <li>
+      <p>
+        Click <strong>Next</strong>. The wizard will now download the flasher binary (once).
+      <p/>
+      <img src="../images/flash/dialog-flash-get-flasher.png" />
+    </li>
+    
+    <li>
+      <p>
+        If you have not already done so, ensure the device is connected via USB,
+        "attached" to the virtual machine if you use one, and ready to go.
+        The <strong>Retry</strong> button will let you start over if you need
+        to restart the device or adjust settings.
+      <p/>
+      
+      <img src="../images/flash/wiz-flash-4.png"/>
+      <br />
+      <img src="../images/flash/wiz-flash-4b.png"/>
+    </li>
+    
+    <li>
+      <p>
+        Select <strong>Next</strong>.  You will see a summary of the changes
+        that will be made to the software on the device.
+      <p/>
+      <img src="../images/flash/wiz-flash-5.png" />
+      <p>
+        By default,
+        the device will be configured for R&amp;D mode and rebooted once the flashing
+        is complete.  You can configure this behavior in an Advanced session.
+      </p>
+    </li>
+    
+    <li>
+      <p>
+        Once you hit <strong>F
+    model = new FlasherToolModel();inish</strong>, the wizard will download the
+        image(s) and invoke the flasher. 
+      <p/>
+      
+      <img src="../images/flash/wiz-flash-6.png"/>
+      <img src="../images/flash/wiz-flash-7.png"/>
+      <img src="../images/flash/wiz-flash-8.png"/>
+    </li>
+  </ul>
+  
+  <h3>Session Configurations</h3>
+  
+  <p>
+    If you use the <strong>Advanced</strong> configuration mode, you may define
+    a set of <strong>sessions</strong> for particular images or options with which
+    you flash your device.
+  </p>
+  
+  <img src="../images/flash/wiz-flash-sessions.png" />
+  
+  <ul>
+    <li>
+      <p>
+        On the <strong>OS Images</strong> tab, select the kinds of images to flash.
+      <p/>
+      <img src="../images/flash/wiz-flash-session-osimage.png" />
+      
+      <ul>
+        <li>
+          <strong>FIASCO</strong> images are combined images which update all the
+          standard boot files, kernel, and filesystems contributing to a platform
+          release.  This is the standard "*.bin" format distributed by Nokia.
+        </li>
+        
+        <li>
+          <strong>kernel</strong> images are the Linux kernel (in zImage format). 
+        </li>
+        <li>
+          <strong>initfs</strong>, <strong>rootfs</strong>, <strong>NOLO</strong>,
+          <strong>X-Loader</strong>, <strong>NOLO Secondary</strong>, and <strong>2nd</strong>
+          images control more advanced portions of the filesystem.  
+        </li>
+      </ul>
+    </li>
+    
+    <li>
+      <p>
+        On the <strong>Modes</strong> tab, select how the flashing will be performed.
+      <p/>
+      <img src="../images/flash/wiz-flash-session-modes.png" />
+      
+      <ul>
+        <li>
+          In <strong>Components which will be flashed</strong>, you can control whether
+          selected portions of a FIASCO image will be flashed, or the whole image.
+        </li>
+        
+        <li>
+          <strong>Reboot after flashing</strong> controls whether the device is automatically
+          rebooted once flashing is finished.
+        </li>
+        
+        <li>
+          <strong>Enable R&amp;D mode</strong> controls whether the device will allow you
+          to log in as <tt>root</tt> using <tt>sudo gainroot</tt> and have more
+          control over the package manager in the <strong>Application Manager</strong>.  
+          If not, you will need third-party tools to enable root access.
+          <p>
+            <b>NOTE:</b> Mica generally requires R&amp;D mode to be set, since several
+            operations like Validating Packages and Installing Debian Packages requires
+            root access.
+          </p>
+        </li> 
+      </ul>  
+    </li>
+  
+    <li>
+      <p>
+        On the <strong>Options</strong> tab, control how the flasher is launched.
+      <p/>
+      <img src="../images/flash/wiz-flash-session-options.png" />
+      <ul>
+        <li>
+          The <strong>Flasher tool location</strong> will override the location
+          of the flasher binary.  If not set, the flasher will be downloaded from
+          the Internet.
+        </li>
+        
+        <li>
+          If <strong>Use from host machine</strong> is set, the flasher binary
+          may be used on Windows or Mac OS X with an appropriate port of the flasher.
+        </li>
+        
+        <li>
+          <strong>Additional command line arguments</strong> will be passed on the 
+          flasher command line, in addition to those derived from settings on other
+          tabs.  
+        </li> 
+      </ul>
+    </li>
+  </ul>
+  
+  <br />
+  <br />
 </body>
 </html>

Modified: branches/work_new_pydev/org.maemo.esbox.help/html/tasks/UsingVirtualMachines.html
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.help/html/tasks/UsingVirtualMachines.html	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.help/html/tasks/UsingVirtualMachines.html	2009-07-08 11:19:18 UTC (rev 1854)
@@ -202,8 +202,12 @@
 </li>
 <li>For VirtualBox, this must match 
 the configuration established for a machine via VBoxManage before the machine is launched.  (See
-<a href="http://maemovmware.garage.maemo.org/beta1/vbox_installers.html">the maemovmware VirtualBox configuration utility</a>, the 
-<a href="http://maemovmware.garage.maemo.org/beta1/create_vbox_machine.html#portforwarding">the maemovmware port forwarding instructions</a>, or  
+<a href="http://maemovmware.garage.maemo.org/beta1/vbox_installers.html" target="_blank">the maemovmware VirtualBox configuration utility</a>
+(or <a href="http://maemovmware.garage.maemo.org/2nd_edition/vbox_installers.html" target="_blank">here</a> if missing), 
+the 
+<a href="http://maemovmware.garage.maemo.org/beta1/create_vbox_machine.html#portforwarding" target="_blank">the maemovmware port forwarding instructions</a>
+(or <a href="http://maemovmware.garage.maemo.org/2nd_edition/create_vbox_machine.html#portforwarding" target="_blank">here</a> if missing),
+or  
 the Network Address Translation chapter of the VirtualBox manual.)  
 </li>
 <li>For VMware, use the Virtual Network Editor&nbsp;&gt;&nbsp;NAT&gt;Edit&gt;Port&nbsp;Forwarding... dialog to

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.core/conf/maemo_prefs.xml
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.core/conf/maemo_prefs.xml	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.core/conf/maemo_prefs.xml	2009-07-08 11:19:18 UTC (rev 1854)
@@ -6,9 +6,9 @@
 	see the org.maemo.mica.common.core.preference_set_provider extension</comment>
 	
 	<!-- others commands -->	
-	<entry key="DISPLAY_X_COMMAND_UNIX">Xephyr ${DISPLAY} -host-cursor -dpi 96 -ac ${PLATFORM_PARAMETERS}</entry>
-	<entry key="DISPLAY_X_COMMAND_OSX">Xephyr ${DISPLAY} -host-cursor -dpi 96 -ac ${PLATFORM_PARAMETERS}</entry>
-	<entry key="DISPLAY_X_COMMAND_WIN32">c:/cygwin/usr/X11R6/bin/Xwin ${DISPLAY} -lesspointer -swcursor -dpi 96 -ac ${PLATFORM_PARAMETERS}</entry>
+	<entry key="DISPLAY_X_COMMAND_UNIX">Xephyr ${DISPLAY} -host-cursor -dpi 96 -ac -screen ${RESOLUTION} ${PLATFORM_PARAMETERS}</entry>
+	<entry key="DISPLAY_X_COMMAND_OSX">Xephyr ${DISPLAY} -host-cursor -dpi 96 -ac -screen ${RESOLUTION} ${PLATFORM_PARAMETERS}</entry>
+	<entry key="DISPLAY_X_COMMAND_WIN32">c:/cygwin/usr/X11R6/bin/Xwin ${DISPLAY} -lesspointer -swcursor -dpi 96 -ac -screen 0 ${RESOLUTION} ${PLATFORM_PARAMETERS}</entry>
 	<!-- this is initialized dynamically <entry key="DISPLAY_X_COMMAND"></entry> -->
 	
 	<!-- others commands -->	

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/MaemoPreferenceMigrator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/MaemoPreferenceMigrator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/MaemoPreferenceMigrator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,13 +11,12 @@
 
 package org.maemo.esbox.internal.api.maemosdk.core;
 
-import org.eclipse.jface.preference.IPreferenceStore;
+import java.util.Properties;
+
 import org.maemo.esbox.maemosdk.core.MaemoPreferenceConstants;
 import org.maemo.mica.common.core.preferences.CorePreferenceManager;
-import org.maemo.mica.common.core.preferences.IPreferenceMigrator;
+import org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter;
 
-import java.util.Properties;
-
 /**
  * To migrate preferences, we pick an
  * OS-specific initial value for the X server related commands.
@@ -25,7 +24,7 @@
  * @author eswartz
  * 
  */
-public class MaemoPreferenceMigrator implements IPreferenceMigrator {
+public class MaemoPreferenceMigrator extends PreferenceMigratorAdapter {
 
 	public void adjustDefaultSettings(Properties newPropertyDefaults) {
 		// adjust any environment-dependent defaults
@@ -36,11 +35,4 @@
 				MaemoPreferenceConstants.X_PATH);
 		
 	}
-
-	public void convertExistingPreferences(IPreferenceStore preferences,
-			int oldMajor, Properties existingSettings,
-			Properties newPropertyDefaults) {
-		
-	}
-
 }

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/AfSbInitMaemoLauncherAdapter.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/AfSbInitMaemoLauncherAdapter.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/AfSbInitMaemoLauncherAdapter.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -21,11 +21,10 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.console.MessageConsole;
-import org.maemo.esbox.internal.maemosdk.core.Activator;
 import org.maemo.esbox.maemosdk.core.MaemoEnvironmentUtils;
 import org.maemo.esbox.maemosdk.core.MaemoPreferenceConstants;
-import org.maemo.mica.common.core.ErrorLogger;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.console.ConsoleStreamMonitor;
 import org.maemo.mica.common.core.console.CoreConsoleManager;
@@ -37,7 +36,7 @@
 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.ProcessLauncherParameters;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
 import org.maemo.mica.common.core.process.StreamLineMonitorAdapter;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
@@ -174,48 +173,63 @@
 					.getProcessLauncherFactory();
 
 			IEnvironmentModifierBlock envBlock = processLauncherFactory
-					.defaultEnvironmentModifierBlock();
+					.getDefaultEnvironmentModifierBlock();
 			MaemoEnvironmentUtils.defineEmulatorXDisplayVariable(
 					sdkTarget.getMachine(), envBlock);
 
-			IProcessLauncher processLauncher = ProcessLauncherCreator
-					.createProcessLauncher(processLauncherFactory, null,
-							CommandLineArguments.createFromCommandLine(maemoCommand),
-							envBlock);
+			IProcessLauncher processLauncher = processLauncherFactory.createProcessLauncher(
+					ProcessLauncherParameters.create(
+							CommandLineArguments.createFromCommandLine(maemoCommand), 
+							envBlock));
 
 			// spit the consumed output to the console
-			MessageConsole console = CoreConsoleManager.getInstance().getConsole(true,
-					sdkTarget, MessageFormat.format(
-							"Running Maemo command ({0})",
+			final MessageConsole console = CoreConsoleManager.getInstance().getConsole(
+					true, sdkTarget, MessageFormat.format(
+							"Running Maemo AF command ({0})",
 							params.get(0)));
 
-			IStreamMonitor consoleMonitor = new ConsoleStreamMonitor(console);
+			// be sure to show the console when we're done
+			ConsoleStreamMonitor consoleMonitor = new ConsoleStreamMonitor(console) {
+				/* (non-Javadoc)
+				 * @see org.maemo.mica.common.core.console.ConsoleStreamMonitor#processExited(int)
+				 */
+				@Override
+				public void processExited(int exitCode) {
+					Display.getDefault().asyncExec(new Runnable() {
+						public void run() {
+							console.activate();
+						}
+					});
+				}
+			};
+			
+			processLauncher.queueStreamMonitor(consoleMonitor);
+
+			// And watch for errors and termination
 			IStreamMonitor errorMonitor = new StreamLineMonitorAdapter() {
 				/* (non-Javadoc)
 				 * @see org.maemo.mica.common.core.process.IStreamLineMonitor#handleLine(java.lang.String, boolean)
 				 */
 				public void handleLine(String text, boolean errorStream)
 						throws InterruptedException {
-					if (text.contains("ERROR:")) {
-						ErrorLogger errorLogger = Activator.getErrorLogger();
-						errorLogger.logAndShowError("Error launching maemo",
-								new MicaException(text));
-						throw new InterruptedException();
-					}
-					else if (text.contains("Starting Hildon Desktop") || text.contains("hildon-desktop")) {
+					// REMOVED: error checking -- there are so many spurious
+					// errors that it's useless to report them
+					
+					if (text.contains("Starting") &&
+							(text.contains("Hildon Desktop") || text.contains("hildon-desktop"))) {
 						// we need to stop after this or else the launch
 						// just hangs forever (waiting for input?)... dunno why.
 						// This happened at least as far back as 2.0.0M1 but
 						// there was no Job tracking, so we didn't notice.
-						Job job = new Job("Finishing Maemo startup") {
+						Job job = new Job("Finishing Maemo AF startup") {
 
 							@Override
 							protected IStatus run(IProgressMonitor xmonitor) {
 								try {
-									Thread.sleep(5000);
+									Thread.sleep(30000);
 								} catch (InterruptedException e) {
 								}
-								monitor.setCanceled(true);
+								procMonitor.terminate();
 								return Status.OK_STATUS;
 							}
 							
@@ -228,7 +242,7 @@
 			};
 			
 			ProcessLauncherUtils.launchAndMonitorStandardStreams(processLauncher, 
-					new IStreamMonitor[] { consoleMonitor, errorMonitor },
+					new IStreamMonitor[] { errorMonitor },
 					monitor);
 		}
 		

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/MaemoScriptLauncher.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/MaemoScriptLauncher.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/MaemoScriptLauncher.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -20,6 +20,7 @@
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.core.runtime.jobs.Job;
 import org.maemo.esbox.internal.maemosdk.core.Activator;
 import org.maemo.mica.common.core.MicaException;
@@ -70,8 +71,11 @@
 		if (sdkTarget != null) {
 			IMaemoLauncherAdapter launcher = (IMaemoLauncherAdapter)sdkTarget.getAdapter(IMaemoLauncherAdapter.class);
 			
-			if (launcher != null && launcher.isMaemoRunning())
-				throw new MicaException("Maemo is still running.  Stop Maemo first.");
+			if (launcher != null && launcher.isMaemoRunning()) {
+				// usability
+				//throw new MicaException("Maemo Application Framework is still running.  Stop Maemo first.");
+				launcher.stopMaemo(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
+			}
 		}
 		XLauncher.getInstance().stopX(sdkTarget, monitor);
 	}
@@ -83,13 +87,13 @@
 			try {
 				return launcher.isMaemoRunning();
 			} catch (MicaException e) {
-				Activator.getErrorLogger().logError("Cannot test maemo status",
+				Activator.getErrorLogger().logError("Cannot test Maemo AF status",
 						e);
 				return false;
 			}
 		} else {
 			Activator.getErrorLogger().logError(
-					"I do not know how to test Maemo for " + sdkTarget.getDisplayName(), null);
+					"I do not know how to test Maemo AF for " + sdkTarget.getDisplayName(), null);
 			return false;
 		}
 	}
@@ -102,7 +106,7 @@
 		if (launcher != null) {
 			launcher.stopMaemo(monitor);
 		} else {
-			throw new MicaException("I do not know how to stop Maemo for " + sdkTarget.getDisplayName());
+			throw new MicaException("I do not know how to stop Maemo AF for " + sdkTarget.getDisplayName());
 		}
 	}
 
@@ -116,7 +120,7 @@
 		if (launcher != null) {
 			launcher.startMaemo(monitor);
 		} else {
-			throw new MicaException("I do not know how to start Maemo for " + sdkTarget.getDisplayName());
+			throw new MicaException("I do not know how to start Maemo AF for " + sdkTarget.getDisplayName());
 		}
 	}
 
@@ -179,7 +183,7 @@
 		if (target == null)
 			throw new IllegalArgumentException();
 		
-		Job job = new Job("Starting maemo") {
+		Job job = new Job("Starting Maemo AF") {
 
 			@Override
 			protected IStatus run(IProgressMonitor monitor) {
@@ -205,7 +209,7 @@
 		if (target == null)
 			throw new IllegalArgumentException();
 			
-		Job job = new Job("Restarting maemo") {
+		Job job = new Job("Restarting Maemo AF") {
 	
 			@Override
 			protected IStatus run(IProgressMonitor monitor) {
@@ -229,7 +233,7 @@
 		if (target == null)
 			throw new IllegalArgumentException();
 			
-		Job job = new Job("Stopping maemo") {
+		Job job = new Job("Stopping Maemo AF") {
 	
 			@Override
 			protected IStatus run(IProgressMonitor monitor) {

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/XLauncher.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/XLauncher.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.core/src/org/maemo/esbox/internal/api/maemosdk/core/tools/XLauncher.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -14,20 +14,19 @@
 
 import org.eclipse.core.runtime.*;
 import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.ui.console.MessageConsole;
 import org.maemo.esbox.internal.maemosdk.core.Activator;
 import org.maemo.esbox.maemosdk.core.MaemoPreferenceConstants;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.Policy;
-import org.maemo.mica.common.core.console.ConsoleStreamMonitor;
-import org.maemo.mica.common.core.console.CoreConsoleManager;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
 import org.maemo.mica.common.core.machine.IMachine;
 import org.maemo.mica.common.core.machine.MachineRegistry;
+import org.maemo.mica.common.core.machine.MachineUtils;
 import org.maemo.mica.common.core.preferences.CorePreferenceManager;
 import org.maemo.mica.common.core.preferences.IPreferenceProvider;
 import org.maemo.mica.common.core.process.*;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
+import org.maemo.mica.maemosdk.core.IMaemoSDKPlatform;
 
 import java.net.Socket;
 import java.text.MessageFormat;
@@ -42,17 +41,22 @@
  */
 public class XLauncher {
 
-	private static final String FREMANTLE_PLATFORM_NAME = "fremantle";
+	//Default X Server PLATFORM_PARAMETERS parameter for the targets, except for FREMANTLE.
+	private static final String DEFAULT_X_SERVER_PLATFORM_PARAMETERS = "-extension Composite";
+	
+	//Default X Server RESOLUTION parameter for the targets, except for FREMANTLE.
+	private static final String DEFAULT_X_SERVER_RESOLUTION = "800x480x16";
 
-	//Default X Server parameter for the targets, except for FREMANTLE.
-	private static final String DEFAULT_X_SERVER_PLATFORM_PARAMETERS = "-screen 800x480x16 -extension Composite";
-
-	/* FREMANTLE specific X Server parameter.
+	/* FREMANTLE specific X Server PLATFORM_PARAMETERS parameter.
 	 * Xephyr X-server now requires the composite extension where it 
 	 * used to be disabled explicitly when starting the server.
 	 */
-	private static final String FREMANTLE_X_SERVER_PLATFORM_PARAMETERS = "-screen 800x480x16 -kb";
+	private static final String FREMANTLE_X_SERVER_PLATFORM_PARAMETERS = "-kb";
 	
+	/* FREMANTLE specific X Server RESOLUTION parameter.
+	 */
+	private static final String FREMANTLE_X_SERVER_RESOLUTION = "800x480x16";
+	
 	/**
 	 * @author eswartz
 	 *
@@ -115,10 +119,9 @@
 			try {
 				Thread.sleep(100);
 			} catch (InterruptedException e) {
-				return Policy.getCancelStatus(Activator.getDefault());
 			}
 
-			if (!processMonitor.isAlive()) {
+			if (processMonitor.isCompleted()) {
 				return Activator.createErrorStatus(
 						"X server did not launch; check the Console.",
 						null);
@@ -281,25 +284,23 @@
 				throw new MicaException("Cannot find local machine");
 
 			IProcessLauncherFactory factory = localMachine.getProcessLauncherFactory();
-			IEnvironmentModifierBlock envBlock = null;
+			IEnvironmentModifierBlock envBlock = factory.getDefaultEnvironmentModifierBlock();
 			
+			ProcessLauncherParameters params = ProcessLauncherParameters.create(cmdLine, envBlock);
+			
 			String path = prefProvider.getPreferenceValue(MaemoPreferenceConstants.X_PATH);
 			if (path != null && path.length() > 0) {
-				envBlock = ProcessLauncherUtils.addToPATH(localMachine, factory, path, true); 
+				MachineUtils.adjustLaunchParametersForPath(
+						localMachine, factory, params, path);
 			}
 
 			// launch command
-			IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(factory, 
-					null,
-					cmdLine,
-					envBlock);
-
-			MessageConsole console = CoreConsoleManager.getInstance().getConsole(
+			IProcessLauncher processLauncher = factory.createProcessLauncher(
+					params);
+			ProcessLauncherUtils.queueConsoleMonitor(processLauncher, 
 					true, null, "Starting X Server");
+			processLauncher.createProcess(null);
 			
-			processLauncher.queueStreamMonitor(new ConsoleStreamMonitor(console));
-			processLauncher.createProcess();
-			
 			IProcessMonitor procMon = processLauncher.createProcessMonitor();
 			procMon.runNonBlocking();
 
@@ -354,6 +355,10 @@
 		//Defining specific platform parameters, e.g. Composite extension for Fremantle.
 		command = command.replaceAll("\\$\\{PLATFORM_PARAMETERS\\}",
 				getPlatformParameters(prefProvider));
+		
+		//Defining specific platform RESOLUTION.
+		command = command.replaceAll("\\$\\{RESOLUTION\\}",
+				getResolutionParameter(prefProvider));
 		return command;
 	}
 	
@@ -372,13 +377,35 @@
 			sdkTarget = (ISDKTarget) prefProvider;
 
 		if (sdkTarget != null
-				&& sdkTarget.getPlatform().getName().toLowerCase().matches(
-						FREMANTLE_PLATFORM_NAME)) {
+				&& sdkTarget.getPlatform().getVersion().compareTo(
+						IMaemoSDKPlatform.FREMANTLE.getVersion()) >= 0) {
 			return FREMANTLE_X_SERVER_PLATFORM_PARAMETERS;
 		}
 		return DEFAULT_X_SERVER_PLATFORM_PARAMETERS;
 	}
 	
+	/**
+	 * Defines the value for variable {RESOLUTION} present at X Server
+	 * initialization command line.
+	 * 
+	 * @param prefProvider
+	 *            The prefProvider. If it is not an instance of
+	 *            {@link ISDKTarget} the default value is returned.
+	 * @return the value for variable {RESOLUTION}.
+	 */
+	public String getResolutionParameter(IPreferenceProvider prefProvider) {
+		ISDKTarget sdkTarget = null;
+		if (prefProvider instanceof ISDKTarget)
+			sdkTarget = (ISDKTarget) prefProvider;
+
+		if (sdkTarget != null
+				&& sdkTarget.getPlatform().getVersion().compareTo(
+						IMaemoSDKPlatform.FREMANTLE.getVersion()) >= 0) {
+			return FREMANTLE_X_SERVER_RESOLUTION;
+		}
+		return DEFAULT_X_SERVER_RESOLUTION;
+	}
+	
 	private String getDisplayValue(IPreferenceProvider prefProvider) {
 		String value = prefProvider.getPreferenceValue(MaemoPreferenceConstants.X_DISPLAY);
 		if (value.length() > 0)

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/plugin.xml
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/plugin.xml	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/plugin.xml	2009-07-08 11:19:18 UTC (rev 1854)
@@ -17,7 +17,7 @@
             name="Gazpacho"
             category="org.maemo.esbox.ui.preferenceCategory.esbox"
             class="org.maemo.esbox.internal.maemosdk.ui.preferences.GazpachoPreferencePage"
-            id="org.maemo.mica.maemosdk.ui.preferencePage.gazpacho">
+            id="org.maemo.maemo.maemosdk.ui.preferencePage.gazpacho">
       </page>
       -->
          
@@ -41,23 +41,29 @@
    <extension
          point="org.eclipse.ui.actionSets">
       <actionSet
-            id="org.maemo.mica.maemosdk.ui.toolbaraction"
+            id="org.maemo.maemo.maemosdk.ui.toolbaraction"
             label="Toolbar Action"
             visible="true">
          <menu
-               id="org.maemo.mica.maemosdk.ui.xmenu"
+               id="org.maemo.maemo.maemosdk.ui.xmenu"
                label="X Menu">
             <separator
                   name="esboxgroup">
             </separator>
          </menu>
+         <menu
+               id="org.maemo.maemo.maemosdk.ui.maemo"
+               label="Maemo AF Menu">
+            <separator
+                  name="esboxgroup">
+            </separator>
+         </menu>
          <action
                class="org.maemo.esbox.internal.maemosdk.ui.actions.XDropdownMenuAction"
                enablesFor="*"
                icon="icons/full/etool16/xservermenu_misc.png"
-               id="org.maemo.mica.maemosdk.ui.action.xserver"
+               id="org.maemo.esbox.maemosdk.ui.action.xserver"
                label="X Server"
-               state="true"
                style="pulldown"
                toolbarPath="esboxgroup"
                tooltip="Start X Server">
@@ -66,12 +72,11 @@
                class="org.maemo.esbox.internal.maemosdk.ui.actions.MaemoDropdownMenuAction"
                enablesFor="*"
                icon="icons/full/etool16/maemomenu_misc.png"
-               id="org.maemo.mica.maemosdk.ui.action.maemo"
-               label="%action.label.1"
-               state="true"
+               id="org.maemo.esbox.maemosdk.ui.action.maemo"
+               label="Maemo AF"
                style="pulldown"
                toolbarPath="esboxgroup"
-               tooltip="Start Maemo">
+               tooltip="Start Maemo Application Framework (and X if needed)">
          </action>
       </actionSet>
    </extension>

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/BuildMachinePreferencePage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -57,8 +57,8 @@
 import org.maemo.mica.common.core.machine.IMachine;
 import org.maemo.mica.common.core.machine.MachineManager;
 import org.maemo.mica.common.core.machine.MachineRegistry;
-import org.maemo.mica.common.core.sdk.SDKFactory;
 import org.maemo.mica.common.ui.dialogs.StyledTextProgressDialog;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 import org.maemo.mica.internal.api.common.ui.utils.PixelConverter;
 
 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
@@ -335,8 +335,8 @@
 		boolean changed = false;
 				
 		// don't trigger refresh job on old machine when checking things out
-		SDKFactory.getInstance().cancelRefresh();
-		SDKFactory.getInstance().lock();
+		SDKManagerInternal.getInstance().cancelRefresh();
+		SDKManagerInternal.getInstance().lock();
 		try {
 			
 			if (selectedMachine != null) {
@@ -372,7 +372,7 @@
 			}
 		} finally {
 			// now allow the refresh
-			SDKFactory.getInstance().unlock();
+			SDKManagerInternal.getInstance().unlock();
 		}
 			
 		if (selectedMachine != null && !MachineManager.getInstance().isActive(selectedMachine)) {

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFolderTableViewer.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFolderTableViewer.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/SharedFolderTableViewer.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -37,6 +37,7 @@
 import org.maemo.mica.common.core.filesystem.EShareType;
 import org.maemo.mica.common.core.filesystem.ISharedFolder;
 import org.maemo.mica.common.ui.TextAndDialogCellEditor;
+import org.maemo.mica.common.ui.dialogs.DirectoryDialogHelper;
 import org.maemo.mica.internal.api.common.ui.ViewerTooltipSupport;
 
 /**
@@ -100,7 +101,8 @@
 		protected Object openDialogBox(Control cellEditorWindow) {
 			DirectoryDialog dialog = new DirectoryDialog(cellEditorWindow.getShell());
 			Object current = getValue();
-			dialog.setFilterPath(current instanceof String 
+			DirectoryDialogHelper.setFilterPathToExistingDirectory(dialog, 
+					current instanceof String 
 					? new Path((String)current).toOSString() : Path.ROOT.toOSString());
 			return dialog.open();
 		}

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/ValidateMachineRunner.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/ValidateMachineRunner.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/api/maemosdk/ui/preferences/ValidateMachineRunner.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -45,12 +45,13 @@
 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.ProcessLauncherParameters;
 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 org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.common.core.ui.IProgressReporter;
 import org.maemo.mica.common.core.ui.ProgressReporterStreamTextMonitor;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 
 /**
  * This class validates that a machine is properly configured.
@@ -150,11 +151,13 @@
 		step(monitor, "Testing process launching");
 		
 		// check the process launcher
+		ProcessLauncherParameters params = ProcessLauncherParameters.create(
+				"ls", machine.getUserHome().toPortableString());
 		IProcessLauncherFactory processLauncherFactory = machine.getProcessLauncherFactory();
-		IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(processLauncherFactory, 
-				"ls " + machine.getUserHome());
+		IProcessLauncher processLauncher = processLauncherFactory.createProcessLauncher(params); 
 		
-		reporter.logInfo(MessageFormat.format("Launching ''{0}''", CommandLineArguments.toCommandLine(processLauncher.getLaunchCommandArguments())));
+		reporter.logInfo(MessageFormat.format("Launching ''{0}''", 
+				CommandLineArguments.toCommandLine(params.getCommandLine())));
 		try {
 			ProcessLauncherUtils.launchAndMonitorStandardStreams(processLauncher, 
 				new IStreamMonitor[] {
@@ -367,7 +370,7 @@
 		monitor.beginTask("", 2);
 		step(monitor, "Testing visibility of shared folders in installed targets");
 		
-		SDKFactory.getInstance().waitForRefreshComplete(new SubProgressMonitor(monitor,  1));
+		SDKManager.getInstance().waitForRefreshComplete(new SubProgressMonitor(monitor,  1));
 		ISDKTarget[] sdkTargets = getMachineProvidedTargets();
 		
 		
@@ -380,8 +383,7 @@
 
 					public void run(IProgressMonitor monitor)
 							throws InvocationTargetException, InterruptedException {
-						SDKFactory.getInstance().refresh(true);
-						SDKFactory.getInstance().waitForRefreshComplete(monitor);
+						SDKManagerInternal.getInstance().refreshFull(monitor);
 					}
 					
 				});
@@ -425,7 +427,7 @@
 	 */
 	private ISDKTarget[] getMachineProvidedTargets() {
 		List<ISDKTarget> sdktargetsList = new ArrayList<ISDKTarget>(Arrays.asList(
-				SDKFactory.getInstance().getAllSDKTargets()));
+				SDKManager.getInstance().getAllSDKTargets()));
 		for (Iterator<ISDKTarget> iter = sdktargetsList.iterator(); iter.hasNext(); ) {
 			if (!iter.next().getSDK().getMachine().equals(machine))
 				iter.remove();

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions/BaseEmulatorStartStopRestartControlAction.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions/BaseEmulatorStartStopRestartControlAction.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions/BaseEmulatorStartStopRestartControlAction.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -26,8 +26,8 @@
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.IWorkbenchWindowPulldownDelegate;
 import org.maemo.esbox.internal.maemosdk.ui.UIActivator;
-import org.maemo.mica.common.core.GeneralUtils;
 import org.maemo.mica.common.core.MicaException;
+import org.maemo.mica.common.core.WorkspaceUtils;
 import org.maemo.mica.common.core.sdk.BuildMachineHostedTargetFilter;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.common.project.core.ProjectManager;
@@ -126,7 +126,7 @@
 		// The command must adapt to the current project / editor / etc.
 		// or else we will not launch the proper version of maemo
 		
-		IResource resource = GeneralUtils.getResourceFromSelection(selection);
+		IResource resource = WorkspaceUtils.getResourceFromSelection(selection);
 		
 		// XXX: don't ask for ISDKTarget here since it can hang
 		this.selectedProject = null;

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions/MaemoDropdownMenuAction.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions/MaemoDropdownMenuAction.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/actions/MaemoDropdownMenuAction.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -40,8 +40,8 @@
 			return;
 		if (MaemoScriptLauncher.getInstance().isMaemoStarted(target)) {
 			MessageDialog.openInformation(null, 
-					"Maemo is running", 
-					"The Maemo framework appears to be already running.\n\nIf you do not see it, you may need to restart it or wait for its startup to complete.");
+					"Maemo AF is running", 
+					"The Maemo Application Framework appears to be already running.\n\nIf you do not see it, you may need to restart it or wait for its startup to complete.");
 			return;
 		}
 		Job job = MaemoScriptLauncher.getInstance().createStartMaemoJob(target);

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/preferences/XServerPreferencePage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/preferences/XServerPreferencePage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/preferences/XServerPreferencePage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -40,7 +40,7 @@
 		setPreferenceStore(MaemoPreferenceConstants.getPreferenceStore());
 		setDescription("Preferences for running X:\n\n"
 				+ "(The X server is launched on the host machine, so use a command syntax and display appropriate to the host. " +
-					"The variable ${PLATFORM_PARAMETERS} automatically takes specific values for X extension and resolution " +
+					"The variables ${RESOLUTION} and ${PLATFORM_PARAMETERS} automatically take specific values for X extension and resolution " +
 					"parameters, depending on target platform.)\n");
 	}
 

Modified: branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/wizards/ESboxImportDebianSourcePackageProjectWizard.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/wizards/ESboxImportDebianSourcePackageProjectWizard.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.maemosdk.ui/src/org/maemo/esbox/internal/maemosdk/ui/wizards/ESboxImportDebianSourcePackageProjectWizard.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -13,6 +13,7 @@
 
 import org.maemo.mica.common.core.sdk.BuildMachineHostedTargetFilter;
 import org.maemo.mica.common.core.sdk.IBuildTargetFilter;
+import org.maemo.mica.internal.api.common.project.core.creator.ProjectConfigHandler;
 import org.maemo.mica.internal.api.linux.packages.ui.importwizard.AbstractImportDebianSourcePackageWizard;
 
 /**
@@ -37,4 +38,17 @@
 	protected IBuildTargetFilter createBuildTargetFilter() {
 		return new BuildMachineHostedTargetFilter();
 	}
+
+	/* (non-Javadoc)
+	 * @see org.maemo.mica.internal.api.linux.packages.ui.importwizard.AbstractImportDebianSourcePackageWizard#configureProjectConfigHandler(org.maemo.mica.internal.api.common.project.core.creator.ProjectConfigHandler)
+	 */
+	@Override
+	protected void configureProjectConfigHandler(
+			ProjectConfigHandler configHandler) {
+		// HACK: this should be inside the respective *.project plugin (but that would make two wizards :p)
+		if (configHandler.getProjectType().getId().contains("cpp"))
+			configHandler.addExtraNatureId("org.maemo.esbox.cpp.project.cppNature");
+		else if (configHandler.getProjectType().getId().contains("python"))
+			configHandler.addExtraNatureId("org.maemo.esbox.python.project.pythonNature");
+	}
 }

Modified: branches/work_new_pydev/org.maemo.esbox.python.project/src/org/maemo/esbox/internal/python/project/core/ESboxPythonProjectPackageGatherer.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.python.project/src/org/maemo/esbox/internal/python/project/core/ESboxPythonProjectPackageGatherer.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.python.project/src/org/maemo/esbox/internal/python/project/core/ESboxPythonProjectPackageGatherer.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -47,6 +47,8 @@
 					info.getSystemPackages().add("maemo-python-env");
 				else
 					info.getSystemPackages().add("maemo-python-device-env");
+				
+				info.getSystemPackages().add("python2.5-distutils");
 			}
 			return info;
 		}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/plugin.xml
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/plugin.xml	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/plugin.xml	2009-07-08 11:19:18 UTC (rev 1854)
@@ -18,7 +18,7 @@
      <preferenceSetProvider
            defaultsXMLFile="conf/sb_prefs.xml"
            preferenceConstantsClass="org.maemo.esbox.scratchbox.core.SBPreferenceConstants"
-           preferenceMigratorClass="org.maemo.mica.internal.api.common.core.PreferenceMigratorAdapter"
+           preferenceMigratorClass="org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter"
            preferenceStoreBundle="org.maemo.esbox.scratchbox.core"
            version="20">
      </preferenceSetProvider>
@@ -63,7 +63,7 @@
             adaptableType="org.maemo.esbox.internal.api.scratchbox.core.sdk.AbstractScratchboxSDKTarget"
             class="org.maemo.esbox.internal.scratchbox.adapters.ESboxMaemoEmulatorExecutionEnvironmentProviderAdapterFactory">
          <adapter
-               type="org.maemo.mica.common.core.execEnv.IExecutionEnvironmentProviderAdapter">
+               type="org.maemo.mica.common.core.adapters.IExecutionEnvironmentProviderAdapter">
          </adapter>
       </factory>
     </extension>

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/OldStyleProjectProperties.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/OldStyleProjectProperties.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/OldStyleProjectProperties.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -24,7 +24,7 @@
 import org.maemo.mica.common.core.execEnv.IExecutionEnvironment;
 import org.maemo.mica.common.core.sdk.ISDK;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.internal.api.common.project.core.IPersistentPropertyAccess;
 import org.maemo.mica.internal.api.common.project.core.model.AbstractBuildConfiguration;
 import org.maemo.mica.internal.api.maemosdk.core.MaemoExecutionEnvironmentIds;
@@ -137,7 +137,7 @@
 			version = "1";
 		}
 
-		SDKFactory.getInstance().waitForRefreshComplete(null);
+		SDKManager.getInstance().waitForRefreshComplete(null);
 		
 		List<IScratchboxSDK> sboxSDKs = ScratchboxSDKFacade.getInstance()
 				.getAllScratchboxSDKs();

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/commands/SimpleCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/commands/SimpleCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/commands/SimpleCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,15 +11,15 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.api.scratchbox.core.commands;
 
+import java.util.List;
+
 import org.maemo.esbox.scratchbox.core.command.ScratchboxCommand;
 import org.maemo.esbox.scratchbox.core.command.ScratchboxInvalidParameterException;
 import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxException;
-import org.maemo.mica.common.core.*;
+import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.process.IProcessLauncher;
-import org.maemo.mica.common.core.process.ProcessLauncherCreator;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 
-import java.util.List;
-
 /**
  * Execute a simple command inside Scratchbox.
  * 
@@ -44,10 +44,9 @@
 			throw new ScratchboxInvalidParameterException(
 					"empty parameter list");
 
-		IProcessLauncher processLauncher = ProcessLauncherCreator
-				.createProcessLauncher(commandAbstractor
-						.getProcessLauncherFactory(), null, params);
-		Process process = processLauncher.createProcess();
+		IProcessLauncher processLauncher = commandAbstractor.getProcessLauncherFactory().
+			createProcessLauncher(ProcessLauncherParameters.create(params));
+		Process process = processLauncher.createProcess(null);
 
 		List<String> commandResult = getLineInputFromProcessAndWait(process,
 				true, 0);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/execEnv/MaemoExecutionEnvironmentHandler.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/execEnv/MaemoExecutionEnvironmentHandler.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/execEnv/MaemoExecutionEnvironmentHandler.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -104,7 +104,7 @@
 
 					public void run() {
 						doLaunch[0] = MessageDialog.openQuestion(shell, "Launch Maemo?",
-							"The Maemo Application Framework is not running or is not showing in an X server.\n\nLaunch it now?");
+							"The Maemo Application Framework does not seem to be running.\n\nLaunch it now?");
 					}
 					
 				});
@@ -116,7 +116,10 @@
 					// As long as X runs, any process can be re-windowed to the new
 					// window manager, and we don't really have to wait for it here.
 					Display display = Display.getCurrent();
-					for (int timeout = 0; timeout < 10 * 1000; ) {
+					for (int timeout = 0; timeout < 15 * 1000; ) {
+						if (job.getResult() != null)
+							break;
+						
 						if (display != null) {
 							while (display.readAndDispatch()) ;
 						}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk/AbstractScratchboxSDK.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk/AbstractScratchboxSDK.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk/AbstractScratchboxSDK.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,7 +11,6 @@
 package org.maemo.esbox.internal.api.scratchbox.core.sdk;
 
 import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
 import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommandAbstractor;
 import org.maemo.esbox.internal.api.scratchbox.core.commands.SDKCommandAbstractor;
 import org.maemo.esbox.internal.api.scratchbox.core.commands.sbrsh.*;
@@ -21,6 +20,7 @@
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
 import org.maemo.mica.common.core.filesystem.IFileSystemAccess;
 import org.maemo.mica.common.core.machine.IMachine;
+import org.maemo.mica.common.core.machine.MachineUtils;
 import org.maemo.mica.common.core.preferences.IPreferenceProvider;
 import org.maemo.mica.common.core.process.*;
 import org.maemo.mica.internal.api.common.core.sdk.BaseSDK;
@@ -41,20 +41,13 @@
 	protected static final String TARGETS_KEY = "targets";
 	protected static final String VERSION_KEY = "version";
 	
-	public AbstractScratchboxSDK(IMachine machine, IPath location, String version, String name,
-			int versionNumber) {
-		super(machine, version, name);
+	public AbstractScratchboxSDK(IMachine machine, IPath location, String name, int versionNumber) {
+		super(machine, null, name);
 		if (location == null) 
 			throw new IllegalArgumentException();
 		this.installLocation = location;
 		this.versionNumberKey = versionNumber;
 		setCache(ScratchboxCacheUtils.getCache(this));
-
-		version = (String) getCache().get(VERSION_KEY, String.class);
-		if (version == null) {
-			version = "";
-		}
-		setVersion(version);
 	}
 	
 	/* 
@@ -97,6 +90,20 @@
 		return true;
 	}
 
+	@Override
+	public synchronized String getVersion() {
+		// not set until #realize
+		String version = super.getVersion();
+		if (version == null) {
+			version = (String) getCache().get(VERSION_KEY, String.class);
+			if (version == null) {
+				version = "";
+			}
+			setVersion(version);
+		}
+		return version;
+	}
+	
 	/* (non-Javadoc)
 	 * @see org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDK#getInstallLocation()
 	 */
@@ -257,39 +264,15 @@
 						.getProcessLauncherFactory();
 				IProcessLauncherFactory wrappedLauncherFactory = new IProcessLauncherFactory() {
 
-					public IProcessLauncher createProcessLauncher(
-							IPath workingDirectory, List<String> commandLine,
-							IEnvironmentModifierBlock envBlock) {
-
-						if (commandLine.size() > 0) {
-							// optimize this somewhat... changing the environment means launching
-							// an extra shell and making an uglier command line
-							IPath executablePath = new Path(toolsPath).append(commandLine.get(0));
-							if (getMachine().getFileSystemAccess().getFileStore(executablePath).fetchInfo().exists()) {
-								commandLine.set(0, executablePath.toPortableString());
-							} else {
-								envBlock = ProcessLauncherUtils.addToPATH(
-										getMachine(),
-										getRawEnvironment(),
-										envBlock != null ? envBlock
-												: defaultEnvironmentModifierBlock(),
-										toolsPath, true);
-							}
-						}
-						
-						return launcherFactory.createProcessLauncher(
-								workingDirectory, commandLine, envBlock);
+					public IProcessLauncher createProcessLauncher(ProcessLauncherParameters params) {
+						MachineUtils.adjustLaunchParametersForPath(getMachine(),
+								launcherFactory, params, toolsPath);
+						return launcherFactory.createProcessLauncher(params);
 					}
 
-					public IEnvironmentModifierBlock defaultEnvironmentModifierBlock() {
-						return launcherFactory
-								.defaultEnvironmentModifierBlock();
+					public IEnvironmentModifierBlock getDefaultEnvironmentModifierBlock() {
+						return launcherFactory.getDefaultEnvironmentModifierBlock();
 					}
-
-					public Properties getRawEnvironment() {
-						return launcherFactory.getRawEnvironment();
-					}
-
 				};
 				return wrappedLauncherFactory;
 			}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk/BaseScratchboxSDKTarget.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk/BaseScratchboxSDKTarget.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/api/scratchbox/core/sdk/BaseScratchboxSDKTarget.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -15,7 +15,7 @@
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
 import org.maemo.mica.common.core.sdk.*;
 import org.maemo.mica.internal.api.common.core.sdk.BaseSDKTarget;
-import org.maemo.mica.internal.maemosdk.core.adapters.MaemoRunStandaloneSupportAdapterFactory;
+import org.maemo.mica.internal.api.maemosdk.core.MaemoRunStandaloneSupportAdapterFactory;
 
 /**
  * Common base for (maemo) scratchbox SDK targets

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESBoxSBRSHLaunchAdapter.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESBoxSBRSHLaunchAdapter.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESBoxSBRSHLaunchAdapter.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -19,7 +19,10 @@
 import org.maemo.esbox.internal.scratchbox.core.Activator;
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
 import org.maemo.mica.common.core.MicaException;
+import org.maemo.mica.common.core.filesystem.ISharedFilesystemProvider;
+import org.maemo.mica.common.core.filesystem.ISharedFolder;
 import org.maemo.mica.common.core.machine.IMachine;
+import org.maemo.mica.common.core.machine.MachineRegistry;
 import org.maemo.mica.common.core.preferences.CorePreferenceManager;
 import org.maemo.mica.common.core.process.ShellTemplateSubstitutor;
 import org.maemo.mica.common.core.sdk.IDeviceSDKTarget;
@@ -116,9 +119,9 @@
 		IPath machinePath = sdkTarget.getHostToMachineFileSystemMapping()
 				.convertHostToTargetPath(localSbrshConfigFile);
 		if (machinePath == null)
-			throw new MicaException("Cannot locate the file "
-					+ localSbrshConfigFile + " on the machine hosting "
-					+ sdkTarget.getName());
+			throw new MicaException("The file '"
+					+ localSbrshConfigFile + "' is not visible to the machine hosting "
+					+ sdkTarget.getName() + " (add a shared folder or bind mount?)");
 		return machinePath;
 	}
 
@@ -153,9 +156,31 @@
 	 * getDefaultCustomConfigFileName()
 	 */
 	public String getDefaultCustomConfigFileName() {
+		// this needs to be on the host machine, but visible to
+		// the SDK target.
+		IPath baseDir = null;
+		ISharedFilesystemProvider sharedFilesystemProvider = getBuildMachine().getSharedFilesystemProvider();
+		if (sharedFilesystemProvider != null) {
+			for (ISharedFolder folder : sharedFilesystemProvider.getSharedFolders()) {
+				if (folder.isHostProvidedShare()) {
+					baseDir = folder.getLocalPath();
+					break;
+				}
+			}
+		}
+		
+		if (baseDir == null) {
+			baseDir = MachineRegistry.getInstance().getLocalMachine().getUserHome(); 
+		}
+		return baseDir.
+			append(SBRSHLaunchProtocolType.DEFAULT_CUSTOM_SBRSH_CONFIG_FILE_NAME).
+			toOSString();
+		
+		/*
 		return getBuildMachine().getUserHome().append(
 				SBRSHLaunchProtocolType.DEFAULT_CUSTOM_SBRSH_CONFIG_FILE_NAME)
 				.toPortableString();
+				*/
 	}
 
 	/**
@@ -172,6 +197,7 @@
 	 * current project
 	 * <li>${TARGET_PROJECT_PATH} -- the path on the target which will expose
 	 * the project contents
+	 * <li>${USER} -- the local username
 	 * <p>
 	 * The template may optionally expose a "rootstrap mount" (already filled
 	 * in) for targets using sandbox mode.
@@ -229,7 +255,7 @@
 		}
 	}
 
-	public boolean enableSanboxOption() {
+	public boolean enableSandboxMode() {
 		return true;
 	}
 
@@ -238,7 +264,7 @@
 				.getRegisteredKeyValue(org.maemo.esbox.scratchbox.core.sbrsh.SBRSHPreferenceConstants.DEFAULT_REMOTE_USER);
 	}
 
-	public boolean isDefaultSanboxMode() {
+	public boolean isDefaultSandboxMode() {
 		return new Boolean(
 				PREFERENCE
 						.getRegisteredKeyValue(org.maemo.esbox.scratchbox.core.sbrsh.SBRSHPreferenceConstants.DEFAULT_SANDBOX_MODE));
@@ -258,22 +284,36 @@
 		
 		String hostAddress = null;
 		
-		if(buildMachine instanceof ISSHMachine && deviceTarget.getMachine() instanceof ISSHMachine){
-			hostAddress = ((ISSHMachine)deviceTarget.getMachine()).getSshConfiguration().getHostAddress();
-			String ts = ((ISSHMachine)deviceTarget.getMachine()).getSshConfiguration().getTargetAddress();
+		if (deviceTarget.getMachine() instanceof ISSHMachine) {
 
-			ISSHMachine buildMachine = (ISSHMachine) this.buildMachine;
-			
-			String machineHostingESboxIP = buildMachine.getSshConfiguration().getHostAddress();
-			String esboxBuildMachineIP = buildMachine.getSshConfiguration().getTargetAddress();
+			if (buildMachine instanceof ISSHMachine) {
+				hostAddress = ((ISSHMachine) deviceTarget.getMachine())
+						.getSshConfiguration().getHostAddress();
+				String ts = ((ISSHMachine) deviceTarget.getMachine())
+						.getSshConfiguration().getTargetAddress();
 
-			// if device tries to access the local machine on the same network of build machine
-			if (hostAddress.equals(machineHostingESboxIP)) {
-				hostAddress = esboxBuildMachineIP; // switch to ESbox Build Machine address
-				// In the case of a Virtual machine, this only works if
-				// the user rightly configured the Bridge Network
+				ISSHMachine buildMachine = (ISSHMachine) this.buildMachine;
+
+				String machineHostingESboxIP = buildMachine
+						.getSshConfiguration().getHostAddress();
+				String esboxBuildMachineIP = buildMachine.getSshConfiguration()
+						.getTargetAddress();
+
+				// if device tries to access the local machine on the same
+				// network of build machine
+				if (hostAddress.equals(machineHostingESboxIP)) {
+					hostAddress = esboxBuildMachineIP; // switch to ESbox Build
+														// Machine address
+					// In the case of a Virtual machine, this only works if
+					// the user rightly configured the Bridge Network
+				}
+			} else {
+				hostAddress = ((ISSHMachine) deviceTarget.getMachine())
+						.getSshConfiguration().getHostAddress();
 			}
 		}
+		
+		
 		return hostAddress;
 	}
 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESBoxSBRSHLaunchAdapterFactory.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESBoxSBRSHLaunchAdapterFactory.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESBoxSBRSHLaunchAdapterFactory.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -13,12 +13,13 @@
 package org.maemo.esbox.internal.scratchbox.adapters;
 
 import org.eclipse.core.runtime.IAdapterFactory;
+import org.maemo.mica.common.core.machine.IBuildMachine;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.common.launch.adapters.IRunStandaloneAdapter;
 import org.maemo.mica.internal.api.protocol.launch.sbrsh.ISBRSHLaunchAdapter;
 
 /**
- * This factory ties "run standalone" support into an SDK target
+ * This factory ties SBRSH support into an SDK target
  * 
  * @author eswartz
  * 
@@ -35,12 +36,10 @@
 	 */
 	public Object getAdapter(Object adaptableObject, Class adapterType) {
 		if (adapterType.equals(ISBRSHLaunchAdapter.class)) {
-			if (adaptableObject instanceof ISDKTarget) {
+			if (adaptableObject instanceof ISDKTarget && 
+					((ISDKTarget) adaptableObject).getMachine() instanceof IBuildMachine) {
 				ISDKTarget sdkTarget = (ISDKTarget) adaptableObject;
-				if (sdkTarget.getPlatform().getName().toLowerCase().matches(
-						"gregale|bora|chinook|diablo|fremantle")) {
-					return new ESBoxSBRSHLaunchAdapter(sdkTarget);
-				}
+				return new ESBoxSBRSHLaunchAdapter(sdkTarget);
 			}
 		}
 		return null;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoEmulatorExecutionEnvironmentProviderAdapter.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoEmulatorExecutionEnvironmentProviderAdapter.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoEmulatorExecutionEnvironmentProviderAdapter.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -14,9 +14,9 @@
 import org.maemo.esbox.internal.api.scratchbox.core.execEnv.GTKExecutionEnvironmentHandler;
 import org.maemo.esbox.internal.api.scratchbox.core.execEnv.MaemoExecutionEnvironmentHandler;
 import org.maemo.esbox.internal.api.scratchbox.core.execEnv.X11ExecutionEnvironmentHandler;
+import org.maemo.mica.common.core.adapters.IExecutionEnvironmentProviderAdapter;
 import org.maemo.mica.common.core.execEnv.IExecutionEnvironment;
 import org.maemo.mica.common.core.execEnv.IExecutionEnvironmentHandler;
-import org.maemo.mica.common.core.execEnv.IExecutionEnvironmentProviderAdapter;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.internal.api.maemosdk.core.MaemoExecutionEnvironmentIds;
 import org.maemo.mica.maemosdk.core.IMaemoSDKPlatform;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoEmulatorExecutionEnvironmentProviderAdapterFactory.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoEmulatorExecutionEnvironmentProviderAdapterFactory.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoEmulatorExecutionEnvironmentProviderAdapterFactory.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -13,7 +13,7 @@
 
 import org.eclipse.core.runtime.IAdapterFactory;
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
-import org.maemo.mica.common.core.execEnv.IExecutionEnvironmentProviderAdapter;
+import org.maemo.mica.common.core.adapters.IExecutionEnvironmentProviderAdapter;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 
 /**

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoTargetEnvironmentModifierAdapter.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoTargetEnvironmentModifierAdapter.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoTargetEnvironmentModifierAdapter.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -12,7 +12,7 @@
 package org.maemo.esbox.internal.scratchbox.adapters;
 
 import org.maemo.esbox.maemosdk.core.MaemoEnvironmentUtils;
-import org.maemo.mica.common.core.env.EnvironmentManager;
+import org.maemo.mica.common.core.env.EnvironmentModifierBlock;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.common.launch.adapters.ITargetEnvironmentModifierAdapter;
@@ -39,7 +39,7 @@
 	 * @see org.maemo.mica.common.launch.adapters.ITargetEnvironmentModifierAdapter#getTargetEnvironmentModifierBlock(org.maemo.mica.common.launch.core.ILaunchProxy)
 	 */
 	public IEnvironmentModifierBlock getTargetEnvironmentModifierBlock(ILaunchProxy launchProxy) {
-		IEnvironmentModifierBlock envBlock = EnvironmentManager.getInstance().createEnvironmentModifierBlock();
+		IEnvironmentModifierBlock envBlock = new EnvironmentModifierBlock();
 		
 		// first, all launches need proper DBUS access
 		envBlock.define("DBUS_SESSION_BUS_ADDRESS", "unix:path=/tmp/session_bus_socket");

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoTargetEnvironmentModifierAdapterFactory.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoTargetEnvironmentModifierAdapterFactory.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/internal/scratchbox/adapters/ESboxMaemoTargetEnvironmentModifierAdapterFactory.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -20,7 +20,6 @@
  * @author eswartz
  *
  */
- at SuppressWarnings("unchecked")
 public class ESboxMaemoTargetEnvironmentModifierAdapterFactory implements IAdapterFactory {
 
 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command/ScratchboxCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command/ScratchboxCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/command/ScratchboxCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,22 +11,37 @@
  *******************************************************************************/
 package org.maemo.esbox.scratchbox.core.command;
 
-import org.eclipse.core.runtime.*;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.PrintStream;
+import java.security.InvalidParameterException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.StringTokenizer;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
 import org.eclipse.ui.console.MessageConsole;
-import org.maemo.esbox.internal.api.scratchbox.core.commands.*;
+import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommand;
+import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommandAbstractor;
+import org.maemo.esbox.internal.api.scratchbox.core.commands.ScratchboxInvalidOperationException;
 import org.maemo.esbox.internal.scratchbox.core.Activator;
 import org.maemo.esbox.scratchbox.core.SBPreferenceConstants;
 import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxException;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.Policy;
+import org.maemo.mica.common.core.console.ConsoleStreamMonitor;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
-import org.maemo.mica.common.core.process.*;
+import org.maemo.mica.common.core.process.CommandLineArguments;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.ShellTemplateSubstitutor;
 
-import java.io.*;
-import java.security.InvalidParameterException;
-import java.text.MessageFormat;
-import java.util.*;
-
 /**
  * Implements some common methods for Scratchbox commands.
  * <p>
@@ -162,30 +177,6 @@
 	 * @throws ScratchboxException
 	 *             failure to launch process
 	 */
-	public Process createProcess(List<String> cmdLine) throws MicaException {
-		IProcessLauncher processLauncher = ProcessLauncherCreator
-				.createProcessLauncher(commandAbstractor
-						.getProcessLauncherFactory(), null, cmdLine);
-		Process process = processLauncher.createProcess();
-		if (console != null) {
-			new PrintStream(console.newMessageStream())
-					.println(CommandLineArguments.toCommandLine(cmdLine));
-			processLauncher.redirectToConsole(console);
-		}
-		return process;
-	}
-
-	/**
-	 * Create a process from the given process launch handler factory and the
-	 * given command line.
-	 * 
-	 * @param launcherFactory
-	 *            the factory for creating IProcessLauncherFactory
-	 * @param commandLine
-	 *            the command line string
-	 * @throws ScratchboxException
-	 *             failure to launch process
-	 */
 	public Process createProcess(String commandline) throws MicaException {
 		return createProcess(commandline, null);
 	}
@@ -205,14 +196,14 @@
 			IEnvironmentModifierBlock envBlock) throws MicaException {
 		List<String> cmdLine = CommandLineArguments
 				.createFromCommandLine(commandline);
-		IProcessLauncher processLauncher = ProcessLauncherCreator
-				.createProcessLauncher(commandAbstractor
-						.getProcessLauncherFactory(), null, cmdLine, envBlock);
-		Process process = processLauncher.createProcess();
+		IProcessLauncher processLauncher = commandAbstractor
+						.getProcessLauncherFactory().createProcessLauncher(
+								ProcessLauncherParameters.create(cmdLine, envBlock));
 		if (console != null) {
 			new PrintStream(console.newMessageStream()).println(commandline);
-			processLauncher.redirectToConsole(console);
+			processLauncher.queueStreamMonitor(new ConsoleStreamMonitor(console));
 		}
+		Process process = processLauncher.createProcess(null);
 		return process;
 	}
 
@@ -236,20 +227,16 @@
 	protected IStatus runAndWaitForProcess(String jobName,
 			final String commandline, IEnvironmentModifierBlock envBlock,
 			long timeout) throws MicaException {
-		final IProcessLauncher processLauncher = ProcessLauncherCreator
-				.createProcessLauncher(
-						commandAbstractor.getProcessLauncherFactory(),
-						null,
-						CommandLineArguments.createFromCommandLine(commandline),
-						envBlock);
-		processLauncher.usePTY(true);
+		ProcessLauncherParameters params = ProcessLauncherParameters.create(CommandLineArguments.createFromCommandLine(commandline), envBlock);
+		final IProcessLauncher processLauncher = commandAbstractor.getProcessLauncherFactory().createProcessLauncher(
+				params);
 
-		processLauncher.createProcess();
 		new PrintStream(console.newMessageStream()).println(commandline);
 		
-		processLauncher.redirectToConsole(console);
-		int exit = processLauncher.waitToComplete(monitor);
+		processLauncher.queueStreamMonitor(new ConsoleStreamMonitor(console));
 		
+		int exit = ProcessLauncherUtils.launchAndMonitorStandardStreams(processLauncher, 
+				null, monitor); 
 		if (exit == -1)
 			return CANCEL_STATUS;
 		else if (exit != 0)

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sbrsh/SBRSHPreferenceMigrator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sbrsh/SBRSHPreferenceMigrator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sbrsh/SBRSHPreferenceMigrator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -10,26 +10,8 @@
  *******************************************************************************/
 package org.maemo.esbox.scratchbox.core.sbrsh;
 
-import java.util.Properties;
+import org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter;
 
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.maemo.mica.common.core.preferences.IPreferenceMigrator;
+public class SBRSHPreferenceMigrator extends PreferenceMigratorAdapter {
 
-public class SBRSHPreferenceMigrator implements IPreferenceMigrator {
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.maemo.mica.common.core.IPreferenceMigrator#adjustDefaultSettings(
-	 * java.util.Properties)
-	 */
-	public void adjustDefaultSettings(Properties newPropertyDefaults) {
-	}
-
-	public void convertExistingPreferences(IPreferenceStore preferences,
-			int oldMajor, Properties existingSettings,
-			Properties newPropertyDefaults) {
-	}
-
 }
\ No newline at end of file

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sdk/ScratchboxSDKFacade.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sdk/ScratchboxSDKFacade.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.core/src/org/maemo/esbox/scratchbox/core/sdk/ScratchboxSDKFacade.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -42,8 +42,8 @@
 	 * */
 	public synchronized List<IScratchboxSDK> getAllScratchboxSDKs() {
 		// always check since this facade doesn't listen to SDKFactory
-		SDKFactory.getInstance().waitForRefreshComplete(null);
-		return SDKFactory.getInstance().getSDKsOfType(IScratchboxSDK.class);
+		SDKManager.getInstance().waitForRefreshComplete(null);
+		return SDKManager.getInstance().getSDKsOfType(IScratchboxSDK.class);
 	}
 
 	/**
@@ -53,7 +53,7 @@
 	 * @return non-<code>null</code> list of results
 	 */
 	public <SboxSDK extends IScratchboxSDK> List<SboxSDK> getScratchboxSDK(Class<SboxSDK> klass) {
-		return SDKFactory.getInstance().getSDKsOfType(klass);
+		return SDKManager.getInstance().getSDKsOfType(klass);
 	}
 
 	/**
@@ -62,8 +62,8 @@
 	 * @return array of IScratchboxSDKTarget, never <code>null</code>
 	 */
 	public IScratchboxSDKTarget[] getScratchboxSDKTargets() {
-		SDKFactory.getInstance().waitForRefreshComplete(null);
-		List<IScratchboxSDKTarget> targets = SDKFactory.getInstance().getSDKTargetsOfType(IScratchboxSDKTarget.class);
+		SDKManager.getInstance().waitForRefreshComplete(null);
+		List<IScratchboxSDKTarget> targets = SDKManager.getInstance().getSDKTargetsOfType(IScratchboxSDKTarget.class);
 		return (IScratchboxSDKTarget[]) targets.toArray(new IScratchboxSDKTarget[targets.size()]);
 	}
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/CreateTargetCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/CreateTargetCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/CreateTargetCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -17,7 +17,7 @@
 import org.maemo.esbox.scratchbox.core.command.ScratchboxInvalidParameterException;
 import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDK;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 
 import java.util.List;
 
@@ -56,7 +56,7 @@
 		Process process = createProcess(setupTargetCommand, null);
 		getInputFromProcessAndWait(process, false, 0);
 		sdk.refresh();
-		SDKFactory.getInstance().fireListeners();
+		SDKManager.getInstance().fireListeners();
 		return true;
 	}
 	

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/GetCurrentTargetCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/GetCurrentTargetCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/GetCurrentTargetCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -55,7 +55,7 @@
 
 		Process process = createProcess(currentTargetCommand, null);
 
-		String currentTarget = getInputFromProcessAndWait(process, true, 0);
+		String currentTarget = getInputFromProcessAndWait(process, false, 0);
 		
 		return currentTarget;
 	}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/GetVersionScratchboxCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/GetVersionScratchboxCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/GetVersionScratchboxCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -12,17 +12,17 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb1.command;
 
+import java.util.List;
+
 import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommandAbstractor;
 import org.maemo.esbox.internal.scratchbox.sb1.core.SB1PreferenceConstants;
 import org.maemo.esbox.scratchbox.core.command.ScratchboxInvalidParameterException;
 import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxException;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.process.ProcessLauncherCreator;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 
-import java.util.List;
-
 /**
  * Get the version of Scratchbox installed. This command wraps the callback to
  * service sb-conf version.
@@ -62,11 +62,11 @@
 		String currentSboxVersionCommand = this
 				.replaceScratchboxConfigCommand(sboxVersionAction);
 
-		Results results;
+		LaunchResults results;
 		try {
 			results = ProcessLauncherUtils.launchAndReadStandardStreams(
-					ProcessLauncherCreator.createProcessLauncher(commandAbstractor.getProcessLauncherFactory(),
-							currentSboxVersionCommand),
+					commandAbstractor.getProcessLauncherFactory().createProcessLauncher(
+							ProcessLauncherParameters.create(currentSboxVersionCommand)),
 					null);
 		} catch (MicaException e) {
 			throw new ScratchboxException("Failed to launch " + currentSboxVersionCommand, e);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/RemoveTargetCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/RemoveTargetCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/RemoveTargetCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -21,7 +21,7 @@
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.console.CoreConsoleManager;
 import org.maemo.mica.common.core.sdk.ISDK;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -74,7 +74,7 @@
 				removeTargetCommand, null, 0);
 
 		sdk.refresh();
-		SDKFactory.getInstance().fireListeners();
+		SDKManager.getInstance().fireListeners();
 
 		return status.isOK();
 	}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/SB1PreferenceMigrator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/SB1PreferenceMigrator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/SB1PreferenceMigrator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,23 +11,13 @@
 
 package org.maemo.esbox.internal.scratchbox.sb1.core;
 
-import java.util.Properties;
+import org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter;
 
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.maemo.mica.common.core.preferences.IPreferenceMigrator;
-
 /**
- * Convert prefs from older SB1 settings
+ * Convert prefs from older SB1 settings (nothing to do anymore, since we do not
+ * maintain compatibility with 1st edition)
  * @author eswartz
  *
  */
-public class SB1PreferenceMigrator implements IPreferenceMigrator {
-
-	public void adjustDefaultSettings(Properties newPropertyDefaults) {
-	}
-	
-	public void convertExistingPreferences(IPreferenceStore preferences,
-			int oldMajor, Properties existingSettings,
-			Properties newPropertyDefaults) {
-	}
+public class SB1PreferenceMigrator extends PreferenceMigratorAdapter {
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDK.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDK.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDK.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -41,7 +41,7 @@
 import org.maemo.mica.common.core.ui.*;
 import org.maemo.mica.internal.api.common.core.SudoWrappedProcessLauncherFactory;
 import org.maemo.mica.internal.api.common.core.machine.HostMachineBackend;
-import org.maemo.mica.internal.api.common.core.sdk.BaseSDKPlatform;
+import org.maemo.mica.internal.api.common.core.sdk.SDKPlatform;
 import org.maemo.mica.maemosdk.core.IMaemoSDKPlatform;
 import org.maemo.mica.maemosdk.core.MaemoSDKPlatformEngine;
 
@@ -68,10 +68,8 @@
 	private IPath sdkRoot;
 
 	public Scratchbox1SDK(IMachine machine, IPath installLocation, 
-			String version,
 			IPreferenceProvider prefProvider) {
-		super(machine, installLocation, version, 
-				IScratchbox1SDK.NAME, 
+		super(machine, installLocation, IScratchbox1SDK.NAME, 
 				1);
 		this.sdkRoot = null;
 		this.prefProvider = prefProvider;
@@ -501,13 +499,12 @@
 					.createFromVarArgs("kill", "-9");
 			cmdLine.addAll(sessions);
 
-			IProcessLauncher processLauncher = ProcessLauncherCreator
-					.createProcessLauncher(this
-							.getMachineProcessLauncherFactory(), null,
-							cmdLine);
+			IProcessLauncher processLauncher = this
+								.getMachineProcessLauncherFactory().createProcessLauncher(
+										ProcessLauncherParameters.create(cmdLine));
 			Process process;
 			try {
-				process = processLauncher.createProcess();
+				process = processLauncher.createProcess(null);
 				process.waitFor();
 			} catch (final Exception e1) {
 				Display.getDefault().syncExec(new Runnable() {
@@ -590,7 +587,7 @@
 			}
 			// else, it's unknown, and scan later
 		}
-		return new BaseSDKPlatform(platformName, version);
+		return new SDKPlatform(platformName, version);
 	}
 
 	/**
@@ -774,7 +771,8 @@
 		
 		IProcessLauncherFactory factory = machine.getProcessLauncherFactory();
 		factory = new SudoWrappedProcessLauncherFactory(machine, factory, "root");
-		IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(factory, null, cmdLine); 
+		IProcessLauncher processLauncher = factory.createProcessLauncher(
+				ProcessLauncherParameters.create(cmdLine)); 
 		
 		IStreamMonitor[] monitors;
 		if (extraMonitors != null) {
@@ -907,7 +905,9 @@
 			return command.performCommand(arguments);
 		} catch (ScratchboxException e) {
 			// might not be turned on yet
-			if (e.getMessage() != null && e.getMessage().contains("properly set up")) {
+			if (e.getMessage() != null && 
+					(e.getMessage().contains("properly set up")
+							|| e.getMessage().contains("Inconsistency detected by ld.so"))) {
 				IStatus status = Scratchbox1SDK.startup(
 						getMachine(), getInstallRoot(), 
 						new NullProgressMonitor(), 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDKTarget.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDKTarget.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDKTarget.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,8 +11,23 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb1.core;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
 import org.maemo.esbox.internal.api.scratchbox.core.sdk.AbstractScratchboxSDKTarget;
 import org.maemo.esbox.internal.scratchbox.sb1.Activator;
 import org.maemo.esbox.internal.scratchbox.sb1.command.ShowTargetCommand;
@@ -28,10 +43,6 @@
 import org.maemo.mica.common.core.sdk.ISDKPlatform;
 import org.osgi.framework.Version;
 
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
 /**
  * SDK target for Scratchbox 1
  * 
@@ -46,6 +57,10 @@
 	
 	private IPath targetRoot;
 
+	private IProcessLauncherFactory nonRootProcessLauncherFactory;
+
+	private IProcessLauncherFactory rootProcessLauncherFactory;
+
 	public Scratchbox1SDKTarget(Scratchbox1SDK sdk, ISDKPlatform platform,
 			String architecture, String target, IPath targetRoot) {
 		super(sdk, platform, architecture, target);
@@ -68,31 +83,37 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @seeorg.maemo.esbox.maemosdk.core.sdk.IScratchboxSDKTarget#
-	 * getProcessLauncherFactoryForInstall()
+	 * @see
+	 * org.maemo.mica.maemosdk.core.sdk.IScratchboxSDKTarget#getRootstrapPath()
 	 */
-	public IProcessLauncherFactory getProcessLauncherFactoryForInstall() {
-		return new Scratchbox1ProcessLauncherFactory(this, true);
+	public IPath getRootstrapPath() {
+		return getSDKTargetRoot();
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see
-	 * org.maemo.mica.maemosdk.core.sdk.IScratchboxSDKTarget#getRootstrapPath()
+	 * org.maemo.mica.common.core.sdk.ISDKTarget#getProcessLauncherFactory()
 	 */
-	public IPath getRootstrapPath() {
-		return getSDKTargetRoot();
+	public synchronized IProcessLauncherFactory getProcessLauncherFactory() {
+		if (nonRootProcessLauncherFactory == null) {
+			nonRootProcessLauncherFactory = new Scratchbox1ProcessLauncherFactory(this, false);
+		}
+		return nonRootProcessLauncherFactory;
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see
-	 * org.maemo.mica.common.core.sdk.ISDKTarget#getProcessLauncherFactory()
+	 * @seeorg.maemo.esbox.maemosdk.core.sdk.IScratchboxSDKTarget#
+	 * getProcessLauncherFactoryForInstall()
 	 */
-	public IProcessLauncherFactory getProcessLauncherFactory() {
-		return new Scratchbox1ProcessLauncherFactory(this, false);
+	public IProcessLauncherFactory getProcessLauncherFactoryForInstall() {
+		if (rootProcessLauncherFactory == null) {
+			rootProcessLauncherFactory = new Scratchbox1ProcessLauncherFactory(this, true);
+		}
+		return rootProcessLauncherFactory;
 	}
 
 	/*
@@ -218,4 +239,68 @@
 	
 		return commandPattern;
 	}
+	
+	/* (non-Javadoc)
+	 * @see org.maemo.mica.internal.api.common.core.sdk.BaseSDKTarget#addToContextMenu(org.eclipse.swt.widgets.Menu)
+	 */
+	@Override
+	public void addToContextMenu(final Menu menu) {
+		super.addToContextMenu(menu);
+		
+		final MenuItem item = new MenuItem(menu, SWT.NONE);
+		item.setEnabled(false);
+		item.setText("Install doctools (libintl)");
+		
+		// this can take some time to check, so do it asynchronously to avoid
+		// a delay creating or exiting the menu
+		Job job = new Job("Checking doctools...") {
+			/* (non-Javadoc)
+			 * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor)
+			 */
+			@Override
+			protected IStatus run(IProgressMonitor monitor) {
+				boolean needDoctools = false;
+				try {
+					if (!isBroken && !getDevkits().contains("doctools"))
+						needDoctools = true;
+				} catch (MicaException e) {
+					isBroken = true;
+				}
+
+				if (needDoctools) {
+					Display.getDefault().asyncExec(new Runnable() {
+						public void run() {
+							if (!item.isDisposed()) {
+								item.setEnabled(true);
+							
+								item.addSelectionListener(new SelectionAdapter() {
+									@Override
+									public void widgetSelected(SelectionEvent e) {
+										Job job = new Job("Installing doctools for " + getDisplayName()) {
+						
+											@Override
+											protected IStatus run(IProgressMonitor monitor) {
+												try {
+													addDevkit("doctools");
+													return Status.OK_STATUS;
+												} catch (MicaException e) {
+													return Activator.createErrorStatus("Failed to add doctools support", e);
+												}							
+											}
+											
+										};
+										job.schedule();
+									}
+								});
+							}
+						}
+					});
+				}
+				return Status.OK_STATUS;
+			}
+		};
+		job.setUser(false);
+		job.schedule();
+		
+	}
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/ESboxNokiaBinariesInstallationAdapter.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/ESboxNokiaBinariesInstallationAdapter.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/ESboxNokiaBinariesInstallationAdapter.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -29,6 +29,7 @@
 import org.maemo.mica.internal.api.linux.packages.core.IPackageManager;
 import org.maemo.mica.internal.api.linux.packages.core.ISystemPackage;
 import org.maemo.mica.internal.api.linux.packages.core.aptpkgconfig.AptPackageManagerRegistry;
+import org.maemo.mica.maemosdk.core.IMaemoSDKPlatform;
 import org.maemo.mica.maemosdk.ui.adapters.INokiaBinariesInstallationAdapter;
 
 import java.text.MessageFormat;
@@ -87,15 +88,13 @@
 			ISDKTarget sdkTarget = config.getSDKTarget();
 			ISDKPlatform platform = sdkTarget.getPlatform();
 			
-			if (!platform.getName().toLowerCase().matches("fremantle|diablo")) 
-				continue;
-			
-			
 			String packageName = null;
-			if (platform.getName().toLowerCase().matches("fremantle"))
+			if (IMaemoSDKPlatform.FREMANTLE.matches(platform))
 				packageName = NokiaBinariesInstallerEngine.FREMANTLE_NOKIABIN_PKG;
-			else if (platform.getName().toLowerCase().matches("diablo"))
+			else if (IMaemoSDKPlatform.DIABLO.matches(platform))
 				packageName = NokiaBinariesInstallerEngine.DIABLO_NOKIABIN_PKG;
+			else
+				continue;
 			
 			if (packageName != null) {
 				ISystemPackage sysPack = null;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1EnvironmentProvider.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1EnvironmentProvider.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1EnvironmentProvider.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,17 +11,21 @@
 
 package org.maemo.esbox.internal.scratchbox.sb1.launcher;
 
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
 import org.maemo.esbox.internal.scratchbox.sb1.Activator;
 import org.maemo.esbox.internal.scratchbox.sb1.core.Scratchbox1SDKTarget;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.env.EnvironmentProperties;
-import org.maemo.mica.common.core.process.*;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
-import org.maemo.mica.internal.api.common.core.IStandardEnvironmentProvider;
+import org.maemo.mica.internal.api.common.core.env.IStandardEnvironmentProvider;
+import org.maemo.mica.internal.api.common.core.machine.IMachineImpl;
 
-import java.util.*;
-
 /**
  * The standard environment provider for scratchbox caches the environment once
  * per SDK target.
@@ -53,19 +57,18 @@
 			// gather arguments by querying a typical shell launched in POSIX
 			// mode (sh instead of bash)
 			Scratchbox1ProcessLauncher launcher = new Scratchbox1ProcessLauncher(
-					sdkTarget, null, CommandLineArguments.createFromVarArgs(
-							"sh", "-c", "set"), null);
+					sdkTarget, ProcessLauncherParameters.create("sh", "-c", "set"));
 
 			try {
-				Results results = ProcessLauncherUtils
-						.launchAndReadStandardStreams(launcher, null);
+				LaunchResults results = ProcessLauncherUtils.launchAndReadStandardStreams(launcher, null);
 				standardEnv = EnvironmentProperties
 						.createFromShellEnvDump(results.stdout);
 			} catch (MicaException e) {
 				Activator.getErrorLogger().logError(
 						"Failed to read scratchbox environment; using system environment",
 								e);
-				standardEnv = sdkTarget.getMachine().getStandardEnvironment();
+				standardEnv = ((IMachineImpl)sdkTarget.getMachine()).
+					getStandardEnvironmentProvider().getRawEnvironment();
 			}
 
 			cachedStdEnvMap.put(sdkTarget, standardEnv);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1PrepareTargetProcessLaunchAdapter.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1PrepareTargetProcessLaunchAdapter.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1PrepareTargetProcessLaunchAdapter.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -17,8 +17,8 @@
 import org.eclipse.swt.widgets.Display;
 import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxException;
 import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDK;
-import org.maemo.mica.common.core.GeneralUtils;
 import org.maemo.mica.common.core.MicaException;
+import org.maemo.mica.common.core.WorkspaceUtils;
 import org.maemo.mica.common.core.adapters.IPrepareTargetProcessLaunchAdapter;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 
@@ -63,7 +63,7 @@
 		if (failedToSwitch || !sdk.getCurrentTarget().equals(targetName)) {
 			final boolean[] ret = { false };
 
-			if (!GeneralUtils.isJUnitRunning()) {
+			if (!WorkspaceUtils.isJUnitRunning()) {
 				Display.getDefault().syncExec(new Runnable() {
 					public void run() {
 						ret[0] = MessageDialog.openQuestion(null,

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1ProcessLauncher.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1ProcessLauncher.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1ProcessLauncher.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -16,11 +16,10 @@
 import org.maemo.esbox.internal.scratchbox.sb1.core.SB1PreferenceConstants;
 import org.maemo.esbox.internal.scratchbox.sb1.core.Scratchbox1SDK;
 import org.maemo.esbox.internal.scratchbox.sb1.core.Scratchbox1SDKTarget;
-import org.maemo.mica.common.core.GeneralUtils;
+import org.maemo.mica.common.core.EFSFileUtils;
 import org.maemo.mica.common.core.HostUtils;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.Policy;
-import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
 import org.maemo.mica.common.core.process.*;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 
@@ -37,7 +36,7 @@
  * @author eswartz
  * 
  */
-public class Scratchbox1ProcessLauncher extends BaseSDKTargetProcessLauncher implements
+public class Scratchbox1ProcessLauncher extends AbstractSDKTargetProcessLauncher implements
 		IProcessLauncher {
 
 	/**
@@ -47,89 +46,35 @@
 	private static final String RUN_SCRIPT_NAME = "run.sh";
 
 	private Scratchbox1SDKTarget sdkTarget;
-	private List<String> originalArguments;
 
-	private IEnvironmentModifierBlock originalEnvblock;
-
-	private IPath originalCwd;
-
 	private String runScriptContents;
-
-	/*
 	public Scratchbox1ProcessLauncher(Scratchbox1SDKTarget sdkTarget,
-			IPath workingDirectory, List<String> cmdLine,
-			IEnvironmentModifierBlock environmentModifierBlock) {
-		// in SB 1, the working directory, executable, args, and environment
-		// are encoded in a single command to a wrapper script
-		super(encodeArgumentArray(sdkTarget, workingDirectory, cmdLine,
-				environmentModifierBlock), null, null,
-				sdkTarget);
-		if (sdkTarget == null)
-			throw new IllegalArgumentException();
+			ProcessLauncherParameters params) {
+		super(params, sdkTarget);
 		this.sdkTarget = sdkTarget;
-		this.originalArguments = cmdLine;
 	}
-*/
-	public Scratchbox1ProcessLauncher(Scratchbox1SDKTarget sdkTarget,
-			IPath workingDirectory, List<String> cmdLine,
-			IEnvironmentModifierBlock environmentModifierBlock) {
-		super(encodeArgumentArray(sdkTarget), null, null,
-				sdkTarget);
-		this.sdkTarget = sdkTarget;
-		this.originalCwd = workingDirectory;
-		this.originalArguments = cmdLine;
-		this.originalEnvblock = environmentModifierBlock;
-	}
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.maemo.mica.internal.common.core.BaseProcessLauncher#getLaunchInfoPrefix()
+
+	/**
+	 * All the commands, environment, and current directory manipulation 
+	 * are jammed into a script which is run on the target machine.
+	 * This is done because the /scratchbox/login is incapable of receiving
+	 * environment variables or current directories in a reliable way.
+	 * Thus, the parameters we encode here are pretty much the same every time.
+	 * @see org.maemo.mica.common.core.process.AbstractSDKTargetProcessLauncher#encodeLaunchParameters(org.maemo.mica.common.core.process.ProcessLauncherParameters)
 	 */
 	@Override
-	protected String getLaunchInfoPrefix() {
-		return sdkTarget + " ";
-	}
-
-	@Override
-	public String getCommandLineString() {
-		return CommandLineArguments.toCommandLine(originalArguments);
-	}
-
-	/*
-	private static List<String> encodeArgumentArray(ISDKTarget sdkTarget,
-			IPath workingDirectory, List<String> cmdLine,
-			IEnvironmentModifierBlock environmentModifierBlock) {
-
-		// encode working directory inside scratchbox
-		if (workingDirectory == null) {
-			workingDirectory = new Path("/");
-		}
-
-		List<String> envArgs = encodeEnvironmentModifier(environmentModifierBlock);
-
-		// Encode the launch command by replacing the arguments
-		// representing template arguments with the actual values.
-		//
+	public ProcessLauncherParameters encodeLaunchParameters(
+			ProcessLauncherParameters params) {
 		ShellTemplateSubstitutor substitutor = new ShellTemplateSubstitutor();
 
 		substitutor.define("SBOX_ROOT", ((Scratchbox1SDK) sdkTarget.getSDK()).getInstallRoot().removeTrailingSeparator().toPortableString());
-		IPath targetRunScriptPath = sdkTarget.getMachineToSDKTargetFileSystemMapping().convertHostToTargetPath(getRunScriptLocation(sdkTarget));
+		IPath targetRunScriptPath = sdkTarget.getMachineToSDKTargetFileSystemMapping().convertHostToTargetPath(
+				getRunScriptLocation(sdkTarget));
+		
 		// it better not be null
 		substitutor.define("RUN_SCRIPT_DIRECTORY", targetRunScriptPath.toPortableString());
 		substitutor.define("RUN_SCRIPT", RUN_SCRIPT_NAME);
-		substitutor.define("DIRECTORY", workingDirectory.toPortableString());
 
-		// this weird string is used for argument encoding since it's unlikely
-		// to appear in normal environment variables and doesn't need to be escaped
-		String exportsString = CommandLineArguments.toString(envArgs,
-				"}", false); //$NON-NLS-1$
-
-		substitutor.define("EXPORTS", exportsString);
-		substitutor.define("COMMAND", cmdLine.get(0));
-		substitutor.define("ARGS", CommandLineArguments.toCommandLine(cmdLine
-				.subList(1, cmdLine.size())));
-
 		// get the Scratchbox invocation pattern
 		String commandPattern = sdkTarget
 				.getPreferenceValue(SB1PreferenceConstants.SB1_LOGIN_COMMAND);
@@ -139,34 +84,10 @@
 
 		List<String> commandArgs = CommandLineArguments
 				.createFromCommandLine(commandPattern);
-		return commandArgs;
+		
+		return ProcessLauncherParameters.create(commandArgs);
 	}
-*/
 	
-	private static List<String> encodeArgumentArray(ISDKTarget sdkTarget) {
-
-		// Encode the launch command by replacing the arguments
-		// representing template arguments with the actual values.
-		//
-		ShellTemplateSubstitutor substitutor = new ShellTemplateSubstitutor();
-
-		substitutor.define("SBOX_ROOT", ((Scratchbox1SDK) sdkTarget.getSDK()).getInstallRoot().removeTrailingSeparator().toPortableString());
-		IPath targetRunScriptPath = sdkTarget.getMachineToSDKTargetFileSystemMapping().convertHostToTargetPath(getRunScriptLocation(sdkTarget));
-		// it better not be null
-		substitutor.define("RUN_SCRIPT_DIRECTORY", targetRunScriptPath.toPortableString());
-		substitutor.define("RUN_SCRIPT", RUN_SCRIPT_NAME);
-
-		// get the Scratchbox invocation pattern
-		String commandPattern = sdkTarget
-				.getPreferenceValue(SB1PreferenceConstants.SB1_LOGIN_COMMAND);
-
-		// replace variables
-		commandPattern = substitutor.substitute(commandPattern);
-
-		List<String> commandArgs = CommandLineArguments
-				.createFromCommandLine(commandPattern);
-		return commandArgs;
-	}
 	/**
 	 * Get the location where the run script should be copied (on the host), so that it
 	 * is visible to the target.
@@ -183,33 +104,6 @@
 		return loc;
 	}
 
-	/**
-	 * Encode the add/replace and delete operations to run.sh
-	 * 
-	 * @param environmentModifierBlock
-	 * @return list of modifier flags
-	 */
-	/*
-	private static List<String> encodeEnvironmentModifier(
-			IEnvironmentModifierBlock environmentModifierBlock) {
-		List<String> mods = new ArrayList<String>();
-		if (environmentModifierBlock != null) {
-			for (IEnvironmentOperation operation : environmentModifierBlock
-					.getOperations()) {
-				if (operation.getValue() == null)
-					mods.add("-" + operation.getName());
-				else
-					mods.add(operation.getName() + "=" + operation.getValue());
-			}
-		}
-		if (mods.isEmpty()) {
-			mods.add("-"); // must have something for the argument to be
-			// detected by run.sh
-		}
-		return mods;
-	}
-	*/
-	
 	/* (non-Javadoc)
 	 * @see org.maemo.mica.common.core.process.BaseSDKTargetProcessLauncher#setupForLaunch()
 	 */
@@ -219,31 +113,8 @@
 		
 		super.setupForLaunch();
 		
-		/*
-		// Ensure the run script is available.  This script is needed because
-		// /scratchbox/login doesn't pass environment variables the way we need to.
-		// Thus, we need to run under scratchbox a script which itself sets those
-		// variables.
-		GeneralUtils.cachedCopyScriptToMachine(
-				FileLocator.find(Activator.getDefault().getBundle(), 
-						new Path("conf/" + RUN_SCRIPT_NAME),
-						null),
-				sdkTarget.getMachine(),
-				getRunScriptLocation(sdkTarget),
-				false,
-				null);
-		*/
-
-		// encode working directory inside scratchbox
-		if (originalCwd == null) {
-			originalCwd = new Path("/");
-		}
-
 		// create the run script
-		String command = CommandLineArguments.wrapStandardShellCommandLine(
-				originalCwd,
-				originalEnvblock,
-				originalArguments);
+		String command = CommandLineArguments.wrapStandardUnixShellCommandLine(getLaunchParameters());
 		
 		command = "#!/bin/sh\n" + command + "\n";
 		
@@ -264,7 +135,7 @@
 			
 			Policy.close(os);
 			
-			GeneralUtils.makeScriptExecutable(store);
+			EFSFileUtils.makeScriptExecutable(store);
 		} catch (CoreException e) {
 			throw new MicaException("Failed to copy command line to run script", e);
 		}
@@ -274,8 +145,8 @@
 	 * @see org.maemo.mica.common.core.process.BaseProcessLauncher#formatLaunchDumpInfo()
 	 */
 	@Override
-	protected String formatLaunchDumpInfo() {
-		return super.formatLaunchDumpInfo() + HostUtils.getNewline() +
+	protected String formatLaunchDumpInfo(ProcessLauncherParameters parameters) {
+		return super.formatLaunchDumpInfo(parameters) + HostUtils.getNewline() +
 			runScriptContents + HostUtils.getNewline();
 	}
 	
@@ -285,14 +156,9 @@
 	 * @see org.maemo.mica.internal.common.core.BaseProcessLauncher#doCreateProcess()
 	 */
 	@Override
-	protected Process doCreateProcess() throws Exception {
+	protected Process doCreateProcess(ProcessLauncherParameters params, IProgressMonitor monitor) throws Exception {
 		sdkTarget.ensureRealized();
-		
-		return sdkTarget.getMachine().createProcess(
-				getLaunchCurrentWorkingDirectory(),
-				getLaunchCommandArguments(),
-				getLaunchEnvironmentModifierBlock(),
-				isUsePTY());
+		return sdkTarget.getMachine().createProcess(params, monitor);
 	}
 
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1ProcessLauncherFactory.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1ProcessLauncherFactory.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/launcher/Scratchbox1ProcessLauncherFactory.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -10,48 +10,33 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb1.launcher;
 
-import org.eclipse.core.runtime.IPath;
 import org.maemo.esbox.internal.scratchbox.sb1.core.Scratchbox1SDKTarget;
-import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
+import org.maemo.mica.common.core.process.AbstractProcessLauncherFactory;
 import org.maemo.mica.common.core.process.IProcessLauncher;
-import org.maemo.mica.internal.api.common.core.BaseProcessLauncherFactory;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 
-import java.util.ArrayList;
-import java.util.List;
-
 /**
  * @author eswartz
  * 
  */
 public class Scratchbox1ProcessLauncherFactory extends
-		BaseProcessLauncherFactory {
+		AbstractProcessLauncherFactory {
 
 	protected Scratchbox1SDKTarget sdkTarget;
 	private final boolean runAsRoot;
 
 	public Scratchbox1ProcessLauncherFactory(Scratchbox1SDKTarget sdkTarget,
 			boolean runAsRoot) {
-		super(new Scratchbox1EnvironmentProvider(sdkTarget), false);
+		super();
 		this.sdkTarget = sdkTarget;
 		this.runAsRoot = runAsRoot;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.maemo.mica.common.core.IProcessLauncherFactory#createProcessLauncher(org
-	 * .eclipse.core.runtime.IPath, org.eclipse.core.runtime.IPath,
-	 * org.maemo.mica.common.core.List<String>, java.util.Properties)
-	 */
-	protected IProcessLauncher doCreateProcessLauncher(IPath workingDirectory,
-			List<String> cmdLine, IEnvironmentModifierBlock envBlock) {
+	protected IProcessLauncher doCreateProcessLauncher(ProcessLauncherParameters params) {
 
 		if (runAsRoot) {
-			cmdLine = new ArrayList<String>(cmdLine);
-			cmdLine.add(0, "fakeroot");
+			params.getCommandLine().add(0, "fakeroot");
 		}
-		return new Scratchbox1ProcessLauncher(sdkTarget, workingDirectory,
-				cmdLine, envBlock);
+		return new Scratchbox1ProcessLauncher(sdkTarget, params);
 	}
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/provider/Scratchbox1SDKProvider.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/provider/Scratchbox1SDKProvider.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/provider/Scratchbox1SDKProvider.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -164,7 +164,7 @@
 			
 		Scratchbox1SDK sdk = new Scratchbox1SDK(machine, 
 				installPath.addTrailingSeparator(), 
-				null, prefProvider);
+				prefProvider);
 		
 		sdk.init();
 		

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/preferences/Scratchbox1PreferencesPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/preferences/Scratchbox1PreferencesPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/preferences/Scratchbox1PreferencesPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -22,7 +22,7 @@
 import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.maemo.esbox.internal.scratchbox.sb1.IHelpID;
 import org.maemo.esbox.internal.scratchbox.sb1.core.SB1PreferenceConstants;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 import org.maemo.mica.internal.api.common.ui.utils.MaemoPreferencesUtils;
 
 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
@@ -124,7 +124,7 @@
 				String curSandboxRoots = getPreferenceStore().getString(SB1PreferenceConstants.SB1_ROOTS);
 				if (!curSandboxRoots.equals(origRoots)) {
 					// asynchronous
-					SDKFactory.getInstance().refresh(true);
+					SDKManagerInternal.getInstance().refresh(true);
 					origRoots = curSandboxRoots;
 				}
 			}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/BaseScratchbox1SDKInstallerEngine.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/BaseScratchbox1SDKInstallerEngine.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/BaseScratchbox1SDKInstallerEngine.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -35,7 +35,7 @@
 import org.maemo.esbox.internal.scratchbox.sb1.core.Scratchbox1SDK;
 import org.maemo.esbox.scratchbox.core.sdk.ScratchboxSDKFacade;
 import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDK;
-import org.maemo.mica.common.core.GeneralUtils;
+import org.maemo.mica.common.core.EFSFileUtils;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.Policy;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
@@ -47,9 +47,12 @@
 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.ProcessLauncherParameters;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.ProxyUtils;
 import org.maemo.mica.common.core.ui.IProgressReporter;
 import org.maemo.mica.common.core.ui.ProgressReporterStreamTextMonitor;
+import org.maemo.mica.internal.api.common.core.GeneralUtils;
 import org.maemo.mica.internal.api.common.core.SudoWrappedProcessLauncherFactory;
 
 import com.nokia.cpp.internal.api.utils.core.FileUtils;
@@ -86,7 +89,7 @@
 		try {
 			installScript = GeneralUtils.cachedCopyScriptToMachine(url, 
 					machine, 
-					machine.getUserHome().append(GeneralUtils.DEFAULT_MICA_HIDDEN_PATH),
+					MachineUtils.getTemporaryPath(machine),
 					true,
 					new SubProgressMonitor(monitor, 1));
 		} catch (MicaException e) {
@@ -104,23 +107,12 @@
 	protected IProcessLauncher getRootProcessLauncher(List<String> cmdLine) {
 		IProcessLauncherFactory factory = machine.getProcessLauncherFactory();
 		factory = new SudoWrappedProcessLauncherFactory(machine, factory, "root");
-		IEnvironmentModifierBlock envBlock = getProxySetupEnvironmentBlock(factory);
+		IEnvironmentModifierBlock envBlock = factory.getDefaultEnvironmentModifierBlock();
+		ProxyUtils.defineProxyVariables(envBlock);
 		IProcessLauncher launcher = factory.createProcessLauncher(
-				null, cmdLine, envBlock);
+				ProcessLauncherParameters.create(cmdLine, envBlock));
 		return launcher;
 	}
-
-	/**
-	 * Get the environment block which has proxy variables installed
-	 * @param factory
-	 * @return modified {@link IEnvironmentModifierBlock}
-	 */
-	protected IEnvironmentModifierBlock getProxySetupEnvironmentBlock(
-			IProcessLauncherFactory factory) {
-		IEnvironmentModifierBlock envBlock = factory.defaultEnvironmentModifierBlock();
-		ProcessLauncherUtils.defineProxyVariables(envBlock);
-		return envBlock;
-	}
 	
 	/**
 	 * Kill a running Scratchbox installation and turn off its daemons.
@@ -233,7 +225,7 @@
 			Policy.close(os);
 			
 			// ensure it's still executable
-			GeneralUtils.makeScriptExecutable(machine, installScript);
+			EFSFileUtils.makeScriptExecutable(machine, installScript);
 		} catch (CoreException e) {
 			status = Activator.createErrorStatus("Failed to rewrite installer script", e);
 			reporter.log(status);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/NewScratchbox1SDKWizard.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/NewScratchbox1SDKWizard.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/NewScratchbox1SDKWizard.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -35,11 +35,10 @@
 import org.maemo.mica.common.core.Policy;
 import org.maemo.mica.common.core.machine.IBuildMachine;
 import org.maemo.mica.common.core.machine.MachineRegistry;
-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.ProcessLauncherParameters;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.internal.api.common.core.SudoWrappedProcessLauncherFactory;
@@ -180,8 +179,8 @@
 					try {
 						IProcessLauncherFactory factory = buildMachine.getProcessLauncherFactory();
 						factory = new SudoWrappedProcessLauncherFactory(buildMachine, factory, "root");
-						IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(
-								factory, null, CommandLineArguments.createFromVarArgs("/sbin/reboot")); 
+						IProcessLauncher processLauncher = factory.createProcessLauncher(
+								ProcessLauncherParameters.create("/sbin/reboot")); 
 
 						int exit = ProcessLauncherUtils.launchAndMonitorStandardStreams(
 								processLauncher,

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/PreviousInstallationDetectionPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/PreviousInstallationDetectionPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/PreviousInstallationDetectionPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -28,6 +28,7 @@
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Label;
 import org.maemo.mica.common.core.machine.IBuildMachine;
+import org.maemo.mica.maemosdk.core.IMaemoSDKPlatform;
 
 /**
  * This page is shown when a previous scratchbox installation was detected on build machine
@@ -126,8 +127,7 @@
 	 * @return
 	 */
 	private boolean canUpgrade(){
-		int DIABLO_SERIE = 4;
-		return sdkInstallerData.getSerieNumber() > DIABLO_SERIE
+		return sdkInstallerData.getSerieNumber() > IMaemoSDKPlatform.DIABLO.getVersion().getMajor()
 		&& !sdkInstallerData.isNonDefaultInstallation();
 	}
 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1SDKInstallerEngine.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1SDKInstallerEngine.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1SDKInstallerEngine.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -42,9 +42,9 @@
 import org.maemo.mica.common.core.process.IStreamMonitor;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
 import org.maemo.mica.common.core.process.StreamLineMonitorAdapter;
-import org.maemo.mica.common.core.sdk.SDKFactory;
 import org.maemo.mica.common.core.ui.IProgressReporter;
 import org.maemo.mica.common.core.ui.ProgressReporterStreamTextMonitor;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 import org.maemo.mica.internal.api.linux.packages.core.*;
 import org.maemo.mica.internal.api.linux.packages.core.aptpkgconfig.AptPackageManagerRegistry;
 import org.maemo.mica.internal.api.linux.packages.core.aptpkgconfig.IAptPackageManager;
@@ -174,7 +174,7 @@
 	public IStatus installScratchbox(IProgressMonitor monitor) {
 		try {
 			// do not refresh during installation
-			SDKFactory.getInstance().lock();
+			SDKManagerInternal.getInstance().lock();
 			
 			if(installerData.isUpgrade())
 				return safeInstallWithPkgManager(monitor);
@@ -187,11 +187,11 @@
 			// Now, refresh.  This is needed even if the wizard was canceled,
 			// or else Scratchbox is left turned off.
 			
-			SDKFactory.getInstance().unlock();
+			SDKManagerInternal.getInstance().unlock();
 			
 			boolean wasCanceled = monitor.isCanceled();
 			monitor.setCanceled(false);
-			SDKFactory.getInstance().refreshFull(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
+			SDKManagerInternal.getInstance().refreshFull(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
 			monitor.setCanceled(wasCanceled);
 		}
 	}
@@ -213,9 +213,10 @@
 		//FIXME should add an Field on WizardWorkPage
 		int timeout= 30;
 		boolean forceUpgrade = false;
+		boolean forceInstall = true;
 		
 		MachinePackageInstaller pkgInstaller = new MachinePackageInstaller(
-				pkgs, repositoriesToAdd, machine, true, forceUpgrade, timeout, reporter);
+				pkgs, repositoriesToAdd, machine, true, forceUpgrade, forceInstall, timeout, reporter);
 		
 		status = pkgInstaller.ensureInstalledPackages(shell, monitor);
 		

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerData.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerData.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerData.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -17,6 +17,7 @@
 import java.util.List;
 
 import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
 import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDK;
 
 /**
@@ -260,7 +261,8 @@
 	 * @return flag
 	 */
 	public boolean isNonDefaultInstallation() {
-		return !getScratchboxLocation().equals("/scratchbox");
+		// use Path compare since terminating slash may differ
+		return !new Path(getScratchboxLocation()).equals(new Path("/scratchbox"));
 	}
 	/**
 	 * Get the name of the X86 target, given the default basename

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerEngine.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerEngine.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerEngine.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -33,11 +33,12 @@
 import org.maemo.mica.common.core.machine.IBuildMachine;
 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.ProcessLauncherParameters;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.process.ProxyUtils;
 import org.maemo.mica.common.core.ui.IProgressReporter;
-import org.maemo.mica.internal.api.linux.packages.core.*;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
+import org.maemo.mica.internal.api.linux.packages.core.ISystemPackage;
 import org.maemo.mica.internal.api.linux.packages.core.aptpkgconfig.AptPackageManagerRegistry;
 import org.maemo.mica.internal.api.linux.packages.core.aptpkgconfig.IAptPackageManager;
 import org.maemo.mica.internal.api.linux.packages.ui.aptinstall.MachinePackageInstaller;
@@ -81,7 +82,7 @@
 	public IStatus installTargets(IProgressMonitor monitor) {
 		try {
 			// avoid refreshing during installation
-			SDKFactory.getInstance().lock();
+			SDKManagerInternal.getInstance().lock();
 			
 			return safeInstallTargets(monitor);
 		} finally {
@@ -92,11 +93,11 @@
 			monitor.subTask("Refreshing installed targets...");
 			
 			// allow refreshes
-			SDKFactory.getInstance().unlock();
+			SDKManagerInternal.getInstance().unlock();
 			
 			boolean wasCanceled = monitor.isCanceled();
 			monitor.setCanceled(false);
-			SDKFactory.getInstance().refreshFull(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
+			SDKManagerInternal.getInstance().refreshFull(new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN));
 			monitor.setCanceled(wasCanceled);
 		}
 	}
@@ -143,17 +144,16 @@
 			IProcessLauncherFactory factory = machine.getProcessLauncherFactory();
 			
 			List<String> cmdLine = installerData.createInstallerCommandLine(installScript);
-			IEnvironmentModifierBlock envBlock = getProxySetupEnvironmentBlock(factory);
+			IEnvironmentModifierBlock envBlock = factory.getDefaultEnvironmentModifierBlock();
+			ProxyUtils.defineProxyVariables(envBlock);
 			
 			int exit;
 			try {
 				rememberProcesses();
 				
 				exit = ProcessLauncherUtils.launchAndMonitorStandardStreams(
-						ProcessLauncherCreator.createProcessLauncher(factory, 
-								null,
-								cmdLine,
-								envBlock),
+						factory.createProcessLauncher(
+								ProcessLauncherParameters.create(cmdLine, envBlock)),
 						new IStreamMonitor[] {
 							new MaemoScriptInstallerMonitor(shell, machine,  reporter)
 						},
@@ -284,7 +284,7 @@
 					return;
 				}
 				
-				MachinePackageInstaller.installPackages(toInstall, shell, reporter, monitor);
+				MachinePackageInstaller.installPackages(toInstall, true, shell, reporter, monitor);
 			}
 			
 			monitor.worked(2);
@@ -316,7 +316,7 @@
 					return;
 				}
 				
-				MachinePackageInstaller.installPackages(toInstall, shell, reporter, monitor);
+				MachinePackageInstaller.installPackages(toInstall, true, shell, reporter, monitor);
 			}
 			monitor.worked(3);
 			

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerSelectionWizardPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerSelectionWizardPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/Scratchbox1TargetInstallerSelectionWizardPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -125,7 +125,7 @@
 	 */
 	protected void selectDefaultSDK() {
 		if (sdk == null) {
-			List<IScratchbox1SDK> sdks = SDKFactory.getInstance().getSDKsOfType(
+			List<IScratchbox1SDK> sdks = SDKManager.getInstance().getSDKsOfType(
 					IScratchbox1SDK.class);
 			if (sdks.size() > 0)
 				sboxCombo.setSelection(new StructuredSelection(sdks.get(0)));
@@ -191,12 +191,12 @@
 			}
 			
 		};
-		SDKFactory.getInstance().addListener(sdkListener);
+		SDKManager.getInstance().addListener(sdkListener);
 		
 		getShell().addDisposeListener(new DisposeListener() {
 
 			public void widgetDisposed(DisposeEvent e) {
-				SDKFactory.getInstance().removeListener(sdkListener);
+				SDKManager.getInstance().removeListener(sdkListener);
 			}
 			
 		});

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/DiabloInstallerScriptWorkPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/DiabloInstallerScriptWorkPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/DiabloInstallerScriptWorkPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -178,6 +178,7 @@
 	 * @seeorg.maemo.esbox.internal.scratchbox.sb1.ui.wizard.nokiabin.
 	 * INokiaBinariesWizardDelegate#doWork()
 	 */
+	@SuppressWarnings("unchecked")
 	public IStatus doWork() {
 
 		final IStatus[] statuses = { Policy.getCancelStatus(Activator

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/FremantleLicenseAgreementPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/FremantleLicenseAgreementPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/FremantleLicenseAgreementPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -20,7 +20,7 @@
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.program.Program;
 import org.eclipse.swt.widgets.*;
-import org.maemo.mica.internal.api.common.core.GridLayoutWrappedTextUtils;
+import org.maemo.mica.internal.api.common.core.ui.GridLayoutWrappedTextUtils;
 
 import java.text.MessageFormat;
 import java.util.HashSet;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/FremantleWorkPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/FremantleWorkPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/FremantleWorkPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -161,6 +161,7 @@
 	 * @seeorg.maemo.esbox.internal.scratchbox.sb1.ui.wizard.nokiabin.
 	 * INokiaBinariesWizardDelegate#doWork()
 	 */
+	@SuppressWarnings("unchecked")
 	public IStatus doWork() {
 
 		final IStatus[] statuses = { Policy.getCancelStatus(Activator

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/NokiaBinariesInstallerEngine.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/NokiaBinariesInstallerEngine.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/NokiaBinariesInstallerEngine.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -14,13 +14,14 @@
 import org.eclipse.core.runtime.*;
 import org.eclipse.swt.widgets.Shell;
 import org.maemo.esbox.internal.scratchbox.sb1.Activator;
-import org.maemo.mica.common.core.GeneralUtils;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
 import org.maemo.mica.common.core.machine.IBuildMachine;
+import org.maemo.mica.common.core.machine.MachineUtils;
 import org.maemo.mica.common.core.process.*;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.common.core.ui.IProgressReporter;
+import org.maemo.mica.internal.api.common.core.GeneralUtils;
 
 import java.net.URL;
 import java.util.List;
@@ -100,7 +101,8 @@
 			IProcessLauncherFactory factory = buildMachine.getProcessLauncherFactory();
 			
 			List<String> cmdLine = installerData.createInstallerCommandLine(installScript);
-			IEnvironmentModifierBlock envBlock = getProxySetupEnvironmentBlock(factory);
+			IEnvironmentModifierBlock envBlock = factory.getDefaultEnvironmentModifierBlock();
+			ProxyUtils.defineProxyVariables(envBlock);
 			
 			int exit;
 			NokiaBinariesInstallerScriptMonitor nokiaBinariesInstallerScriptMonitor = new NokiaBinariesInstallerScriptMonitor(shell, buildMachine,  reporter);
@@ -109,10 +111,8 @@
 			try {
 				
 				exit = ProcessLauncherUtils.launchAndMonitorStandardStreams(
-						ProcessLauncherCreator.createProcessLauncher(factory, 
-								null,
-								cmdLine,
-								envBlock),
+						factory.createProcessLauncher(
+								ProcessLauncherParameters.create(cmdLine, envBlock)),
 						new IStreamMonitor[] {
 							nokiaBinariesInstallerScriptMonitor
 						},
@@ -185,8 +185,8 @@
 		IPath installScript = null;
 		try {
 			installScript = GeneralUtils.cachedCopyScriptToMachine(installerURL,
-					buildMachine, buildMachine.getUserHome().append(
-							GeneralUtils.DEFAULT_MICA_HIDDEN_PATH), true,
+					buildMachine, 
+					MachineUtils.getTemporaryPath(buildMachine), true,
 					new SubProgressMonitor(monitor, 1));
 		} catch (MicaException e) {
 			IStatus status = Activator.createErrorStatus(
@@ -196,18 +196,4 @@
 		}
 		return installScript;
 	}
-	
-	/**
-	 * Get the environment block which has proxy variables installed
-	 * @param factory
-	 * @return modified {@link IEnvironmentModifierBlock}
-	 */
-	protected IEnvironmentModifierBlock getProxySetupEnvironmentBlock(
-			IProcessLauncherFactory factory) {
-		IEnvironmentModifierBlock envBlock = factory.defaultEnvironmentModifierBlock();
-		ProcessLauncherUtils.defineProxyVariables(envBlock);
-		return envBlock;
-	}
-	
-
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/NokiaBinariesPackageInstaller.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/NokiaBinariesPackageInstaller.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/NokiaBinariesPackageInstaller.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -52,7 +52,7 @@
 			boolean updateLists, boolean forceUpgrade, 
 			int timeout,
 			IProgressReporter reporter) {
-		super(packages, new String[]{repoURL}, null, updateLists, forceUpgrade, timeout, reporter);
+		super(packages, new String[]{repoURL}, null, updateLists, forceUpgrade, true, timeout, reporter);
 		
 		if(sdkTargets ==null || sdkTargets.isEmpty())
 			throw new IllegalStateException("SDK target list must contains any sdk target");
@@ -97,7 +97,7 @@
 	protected IAptPackageManager getPackageManager(IProgressMonitor monitor) {
 		monitor.beginTask("", 1);
 		ISDKTarget target = sdkTargetsQueue.peek();
-		SDKFactory.getInstance().establishPlatform(target,
+		SDKUtils.establishPlatform(target,
 				new SubProgressMonitor(monitor, 1));
 		if (monitor.isCanceled())
 			return null;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/SDKTargetSelectionPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/SDKTargetSelectionPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/ui/wizard/nokiabin/SDKTargetSelectionPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -30,6 +30,7 @@
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
 import org.maemo.mica.common.core.sdk.*;
 import org.maemo.mica.common.ui.sdk.BuildTargetUI;
+import org.maemo.mica.maemosdk.core.IMaemoSDKPlatform;
 
 import java.lang.reflect.InvocationTargetException;
 import java.util.*;
@@ -39,16 +40,10 @@
  * @author Fabrício S Epaminondas (UFCG)
  */
 public class SDKTargetSelectionPage extends WizardPage {
-	/**
-	 * 
-	 */
-	public static final String DIABLO = "DIABLO";
-	/**
-	 * 
-	 */
-	public static final String FREMANTLE = "FREMANTLE";
-
-	public static final String[] SDK_NAMES = new String[] { DIABLO, FREMANTLE };
+	public static final String[] SDK_NAMES = new String[] { 
+		IMaemoSDKPlatform.DIABLO.getName(),
+		IMaemoSDKPlatform.FREMANTLE.getName()
+	};
 	
 	private CheckboxTreeViewer targetTree;
 	private Combo fmaemoSDKCombo;
@@ -155,12 +150,11 @@
 				public void run(IProgressMonitor monitor)
 						throws InvocationTargetException,
 						InterruptedException {
-					ISDKTarget[] allSDKTargets = SDKFactory.getInstance().getAllSDKTargets();
+					ISDKTarget[] allSDKTargets = SDKManager.getInstance().getAllSDKTargets();
 					monitor.beginTask("Establishing platforms of sdk targets", allSDKTargets.length);
 					for (ISDKTarget t : allSDKTargets) {
 						if (t instanceof IScratchboxSDKTarget)
-							SDKFactory.getInstance().establishPlatform(t,
-									new SubProgressMonitor(monitor, 1));
+							SDKUtils.establishPlatform(t, new SubProgressMonitor(monitor, 1));
 					}
 				}
 
@@ -193,7 +187,7 @@
 		//HACK: Get refreshed targets with detected platform 
 		for(int i = 0; i < defaults.length; i++){
 			ISDKTarget t = defaults[i];
-			for(ISDKTarget refreshed : SDKFactory.getInstance().getAllSDKTargets()){
+			for(ISDKTarget refreshed : SDKManager.getInstance().getAllSDKTargets()){
 				if(t != null && t.compareTo(refreshed) == 0)
 					defaults[i] = refreshed;
 			}
@@ -201,7 +195,7 @@
 		
 		ISDKTarget target = null;
 		if(defaults.length != 0 && (target = defaults[0]) !=null){
-			int index = Arrays.asList(SDK_NAMES).indexOf(target.getPlatform().getName().toUpperCase());
+			int index = Arrays.asList(SDK_NAMES).indexOf(target.getPlatform().getName());
 			if(index != -1){ 
 				fmaemoSDKCombo.select(index);
 				updateUI();
@@ -320,10 +314,10 @@
 	static final class Factory {
 		public static IWizardPage createNextPage(String sdkName, NokiaBinariesInstallWizard wizard) {
 			IWizardPage page = null;
-			if (sdkName != null && sdkName.equalsIgnoreCase(FREMANTLE)) {
+			if (sdkName != null && sdkName.equals(IMaemoSDKPlatform.FREMANTLE.getName())) {
 				page = new FremantleLicenseAgreementPage(wizard);
 			}
-			if (sdkName != null && sdkName.equalsIgnoreCase(DIABLO)) {
+			if (sdkName != null && sdkName.equals(IMaemoSDKPlatform.DIABLO.getName())) {
 				page = new DiabloInstallerScriptWorkPage(wizard);
 			}
 			return page;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/plugin.xml
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/plugin.xml	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/plugin.xml	2009-07-08 11:19:18 UTC (rev 1854)
@@ -38,7 +38,7 @@
       <preferenceSetProvider
             defaultsXMLFile="conf/sb2_prefs.xml"
             preferenceConstantsClass="org.maemo.esbox.internal.api.scratchbox.sb2.core.SB2PreferenceConstants"
-            preferenceMigratorClass="org.maemo.mica.internal.api.common.core.PreferenceMigratorAdapter"
+            preferenceMigratorClass="org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter"
             preferenceStoreBundle="org.maemo.esbox.scratchbox.sb2"
             version="17">
       </preferenceSetProvider>

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/Activator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/Activator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/Activator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -27,6 +27,8 @@
 import org.maemo.mica.common.core.preferences.CorePreferenceManager;
 import org.maemo.mica.common.core.preferences.IPreferenceProvider;
 import org.maemo.mica.common.core.process.CommandLineArguments;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
 import org.maemo.mica.common.core.sdk.*;
 import org.osgi.framework.BundleContext;
@@ -266,9 +268,9 @@
 			cmdLine.add(1, "-m");
 			cmdLine.add(2, mode);
 		}
-		ProcessLauncherUtils.launchAndReadStandardStreams(
-				sdkTarget.getSDK().getMachineProcessLauncherFactory(),
-				cmdLine,
+		IProcessLauncher processLauncher = sdkTarget.getSDK().getMachineProcessLauncherFactory().createProcessLauncher(
+		ProcessLauncherParameters.create(cmdLine));
+		ProcessLauncherUtils.launchAndReadStandardStreams(processLauncher, 
 				new TimeoutProgressMonitor(10 * 1000));
 		
 		synchronized (activeSessionMap) {

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/AbstractSb2Command.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/AbstractSb2Command.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/AbstractSb2Command.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -10,19 +10,21 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb2.command;
 
+import java.security.InvalidParameterException;
+import java.util.Arrays;
+
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommandAbstractor;
 import org.maemo.esbox.internal.api.scratchbox.sb2.core.SB2PreferenceConstants;
 import org.maemo.esbox.scratchbox.core.command.AbstractSDKCommand;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.TimeoutProgressMonitor;
-import org.maemo.mica.common.core.process.*;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.IProcessLauncherFactory;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 
-import java.security.InvalidParameterException;
-import java.util.Arrays;
-import java.util.List;
-
 public abstract class AbstractSb2Command extends AbstractSDKCommand {
 
 	private final IProcessLauncherFactory processLauncherFactory;
@@ -52,13 +54,13 @@
 		return replaceScratchboxCommand(sboxCommand, action, options);
 	}
 
-	protected Results runProcess(String...args) throws MicaException{
+	protected LaunchResults runProcess(String...args) throws MicaException{
 		return runProcess(this.processLauncherFactory,args);
 	}
 	
-	protected Results runProcess( IProgressMonitor monitor,String...args) throws MicaException{
-		List<String> cli = Arrays.asList(args);
-		IProcessLauncher launcher = processLauncherFactory.createProcessLauncher(null, cli,null);
+	protected LaunchResults runProcess( IProgressMonitor monitor,String...args) throws MicaException{
+		IProcessLauncher launcher = processLauncherFactory.createProcessLauncher(
+				ProcessLauncherParameters.create(args));
 		return ProcessLauncherUtils.launchAndReadStandardStreams(launcher, monitor);
 	}
 	
@@ -69,11 +71,12 @@
 	 * @return Results of the process execution
 	 * @throws MicaException
 	 */
-	public static Results runProcess(IProcessLauncherFactory processLauncherFactory,String...args)throws MicaException{
+	public static LaunchResults runProcess(IProcessLauncherFactory processLauncherFactory,String...args)throws MicaException{
+		IProcessLauncher processLauncher = processLauncherFactory.createProcessLauncher(
+				ProcessLauncherParameters.create(Arrays.asList(args)));
+		
 		return ProcessLauncherUtils.launchAndReadStandardStreams(
-				processLauncherFactory,
-				Arrays.asList(args),
-				new TimeoutProgressMonitor(60 * 1000));
+				processLauncher, new TimeoutProgressMonitor(60 * 1000));
 	}
 	
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/CreateMaemoRootstrapSb2Command.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/CreateMaemoRootstrapSb2Command.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/CreateMaemoRootstrapSb2Command.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -18,9 +18,9 @@
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.console.CoreConsoleManager;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.ProxyUtils;
 import org.maemo.mica.common.core.sdk.ISDK;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -75,14 +75,14 @@
 		params.add(targetName);
 
 		IEnvironmentModifierBlock envBlock = commandAbstractor
-				.getProcessLauncherFactory().defaultEnvironmentModifierBlock();
-		ProcessLauncherUtils.defineProxyVariables(envBlock);
+				.getProcessLauncherFactory().getDefaultEnvironmentModifierBlock();
+		ProxyUtils.defineProxyVariables(envBlock);
 
 		setMonitorAndConsole(monitor, CoreConsoleManager.getInstance().getConsole(true,
 				null, "Installing rootstrap " + targetName));
 		doPerformCommand(params, envBlock, 0);
 
-		SDKFactory.getInstance().refresh(false);
+		SDKManagerInternal.getInstance().refresh(false);
 
 		return true;
 	}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/CreateTargetSb2Command.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/CreateTargetSb2Command.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/CreateTargetSb2Command.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,17 +11,21 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb2.command;
 
+import java.util.List;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
 import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommandAbstractor;
 import org.maemo.esbox.internal.api.scratchbox.sb2.core.SB2PreferenceConstants;
-import org.maemo.esbox.internal.scratchbox.sb2.Activator;
 import org.maemo.esbox.scratchbox.core.command.ScratchboxInvalidParameterException;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.process.*;
+import org.maemo.mica.common.core.process.CommandLineArguments;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.ShellTemplateSubstitutor;
 import org.maemo.mica.common.core.sdk.ISDK;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 
-import java.util.List;
-
 /**
  * Creates a new target, if it does not exist. This command wraps the callback
  * to service:
@@ -78,25 +82,24 @@
 		List<String> cmdLine = CommandLineArguments
 				.createFromCommandLine(pattern);
 
-		IProcessLauncher processLauncher = ProcessLauncherCreator
-				.createProcessLauncher(commandAbstractor
-						.getProcessLauncherFactory(), null, cmdLine);
+		IProcessLauncher processLauncher = commandAbstractor
+						.getProcessLauncherFactory().createProcessLauncher(
+								ProcessLauncherParameters.create(cmdLine));
 
-		Process process = processLauncher.createProcess();
+		ProcessLauncherUtils.queueConsoleMonitor(processLauncher, true, null,
+						"Installing scratchbox2 target " + targetName);
+						
+		int exit = ProcessLauncherUtils.launchAndMonitorStandardStreams(
+				processLauncher, 
+				null,
+				new NullProgressMonitor());
 
-		processLauncher.redirectToConsole(true, null,
-				"Installing scratchbox2 target " + targetName);
-
-		try {
-			process.waitFor();
-		} catch (InterruptedException e) {
-			Activator.getErrorLogger().logError("Target installation aborted",
-					e);
-		}
-
 		sdk.refresh();
-		SDKFactory.getInstance().fireListeners();
+		SDKManager.getInstance().fireListeners();
 		
+		if (exit != 0) {
+			throw new MicaException("Scratchbox 2 target installation failed with exit code " + exit);
+		}
 		return true;
 	}
 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListAvailableMaemoRootstrapsSb2Command.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListAvailableMaemoRootstrapsSb2Command.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListAvailableMaemoRootstrapsSb2Command.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -20,7 +20,7 @@
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
 import org.maemo.mica.common.core.process.CommandLineArguments;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.ProxyUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -62,8 +62,8 @@
 
 		// ensure the proxy is established
 		IEnvironmentModifierBlock proxyEnvBlock = commandAbstractor
-				.getProcessLauncherFactory().defaultEnvironmentModifierBlock();
-		ProcessLauncherUtils.defineProxyVariables(proxyEnvBlock);
+				.getProcessLauncherFactory().getDefaultEnvironmentModifierBlock();
+		ProxyUtils.defineProxyVariables(proxyEnvBlock);
 
 		List<String> available = doPerformCommand(
 				CommandLineArguments.createFromCommandLine(availableAction),

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListCputranspSb2Command.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListCputranspSb2Command.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListCputranspSb2Command.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,16 +11,19 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb2.command;
 
-import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.runtime.Path;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.core.runtime.IPath;
 import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommandAbstractor;
 import org.maemo.esbox.scratchbox.core.command.ScratchboxInvalidParameterException;
 import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxException;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.machine.IMachine;
+import org.maemo.mica.common.core.machine.MachineUtils;
 
-import java.util.*;
-
 /**
  * List the installed compilers. There's no known command for this, but we can
  * look in specific places.
@@ -28,8 +31,11 @@
  */
 public class ListCputranspSb2Command extends AbstractSb2Command {
 
-	public ListCputranspSb2Command(ICommandAbstractor commandAbstractor) {
+	private final IMachine machine;
+
+	public ListCputranspSb2Command(ICommandAbstractor commandAbstractor, IMachine machine) {
 		super(commandAbstractor);
+		this.machine = machine;
 	}
 
 	/*
@@ -50,25 +56,11 @@
 		Set<String> expected = new HashSet<String>();
 		expected.add("sb2-qemu-arm");
 		expected.add("sbrsh");
-
-		Properties env = ProcessLauncherUtils
-				.getSynthesizedEnvironment(commandAbstractor
-						.getProcessLauncherFactory());
-		String pathenv = env.getProperty("PATH");
-		if (pathenv == null) {
-			pathenv = "/usr/bin:/bin"; // XXX
-		}
-		if (pathenv != null) {
-			String[] paths = pathenv.split(":");
-			for (String exp : expected) {
-				for (String path : paths) {
-					IFileStore bin = commandAbstractor.getFileSystemAccess()
-							.getFileStore(new Path(path).append(exp));
-					if (bin.fetchInfo().exists()) {
-						cputranspAvailable.add(bin.toURI().getPath());
-						break;
-					}
-				}
+		
+		for (String exp : expected) {
+			IPath path = MachineUtils.findProgramOnPath(machine, exp);
+			if (path != null) {
+				cputranspAvailable.add(path.toPortableString());
 			}
 		}
 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListTargetsCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListTargetsCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ListTargetsCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -12,17 +12,19 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb2.command;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommandAbstractor;
 import org.maemo.esbox.internal.api.scratchbox.sb2.core.SB2PreferenceConstants;
 import org.maemo.esbox.scratchbox.core.command.ScratchboxInvalidParameterException;
 import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxException;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.process.ProcessLauncherCreator;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 
-import java.util.*;
-
 /**
  * List the installed targets. This command wraps the callback to service (sb1)
  * sb-conf list --targets or sb2-config -l (sb2)
@@ -56,9 +58,9 @@
 		String listTargetsCommandString = this.replaceScratchboxConfigCommand(
 				listAction, new String[] { targetsOption });
 
-		Results results = ProcessLauncherUtils.launchAndReadStandardStreams(
-				ProcessLauncherCreator.createProcessLauncher(commandAbstractor.getProcessLauncherFactory(),
-						listTargetsCommandString),
+		LaunchResults results = ProcessLauncherUtils.launchAndReadStandardStreams(
+				commandAbstractor.getProcessLauncherFactory().createProcessLauncher(
+						ProcessLauncherParameters.create(listTargetsCommandString)),
 						null);
 		
 		List<String> targetsAvailable;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoRootstrapCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoRootstrapCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoRootstrapCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -16,7 +16,7 @@
 import org.maemo.mica.common.core.ICache;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.process.IProcessLauncherFactory;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 
 import java.util.*;
 
@@ -85,7 +85,7 @@
 	 * @return
 	 */
 	public List<String> list(int type, IProgressMonitor monitor) throws MicaException{
-		Results result = null;
+		LaunchResults result = null;
 		switch(type){
 		case INSTALLED_TARGETS:
 			result = runProcess(monitor,MAEMO_ROOTSTRAP,COMMAND_LIST);
@@ -106,7 +106,7 @@
 	 * @throws MicaException
 	 */
 	public void remove(String name, IProgressMonitor monitor) throws MicaException{
-		Results results = runProcess(monitor, MAEMO_ROOTSTRAP, OPTION_FORCE, COMMAND_REMOVE, name);
+		LaunchResults results = runProcess(monitor, MAEMO_ROOTSTRAP, OPTION_FORCE, COMMAND_REMOVE, name);
 		if(results.exitCode!=0)
 			throw new MicaException(results.reportResults("Error removing rootstrap"));
 	}
@@ -127,7 +127,7 @@
 		
 		if (location == null) {
 			// do the hard work
-			Results result = runProcess(MAEMO_ROOTSTRAP,PATH,name);
+			LaunchResults result = runProcess(MAEMO_ROOTSTRAP,PATH,name);
 			if (result.exitCode != 0) {
 				throw new MicaException(result.reportResults("Cannot determine rootstrap location for " + name)); 
 			}
@@ -159,7 +159,7 @@
 		
 		if (arch == null) {
 			// do the hard work
-			Results result = runProcess(MAEMO_ROOTSTRAP,ARCH,name);
+			LaunchResults result = runProcess(MAEMO_ROOTSTRAP,ARCH,name);
 			if(result.exitCode==0)
 				arch = result.stdout.trim();  // remove \r and \n and anything else
 			else
@@ -181,7 +181,7 @@
 	 * @throws MicaException
 	 */
 	public boolean newRootstrap(String name) throws MicaException {
-		Results result =  runProcess(MAEMO_ROOTSTRAP,COMMAND_NEW,name);
+		LaunchResults result =  runProcess(MAEMO_ROOTSTRAP,COMMAND_NEW,name);
 		return result.exitCode==0;
 		
 	}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoSdkCommand.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoSdkCommand.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/MaemoSdkCommand.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -13,7 +13,7 @@
 import org.maemo.esbox.internal.api.scratchbox.core.commands.ICommandAbstractor;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.process.IProcessLauncherFactory;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 
 import java.util.Arrays;
 import java.util.List;
@@ -72,7 +72,7 @@
 	 * @throws MicaException
 	 */
 	public boolean isUp(String targetName) throws MicaException{
-		Results result = runProcess(MAEMO_SDK,COMMAND_SHOW,SPECIFIER_GUI,targetName);
+		LaunchResults result = runProcess(MAEMO_SDK,COMMAND_SHOW,SPECIFIER_GUI,targetName);
 		return result.stdout.replaceAll("\\n", "").toLowerCase().equals(STATUS_UP);
 	}
 	
@@ -82,7 +82,7 @@
 	 * @throws MicaException
 	 */
 	public String getDefaultRootstrap() throws MicaException{
-		Results result = runProcess(MAEMO_SDK,COMMAND_SHOW,SPECIFIER_ROOTSTRAP);
+		LaunchResults result = runProcess(MAEMO_SDK,COMMAND_SHOW,SPECIFIER_ROOTSTRAP);
 		return result.stdout;
 	}
 	
@@ -92,7 +92,7 @@
 	 * @throws MicaException
 	 */
 	public List<String> listCompilers() throws MicaException{
-		Results result = runProcess(MAEMO_SDK,COMMAND_LIST,SPECIFIER_TOOLCHAINS);
+		LaunchResults result = runProcess(MAEMO_SDK,COMMAND_LIST,SPECIFIER_TOOLCHAINS);
 		return Arrays.asList(result.getStdoutLines());
 	}
 
@@ -100,7 +100,7 @@
 	 * maemo-sdk show tools
 	 */
 	public String getTools() throws MicaException{
-		Results result = runProcess(MAEMO_SDK, COMMAND_SHOW, SPECIFIER_TOOLS);
+		LaunchResults result = runProcess(MAEMO_SDK, COMMAND_SHOW, SPECIFIER_TOOLS);
 		return result.stdout.trim();
 	}
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/RemoveMaemoRootstrapSb2Command.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/RemoveMaemoRootstrapSb2Command.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/RemoveMaemoRootstrapSb2Command.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -19,7 +19,7 @@
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.console.CoreConsoleManager;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.ProxyUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -72,8 +72,8 @@
 		commands.add(targetName);
 
 		IEnvironmentModifierBlock envBlock = commandAbstractor
-				.getProcessLauncherFactory().defaultEnvironmentModifierBlock();
-		ProcessLauncherUtils.defineProxyVariables(envBlock);
+				.getProcessLauncherFactory().getDefaultEnvironmentModifierBlock();
+		ProxyUtils.defineProxyVariables(envBlock);
 
 		setMonitorAndConsole(monitor, CoreConsoleManager.getInstance().getConsole(true,
 				null, "Removing rootstrap " + targetName));

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ShowPathMappingSb2Command.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ShowPathMappingSb2Command.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/command/ShowPathMappingSb2Command.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -19,8 +19,8 @@
 import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxException;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.process.*;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 
-import java.io.ByteArrayOutputStream;
 import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -52,21 +52,16 @@
 								.getPreferenceValue(SB2PreferenceConstants.SB2_SB2_SHOW_PATH_ACTION));
 		cmdLine.addAll(params);
 
-		IProcessLauncher launcher = ProcessLauncherCreator
-				.createProcessLauncher(commandAbstractor
-						.getProcessLauncherFactory(), null, cmdLine);
+		IProcessLauncher launcher = commandAbstractor.getProcessLauncherFactory().
+			createProcessLauncher(ProcessLauncherParameters.create(cmdLine));
 
-		launcher.createProcess();
+		LaunchResults results = ProcessLauncherUtils.launchAndReadStandardStreams(launcher, null);
 
-		ByteArrayOutputStream out = new ByteArrayOutputStream();
-		ByteArrayOutputStream err = new ByteArrayOutputStream();
-		int exit = launcher.waitAndRead(out, err);
-
-		if (exit != 0)
+		if (results.exitCode != 0)
 			throw new ScratchboxException(
-					"Cannot resolve scratchbox2 path mappings:\n" + out + err);
+					results.reportResults("Cannot resolve scratchbox2 path mappings"));
 
-		String resolveInfo = out.toString().trim();
+		String resolveInfo = results.stdout.toString().trim();
 		String[] lines = resolveInfo.split("\r\n|\r|\n");
 
 		Map<IPath, IPath> result = new HashMap<IPath, IPath>(lines.length);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core/Scratchbox2SDK.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core/Scratchbox2SDK.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core/Scratchbox2SDK.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -26,7 +26,7 @@
 import org.maemo.mica.common.core.machine.*;
 import org.maemo.mica.common.core.preferences.IPreferenceProvider;
 import org.maemo.mica.common.core.sdk.*;
-import org.maemo.mica.internal.api.common.core.sdk.BaseSDKPlatform;
+import org.maemo.mica.internal.api.common.core.sdk.SDKPlatform;
 import org.maemo.mica.maemosdk.core.*;
 
 import java.text.MessageFormat;
@@ -45,12 +45,11 @@
 
 	private static final IPath ROOT_PATH = new Path("/");
 	public static Pattern TARGET_PLATFORM_VERSION_ARCHITECTURE_PATTERN = Pattern
-			.compile("([a-zA-Z_]+)([\\d.A-Za-z]+)_([a-zA-Z\\d]+)");
+			.compile("([a-zA-Z_]+)([\\d.A-Za-z_]+)_([a-zA-Z\\d]+)");
 
 	public Scratchbox2SDK(IMachine machine, IPath installLocation, 
-			String version,
 			IPreferenceProvider prefProvider) throws MicaException {
-		super(machine, installLocation, version, "Scratchbox 2", 2);
+		super(machine, installLocation, "Scratchbox 2", 2);
 		this.prefProvider = prefProvider;
 	}
 
@@ -195,7 +194,7 @@
 	public List<String> getCputransp() throws MicaException {
 		ensureRealized();
 		ListCputranspSb2Command listCputranspCommand = new ListCputranspSb2Command(
-				getCommandAbstractor());
+				getCommandAbstractor(), getMachine());
 		return listCputranspCommand.performCommand(EMPTY_ARGS);
 	}
 
@@ -287,16 +286,16 @@
 			IMaemoSDKPlatform info = MaemoSDKPlatformEngine.getInstance().getPlatformForName(platform);
 			if (info != null) {
 				if (!ISDKPlatform.VERSION_UNKNOWN.equals(version)) {
-					return MaemoSDKPlatformEngine.getInstance().createWithVersion(info, version);
+					return MaemoSDKPlatformEngine.createWithVersion(info, version);
 				} else {
 					return info;
 				}
 			}
 			
 			// unknown platform
-			return new BaseSDKPlatform(ISDKPlatform.NAME_UNKNOWN, version);
+			return new SDKPlatform(ISDKPlatform.NAME_UNKNOWN, version);
 		} else {
-			return new BaseSDKPlatform(ISDKPlatform.NAME_UNKNOWN,
+			return new SDKPlatform(ISDKPlatform.NAME_UNKNOWN,
 					ISDKPlatform.VERSION_UNKNOWN);
 		}
 	}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core/Scratchbox2SDKTarget.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core/Scratchbox2SDKTarget.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/core/Scratchbox2SDKTarget.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -39,6 +39,8 @@
 	private static final String PATH_MAPPINGS_MAP = "pathMappings.";
 	private IPath targetRoot;
 	private IPath rootstrapRoot;
+	private Scratchbox2ProcessLauncherFactory buildProcessLauncherFactory;
+	private IProcessLauncherFactory emulateProcessLauncherFactory;
 	
 	public Scratchbox2SDKTarget(Scratchbox2SDK sdk, ISDKPlatform platform,
 			String architecture, String target) throws MicaException {
@@ -69,22 +71,6 @@
 	 * @seeorg.maemo.esbox.maemosdk.core.sdk.IScratchboxSDKTarget#
 	 * getProcessLauncherFactoryForInstall()
 	 */
-	public IProcessLauncherFactory getProcessLauncherFactoryForInstall() {
-		// install mode needs to be a different mapping and also run as root
-		return new Scratchbox2ProcessLauncherFactory(this,
-					SB2PreferenceConstants.SB2_EMULATE_MAPPING_MODE, true);
-	}
-
-	
-	
-	
-	public IProcessLauncherFactory getMaemoLauncherFactory() {
-		return new Scratchbox2ProcessLauncherFactory(this,
-					SB2PreferenceConstants.SB2_EMULATE_MAPPING_MODE, false);
-	}
-
-
-
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -104,14 +90,32 @@
 	 * @see org.maemo.mica.common.core.sdk.ISDKTarget#getProcessLauncherFactory()
 	 */
 	public IProcessLauncherFactory getProcessLauncherFactory() {
-		// default is build mode
-		return new Scratchbox2ProcessLauncherFactory(this,
+		if (buildProcessLauncherFactory == null) {
+			// default is build mode
+			buildProcessLauncherFactory = new Scratchbox2ProcessLauncherFactory(this,
 					SB2PreferenceConstants.SB2_MAPPING_MODE, false);
+		}
+		return buildProcessLauncherFactory;
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
+	 * @seeorg.maemo.esbox.maemosdk.core.sdk.IScratchboxSDKTarget#
+	 * getProcessLauncherFactoryForInstall()
+	 */
+	public IProcessLauncherFactory getProcessLauncherFactoryForInstall() {
+		if (emulateProcessLauncherFactory == null) {
+			// install mode needs to be a different mapping and also run as root
+			emulateProcessLauncherFactory = new Scratchbox2ProcessLauncherFactory(this,
+						SB2PreferenceConstants.SB2_EMULATE_MAPPING_MODE, true);
+		}
+		return emulateProcessLauncherFactory;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see org.maemo.mica.common.core.sdk.ISDKTarget#getSDKTargetRoot()
 	 */
 	public IPath getSDKTargetRoot() {

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Sb2MaemoLauncherAdapterFactory.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Sb2MaemoLauncherAdapterFactory.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Sb2MaemoLauncherAdapterFactory.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -18,7 +18,6 @@
  * @author baranov
  *
  */
- at SuppressWarnings("unchecked")
 public class Sb2MaemoLauncherAdapterFactory implements IAdapterFactory {
 
 	private static final Class<IMaemoLauncherAdapter> MAEMO_LAUNCHER_ADAPTER = IMaemoLauncherAdapter.class;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2EnvironmentProvider.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2EnvironmentProvider.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2EnvironmentProvider.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -18,9 +18,10 @@
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.env.EnvironmentProperties;
 import org.maemo.mica.common.core.process.*;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
-import org.maemo.mica.internal.api.common.core.IStandardEnvironmentProvider;
+import org.maemo.mica.internal.api.common.core.env.IStandardEnvironmentProvider;
+import org.maemo.mica.internal.api.common.core.machine.IMachineImpl;
 
 import java.util.*;
 
@@ -62,20 +63,20 @@
 			// gather arguments by querying a typical shell launched in POSIX
 			// mode (sh instead of bash)
 			Scratchbox2ProcessLauncher launcher = new Scratchbox2ProcessLauncher(
-					sdkTarget, null, CommandLineArguments.createFromVarArgs(
-							"sh", "-c", "set"), null,
+					sdkTarget, ProcessLauncherParameters.create("sh", "-c", "set"),
 					SB2PreferenceConstants.SB2_MAPPING_MODE, false);
 
 			try {
-				Results results = ProcessLauncherUtils
-						.launchAndReadStandardStreams(launcher, null);
+				LaunchResults results = ProcessLauncherUtils.launchAndReadStandardStreams(
+						launcher, null);
 				standardEnv = EnvironmentProperties
 						.createFromShellEnvDump(results.stdout);
 			} catch (MicaException e) {
 				Activator.getErrorLogger().logError(
 						"Failed to read scratchbox environment; using system environment",
 						e);
-				standardEnv = sdkTarget.getMachine().getStandardEnvironment();
+				standardEnv = ((IMachineImpl)sdkTarget.getMachine()).
+					getStandardEnvironmentProvider().getRawEnvironment();
 			}
 
 			cachedStdEnvMap.put(sdkTarget, standardEnv);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2ProcessLauncher.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2ProcessLauncher.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2ProcessLauncher.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,17 +11,19 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb2.launcher;
 
-import org.eclipse.core.runtime.IPath;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
 import org.maemo.esbox.internal.api.scratchbox.sb2.core.SB2PreferenceConstants;
 import org.maemo.esbox.internal.scratchbox.sb2.Activator;
 import org.maemo.esbox.internal.scratchbox.sb2.core.Scratchbox2SDKTarget;
-import org.maemo.esbox.scratchbox.sb2.sdk.IScratchbox2SDKTarget;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
-import org.maemo.mica.common.core.process.*;
+import org.maemo.mica.common.core.process.AbstractSDKTargetProcessLauncher;
+import org.maemo.mica.common.core.process.CommandLineArguments;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
+import org.maemo.mica.common.core.process.ShellTemplateSubstitutor;
 
-import java.util.List;
-
 /**
  * For SB 2, launching is easy and follows the same pattern as a normal program
  * invocation.
@@ -29,47 +31,28 @@
  * @author eswartz
  * 
  */
-public class Scratchbox2ProcessLauncher extends BaseSDKTargetProcessLauncher implements
+public class Scratchbox2ProcessLauncher extends AbstractSDKTargetProcessLauncher implements
 		IProcessLauncher {
 
 	private Scratchbox2SDKTarget sdkTarget;
-	private List<String> originalCmdLine;
+	private final String modeKey;
+	private final boolean runAsRoot;
 
 	public Scratchbox2ProcessLauncher(Scratchbox2SDKTarget sdkTarget,
-			IPath workingDirectory, List<String> cmdLine,
-			IEnvironmentModifierBlock environmentModifierBlock, String modeKey,
+			ProcessLauncherParameters params, String modeKey,
 			boolean runAsRoot) {
-		super(encodeArgumentArray(sdkTarget, cmdLine, modeKey,runAsRoot),
-				environmentModifierBlock, workingDirectory,
-				sdkTarget);
-		if (sdkTarget == null)
-			throw new IllegalArgumentException();
+		super(params, sdkTarget);
+		this.modeKey = modeKey;
+		this.runAsRoot = runAsRoot;
 		this.sdkTarget = sdkTarget;
-		this.originalCmdLine = cmdLine;
 	}
 
 	/* (non-Javadoc)
-	 * @see org.maemo.mica.common.core.process.BaseProcessLauncher#getCommandLineString()
+	 * @see org.maemo.mica.common.core.process.BaseSDKTargetProcessLauncher#encodeLaunchParameters(org.maemo.mica.common.core.process.ProcessLauncherParameters)
 	 */
 	@Override
-	public String getCommandLineString() {
-		return CommandLineArguments.toCommandLine(originalCmdLine);
-	}
-	
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.maemo.mica.internal.common.core.BaseProcessLauncher#getLaunchInfoPrefix()
-	 */
-	@Override
-	protected String getLaunchInfoPrefix() {
-		return sdkTarget + " ";
-	}
+	public ProcessLauncherParameters encodeLaunchParameters(ProcessLauncherParameters params) {
 
-	private static List<String> encodeArgumentArray(IScratchbox2SDKTarget sdkTarget,
-			List<String> cmdLine, String modeKey,boolean runAsRoot) {
-
 		// Encode the launch command by replacing the arguments
 		// representing template arguments with the actual values.
 		//
@@ -88,6 +71,7 @@
 			substitutor.define("SESSION_FILE", ".dummy-session-see-error-log");
 		}
 		
+		List<String> cmdLine = params.getCommandLine();
 		substitutor.define("COMMAND", cmdLine.get(0));
 		substitutor.define("ARGS", CommandLineArguments.toCommandLine(cmdLine
 				.subList(1, cmdLine.size())));
@@ -101,7 +85,6 @@
 		}
 
 		String mapMode = sdkTarget.getPreferenceValue(modeKey);
-		//TODO: fix mapping mode
 		substitutor.define("MAPPING_MODE", mapMode);
 
 		// get the Scratchbox invocation pattern
@@ -111,9 +94,10 @@
 		// replace variables
 		commandPattern = substitutor.substitute(commandPattern);
 
-		List<String> commandArgs = CommandLineArguments
-				.createFromCommandLine(commandPattern);
-		return commandArgs;
+		return ProcessLauncherParameters.create(
+				params.getWorkingDirectory(),
+				CommandLineArguments.createFromCommandLine(commandPattern),
+				params.getEnvironmentModifierBlock());
 	}
 
 	@Override
@@ -128,12 +112,8 @@
 	 * @see org.maemo.mica.internal.common.core.BaseProcessLauncher#doCreateProcess()
 	 */
 	@Override
-	protected Process doCreateProcess() throws Exception {
+	protected Process doCreateProcess(ProcessLauncherParameters params, IProgressMonitor monitor) throws Exception {
 		sdkTarget.ensureRealized();
-		
-		return sdkTarget.getMachine().createProcess(
-				getLaunchCurrentWorkingDirectory(),
-				getLaunchCommandArguments(),
-				getLaunchEnvironmentModifierBlock(), isUsePTY());
+		return sdkTarget.getMachine().createProcess(params, monitor);
 	}
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2ProcessLauncherFactory.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2ProcessLauncherFactory.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/launcher/Scratchbox2ProcessLauncherFactory.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,20 +11,17 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb2.launcher;
 
-import org.eclipse.core.runtime.IPath;
 import org.maemo.esbox.internal.scratchbox.sb2.core.Scratchbox2SDKTarget;
-import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
+import org.maemo.mica.common.core.process.AbstractProcessLauncherFactory;
 import org.maemo.mica.common.core.process.IProcessLauncher;
-import org.maemo.mica.internal.api.common.core.BaseProcessLauncherFactory;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 
-import java.util.List;
-
 /**
  * @author eswartz
  * 
  */
 public class Scratchbox2ProcessLauncherFactory extends
-		BaseProcessLauncherFactory {
+		AbstractProcessLauncherFactory {
 
 	protected Scratchbox2SDKTarget sdkTarget;
 	private String mappingModeKey;
@@ -43,7 +40,7 @@
 	 */
 	public Scratchbox2ProcessLauncherFactory(Scratchbox2SDKTarget sdkTarget,
 			String mappingModeKey, boolean runAsRoot) {
-		super(new Scratchbox2EnvironmentProvider(sdkTarget), false);
+		super();
 		if (sdkTarget == null)
 			throw new IllegalArgumentException();
 		this.sdkTarget = sdkTarget;
@@ -51,20 +48,9 @@
 		this.runAsRoot = runAsRoot;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see
-	 * org.maemo.mica.common.core.IProcessLauncherFactory#createProcessLauncher(org
-	 * .eclipse.core.runtime.IPath, org.eclipse.core.runtime.IPath,
-	 * org.maemo.mica.common.core.List<String>, java.util.Properties)
-	 */
-	protected IProcessLauncher doCreateProcessLauncher(IPath workingDirectory,
-			List<String> cmdLine,
-			IEnvironmentModifierBlock environmentModifierBlock) {
+	protected IProcessLauncher doCreateProcessLauncher(ProcessLauncherParameters params) {
 
-		return new Scratchbox2ProcessLauncher(sdkTarget, workingDirectory,
-				cmdLine, environmentModifierBlock, mappingModeKey, runAsRoot);
+		return new Scratchbox2ProcessLauncher(sdkTarget, params, mappingModeKey, runAsRoot);
 	}
 
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/provider/Scratchbox2SDKProvider.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/provider/Scratchbox2SDKProvider.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/provider/Scratchbox2SDKProvider.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -145,7 +145,7 @@
 		IPath installRoot = new Path("/usr/bin");
 		
 		Scratchbox2SDK sdk = new Scratchbox2SDK(machine, 
-				installRoot, null, prefProvider);
+				installRoot, prefProvider);
 
 		// see if the right programs seem to exist
 		MachineUtils.acquireMachine(machine, new SubProgressMonitor(monitor, 8));

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/preferences/Scratchbox2PreferencesPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/preferences/Scratchbox2PreferencesPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/preferences/Scratchbox2PreferencesPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -19,7 +19,7 @@
 import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.maemo.esbox.internal.api.scratchbox.sb2.core.SB2PreferenceConstants;
 import org.maemo.esbox.internal.scratchbox.sb2.IHelpID;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 import org.maemo.mica.internal.api.common.ui.utils.MaemoPreferencesUtils;
 
 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
@@ -141,7 +141,7 @@
 	@Override
 	public boolean performOk() {
 		if (refreshOnApply) {
-			SDKFactory.getInstance().refresh(false);
+			SDKManagerInternal.getInstance().refresh(false);
 			refreshOnApply = false;
 		}
 		return super.performOk();

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/wizard/NewScratchbox2TargetWizard.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/wizard/NewScratchbox2TargetWizard.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.sb2/src/org/maemo/esbox/internal/scratchbox/sb2/ui/wizard/NewScratchbox2TargetWizard.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -30,7 +30,6 @@
 import org.eclipse.ui.INewWizard;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchWizard;
-import org.maemo.esbox.internal.api.scratchbox.ui.wizards.TargetWizardPageFactory;
 import org.maemo.esbox.internal.scratchbox.sb2.Activator;
 import org.maemo.esbox.internal.scratchbox.sb2.IHelpID;
 import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxException;
@@ -40,13 +39,13 @@
 import org.maemo.mica.common.core.ErrorLogger;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
+import org.maemo.mica.internal.api.maemosdk.ui.wizards.BadInstallationPage;
 
 import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
 
 /**
- * The target wizard provides a easy way to create a target for Scratchbox. As
- * Scratchbox target configuration, the user can configure your target.
+ * This target wizard installs a Scratchbox 2 target by installing a rootstrap.
  * 
  */
 public class NewScratchbox2TargetWizard extends Wizard implements INewWizard {
@@ -65,7 +64,7 @@
 	public NewScratchbox2TargetWizard() {
 		super();
 		// TODO: support multiple installations?
-		SDKFactory.getInstance().waitForRefreshComplete(null);
+		SDKManager.getInstance().waitForRefreshComplete(null);
 		List<IScratchbox2SDK> sdks = ScratchboxSDKFacade.getInstance().getScratchboxSDK(IScratchbox2SDK.class);
 		if (sdks.size() > 0)
 			sdk = sdks.get(0);
@@ -94,8 +93,7 @@
 			maemoRootstrapPage = new TargetWizardRootstrapSb2Page(sdk);
 			addPage(maemoRootstrapPage);
 		} else {
-			addPage(TargetWizardPageFactory.getInstance()
-					.createBadInstallationPage());
+			addPage(new BadInstallationPage());
 		}
 	}
 	
@@ -177,7 +175,7 @@
 								true, new SubProgressMonitor(monitor, 1));
 						
 						sdk.refresh();
-						SDKFactory.getInstance().fireListeners();
+						SDKManager.getInstance().fireListeners();
 						
 						createdTarget = sdk.findSDKTarget(targetName);
 					} catch (MicaException e) {

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/build.properties
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/build.properties	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/build.properties	2009-07-08 11:19:18 UTC (rev 1854)
@@ -3,5 +3,4 @@
 bin.includes = META-INF/,\
                .,\
                plugin.xml,\
-               test.xml,\
                data/

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/ESboxScratchboxTestSuite.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/ESboxScratchboxTestSuite.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/ESboxScratchboxTestSuite.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -17,7 +17,7 @@
 import org.maemo.mica.common.core.machine.IMachine;
 import org.maemo.mica.common.core.machine.MachineRegistry;
 import org.maemo.mica.common.core.machine.MachineUtils;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.common.core.tests.TestMachineUtils;
 
 import junit.framework.Test;
@@ -41,7 +41,7 @@
 			}
 		} catch (MicaException e) {
 		}
-		SDKFactory.getInstance().waitForRefreshComplete(null);
+		SDKManager.getInstance().waitForRefreshComplete(null);
 		
 		TestSuite suite = new TestSuite(
 				"Test for org.maemo.esbox.scratchbox.tests");

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB1ProcessLauncher.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB1ProcessLauncher.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB1ProcessLauncher.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -10,22 +10,32 @@
  *******************************************************************************/
 package org.maemo.esbox.scratchbox.tests;
 
-import org.eclipse.core.runtime.*;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
 import org.junit.Test;
 import org.maemo.esbox.internal.scratchbox.sb1.core.Scratchbox1SDK;
 import org.maemo.esbox.internal.scratchbox.sb1.provider.Scratchbox1SDKProvider;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.env.EnvironmentManager;
+import org.maemo.mica.common.core.env.EnvironmentModifierBlock;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
-import org.maemo.mica.common.core.process.*;
-import org.maemo.mica.common.core.sdk.*;
+import org.maemo.mica.common.core.process.AbstractProcessLauncher;
+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.ProcessLauncherParameters;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
+import org.maemo.mica.common.core.sdk.ISDK;
+import org.maemo.mica.common.core.sdk.ISDKProvider;
+import org.maemo.mica.common.core.sdk.ISDKTarget;
+import org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.common.core.tests.TestUtils;
 import org.maemo.mica.common.core.tests.core.TestProcessLauncher;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 
-import java.io.ByteArrayOutputStream;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * If SB1 is installed, make sure its SDKs and targets are properly detected,
  * and that it launches processes in the expected way
@@ -40,8 +50,9 @@
 	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
-		SDKFactory factory = SDKFactory.getInstance();
-
+		SDKManager factory = SDKManagerInternal.getInstance();
+		factory.waitForRefreshComplete(null);
+		
 		List<ISDKProvider> providers = factory.getSDKProviders();
 		assertNotNull(providers);
 
@@ -70,7 +81,7 @@
 			else
 				sdks = sb1Provider.createSDKs(null);
 		}
-		SDKFactory.getInstance().waitForRefreshComplete(null);
+		SDKManager.getInstance().waitForRefreshComplete(null);
 		return sdks;
 	}
 
@@ -88,11 +99,14 @@
 		runOverTargets(new IRunner() {
 
 			public void run(ISDKTarget target) throws Exception {
+				ProcessLauncherParameters params = ProcessLauncherParameters.create("ls"); 
 				IProcessLauncherFactory processLauncherFactory = target
 						.getProcessLauncherFactory();
-				IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(
-						processLauncherFactory, "ls");
-				List<String> args = processLauncher.getLaunchCommandArguments();
+				IProcessLauncher processLauncher = processLauncherFactory.createProcessLauncher(params);
+				
+				ProcessLauncherParameters encodedParameters = ((AbstractProcessLauncher) processLauncher).encodeLaunchParameters(
+						params);
+				List<String> args = encodedParameters.getCommandLine();
 				assertNotNull(args);
 
 				// be sure no variables are left unexpanded
@@ -113,29 +127,31 @@
 			public void run(ISDKTarget target) throws Exception {
 				IProcessLauncherFactory processLauncherFactory = target
 						.getProcessLauncherFactory();
-				IEnvironmentModifierBlock envVars = EnvironmentManager.getInstance().createEnvironmentModifierBlock();
+				IEnvironmentModifierBlock envVars = new EnvironmentModifierBlock();
 				envVars.define("CC", "gcc");
 				envVars.define("LDFLAGS", "-lm");
 				envVars.define("SPACEY", "a b c");
 				envVars.define("WILD", "*");
 				envVars.undefine("FOOBAR");
 				IPath tempPath = new Path("/tmp");
-				IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(processLauncherFactory,
-						tempPath, 
-						"./configure", CommandLineArguments.createFromVarArgs(
+				
+				ProcessLauncherParameters params = ProcessLauncherParameters.create( 
+						tempPath,
+						CommandLineArguments.createFromVarArgs("./configure",
 								"--enable-maintainer-mode",
-								"--disable-gtk"), envVars);
+						"--disable-gtk"), envVars);
+				IProcessLauncher processLauncher = processLauncherFactory.createProcessLauncher(params);
 
+				ProcessLauncherParameters encodedParameters = ((AbstractProcessLauncher) processLauncher).encodeLaunchParameters(
+						params);
 				// the env vars are encoded into run.sh, not passed outside the
 				// process
-				IEnvironmentModifierBlock launchEnvironment = processLauncher
-						.getLaunchEnvironmentModifierBlock();
+				IEnvironmentModifierBlock launchEnvironment = encodedParameters.getEnvironmentModifierBlock();
 				assertNull(launchEnvironment);
 
-				List<String> args = processLauncher.getLaunchCommandArguments();
+				// be sure no variables are left unexpanded
+				List<String> args = encodedParameters.getCommandLine();
 				assertNotNull(args);
-
-				// be sure no variables are left unexpanded
 				assertFalse(CommandLineArguments.toCommandLine(args),
 						CommandLineArguments.toCommandLine(args).contains("${"));
 
@@ -164,23 +180,20 @@
 		runOverTargets(new IRunner() {
 			
 			public void run(ISDKTarget target) throws Exception {
-				IEnvironmentModifierBlock envVars = EnvironmentManager.getInstance().createEnvironmentModifierBlock();
+				IEnvironmentModifierBlock envVars = new EnvironmentModifierBlock();
 				
 				envVars.define("DISPLAY", ":2");
 				envVars.define("ESBOXOVERRIDE", "launch_override");
 				envVars.define("PASSEDIN", "launch_passedin");
 				
 				String cmdText = "echo $DISPLAY,$ESBOXONLY,$ESBOXOVERRIDE,$PASSEDIN";
-				IProcessLauncher processLauncher = createAndLaunchStockProcessForScript(
+				LaunchResults results = createAndLaunchStockProcessForScript(
 						target, null, cmdText, envVars);
 
-				ByteArrayOutputStream out = new ByteArrayOutputStream();
-				ByteArrayOutputStream err = new ByteArrayOutputStream();
-				int exit = processLauncher.waitAndRead(out, err);
-				assertEquals(0, exit);
+				assertEquals(0, results.exitCode);
 
-				assertEquals("", err.toString());
-				assertEquals(":2,,launch_override,launch_passedin", out.toString().trim());
+				assertEquals("", results.stderr.toString());
+				assertEquals(":2,,launch_override,launch_passedin", results.stdout.toString().trim());
 
 			}
 		});

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB1SDKProvider.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB1SDKProvider.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB1SDKProvider.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -32,10 +32,11 @@
 import org.maemo.mica.common.core.sdk.ISDKPlatform;
 import org.maemo.mica.common.core.sdk.ISDKProvider;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.common.core.tests.StdoutProgressReporter;
 import org.maemo.mica.common.core.tests.TestUtils;
 import org.maemo.mica.common.core.tests.core.BaseTest;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 import org.maemo.mica.maemosdk.core.*;
 
 /**
@@ -55,7 +56,7 @@
 		IPreferenceStore store = CorePreferenceManager.getInstance().getPreferenceStore(SB1PreferenceConstants.SB1_ROOTS);
 		store.setValue(SB1PreferenceConstants.SB1_ROOTS, "/scratchbox:/opt/scratchbox");
 		
-		SDKFactory factory = SDKFactory.getInstance();
+		SDKManager factory = SDKManagerInternal.getInstance();
 
 		List<ISDKProvider> providers = factory.getSDKProviders();
 		assertNotNull(providers);
@@ -284,8 +285,8 @@
 		if (!ISDKPlatform.NAME_UNKNOWN.equals(platform.getName())) {
 			IMaemoSDKPlatform maemoPlatform = MaemoSDKPlatformEngine.getInstance().getPlatformForName(platform.getName());
 			assertNotNull("Should be registered platform: " + platform.getName(), maemoPlatform);
-			assertTrue("Should be compatible version: " + platform.getVersion(), 
-					platform.getVersion().startsWith(maemoPlatform.getVersion()));
+			assertTrue("Should be compatible version: " + platform.getVersionString(), 
+					platform.getVersionString().startsWith(maemoPlatform.getVersionString()));
 		}
 	}
 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB2ProcessLauncher.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB2ProcessLauncher.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB2ProcessLauncher.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -22,10 +22,11 @@
 import org.maemo.mica.common.core.preferences.CorePreferenceConstants;
 import org.maemo.mica.common.core.preferences.CorePreferenceManager;
 import org.maemo.mica.common.core.process.*;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 import org.maemo.mica.common.core.sdk.*;
 import org.maemo.mica.common.core.tests.TestUtils;
 import org.maemo.mica.common.core.tests.core.TestProcessLauncher;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 
 import java.io.OutputStream;
 import java.util.Collections;
@@ -50,7 +51,7 @@
 		preferenceStore.setValue(
 						CorePreferenceConstants.LOG_COMMANDS, true);
 		
-		SDKFactory factory = SDKFactory.getInstance();
+		SDKManager factory = SDKManagerInternal.getInstance();
 
 		List<ISDKProvider> providers = factory.getSDKProviders();
 		assertNotNull(providers);
@@ -80,7 +81,7 @@
 			else
 				sdks = sb2Provider.createSDKs(new NullProgressMonitor());
 		}
-		SDKFactory.getInstance().waitForRefreshComplete(null);
+		SDKManager.getInstance().waitForRefreshComplete(null);
 		return sdks;
 	}
 	
@@ -101,8 +102,12 @@
 			public void run(ISDKTarget target) throws Exception {
 				IProcessLauncherFactory processLauncherFactory = target
 						.getProcessLauncherFactory();
-				IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(processLauncherFactory, "ls");
-				List<String> args = processLauncher.getLaunchCommandArguments();
+				ProcessLauncherParameters params = ProcessLauncherParameters.create("ls");
+				IProcessLauncher processLauncher = processLauncherFactory.createProcessLauncher(params);
+				
+				ProcessLauncherParameters encodedParameters = ((AbstractProcessLauncher) processLauncher).encodeLaunchParameters(
+						params);
+				List<String> args = encodedParameters.getCommandLine();
 				assertNotNull(args);
 
 				// be sure no variables are left unexpanded
@@ -147,12 +152,13 @@
 				
 				IProcessLauncherFactory processLauncherFactory = target
 						.getProcessLauncherFactory();
-				IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(
-						processLauncherFactory,
-						targetTmpDir,
-						CommandLineArguments.createFromVarArgs("/bin/cat", "test.txt"));
+				IProcessLauncher processLauncher = processLauncherFactory.createProcessLauncher(
+					ProcessLauncherParameters.create(
+							targetTmpDir,
+							CommandLineArguments.createFromVarArgs("/bin/cat", "test.txt")));
 				
-				Results results = ProcessLauncherUtils.launchAndReadStandardStreams(processLauncher, null);
+				LaunchResults results = ProcessLauncherUtils.launchAndReadStandardStreams(
+						processLauncher, null);
 				assertEquals("Running under /tmp:\n\n"+results.stdout+results.stderr, 0, results.exitCode);
 				assertEquals("Hello world", results.stdout.trim());
 			}

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB2SDKProvider.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB2SDKProvider.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestSB2SDKProvider.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -20,6 +20,7 @@
 import org.maemo.mica.common.core.machine.ILocalMachine;
 import org.maemo.mica.common.core.sdk.*;
 import org.maemo.mica.common.core.tests.TestUtils;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 import org.maemo.mica.maemosdk.core.*;
 
 import java.util.List;
@@ -39,7 +40,7 @@
 	@Override
 	protected void setUp() throws Exception {
 		super.setUp();
-		SDKFactory factory = SDKFactory.getInstance();
+		SDKManager factory = SDKManagerInternal.getInstance();
 
 		List<ISDKProvider> providers = factory.getSDKProviders();
 		assertNotNull(providers);
@@ -83,7 +84,7 @@
 			assertTrue(root.toPortableString().equals("/"));
 			
 			((Scratchbox2SDK)sdk).realize();
-			assertTrue(sdk.getVersion(), sdk.getVersion().matches("1\\.99\\..*|2\\.0\\.*"));
+			assertTrue(sdk.getVersion(), sdk.getVersion().matches("1\\.99\\..*|2\\.0.*"));
 		}
 	}
 	
@@ -118,8 +119,8 @@
 		if (!ISDKPlatform.NAME_UNKNOWN.equals(platform.getName())) {
 			IMaemoSDKPlatform maemoPlatform = MaemoSDKPlatformEngine.getInstance().getPlatformForName(platform.getName());
 			assertNotNull("Should be registered platform: " + platform.getName(), maemoPlatform);
-			assertTrue("Should be compatible version: " + platform.getVersion(), 
-					platform.getVersion().startsWith(maemoPlatform.getVersion()));
+			assertTrue("Should be compatible version: " + platform.getVersionString(), 
+					platform.getVersionString().startsWith(maemoPlatform.getVersionString()));
 		}
 	}
 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestScratchboxProjectInfo.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestScratchboxProjectInfo.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/TestScratchboxProjectInfo.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -34,11 +34,12 @@
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.sdk.ISDK;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.common.core.tests.StdoutProgressReporter;
 import org.maemo.mica.common.core.tests.TestUtils;
 import org.maemo.mica.common.project.core.ProjectManager;
 import org.maemo.mica.common.project.core.model.*;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 import org.maemo.mica.internal.api.common.project.core.model.BuildConfigurationData;
 
 
@@ -59,7 +60,7 @@
 	@Before
 	public void setUp() throws Exception {
 		TestUtils.disableAutobuild();
-		SDKFactory.getInstance().waitForRefreshComplete(null);
+		SDKManager.getInstance().waitForRefreshComplete(null);
 		
 		PROJ1_GOOD = PROJ1_GOOD_BASE + counter++;
 		
@@ -96,8 +97,7 @@
 			// try to find Fremantle SB1 in /opt/scratchbox 
 			SB1PreferenceConstants.getPreferenceStore().setValue(
 					SB1PreferenceConstants.SB1_ROOTS, "/scratchbox:/opt/scratchbox");
-			SDKFactory.getInstance().refresh(false);
-			SDKFactory.getInstance().waitForRefreshComplete(null);
+			SDKManagerInternal.getInstance().refresh(null);
 			
 			List<IScratchbox1SDK> sdks = ScratchboxSDKFacade.getInstance().getScratchboxSDK(
 					IScratchbox1SDK.class);
@@ -110,7 +110,7 @@
 		} finally {
 			SB1PreferenceConstants.getPreferenceStore().setValue(
 					SB1PreferenceConstants.SB1_ROOTS, origRoot);
-			SDKFactory.getInstance().refresh(false);
+			SDKManagerInternal.getInstance().refresh(false);
 		}
 	}
 
@@ -127,7 +127,7 @@
 			for (String target : sdk.getTargets()) {
 				if (!uniqueTargets.contains(target)) {
 					IBuildConfigurationData data = new BuildConfigurationData(
-							target, target, sdk.getName());
+							target, target, sdk.getName(), sdk.getDisplayName());
 					/*config = */ projectHandle.createBuildConfiguration(data);
 					uniqueTargets.add(target);
 				}
@@ -135,6 +135,8 @@
 		}
 		projectHandle.save(null);
 		
+		projectHandle = ProjectManager.getInstance().getProjectHandle(project1);
+		
 		// now be sure we find them all
 		for (IBuildConfiguration bc : projectHandle.getBuildConfigurations()) {
 			ISDK sdk = bc.getSDK();

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/BaseTest.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/BaseTest.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/BaseTest.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -17,7 +17,7 @@
 import org.maemo.esbox.scratchbox.core.sdk.ScratchboxSDKFacade;
 import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDK;
 import org.maemo.esbox.scratchbox.sb2.sdk.IScratchbox2SDK;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 
 import java.util.List;
 
@@ -42,7 +42,7 @@
 	 */
 	@Before
 	public void setUp() throws Exception {
-		SDKFactory.getInstance().waitForRefreshComplete(null);
+		SDKManager.getInstance().waitForRefreshComplete(null);
 		this.sb1Sdks = ScratchboxSDKFacade.getInstance().getScratchboxSDK(IScratchbox1SDK.class);
 		if (sb1Sdks.size() > 0) {
 			this.sb1Sdk = sb1Sdks.get(0);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/MockProcessLauncher.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/MockProcessLauncher.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/MockProcessLauncher.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,37 +11,32 @@
 
 package org.maemo.esbox.scratchbox.tests.commands;
 
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.ui.console.MessageConsole;
-import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
-import org.maemo.mica.common.core.process.*;
-import org.maemo.mica.common.core.sdk.ISDKTarget;
-
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.util.List;
 
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.maemo.mica.common.core.MicaException;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.WrappedProcessLauncher;
+
 /**
  * This process launcher does not actually launch anything but allows
  * access to the generated arguments and environment.
  * @author eswartz
  *
  */
-public class MockProcessLauncher implements IProcessLauncher {
+public class MockProcessLauncher extends WrappedProcessLauncher {
 
-	private final IProcessLauncher wrapped;
 	private Process theProcess;
 
 	public MockProcessLauncher(IProcessLauncher launcher) {
-		this.wrapped = launcher;
+		super(launcher);
 	}
 
 	/* (non-Javadoc)
 	 * @see org.maemo.esbox.common.core.IProcessLauncher#createProcess()
 	 */
-	public Process createProcess() throws MicaException {
+	public Process createProcess(IProgressMonitor monitor) throws MicaException {
 		theProcess = new Process() {
 
 			@Override
@@ -83,121 +78,4 @@
 	public Process getLastCreatedProcess() {
 		return theProcess;
 	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#getLaunchCommandArguments()
-	 */
-	public List<String> getLaunchCommandArguments() {
-		return wrapped.getLaunchCommandArguments();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#getLaunchEnvironment()
-	 */
-	public IEnvironmentModifierBlock getLaunchEnvironmentModifierBlock() {
-		return wrapped.getLaunchEnvironmentModifierBlock();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#getLaunchCurrentWorkingDirectory()
-	 */
-	public IPath getLaunchCurrentWorkingDirectory() {
-		return wrapped.getLaunchCurrentWorkingDirectory();
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#isUsePTY()
-	 */
-	public boolean isUsePTY() {
-		return wrapped.isUsePTY();
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#usePTY(boolean)
-	 */
-	public void usePTY(boolean flag) {
-		wrapped.usePTY(flag);
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#redirectToConsole(org.eclipse.ui.console.MessageConsole, org.maemo.esbox.common.core.sdk.ISDKTarget)
-	 */
-	public MessageConsole redirectToConsole(MessageConsole console) {
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#redirectToConsole(org.eclipse.ui.console.MessageConsole, org.maemo.esbox.common.core.sdk.ISDKTarget, org.maemo.esbox.common.core.IStreamLineMonitor)
-	 */
-	public MessageConsole redirectToConsole(MessageConsole console,
-			IStreamLineMonitor monitor) {
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#redirectToConsole(boolean, org.maemo.esbox.common.core.sdk.ISDKTarget, java.lang.String)
-	 */
-	public MessageConsole redirectToConsole(boolean brandNew,
-			ISDKTarget sdkTarget, String consoleName) {
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#redirectToConsole(boolean, org.maemo.esbox.common.core.sdk.ISDKTarget, java.lang.String, org.maemo.esbox.common.core.IStreamLineMonitor)
-	 */
-	public MessageConsole redirectToConsole(boolean brandNew,
-			ISDKTarget sdkTarget, String consoleName, IStreamLineMonitor monitor) {
-		return null;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#waitAndRead(java.io.OutputStream, java.io.OutputStream)
-	 */
-	public int waitAndRead(OutputStream out, OutputStream err) {
-		return 0;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#waitAndRead(java.io.OutputStream, java.io.OutputStream, boolean)
-	 */
-	public int waitAndRead(OutputStream out, OutputStream err,
-			boolean showCommand) {
-		return 0;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#waitAndRead(java.io.OutputStream, java.io.OutputStream, org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public int waitAndRead(OutputStream output, OutputStream err,
-			IProgressMonitor monitor) {
-		return 0;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.IProcessLauncher#waitAndRead(java.io.OutputStream, java.io.OutputStream, org.eclipse.core.runtime.IProgressMonitor, boolean)
-	 */
-	public int waitAndRead(OutputStream output, OutputStream err,
-			IProgressMonitor monitor, boolean showCommand) {
-		return 0;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.mica.common.core.process.IProcessLauncher#waitToComplete(org.eclipse.core.runtime.IProgressMonitor)
-	 */
-	public int waitToComplete(IProgressMonitor monitor) {
-		return 0;
-	}
-	
-	/* (non-Javadoc)
-	 * @see org.maemo.mica.common.core.process.IProcessLauncher#queueStreamMonitor(org.maemo.mica.common.core.process.IStreamMonitor)
-	 */
-	public void queueStreamMonitor(IStreamMonitor monitor) {
-		
-	}
-	/* (non-Javadoc)
-	 * @see org.maemo.mica.common.core.process.IProcessLauncher#createProcessMonitor()
-	 */
-	public IProcessMonitor createProcessMonitor() {
-		return null;
-	}
 }

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/MockProcessLauncherFactory.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/MockProcessLauncherFactory.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/MockProcessLauncherFactory.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,51 +11,36 @@
 
 package org.maemo.esbox.scratchbox.tests.commands;
 
-import org.eclipse.core.runtime.IPath;
-import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
+import java.util.List;
+
 import org.maemo.mica.common.core.process.IProcessLauncher;
 import org.maemo.mica.common.core.process.IProcessLauncherFactory;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
+import org.maemo.mica.common.core.process.WrappedProcessLauncherFactory;
 
-import java.util.List;
-import java.util.Properties;
-
 /**
  * This factory creates process launchers that do not actually execute anything 
  * but allow for testing the generated command line through the process launcher.
  * @author eswartz
  *
  */
-public class MockProcessLauncherFactory implements IProcessLauncherFactory {
+public class MockProcessLauncherFactory extends WrappedProcessLauncherFactory {
 
-	private IProcessLauncherFactory wrapped;
-	private IProcessLauncher lastProcessLauncher;
+	private ProcessLauncherParameters lastParams;
 
 	public MockProcessLauncherFactory(IProcessLauncherFactory wrapped) {
-		this.wrapped = wrapped;
+		super(wrapped);
 	}
 	/* (non-Javadoc)
 	 * @see org.maemo.esbox.common.core.IProcessLauncherFactory#createProcessLauncher(org.eclipse.core.runtime.IPath, java.util.List, java.util.Properties, org.eclipse.cdt.utils.pty.PTY)
 	 */
-	public IProcessLauncher createProcessLauncher(IPath workingDirectory,
-			List<String> commandLine, IEnvironmentModifierBlock environment) {
-		lastProcessLauncher = wrapped.createProcessLauncher(workingDirectory, commandLine, environment);
-		return new MockProcessLauncher(lastProcessLauncher);
+	public IProcessLauncher createProcessLauncher(ProcessLauncherParameters params) {
+		lastParams = params;
+		return new MockProcessLauncher(wrapped.createProcessLauncher(params));
 	}
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.process.IProcessLauncherFactory#getDefaultEnvironmentModifierBlock()
-	 */
-	public IEnvironmentModifierBlock defaultEnvironmentModifierBlock() {
-		return wrapped.defaultEnvironmentModifierBlock();
-	}
-	/* (non-Javadoc)
-	 * @see org.maemo.esbox.common.core.process.IProcessLauncherFactory#getRawEnvironment()
-	 */
-	public Properties getRawEnvironment() {
-		return wrapped.getRawEnvironment();
-	}
 
 	public List<String> getLastCommandLine() {
-		return lastProcessLauncher.getLaunchCommandArguments();
+		return lastParams.getCommandLine();
 	}
 	
 

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestListCommands.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestListCommands.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestListCommands.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,16 +11,21 @@
  *******************************************************************************/
 package org.maemo.esbox.scratchbox.tests.commands;
 
-import org.maemo.esbox.internal.scratchbox.sb1.command.*;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListCompilersCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListCputranspCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListDevkitsCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListSessionsCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListTargetsCommand;
 import org.maemo.esbox.internal.scratchbox.sb1.core.Scratchbox1SDK;
 import org.maemo.esbox.scratchbox.core.sdk.ScratchboxSDKFacade;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.process.IProcessLauncher;
-import org.maemo.mica.common.core.process.ProcessLauncherCreator;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 
-import java.util.*;
-
 /**
  * Please, read file TESTS.txt for more instructions about test.
  */
@@ -255,10 +260,9 @@
 		
 		Process process = null;
 		try {
-			IProcessLauncher launcher = ProcessLauncherCreator.createProcessLauncher(target.getProcessLauncherFactory(), null,
-					Collections.singletonList("/usr/bin/yes"), null);
-			launcher.usePTY(true);
-			process = launcher.createProcess();
+			IProcessLauncher launcher = target.getProcessLauncherFactory().createProcessLauncher(
+					ProcessLauncherParameters.create("/usr/bin/yes"));
+			process = launcher.createProcess(null);
 			
 			sessions = listSessionsCommand.performCommand(new ArrayList<String>());
 			
@@ -295,6 +299,9 @@
 		targetsExpected.add("CHINOOK_ARMEL");
 		targetsExpected.add("CHINOOK_X86");
 		targetsExpected.add("DIABLO_ARMEL");
+		targetsExpected.add("DIABLO_X86");
+		targetsExpected.add("FREMANTLE_ARMEL");
+		targetsExpected.add("FREMANTLE_X86");
 
 		ListTargetsCommand listTargetsCommand = new ListTargetsCommand(sb1Command);
 		List<String> targets = null;

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestScratchbox2SDK.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestScratchbox2SDK.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestScratchbox2SDK.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -14,6 +14,8 @@
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
 import org.maemo.esbox.scratchbox.sb2.sdk.MaemoRootstrap;
 import org.maemo.mica.common.core.sdk.ISDKPlatform;
+import org.maemo.mica.maemosdk.core.IMaemoSDKPlatform;
+import org.osgi.framework.Version;
 
 import java.util.*;
 
@@ -24,6 +26,8 @@
 	public void setUp() throws Exception {
 		super.setUp();
 		possibleRootstraps = new HashSet<String>();
+		possibleRootstraps.add("fremantle5.0_beta1_i386");
+		possibleRootstraps.add("fremantle5.0_beta1_armel");
 		possibleRootstraps.add("diablo41_armel");
 		possibleRootstraps.add("diablo4.1_armel");
 		possibleRootstraps.add("diablo4.1_i386l");
@@ -76,21 +80,30 @@
 	public void testGetPlatform() throws Exception {
 		Scratchbox2SDK sdk = (Scratchbox2SDK) sb2Sdk;
 		ISDKPlatform platform = sdk.getPlatform("diablo41_armel");
-		assertEquals("Diablo", platform.getName());
-		assertEquals("4.1", platform.getVersion());
+		assertTrue(platform.toString(), IMaemoSDKPlatform.DIABLO.matches(platform));
+		assertEquals("4.1", platform.getVersionString());
 		
 		platform = sdk.getPlatform("diablo41_x86");
-		assertEquals("Diablo", platform.getName());
-		assertEquals("4.1", platform.getVersion());
+		assertTrue(platform.toString(), IMaemoSDKPlatform.DIABLO.matches(platform));
+		assertEquals("4.1", platform.getVersionString());
 		
 		platform = sdk.getPlatform("diablo41_i386");
-		assertEquals("Diablo", platform.getName());
-		assertEquals("4.1", platform.getVersion());
+		assertTrue(platform.toString(), IMaemoSDKPlatform.DIABLO.matches(platform));
+		assertEquals("4.1", platform.getVersionString());
 		
 		platform = sdk.getPlatform("diablo4.1.1_armel");
-		assertEquals("Diablo", platform.getName());
-		assertEquals("4.1.1", platform.getVersion());
+		assertTrue(platform.toString(), IMaemoSDKPlatform.DIABLO.matches(platform));
+		assertEquals("4.1.1", platform.getVersionString());
 		
+		platform = sdk.getPlatform("fremantle5.0_beta1_armel");
+		assertTrue(platform.toString(), IMaemoSDKPlatform.FREMANTLE.matches(platform));
+		assertEquals("5.0_beta1", platform.getVersionString());
+		assertEquals(new Version(5, 0, 0, "_beta1"), platform.getVersion());
+		
+		platform = sdk.getPlatform("fremantle5.0_beta1_i386");
+		assertTrue(platform.toString(), IMaemoSDKPlatform.FREMANTLE.matches(platform));
+		assertEquals(new Version(5, 0, 0, "_beta1"), platform.getVersion());
+		
 	}
 	
 	

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestScratchboxFacade.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestScratchboxFacade.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.tests/src/org/maemo/esbox/scratchbox/tests/commands/TestScratchboxFacade.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,6 +11,11 @@
  *******************************************************************************/
 package org.maemo.esbox.scratchbox.tests.commands;
 
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.junit.Test;
@@ -20,13 +25,9 @@
 import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDK;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.process.IProcessLauncher;
-import org.maemo.mica.common.core.process.ProcessLauncherCreator;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 
-import java.util.*;
-
-import junit.framework.TestCase;
-
 /**
  * Please, read file TESTS.txt for more instructions about test.
  */
@@ -276,11 +277,9 @@
 		ISDKTarget target = ScratchboxSDKFacade.getInstance().getScratchboxSDK(Scratchbox1SDK.class).get(0).getCurrentSDKTarget();
 		Process process = null;
 		try {
-			// need a PTY or else the shell fails to launch
-			IProcessLauncher launcher = ProcessLauncherCreator.createProcessLauncher(target.getProcessLauncherFactory(), null,
-					Collections.singletonList("/bin/sh"), null);
-			launcher.usePTY(true);
-			process = launcher.createProcess();
+			IProcessLauncher launcher = target.getProcessLauncherFactory().createProcessLauncher(
+					ProcessLauncherParameters.create("bin/sh"));
+			process = launcher.createProcess(null);
 			
 			// wait for it to really start
 			Thread.sleep(5000);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/ApplyAutoconfPatchEngine.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/ApplyAutoconfPatchEngine.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/ApplyAutoconfPatchEngine.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -27,14 +27,21 @@
 import org.maemo.esbox.internal.api.scratchbox.core.sdk.AbstractScratchboxSDK;
 import org.maemo.esbox.internal.scratchbox.ui.UIActivator;
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
-import org.maemo.mica.common.core.GeneralUtils;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.filesystem.IFileSystemAccess;
 import org.maemo.mica.common.core.machine.IMachine;
-import org.maemo.mica.common.core.process.*;
+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.ProcessLauncherParameters;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils;
+import org.maemo.mica.common.core.process.StringBuilderStreamTextMonitor;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.common.core.ui.IProgressReporter;
 import org.maemo.mica.common.core.ui.ProgressReporterStreamTextMonitor;
+import org.maemo.mica.internal.api.common.core.GeneralUtils;
 import org.maemo.mica.internal.api.common.core.SudoWrappedProcessLauncherFactory;
 
 /**
@@ -115,7 +122,7 @@
 		
 		// copy patch to build target
 		IMachine machine = target.getFileSystemAccess().getMachine();
-		IPath tempDir = machine.getUserHome().append(GeneralUtils.DEFAULT_MICA_HIDDEN_PATH);
+		IPath tempDir = MachineUtils.getTemporaryPath(machine); 
 		
 		IFileSystemAccess fileSystemAccess = target.getFileSystemAccess();
 
@@ -207,16 +214,14 @@
 		reporter.logInfo("Patching " + autom4tePath.toPortableString());
 
 		// ignore whitespace and do not reverse patch 
-		List<String> patchCmdLine = CommandLineArguments.wrapScriptCommandLineForShell(
+		List<String> patchCmdLine = CommandLineArguments.wrapScriptCommandLineForUnixShell(
 				CommandLineArguments.createFromVarArgs(
 						"patch", "-l", "-N",
 						autom4tePath.toPortableString(),
 						"<", patchPath.toPortableString()));
 		
-		IProcessLauncher launcher = ProcessLauncherCreator.createProcessLauncher(
-				factory,
-				null,
-				patchCmdLine);
+		IProcessLauncher launcher = factory.createProcessLauncher(
+				ProcessLauncherParameters.create(patchCmdLine));
 			
 		try {
 			StringBuilderStreamTextMonitor textMonitor = new StringBuilderStreamTextMonitor(true);

Modified: branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/ApplyAutoconfPatchTargetsPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/ApplyAutoconfPatchTargetsPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/ApplyAutoconfPatchTargetsPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -24,7 +24,7 @@
 import org.maemo.esbox.internal.api.scratchbox.core.commands.*;
 import org.maemo.mica.common.core.sdk.*;
 import org.maemo.mica.common.ui.sdk.BuildTargetUI;
-import org.maemo.mica.internal.api.common.core.GridLayoutWrappedTextUtils;
+import org.maemo.mica.internal.api.common.core.ui.GridLayoutWrappedTextUtils;
 
 import java.util.ArrayList;
 import java.util.List;

Deleted: branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardCPUMethod.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardCPUMethod.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardCPUMethod.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007-2008 INdT, (c) 2008 Nokia Corporation
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Raul Herbster (UFCG) - initial API and implementation
- *    Carolina Nogueira de Souza (UFCG) - initial API and implementation
- *    Ed Swartz (Nokia)
- *******************************************************************************/
-
-package org.maemo.esbox.internal.api.scratchbox.ui.wizards;
-
-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.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.maemo.esbox.internal.scratchbox.ui.UIActivator;
-import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDK;
-import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.ErrorLogger;
-import org.maemo.mica.internal.api.maemosdk.ui.wizards.IValidatePage;
-
-import java.util.List;
-
-/**
- * This pages shows the CPU-transparency method that the user can choose for his/her
- * target. The CPU-transparency method provides a way so that the user can execute the
- * executable.
- * 
- */
-public class TargetWizardCPUMethod extends WizardPage implements IValidatePage {
-	
-	private Table table;
-	
-
-
-	private boolean sbrshConfigure;
-	private IScratchboxSDK sdk;
-	
-	private static final String SBRSH = "sbrsh";
-	
-	/**
-	 * Creates a NewTargetWizardCPUMethod
-	 */
-	protected TargetWizardCPUMethod(IScratchboxSDK sdk) {		
-		super("CPU-Transparency Method");
-		setTitle("CPU-Transparency Method");
-		setDescription("Select CPU-transparency method");	 
-		setPageComplete(false);
-		this.sdk = sdk;
-	}
-	
-	public Table getTable() {
-		return table;
-	}
-
-	
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createControl(Composite parent) {		
-		Composite composite = new Composite(parent, SWT.NONE);
-		composite.setLayout(new GridLayout(1, false));
-		Label label = new Label(composite,SWT.LEFT);
-		label.setText("CPU-Transparency Methods"); //$NON-NLS-1$
-				
-		table = new Table(composite, SWT.MULTI| SWT.BORDER | SWT.V_SCROLL);
-		table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));		
-		table.setLinesVisible(true);
-		//table.setSize(50, 50);
-		table.setHeaderVisible(false);
-		table.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent event) {				
-				for(TableItem item: table.getSelection())					
-					setSbrshConfigure(item.getText().endsWith(TargetWizardCPUMethod.SBRSH));
-				validatePage();
-			}
-		});
-		
-		inicializeTable();	
-		table.redraw();
-		setControl(composite);
-	}
-	
-	
-	private void setSbrshConfigure(boolean value) {
-		sbrshConfigure = value;
-	}
-	
-	public boolean getSbrshConfigure() {
-		return sbrshConfigure;
-	}
-
-	public boolean canFinish() {
-		return isPageComplete();
-	}
-	
-	/**
-	 * Inicializes the contents of the table.
-	 */
-	private void inicializeTable() {	
-		List<String> targetMethod = null;
-		try {
-//			targetMethod = ScratchboxFacade.getInstance().getCputransp(sdk);
-			targetMethod = sdk.getCputransp();
-		} catch (MicaException e) {
-			ErrorLogger errorLogger = UIActivator.getErrorLogger();
-			errorLogger.logAndShowError("Cannot get list of CPU-Transparency Method", e);
-			return;
-		}
-		
-		TableItem item = null;		
-		for (String cputransp : targetMethod) {			
-			item = new TableItem(table,SWT.NONE);
-			item.setText(cputransp);
-		}		
-	}
-	
-	
-
-	/*
-	 *  (non-Javadoc)
-	 * @see br.edu.ufcg.dee.omapsdk.properties.target.wizard.pages.ValidateWizardPage#perfomeAction()
-	 */
-	public boolean validatePage() {
-		setPageComplete(true);	
-		return true;
-	}
-}
\ No newline at end of file

Deleted: branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardCompilerPage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardCompilerPage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardCompilerPage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007-2008 INdT, (c) 2008 Nokia Corporation
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Raul Herbster (UFCG) - initial API and implementation
- *    Carolina Nogueira de Souza (UFCG) - initial API and implementation
- *    Ed Swartz (Nokia)
- *******************************************************************************/
-
-package org.maemo.esbox.internal.api.scratchbox.ui.wizards;
-
-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.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.maemo.esbox.internal.scratchbox.ui.UIActivator;
-import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDK;
-import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.ErrorLogger;
-import org.maemo.mica.internal.api.maemosdk.ui.wizards.IValidatePage;
-
-import java.util.List;
-
-/**
- * This pages shows the compilers that the user can choose for his/her
- * target. The compilers are disposed as a list with checkbox, so the user
- * can select only one.
- * 
- */
-public class TargetWizardCompilerPage extends WizardPage implements IValidatePage {
-
-	private Table table;
-	private IScratchboxSDK sdk;
-	
-	/**
-	 * Constructs a NewTargetWizardCompilerPage
-	 */
-	protected TargetWizardCompilerPage(IScratchboxSDK sdk) {
-		super("Compiler");
-		this.sdk = sdk;
-		setTitle("Compiler");
-		setDescription("Select compiler");
-		setPageComplete(false);
-	}
-	
-	public Table getTableControl(){
-		return table;
-	}
-	
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		composite.setLayout(new GridLayout(1, false));
-		
-		Label label = new Label(composite,SWT.LEFT);
-		label.setText("Compilers");
-				
-		table = new Table(composite,SWT.SINGLE | SWT.BORDER);
-		table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));		
-		table.setLinesVisible(true);
-		table.setHeaderVisible(false);
-		table.addSelectionListener(new SelectionAdapter() {
-			public void widgetSelected(SelectionEvent event) {
-				validatePage();
-			}
-		});
-		
-		inicializeTable();
-		
-		setControl(composite);
-	}
-
-	/**
-	 * Inicializes the contents of the table.
-	 */
-	private void inicializeTable() {		
-		List<String> compilers = null;
-		try {
-//			compilers = ScratchboxFacade.getInstance().getCompilers(sdk);
-			compilers = sdk.getCompilers();
-		} catch (MicaException e) {			
-			ErrorLogger errorLogger = UIActivator.getErrorLogger();
-			errorLogger.logAndShowError("Cannot get list of compilers", e);
-			return;
-		}		
-		
-		TableItem item = null;
-		for (String compilerName : compilers) {
-			item = new TableItem(table, SWT.NONE);			
-			item.setText(compilerName);
-		}		
-	}
-	
-	/*
-	 *  (non-Javadoc)
-	 * @see br.edu.ufcg.dee.omapsdk.properties.target.wizard.pages.ValidateWizardPage#perfomeAction()
-	 */
-	public boolean validatePage() {
-		setPageComplete(true);
-		return true;
-	}
-
-}

Deleted: branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardNamePage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardNamePage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardNamePage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -1,144 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007-2008 INdT, (c) 2008 Nokia Corporation
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Raul Herbster (UFCG) - initial API and implementation
- *    Carolina Nogueira de Souza (UFCG) - initial API and implementation
- *    Ed Swartz (Nokia)
- *******************************************************************************/
-
-package org.maemo.esbox.internal.api.scratchbox.ui.wizards;
-
-import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.*;
-import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDK;
-import org.maemo.mica.common.core.sdk.SDKFactory;
-import org.maemo.mica.internal.api.maemosdk.ui.wizards.IValidatePage;
-import org.maemo.mica.internal.api.maemosdk.ui.wizards.TargetListener;
-
-/**
- * The user insert the name for the target. This name must be unique.
- */
-public class TargetWizardNamePage extends WizardPage implements IValidatePage, TargetListener {
-	
-	private Text text;	
-	private IScratchboxSDK sdk;
-	
-	/**
-	 * Constructs a NewTargetWizardNamePage.
-	 */
-	protected TargetWizardNamePage(IScratchboxSDK sdk) {		
-		super("Target Name");
-		this.sdk = sdk;
-		setTitle("Target Name");
-		setDescription("Enter name for the new target");
-		this.targetAdded();		
-		setPageComplete(false);		
-	}	
-		
-	public Text getTextControl(){
-		return text;
-	}
-	/*
-	 *  (non-Javadoc)
-	 * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
-	 */
-	public void createControl(Composite parent) {
-		Composite composite = new Composite(parent, SWT.NONE);
-		composite.setLayout(new GridLayout(1, false));
-		
-		Label label = new Label(composite, SWT.LEFT);
-		label.setText("Target Name:"); 
-		
-		text = new Text(composite, SWT.BORDER);
-		text.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-		
-		text.addKeyListener(new KeyListener() {
-			public void keyPressed(KeyEvent event) {
-				validatePage();
-			}
-			
-			public void keyReleased(KeyEvent event) {
-				validatePage();				
-			}
-		});		
-		
-		setControl(composite);
-	}
-	
-	/*
-	 *  (non-Javadoc)
-	 * @see br.edu.ufcg.dee.omapsdk.properties.target.wizard.pages.ValidateWizardPage#perfomeAction()
-	 */
-	public boolean validatePage() {		
-		String value = text.getText();		
-		if(value.length() >= 1) {
-			setPageComplete(true);
-		} else {
-			setPageComplete(false);
-		}
-		boolean isValid = false;
-		isValid = verifyName();
-		setPageComplete(isValid);		
-		return isValid;
-	}
-		
-	/**
-	 * Verify if the name of the target exists previously.
-	 * 
-	 * @return 
-	 * 				true, if the name of the target have been defined already; false, otherwise.
-	 */
-	private boolean verifyName() {
-		String targetName = text.getText().trim();
-		if(sdk.findSDKTarget(targetName) != null) {
-			setErrorMessage("This target name is already defined.");
-			return false;			
-		} else {
-			setErrorMessage(null);			
-			return true;
-		}
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see br.edu.ufcg.dee.omapsdk.properties.target.wizard.TargetWizardListener#targetAdded()
-	 */
-	public void targetAdded() {
-		updateTargetList();
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see dee.nokia.esbox.plugin.ui.internal.wizard.targets.TargetListener#targetRemoved()
-	 */
-	public void targetRemoved() {
-		updateTargetList();
-	}
-
-	/*
-	 *  (non-Javadoc)
-	 * @see dee.nokia.esbox.plugin.ui.internal.wizard.targets.TargetListener#targetChoosen(java.lang.String)
-	 */
-	public void targetChoosen(String name) {
-		// for this wizard page, this action doesnt matter.		
-	}	
-	
-	/**
-	 * Update the list of target on Scratchbox. This process is done
-	 * because the wizard needs to know the target to control the creation of 
-	 * new targets.
-	 */
-	private void updateTargetList() {
-		SDKFactory.getInstance().refresh(false);
-	}
-}
\ No newline at end of file

Deleted: branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardPageFactory.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardPageFactory.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.scratchbox.ui/src/org/maemo/esbox/internal/api/scratchbox/ui/wizards/TargetWizardPageFactory.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007-2008 INdT, (c) 2008 Nokia Corporation
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Raul Herbster (UFCG) - initial API and implementation
- *    Carolina Nogueira de Souza (UFCG) - initial API and implementation
- *    Ed Swartz (Nokia)
- *******************************************************************************/
-
-package org.maemo.esbox.internal.api.scratchbox.ui.wizards;
-
-import org.eclipse.jface.wizard.IWizardPage;
-import org.eclipse.jface.wizard.WizardPage;
-import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDK;
-import org.maemo.mica.internal.api.maemosdk.ui.wizards.BadInstallationPage;
-import org.maemo.mica.internal.api.maemosdk.ui.wizards.sbrsh.SbrshConfigurationNFSServer;
-import org.maemo.mica.internal.api.maemosdk.ui.wizards.sbrsh.SbrshConfigurationTargetDevice;
-
-/**
- * Factory that creates all pages of the new target wizard.
- * 
- */
-public class TargetWizardPageFactory {
-
-	private static TargetWizardPageFactory singleton = null;
-	
-	/**
-	 * Construtor
-	 */
-	private TargetWizardPageFactory() {
-		
-	}
-	
-	/**
-	 * Returns only one instance of TargetWizardPageFactory object.
-	 * @return only one instance of TargetWizardPageFactory object.
-	 */
-	public static TargetWizardPageFactory getInstance() {
-		if(singleton == null)
-			singleton = new TargetWizardPageFactory();
-		return singleton;
-	}
-	
-	/**
-	 * Creates a new name page.
-	 * @return a new name page.
-	 */
-	public WizardPage createNamePage(IScratchboxSDK sdk) {
-		return new TargetWizardNamePage(sdk);
-	}
-	
-	/**
-	 * Creates a new compiler page.
-	 * @return a new compiler page.
-	 */
-	public WizardPage createCompilerPage(IScratchboxSDK sdk) {
-		return new TargetWizardCompilerPage(sdk);
-	}
-	
-	/**
-	 * Creates a new CPU-method transparency page.
-	 * @return a new CPU-method transparency page.
-	 */
-	public WizardPage createCPUMethod(IScratchboxSDK sdk) {
-		return new TargetWizardCPUMethod(sdk);
-	}
-	
-//	/**
-//	 * Creates a new devkit page.
-//	 * @return a new devkit page.
-//	 */
-//	public WizardPage createDevkitsPage(IScratchbox1SDK sdk) {
-//		return new TargetWizardDevkitsPage(sdk);
-//	}
-	
-	/**
-	 * Create a new page to configure sbrsh device target.
-	 * @return a new page to configure sbrsh device target.
-	 */
-	public WizardPage createSbrshConfigDeviceTargetPage() {
-		return new SbrshConfigurationTargetDevice();
-	}
-	
-	/**
-	 * Create a new page to configure sbrsh nfs server.
-	 * @return a new page to configure sbrsh nfs server.
-	 */
-	public WizardPage createSbrshConfigNFSSServer() {
-		return new SbrshConfigurationNFSServer();
-	}
-
-	public IWizardPage createBadInstallationPage() {
-		return new BadInstallationPage();
-	}
-
-//	public WizardPage createMaemoRootstrapPage(IScratchboxSDK sdk) {
-//		return new TargetWizardRootstrapSb2Page(sdk);
-//	}
-}

Modified: branches/work_new_pydev/org.maemo.esbox.tests/asthelper.completions
===================================================================
(Binary files differ)

Modified: branches/work_new_pydev/org.maemo.esbox.tests/build.properties
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.tests/build.properties	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.tests/build.properties	2009-07-08 11:19:18 UTC (rev 1854)
@@ -1,4 +1,6 @@
 source.. = src/
 output.. = bin/
 bin.includes = META-INF/,\
-               .
+               .,\
+               test.xml,\
+               data/

Modified: branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/ESboxProductTestSuite.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/ESboxProductTestSuite.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/ESboxProductTestSuite.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -22,9 +22,7 @@
 import junit.framework.TestSuite;
 
 /**
- * We place this suite here since the maemo SDK tests usually depend on
- * most of these other features anyway.  (The alternative is to make a new
- * org.maemo.esbox.product.tests plugin.)
+ * Top-level test for all the ESbox unit tests.
  * @author eswartz
  *
  */
@@ -60,8 +58,8 @@
 		};
 		ErrorLogger.addListener(listener);
 		
-		suite.addTest(org.maemo.esbox.internal.tests.ESboxMicaTestSuite.suite());
 		suite.addTest(org.maemo.mica.common.core.tests.MicaCoreTestSuite.suite());
+		suite.addTest(org.maemo.esbox.internal.tests.ESboxMicaTestSuite.suite());
 		suite.addTest(org.maemo.esbox.vm.tests.ESboxVMTestSuite.suite());
 		suite.addTest(org.maemo.esbox.scratchbox.tests.ESboxScratchboxTestSuite.suite());
 		suite.addTest(org.maemo.mica.linux.tests.MicaLinuxTestSuite.suite());

Modified: branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/common/SboxTestUtils.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/common/SboxTestUtils.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/common/SboxTestUtils.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -13,7 +13,7 @@
 
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.common.core.tests.TestUtils;
 
 /**
@@ -27,8 +27,8 @@
 	public static ISDKTarget theSB1SDKTarget;
 
 	public static void reset() {
-		SDKFactory.getInstance().waitForRefreshComplete(null);
-		sdkTargets = SDKFactory.getInstance().getAllSDKTargets();
+		SDKManager.getInstance().waitForRefreshComplete(null);
+		sdkTargets = SDKManager.getInstance().getAllSDKTargets();
 		for (ISDKTarget target : sdkTargets) {
 			if (!TestUtils.isSupportedBuildableSDKTarget(target))
 				continue;

Modified: branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp/TestCppBuildConfigProjectConverter.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp/TestCppBuildConfigProjectConverter.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp/TestCppBuildConfigProjectConverter.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -134,21 +134,24 @@
 		int kindMask = languageData.getSupportedEntryKinds();
 		assertTrue((kindMask & ICLanguageSettingEntry.INCLUDE_PATH) != 0);
 		ICLanguageSettingEntry[] entries = languageData.getEntries(ICLanguageSettingEntry.INCLUDE_PATH);
-		assertEquals("no indexer data?", 11, entries.length);
-		assertEquals("no indexer data?", ICLanguageSettingEntry.INCLUDE_PATH, entries[0].getKind());
+		assertEquals("no indexer data?", 12, entries.length);
+		assertEquals("no indexer data?", ICLanguageSettingEntry.INCLUDE_PATH, entries[1].getKind());
 		
+		assertTrue("no indexer data for /project", 
+				entries[0].getValue().startsWith("/" + handle.getProject().getName()));
+
 		// note: the old indexer data is still in the project and is not currently updated
 		// note 2: a bug somewhere causes the winders reference s:\...\  to be considered relative
 		// and  stuck to the end of the project location; since we don't expect to convert 
 		// projects between OSes normally, ignore this for now
 		assertTrue("no indexer data for /usr/include/gtk-2.0", 
-				entries[0].getValue().endsWith("/users/devel/targets/CHINOOK_ARMEL/usr/include/gtk-2.0"));
-		assertEquals("no indexer data?", ICLanguageSettingEntry.INCLUDE_PATH, entries[1].getKind());
+				entries[1].getValue().endsWith("/users/devel/targets/CHINOOK_ARMEL/usr/include/gtk-2.0"));
+		assertEquals("no indexer data?", ICLanguageSettingEntry.INCLUDE_PATH, entries[2].getKind());
 		assertTrue("no indexer data for /usr/lib/gtk-2.0/include", 
-				entries[1].getValue().endsWith("/users/devel/targets/CHINOOK_ARMEL/usr/lib/gtk-2.0/include"));
+				entries[2].getValue().endsWith("/users/devel/targets/CHINOOK_ARMEL/usr/lib/gtk-2.0/include"));
 		
 		// #10 is a compiler path, recalculated on import
 		assertEquals(ICLanguageSettingEntry.INCLUDE_PATH, entries[10].getKind());
-		assertTrue("no indexer data for compiler?", entries[10].getValue().contains("compilers"));
+		assertTrue("no indexer data for compiler?", entries[11].getValue().contains("compilers"));
 	}
 }

Modified: branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp/TestCppBuildConfigProjectCreator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp/TestCppBuildConfigProjectCreator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/cpp/TestCppBuildConfigProjectCreator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -114,7 +114,7 @@
 		IProjectType projectType = ProjectManager.getInstance().getProjectType(MicaCppProjectConstants.C_PROJECT_TYPE_ID);
 		configHandler.initializeSingleBuildConfiguration(projectType, theSB2SDKTarget);
 		
-		IPath projectPath = TestUtils.getKnownSBVisibleWorkspacePath(theSB1SDKTarget).append("__unittest2");
+		IPath projectPath = TestUtils.getKnownSBVisibleWorkspacePath(theSB2SDKTarget).append("__unittest2");
 		IProject project = getNonExistingProject("testsb2", projectPath);
 		
 		_testProjectCreation(project, projectPath);

Modified: branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/linux/TestFremantleAptBuildPackageMapping.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/linux/TestFremantleAptBuildPackageMapping.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/linux/TestFremantleAptBuildPackageMapping.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -17,13 +17,13 @@
 import org.junit.Test;
 import org.maemo.esbox.internal.scratchbox.sb1.core.SB1PreferenceConstants;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.common.core.tests.TestUtils;
+import org.maemo.mica.internal.api.common.core.sdk.SDKManagerInternal;
 import org.maemo.mica.internal.api.linux.packages.core.aptpkgconfig.*;
+import org.maemo.mica.maemosdk.core.IMaemoSDKPlatform;
 
 /**
- * Test the IPackageManager interface to package mapping (black-box).
- * This requires a CHINOOK or DIABLO (scratchbox) SDK to be available.
  * @author eswartz
  *
  */
@@ -41,15 +41,14 @@
 			// try to find Fremantle SB1 in /opt/scratchbox 
 			SB1PreferenceConstants.getPreferenceStore().setValue(
 					SB1PreferenceConstants.SB1_ROOTS, "/scratchbox:/opt/scratchbox");
-			SDKFactory.getInstance().refresh(false);
-			SDKFactory.getInstance().waitForRefreshComplete(null);
+			SDKManagerInternal.getInstance().refresh(null);
 			
 			IAptPackageManager fremantleMgr = null;
 		
-			for (ISDKTarget sdkTarget : SDKFactory.getInstance().getAllSDKTargets()) {
+			for (ISDKTarget sdkTarget : SDKManager.getInstance().getAllSDKTargets()) {
 				if (!TestUtils.isSupportedBuildableSDKTarget(sdkTarget))
 					continue;
-				if (sdkTarget.getPlatform().getName().equalsIgnoreCase("fremantle")) {
+				if (IMaemoSDKPlatform.FREMANTLE.matches(sdkTarget.getPlatform())) {
 					IAptPackageManager packageManager = AptPackageManagerRegistry.getInstance().getPackageManagerFor(sdkTarget);
 					if (packageManager != null) {
 						fremantleMgr = packageManager;
@@ -64,7 +63,7 @@
 		} finally {
 			SB1PreferenceConstants.getPreferenceStore().setValue(
 					SB1PreferenceConstants.SB1_ROOTS, origRoot);
-			SDKFactory.getInstance().refresh(false);
+			SDKManagerInternal.getInstance().refresh(false);
 		}
 	}
 

Modified: branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/protocol/ManualTestSBRSHMachine.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/protocol/ManualTestSBRSHMachine.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/protocol/ManualTestSBRSHMachine.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -10,27 +10,38 @@
  *******************************************************************************/
 package org.maemo.esbox.tests.protocol;
 
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.List;
+
 import org.eclipse.core.filesystem.IFileStore;
-import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
 import org.maemo.esbox.tests.common.SboxTestUtils;
 import org.maemo.mica.common.core.HostUtils;
-import org.maemo.mica.common.core.env.EnvironmentManager;
+import org.maemo.mica.common.core.env.EnvironmentModifierBlock;
 import org.maemo.mica.common.core.env.IEnvironmentModifierBlock;
 import org.maemo.mica.common.core.filesystem.IFileSystemAccess;
-import org.maemo.mica.common.core.machine.*;
-import org.maemo.mica.common.core.process.*;
+import org.maemo.mica.common.core.machine.IMachine;
+import org.maemo.mica.common.core.machine.MachineRegistry;
+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.ProcessLauncherParameters;
 import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.common.core.tests.TestUtils;
 import org.maemo.mica.common.core.tests.core.BaseTest;
 import org.maemo.mica.internal.api.protocol.launch.sbrsh.ISBRSHLaunchAdapter;
-import org.maemo.mica.internal.api.protocol.sbrsh.*;
+import org.maemo.mica.internal.api.protocol.sbrsh.ISBRSHMachine;
+import org.maemo.mica.internal.api.protocol.sbrsh.SBRSHCommandConfiguration;
+import org.maemo.mica.internal.api.protocol.sbrsh.SBRSHConfigurationFile;
+import org.maemo.mica.internal.api.protocol.sbrsh.SBRSHConfigurationFileFactory;
+import org.maemo.mica.internal.api.protocol.sbrsh.SBRSHMachineFactory;
 
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.net.URI;
-import java.util.List;
 
-
 /**
  * @author eswartz
  *
@@ -91,10 +102,9 @@
 	/** Ensure that a simple launch works */
 	public void testSimple() throws Exception {
 		if (!validateMachine(sbrshMachine)) return;
-		List<String> cmdLine = CommandLineArguments.createFromCommandLine("ls -m");
 		IProcessLauncherFactory factory = sbrshMachine.getProcessLauncherFactory();
-		IProcessLauncher launcher = factory.createProcessLauncher(null, cmdLine, null);
-		Process process = launcher.createProcess();
+		IProcessLauncher launcher = factory.createProcessLauncher(ProcessLauncherParameters.create("ls -m"));
+		Process process = launcher.createProcess(null);
 		
 		// this variant waits for the process to finish before consuming output
 		//
@@ -118,15 +128,16 @@
 	/** Ensure environment variables are passed properly */
 	public void testEnvVars() throws Exception {
 		if (!validateMachine(sbrshMachine)) return;
-		List<String> cmdLine = CommandLineArguments.wrapScriptCommandLineForShell(
+		List<String> cmdLine = CommandLineArguments.wrapScriptCommandLineForUnixShell(
 				CommandLineArguments.createFromCommandLine("echo $CC,$LD/"));
-		IEnvironmentModifierBlock envBlock = EnvironmentManager.getInstance().createEnvironmentModifierBlock();
+		IEnvironmentModifierBlock envBlock = new EnvironmentModifierBlock();
 		envBlock.define("CC", "gcc");
 		envBlock.define("LD", "1 2 3");
 		
 		IProcessLauncherFactory factory = sbrshMachine.getProcessLauncherFactory();
-		IProcessLauncher launcher = factory.createProcessLauncher(null, cmdLine, envBlock);
-		Process process = launcher.createProcess();
+		IProcessLauncher launcher = factory.createProcessLauncher(
+				ProcessLauncherParameters.create(cmdLine, envBlock));
+		Process process = launcher.createProcess(null);
 		int exit = process.waitFor();
 		
 		ByteArrayOutputStream err = new ByteArrayOutputStream();

Modified: branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/python/TestPythonProjectProperties.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/python/TestPythonProjectProperties.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.tests/src/org/maemo/esbox/tests/python/TestPythonProjectProperties.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -55,6 +55,8 @@
 	}
 
 	public void testNewPythonProjectProperties() throws Exception {
+		if (theSB1SDKTarget == null)
+			return;
 		IPath projectPath = TestUtils.getKnownSBVisibleWorkspacePath(theSB1SDKTarget).append("testimportpy");
 		
 		IProject project = TestUtils.copyAndImportProject(
@@ -91,6 +93,8 @@
 	 */
 	@Test
 	public void testReadOldPythonProjectProperties() throws Exception {
+		if (theSB1SDKTarget == null)
+			return;
 		IPath projectPath = TestUtils.getKnownSBVisibleWorkspacePath(theSB1SDKTarget).append("testimportpy");
 		
 		IProject project = TestUtils.copyAndImportProject(

Modified: branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseLaunchableVirtualMachineController.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseLaunchableVirtualMachineController.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseLaunchableVirtualMachineController.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -33,9 +33,9 @@
 import org.maemo.mica.common.core.machine.MachineManager;
 import org.maemo.mica.common.core.machine.MachineRegistry;
 import org.maemo.mica.common.core.process.*;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 import org.maemo.mica.common.core.sdk.ISDK;
-import org.maemo.mica.common.core.sdk.SDKFactory;
+import org.maemo.mica.common.core.sdk.SDKManager;
 import org.maemo.mica.internal.api.common.core.SudoWrappedProcessLauncherFactory;
 import org.maemo.mica.internal.api.protocol.ssh.SSHErrorConstants;
 
@@ -132,14 +132,15 @@
 			if (monitor == null)
 				return false;
 			
-			if (monitor.isAlive())
+			return !monitor.isCompleted();
+			/*
 				return true;
 			try {
 				launcher.getLastCreatedProcess().exitValue();
 				return false;
 			} catch (IllegalThreadStateException e) {
 				return true;
-			}
+			}*/
 		}
 		
 		/**
@@ -152,7 +153,7 @@
 
 			String msg;
 			if (launcher != null) {
-				Results results = new Results(launcher.getLastCreatedProcess().exitValue(),
+				LaunchResults results = new LaunchResults(launcher.getLastCreatedProcess().exitValue(),
 						streamGrabber.stdout.toString(),
 						streamGrabber.stderr.toString());
 				msg = results.reportResults("Virtual machine died unexpectedly");
@@ -215,9 +216,8 @@
 		System.out.println(commandString);
 		
 		IProcessLauncherFactory processLauncherFactory = new HostProcessLauncherFactory();
-		final IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(
-				processLauncherFactory, parameters);
-		processLauncher.createProcess();
+		final IProcessLauncher processLauncher = processLauncherFactory.createProcessLauncher(parameters);
+		processLauncher.createProcess(null);
 		
 		LaunchedMachineInfo status = new LaunchedMachineInfo(machineConfiguration, processLauncher);
 		
@@ -330,7 +330,7 @@
 		
 		// shut down SDKs
 		monitor.subTask("Stopping SDKs...");
-		for (ISDK sdk : SDKFactory.getInstance().getSDKs()) {
+		for (ISDK sdk : SDKManager.getInstance().getAllSDKs()) {
 			if (sdk.getMachine().equals(getMachine())) {
 				try {
 					sdk.forceShutdown(new SubProgressMonitor(monitor, 1));
@@ -345,13 +345,10 @@
 		// make it halt
 		monitor.subTask("Sending halt command...");
 
-		List<String> cmdLine = CommandLineArguments.createFromVarArgs(
-				"/sbin/halt", "-p", "now");
-
 		IProcessLauncherFactory factory = machine.getProcessLauncherFactory();
 		factory = new SudoWrappedProcessLauncherFactory(machine, factory, "root");
-		IProcessLauncher processLauncher = ProcessLauncherCreator.createProcessLauncher(
-				factory, null, cmdLine); 
+		IProcessLauncher processLauncher = factory.createProcessLauncher(
+				ProcessLauncherParameters.create("/sbin/halt", "-p", "now")); 
 		
 		// note, this exits immediately, so we can't finish immediately after exit
 		try {

Modified: branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualBuildMachine.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualBuildMachine.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualBuildMachine.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -12,7 +12,10 @@
 package org.maemo.esbox.internal.api.vm.core;
 
 
-import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.maemo.mica.common.core.filesystem.IFileSystemAccess;
 import org.maemo.mica.common.core.filesystem.ISharedFilesystemProvider;
 import org.maemo.mica.common.core.machine.IMachineController;
@@ -38,6 +41,35 @@
 	 */
 	@Override
 	public IFileSystemAccess getFileSystemAccess() {
+		// EJS 090624: do this in a job to avoid using a null progress monitor;
+		// if network settings are not perfect, then smbmount will hang for a
+		// very long time and this will be uncancellable.
+		//
+		// Contrary to the comment below, we re-validate shares before a
+		// build, and the flags below should prevent double dialogs.
+		//
+		Job job = new Job("Checking shared folders...") {
+
+			@Override
+			protected IStatus run(IProgressMonitor monitor) {
+				boolean shouldValidate;
+				synchronized (BaseVirtualBuildMachine.this) {
+					shouldValidate = !validatedShares && !isValidatingShares;
+				}
+				if (shouldValidate && !monitor.isCanceled()) {
+					// now, verify shared folders
+					ensureSharesMounted(monitor);
+					
+					// maybe the user cancelled or there were errors... but don't keep asking
+					validatedShares = true;		
+				}
+				return Status.OK_STATUS;
+			}
+			
+		};
+		job.schedule();
+		
+		/*
 		// for this kind of machine, check more proactively,
 		// otherwise build-related stuff is likely to fail
 
@@ -52,6 +84,7 @@
 			// maybe the user cancelled or there were errors... but don't keep asking
 			validatedShares = true;		
 		}
+		*/
 		
 		return super.getFileSystemAccess();
 	}

Modified: branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualMachineController.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualMachineController.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/core/BaseVirtualMachineController.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -30,13 +30,13 @@
 import org.maemo.esbox.internal.api.vm.ui.SynchronizedProgressPartProgressMonitor;
 import org.maemo.esbox.internal.vm.Activator;
 import org.maemo.esbox.vm.core.IVirtualMachineConfiguration;
-import org.maemo.mica.common.core.GeneralUtils;
 import org.maemo.mica.common.core.Policy;
+import org.maemo.mica.common.core.WorkspaceUtils;
 import org.maemo.mica.common.core.machine.IMachine;
 import org.maemo.mica.common.core.machine.MachineException;
 import org.maemo.mica.internal.api.common.core.ILookHereProvider;
-import org.maemo.mica.internal.api.common.core.MachineProblemDialog;
 import org.maemo.mica.internal.api.common.core.filesystem.SambaSharedFolderHandler;
+import org.maemo.mica.internal.api.common.core.ui.MachineProblemDialog;
 import org.maemo.mica.internal.api.protocol.ssh.SSHMachineControllerBase;
 import org.maemo.mica.protocol.ssh.SSHConfiguration;
 
@@ -100,7 +100,7 @@
 		
 		launchMonitor = new SynchronizedProgressPartProgressMonitor(null, monitor);
 
-		if (!GeneralUtils.isJUnitRunning()) {
+		if (!WorkspaceUtils.isJUnitRunning()) {
 			Display.getDefault().asyncExec(new Runnable() {
 				public void run() {
 					monitorDialog[0] = new SlowVirtualMachineLaunchMonitorDialog(

Modified: branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/SlowVirtualMachineLaunchMonitorDialog.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/SlowVirtualMachineLaunchMonitorDialog.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/SlowVirtualMachineLaunchMonitorDialog.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -27,10 +27,10 @@
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Group;
 import org.eclipse.swt.widgets.Shell;
-import org.maemo.mica.common.core.GeneralUtils;
+import org.maemo.mica.common.core.ProductUtils;
 import org.maemo.mica.common.core.machine.IMachine;
 import org.maemo.mica.common.core.machine.IMachineController;
-import org.maemo.mica.internal.api.common.core.LookHereMessageWidget;
+import org.maemo.mica.internal.api.common.core.ui.LookHereMessageWidget;
 import org.maemo.mica.internal.api.protocol.ssh.SSHMachineControllerBase;
 import org.maemo.mica.protocol.ssh.SSHConfiguration;
 
@@ -158,7 +158,7 @@
 			SSHConfiguration config = ((SSHMachineControllerBase) machineController).getConfiguration();
 			builder.append(MessageFormat.format(
 					"{0} expects to connect to the machine at address {1}:{2}, and for the machine to talk back to the host at address {3} (which you can verify with a ping).\n \n",
-					GeneralUtils.getProductName(),
+					ProductUtils.getProductName(),
 					config.getTargetAddress(), config.getTargetPort() + "",
 					config.getHostAddress()));
 		}

Modified: branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/HostInterfaceAddressProvider.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/HostInterfaceAddressProvider.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/internal/api/vm/ui/preferences/HostInterfaceAddressProvider.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -16,7 +16,7 @@
 
 import org.maemo.esbox.internal.vm.Activator;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.machine.NetworkUtils;
+import org.maemo.mica.common.core.NetworkUtils;
 
 /**
  * Provide addresses from the host network interfaces (as strings).

Modified: branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/vm/core/VirtualMachinePreferenceMigrator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/vm/core/VirtualMachinePreferenceMigrator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/vm/core/VirtualMachinePreferenceMigrator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -13,16 +13,15 @@
 
 import java.util.Properties;
 
-import org.eclipse.jface.preference.IPreferenceStore;
 import org.maemo.mica.common.core.PasswordStorage;
 import org.maemo.mica.common.core.preferences.CorePreferenceManager;
-import org.maemo.mica.common.core.preferences.IPreferenceMigrator;
+import org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter;
 
 /**
  * @author eswartz
  *
  */
-public class VirtualMachinePreferenceMigrator implements IPreferenceMigrator {
+public class VirtualMachinePreferenceMigrator extends PreferenceMigratorAdapter {
 
 	/* (non-Javadoc)
 	 * @see org.maemo.mica.common.core.IPreferenceMigrator#adjustDefaultSettings(java.util.Properties)
@@ -41,14 +40,4 @@
 				VirtualMachinePreferenceConstants.VM_USER_PASSWORD, encoded);
 
 	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.mica.common.core.IPreferenceMigrator#convertExistingPreferences(org.eclipse.jface.preference.IPreferenceStore, int, java.util.Properties, java.util.Properties)
-	 */
-	public void convertExistingPreferences(IPreferenceStore preferences,
-			int oldMajor, Properties existingSettings,
-			Properties newPropertyDefaults) {
-		
-	}
-
 }

Modified: branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/vm/ui/SelectVirtualMachineDialog.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/vm/ui/SelectVirtualMachineDialog.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm/src/org/maemo/esbox/vm/ui/SelectVirtualMachineDialog.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -20,7 +20,7 @@
 import org.eclipse.swt.widgets.*;
 import org.eclipse.ui.dialogs.PreferencesUtil;
 import org.maemo.esbox.internal.vm.Activator;
-import org.maemo.mica.common.core.GeneralUtils;
+import org.maemo.mica.common.core.ProductUtils;
 
 /**
  * This dialog tells the user that a build machine should be selected.
@@ -40,7 +40,7 @@
 	public SelectVirtualMachineDialog(Shell shell) {
 		super(shell, "Select Build Machine", null,
 				// note: UI is added below to provide a hyperlink
-				GeneralUtils.getProductName() + " needs to know what machine to use to build and launch your code. \n\n"+
+				ProductUtils.getProductName() + " needs to know what machine to use to build and launch your code. \n\n"+
 				"Your system cannot directly launch scratchbox or Maemo tools, so a virtual machine running 32-bit Linux/i386 must be used.\n\n"+
 				"Please configure the settings by clicking the link below.",
 				MessageDialog.INFORMATION,

Modified: branches/work_new_pydev/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuMachineController.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuMachineController.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuMachineController.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -76,7 +76,7 @@
 		launchPattern = substitutor.substitute(launchPattern);
 		List<String> cmdLine = CommandLineArguments.createFromHostCommandLine(launchPattern);
 		
-		return new ProcessLauncherParameters(null, cmdLine, null);
+		return ProcessLauncherParameters.create(cmdLine);
 	}
 	
 	/* (non-Javadoc)

Modified: branches/work_new_pydev/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuPreferenceMigrator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuPreferenceMigrator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm.qemu/src/org/maemo/esbox/internal/vm/qemu/QemuPreferenceMigrator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -13,15 +13,14 @@
 
 import java.util.Properties;
 
-import org.eclipse.jface.preference.IPreferenceStore;
 import org.maemo.mica.common.core.preferences.CorePreferenceManager;
-import org.maemo.mica.common.core.preferences.IPreferenceMigrator;
+import org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter;
 
 /**
  * @author eswartz
  *
  */
-public class QemuPreferenceMigrator implements IPreferenceMigrator {
+public class QemuPreferenceMigrator extends PreferenceMigratorAdapter {
 
 	/* (non-Javadoc)
 	 * @see org.maemo.mica.common.core.IPreferenceMigrator#adjustDefaultSettings(java.util.Properties)
@@ -40,13 +39,4 @@
 		CorePreferenceManager.selectDefaultForOS(newPropertyDefaults, 
 				QemuPreferenceConstants.QEMU_DISK_IMAGE_PATHS);
 	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.mica.common.core.IPreferenceMigrator#convertExistingPreferences(org.eclipse.jface.preference.IPreferenceStore, int, java.util.Properties, java.util.Properties)
-	 */
-	public void convertExistingPreferences(IPreferenceStore preferences,
-			int oldMajor, Properties existingSettings,
-			Properties newPropertyDefaults) {
-	}
-
 }

Modified: branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxMachineController.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxMachineController.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxMachineController.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -24,7 +24,7 @@
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.machine.MachineException;
 import org.maemo.mica.common.core.process.ProcessLauncherParameters;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 
 import com.nokia.cpp.internal.api.utils.core.TextUtils;
 
@@ -67,7 +67,7 @@
 	 * @param timeout in seconds
 	 * @return Results or <code>null</code>
 	 */
-	protected Results launchAndRunVBoxManage(int timeout, String command, String...	arguments) {
+	protected LaunchResults launchAndRunVBoxManage(int timeout, String command, String...	arguments) {
 		return VirtualBoxUtils.launchAndRunVBoxManage((IVirtualBoxConfiguration)machineConfiguration, 
 				timeout, command, arguments);
 	}
@@ -80,7 +80,7 @@
 	@Override
 	protected ProcessLauncherParameters constructLaunchParameters() {
 		List<String> cmdLine = createVBoxManageCmdLine("startvm", machineName);
-		return new ProcessLauncherParameters(null, cmdLine, null);
+		return ProcessLauncherParameters.create(cmdLine);
 	}
 
 
@@ -89,7 +89,7 @@
 	 */
 	@Override
 	public boolean isMachineRunning() {
-		Results results = launchAndRunVBoxManage(10, "list", "runningvms");
+		LaunchResults results = launchAndRunVBoxManage(10, "list", "runningvms");
 		if (results == null)
 			return false;
 		
@@ -134,7 +134,8 @@
 			launchInfo = launchMachine();
 			
 			// wait for this to finish
-			launchInfo.monitor.runBlocking();
+			launchInfo.monitor.runNonBlocking();
+			launchInfo.monitor.waitForCompletion(null);
 			
 			// we need a little delay between that exit
 			// and the actual launch
@@ -195,7 +196,7 @@
 		if (monitor.isCanceled())
 			return Status.CANCEL_STATUS;
 
-		Results results = launchAndRunVBoxManage(30, "controlvm", machineName, "poweroff");
+		LaunchResults results = launchAndRunVBoxManage(30, "controlvm", machineName, "poweroff");
 		
 		if (results.exitCode != 0) {
 			return Activator.createErrorStatus(

Modified: branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferenceMigrator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferenceMigrator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferenceMigrator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -11,17 +11,16 @@
 
 package org.maemo.esbox.internal.vm.virtualbox;
 
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.maemo.mica.common.core.preferences.CorePreferenceManager;
-import org.maemo.mica.common.core.preferences.IPreferenceMigrator;
-
 import java.util.Properties;
 
+import org.maemo.mica.common.core.preferences.CorePreferenceManager;
+import org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter;
+
 /**
  * @author eswartz
  *
  */
-public class VirtualBoxPreferenceMigrator implements IPreferenceMigrator {
+public class VirtualBoxPreferenceMigrator extends PreferenceMigratorAdapter {
 
 	/* (non-Javadoc)
 	 * @see org.maemo.mica.common.core.IPreferenceMigrator#adjustDefaultSettings(java.util.Properties)
@@ -31,14 +30,4 @@
 		CorePreferenceManager.selectDefaultForOS(newPropertyDefaults,
 				VirtualBoxPreferenceConstants.VIRTUALBOX_EXE_NAME);
 	}
-
-	/* (non-Javadoc)
-	 * @see org.maemo.mica.common.core.IPreferenceMigrator#convertExistingPreferences(org.eclipse.jface.preference.IPreferenceStore, int, java.util.Properties, java.util.Properties)
-	 */
-	public void convertExistingPreferences(IPreferenceStore preferences,
-			int oldMajor, Properties existingSettings,
-			Properties newPropertyDefaults) {
-		
-	}
-
 }

Modified: branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferencePage.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferencePage.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxPreferencePage.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -33,7 +33,7 @@
 import org.maemo.esbox.vm.core.IVirtualMachineConfiguration;
 import org.maemo.esbox.vm.virtualbox.IVirtualBoxConfiguration;
 import org.maemo.mica.common.core.MicaException;
-import org.maemo.mica.common.core.machine.NetworkUtils;
+import org.maemo.mica.common.core.NetworkUtils;
 import org.maemo.mica.common.core.ui.IProgressReporter;
 
 /**

Modified: branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxUtils.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxUtils.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm.virtualbox/src/org/maemo/esbox/internal/vm/virtualbox/VirtualBoxUtils.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -28,9 +28,11 @@
 import org.maemo.mica.common.core.TimeoutProgressMonitor;
 import org.maemo.mica.common.core.machine.MachineRegistry;
 import org.maemo.mica.common.core.process.CommandLineArguments;
+import org.maemo.mica.common.core.process.IProcessLauncher;
+import org.maemo.mica.common.core.process.ProcessLauncherParameters;
 import org.maemo.mica.common.core.process.ProcessLauncherUtils;
 import org.maemo.mica.common.core.process.ShellTemplateSubstitutor;
-import org.maemo.mica.common.core.process.ProcessLauncherUtils.Results;
+import org.maemo.mica.common.core.process.ProcessLauncherUtils.LaunchResults;
 
 /**
  * Utilities for controlling VirtualBox through the VBoxManage program.
@@ -79,15 +81,15 @@
 	 * @param timeout in seconds
 	 * @return Results if process ran, else <code>null</code> (error logged)
 	 */
-	public static Results launchAndRunVBoxManage(IVirtualBoxConfiguration configuration, int timeout, 
+	public static LaunchResults launchAndRunVBoxManage(IVirtualBoxConfiguration configuration, int timeout, 
 			String command, String... arguments) {
 		List<String> cmdLine = createVBoxManageCmdLine(configuration, command, arguments);
-		Results results = null;
+		LaunchResults results = null;
 		try {
+			IProcessLauncher processLauncher = MachineRegistry.getInstance().getLocalMachine().getProcessLauncherFactory().createProcessLauncher(
+			ProcessLauncherParameters.create(cmdLine));
 			results = ProcessLauncherUtils.launchAndReadStandardStreams(
-					MachineRegistry.getInstance().getLocalMachine().getProcessLauncherFactory(),
-					cmdLine,
-					new TimeoutProgressMonitor(timeout * 1000));
+					processLauncher, new TimeoutProgressMonitor(timeout * 1000));
 		} catch (MicaException e) {
 			Activator.getErrorLogger().logError("Failed to run VirtualBox manager", e);
 		}
@@ -100,7 +102,7 @@
 	 */
 	public static Map<String, String> getNameToUUIDMap(IVirtualBoxConfiguration config) {
 		Map<String, String> vmNameToUUIDMap = new LinkedHashMap<String, String>();
-		Results results = launchAndRunVBoxManage(config, 10, "list", "vms");
+		LaunchResults results = launchAndRunVBoxManage(config, 10, "list", "vms");
 		if (results != null) {
 			String currentName = null;
 			for (String line : results.getStdoutLines()) {
@@ -146,7 +148,7 @@
 	 * @return map of key to values
 	 */
 	public static Map<String, String> getVirtualMachineInfo(IVirtualBoxConfiguration configuration) {
-		Results results;
+		LaunchResults results;
 		results = VirtualBoxUtils.launchAndRunVBoxManage(configuration,
 				10, "-version");
 		if (results == null) {
@@ -195,7 +197,7 @@
 	 * @return map of key to values
 	 */
 	public static Map<String, String> getVirtualMachineExtraData(IVirtualBoxConfiguration configuration) {
-		Results results = VirtualBoxUtils.launchAndRunVBoxManage(configuration, 10,
+		LaunchResults results = VirtualBoxUtils.launchAndRunVBoxManage(configuration, 10,
 				"getextradata", configuration.getMachineName(), "enumerate");
 		if (results == null)
 			return null;

Modified: branches/work_new_pydev/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareMachineController.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareMachineController.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwareMachineController.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -95,7 +95,7 @@
 		launchPattern = substitutor.substitute(launchPattern);
 		List<String> cmdLine = CommandLineArguments.createFromHostCommandLine(launchPattern);
 		
-		return new ProcessLauncherParameters(null, cmdLine, null);
+		return ProcessLauncherParameters.create(cmdLine);
 	}
 	
 	/* (non-Javadoc)

Modified: branches/work_new_pydev/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwarePreferenceMigrator.java
===================================================================
--- branches/work_new_pydev/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwarePreferenceMigrator.java	2009-07-07 13:36:33 UTC (rev 1853)
+++ branches/work_new_pydev/org.maemo.esbox.vm.vmware/src/org/maemo/esbox/internal/vm/vmware/VMwarePreferenceMigrator.java	2009-07-08 11:19:18 UTC (rev 1854)
@@ -14,7 +14,7 @@
 import org.eclipse.cdt.utils.WindowsRegistry;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.maemo.mica.common.core.preferences.CorePreferenceManager;
-import org.maemo.mica.common.core.preferences.IPreferenceMigrator;
+import org.maemo.mica.common.core.preferences.PreferenceMigratorAdapter;
 
 import java.io.File;
 import java.util.Properties;
@@ -23,7 +23,7 @@
  * @author eswartz
  *
  */
-public class VMwarePreferenceMigrator implements IPreferenceMigrator {
+public class VMwarePreferenceMigrator extends PreferenceMigratorAdapter {
 
 	/* (non-Javadoc)
 	 * @see org.maemo.mica.common.core.IPreferenceMigrator#adjustDefaultSettings(java.util.Properties)
@@ -44,6 +44,9 @@
 	public void convertExistingPreferences(IPreferenceStore preferences,
 			int oldMajor, Properties existingSettings,
 			Properties newPropertyDefaults) {
+		
+		// this isn't strictly a conversion from an older version, 
+		// but a change that reflects changes in any current installation
 		if (!existingSettings.containsKey(VMwarePreferenceConstants.VMWARE_EXE_NAME)) {
 			WindowsRegistry registry = WindowsRegistry.getRegistry();
 			if (registry != null) {



More information about the Esbox-commits mailing list