--- a/connectivity/com.nokia.carbide.remoteConnections.discovery.pccs/src/com/nokia/carbide/remoteconnections/discovery/pccs/agent/PCCSDiscoveryAgent.java Tue Feb 16 13:43:06 2010 -0600
+++ b/connectivity/com.nokia.carbide.remoteConnections.discovery.pccs/src/com/nokia/carbide/remoteconnections/discovery/pccs/agent/PCCSDiscoveryAgent.java Tue Feb 16 13:44:12 2010 -0600
@@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import org.eclipse.core.runtime.CoreException;
@@ -228,7 +229,7 @@
* @return
*/
private String createUniqueId(DeviceConnection conn) {
- return getClass().getSimpleName() + ": " + conn.friendlyName; //$NON-NLS-1$
+ return getClass().getSimpleName() + ": " + conn.friendlyName + ": " + conn.address; //$NON-NLS-1$
}
/**
@@ -271,8 +272,22 @@
}
private void disconnectAll() {
- for (IConnection2 connection : connections.values()) {
- manager.disconnect(connection);
+ if (connections.isEmpty())
+ return;
+ Set<String> keySet = connections.keySet();
+ for (String key : keySet) {
+ IConnection2 connection = connections.get(key);
+ // if manager knows about this connection, disconnect
+ // otherwise it has already been removed from our system
+ if (manager.findConnection(connection.getIdentifier()) != null) {
+ // not removed yet, disconnect only
+ manager.disconnect(connection);
+ } else {
+ // it's been removed from system
+ // remove it from our list also
+ connections.remove(key);
+ }
+
}
}
--- a/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/status/ConnectionStatusReconciler.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.carbide.trk.support/src/com/nokia/carbide/trk/support/status/ConnectionStatusReconciler.java Tue Feb 16 13:44:12 2010 -0600
@@ -224,18 +224,19 @@
private void setConnectionStatus(IConnection2 connection, boolean isSysTRK, EStatus trkStatus, EStatus traceStatus) {
// use trk status
EConnectionStatus connectionStatus = service2ConnectionStatus(trkStatus);
- // if sys trk, tracing also used
- if (isSysTRK && connectionStatus.equals(EConnectionStatus.READY)) {
- connectionStatus = service2ConnectionStatus(traceStatus);
- }
+ // NOTE: removing trace status logic for now
+// // if sys trk, tracing also used
+// if (isSysTRK && connectionStatus.equals(EConnectionStatus.READY)) {
+// connectionStatus = service2ConnectionStatus(traceStatus);
+// }
String shortDesc = getShortDescriptionForStatus(connectionStatus);
StringBuilder longDesc = new StringBuilder(Messages.getString("ConnectionStatusReconciler_TRKServicePrefix")); //$NON-NLS-1$
longDesc.append(getServiceStatusString(trkStatus));
- if (isSysTRK) {
- longDesc.append(Messages.getString("ConnectionStatusReconciler_TracingServicePrefix")); //$NON-NLS-1$
- longDesc.append(getServiceStatusString(traceStatus));
- }
+// if (isSysTRK) {
+// longDesc.append(Messages.getString("ConnectionStatusReconciler_TracingServicePrefix")); //$NON-NLS-1$
+// longDesc.append(getServiceStatusString(traceStatus));
+// }
connection.setStatus(new ConnectionStatus(connectionStatus, shortDesc, longDesc.toString()));
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/plugin.xml Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/plugin.xml Tue Feb 16 13:44:12 2010 -0600
@@ -176,11 +176,11 @@
<extension
point="org.eclipse.debug.ui.launchShortcuts">
<shortcut
- label="Symbian OS Application"
+ label="Symbian OS Board Launch"
icon="icons/launch_config_file_16x16.png"
modes="run, debug"
- class="com.nokia.cdt.internal.debug.launch.SymbianLaunchShortcut"
- id="com.nokia.cdt.debug.launch.symbianCPPShortcut">
+ class="com.nokia.cdt.internal.debug.launch.BoardLaunchShortcut"
+ id="com.nokia.cdt.debug.launch.symbianCPPShortcut.board">
<contextualLaunch>
<enablement>
<with variable="selection">
@@ -210,23 +210,185 @@
forcePluginActivation="true"
property="com.nokia.cdt.debug.launch.isExecutable"/>
</or>
+ <test
+ forcePluginActivation="true"
+ property="com.nokia.cdt.debug.launch.isNotEmulator">
+ </test>
</and>
</iterate>
</with>
</enablement>
<contextLabel
mode="run"
- label="Run Symbian OS Application"/>
+ label="Run Symbian OS Application on board"/>
<contextLabel
mode="debug"
- label="Debug Symbian OS Application"/>
+ label="Debug Symbian OS Application on board"/>
</contextualLaunch>
<description
mode="run"
- description="Runs a Symbian OS executable"/>
+ description="Runs on a development board or reference hardware using a JTAG connection."/>
<description
mode="debug"
- description="Debugs a Symbian OS executable"/>
+ description="Debugs on a development board or reference hardware using a JTAG connection."/>
+ </shortcut>
+ <shortcut
+ class="com.nokia.cdt.internal.debug.launch.PhoneLaunchShortcut"
+ icon="icons/launch_config_file_16x16.png"
+ id="com.nokia.cdt.debug.launch.symbianCPPShortcut.phone"
+ label="Symbian OS Phone Launch"
+ modes="run, debug">
+ <contextualLaunch>
+ <enablement>
+ <with
+ variable="selection">
+ <count
+ value="1">
+ </count>
+ <iterate>
+ <and>
+ <or>
+ <instanceof
+ value="org.eclipse.cdt.core.model.IBinary">
+ </instanceof>
+ <instanceof
+ value="org.eclipse.cdt.core.model.ICProject">
+ </instanceof>
+ <instanceof
+ value="org.eclipse.cdt.debug.core.executables.Executable">
+ </instanceof>
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.cdt.launch.isExecutable">
+ </test>
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.cdt.launch.isCProject">
+ </test>
+ <and>
+ <instanceof
+ value="org.eclipse.ui.IFileEditorInput">
+ </instanceof>
+ <adapt
+ type="org.eclipse.core.resources.IResource">
+ <adapt
+ type="org.eclipse.cdt.core.model.ICElement">
+ </adapt>
+ </adapt>
+ </and>
+ <test
+ forcePluginActivation="true"
+ property="com.nokia.cdt.debug.launch.isCarbideProject">
+ </test>
+ <test
+ forcePluginActivation="true"
+ property="com.nokia.cdt.debug.launch.isExecutable">
+ </test>
+ </or>
+ <test
+ forcePluginActivation="true"
+ property="com.nokia.cdt.debug.launch.isNotEmulator">
+ </test>
+ </and>
+ </iterate>
+ </with>
+ </enablement>
+ <contextLabel
+ label="Run Symbian OS Application on phone"
+ mode="run">
+ </contextLabel>
+ <contextLabel
+ label="Debug Symbian OS Application on phone"
+ mode="debug">
+ </contextLabel>
+ </contextualLaunch>
+ <description
+ description="Debugs on a phone using System TRK or Application TRK"
+ mode="debug">
+ </description>
+ <description
+ description="Runs on a phone using System TRK or Application TRK"
+ mode="run">
+ </description>
+ </shortcut>
+ <shortcut
+ class="com.nokia.cdt.internal.debug.launch.EmulatorLaunchShortcut"
+ icon="icons/launch_config_file_16x16.png"
+ id="com.nokia.cdt.debug.launch.symbianCPPShortcut.emulator"
+ label="Symbian OS Emulator Launch"
+ modes="run, debug">
+ <contextualLaunch>
+ <enablement>
+ <with
+ variable="selection">
+ <count
+ value="1">
+ </count>
+ <iterate>
+ <and>
+ <or>
+ <instanceof
+ value="org.eclipse.cdt.core.model.IBinary">
+ </instanceof>
+ <instanceof
+ value="org.eclipse.cdt.core.model.ICProject">
+ </instanceof>
+ <instanceof
+ value="org.eclipse.cdt.debug.core.executables.Executable">
+ </instanceof>
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.cdt.launch.isExecutable">
+ </test>
+ <test
+ forcePluginActivation="true"
+ property="org.eclipse.cdt.launch.isCProject">
+ </test>
+ <and>
+ <instanceof
+ value="org.eclipse.ui.IFileEditorInput">
+ </instanceof>
+ <adapt
+ type="org.eclipse.core.resources.IResource">
+ <adapt
+ type="org.eclipse.cdt.core.model.ICElement">
+ </adapt>
+ </adapt>
+ </and>
+ <test
+ forcePluginActivation="true"
+ property="com.nokia.cdt.debug.launch.isCarbideProject">
+ </test>
+ <test
+ forcePluginActivation="true"
+ property="com.nokia.cdt.debug.launch.isExecutable">
+ </test>
+ </or>
+ <test
+ forcePluginActivation="true"
+ property="com.nokia.cdt.debug.launch.isEmulator">
+ </test>
+ </and>
+ </iterate>
+ </with>
+ </enablement>
+ <contextLabel
+ label="Run Symbian OS Application on emulator"
+ mode="run">
+ </contextLabel>
+ <contextLabel
+ label="Debug Symbian OS Application on emulator"
+ mode="debug">
+ </contextLabel>
+ </contextualLaunch>
+ <description
+ description="Debugs using a WINSCW emulator"
+ mode="debug">
+ </description>
+ <description
+ description="Runs using a WINSCW emulator"
+ mode="run">
+ </description>
</shortcut>
</extension>
@@ -234,7 +396,7 @@
<extension point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
namespace="com.nokia.cdt.debug.launch"
- properties="isExecutable, isCarbideProject"
+ properties="isExecutable, isCarbideProject, isEmulator, isNotEmulator"
type="org.eclipse.core.runtime.IAdaptable"
class="com.nokia.cdt.internal.debug.launch.SymbianProjectPropertyTester"
id="com.nokia.cdt.debug.launch.SymbianProjectPropertyTester">
@@ -281,40 +443,4 @@
<extension-point id="launchWizardExtension" name="Launch Wizard Page" schema="schema/launchWizardExtension.exsd"/>
<extension-point id="launchCategoryExtension" name="Launch Category" schema="schema/launchCategoryExtension.exsd"/>
- <!-- REMOVE THIS : just a hack for getting the new launch wizard into a toolbar -->
-
- <extension
- point="org.eclipse.ui.commands">
- <category
- id="com.nokia.cdt.debug.launch.commands.category"
- name="Sample Category">
- </category>
- <command
- categoryId="com.nokia.cdt.debug.launch.commands.category"
- id="com.nokia.cdt.debug.launch.commands.sampleCommand"
- name="Sample Command">
- </command>
- </extension>
- <extension
- point="org.eclipse.ui.handlers">
- <handler
- class="com.nokia.cdt.internal.debug.launch.newwizard.CommandRunLaunchWizard2"
- commandId="com.nokia.cdt.debug.launch.commands.sampleCommand">
- </handler>
- </extension>
- <extension
- point="org.eclipse.ui.menus">
- <menuContribution
- locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
- <toolbar
- id="com.nokia.cdt.debug.launch.toolbars.sampleToolbar">
- <command
- commandId="com.nokia.cdt.debug.launch.commands.sampleCommand"
- icon="icons/NewProjectAssist/debug.gif"
- id="com.nokia.cdt.debug.launch.toolbars.sampleCommand"
- tooltip="Show New Launch Wizard">
- </command>
- </toolbar>
- </menuContribution>
- </extension>
</plugin>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/AbstractSymbianLaunchShortcut.java Tue Feb 16 13:44:12 2010 -0600
@@ -0,0 +1,185 @@
+package com.nokia.cdt.internal.debug.launch;
+
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.executables.Executable;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.ILaunchShortcut2;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
+
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+
+public abstract class AbstractSymbianLaunchShortcut implements ILaunchShortcut2 {
+
+ protected abstract void launchProject(IProject project, Executable executable, IPath defaultMMP, String mode);
+
+ public void launch(IEditorPart editor, String mode) {
+ // launch an existing config if one exists
+ ILaunchConfiguration[] configs = getLaunchConfigurations(editor);
+ if (configs.length > 0) {
+ // just launch the first one that supports the mode
+ for (ILaunchConfiguration config : configs) {
+ try {
+ if (config.supportsMode(mode)) {
+ DebugUITools.launch(configs[0], mode);
+ return;
+ }
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ IEditorInput editorInput = editor.getEditorInput();
+ if (editorInput instanceof IFileEditorInput) {
+ IFile file = ((IFileEditorInput)editorInput).getFile();
+ if (file != null) {
+ launchProject(file.getProject(), null, null, mode);
+ }
+ }
+ }
+
+ public void launch(ISelection selection, String mode) {
+
+ // launch an existing config if one exists
+ ILaunchConfiguration[] configs = getLaunchConfigurations(selection);
+ if (configs.length > 0) {
+ // just launch the first one that supports the mode
+ for (ILaunchConfiguration config : configs) {
+ try {
+ if (config.supportsMode(mode)) {
+ DebugUITools.launch(configs[0], mode);
+ return;
+ }
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ IPath defaultMMP = null;
+ boolean launched = false;
+ Executable executable = null;
+
+ if (selection instanceof IStructuredSelection) {
+ Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+ if (firstElement != null && firstElement instanceof Executable)
+ {
+ launchProject(((Executable)firstElement).getProject(), (Executable)firstElement, defaultMMP, mode);
+ launched = true;
+ }
+ else
+ if (firstElement != null && firstElement instanceof IAdaptable)
+ {
+ IFile file = (IFile) ((IAdaptable) firstElement).getAdapter(IFile.class);
+ if (file != null)
+ {
+ IPath filePath = file.getLocation();
+ if ("mmp".equalsIgnoreCase(filePath.getFileExtension()))
+ {
+ defaultMMP = filePath;
+ }
+ else
+ {
+ executable = new Executable(file.getLocation(), file.getProject(), file);
+ launchProject(file.getProject(), executable, defaultMMP, mode);
+ launched = true;
+ }
+ }
+ }
+ }
+
+ if (!launched)
+ {
+ List<IProject> projects = CarbideBuilderPlugin.getProjectsFromSelection(selection);
+ if (projects.size() > 0) {
+ launchProject(projects.get(0), executable, defaultMMP, mode);
+ }
+ }
+ }
+
+ public ILaunchConfiguration[] getLaunchConfigurations(ISelection selection) {
+ IPath defaultMMP = null;
+ if (selection instanceof IStructuredSelection) {
+ Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+ if (firstElement != null && firstElement instanceof Executable)
+ {
+ return LaunchPlugin.getDefault().getLaunchConfigurations(((Executable)firstElement).getProject(), (Executable)firstElement, defaultMMP);
+ }
+ else
+ if (firstElement != null && firstElement instanceof IAdaptable)
+ {
+ IFile file = (IFile) ((IAdaptable) firstElement).getAdapter(IFile.class);
+ if (file != null)
+ {
+ IPath filePath = file.getLocation();
+ if ("mmp".equalsIgnoreCase(filePath.getFileExtension()))
+ {
+ defaultMMP = filePath;
+ }
+ Executable executable = new Executable(file.getLocation(), file.getProject(), file);
+ return LaunchPlugin.getDefault().getLaunchConfigurations(file.getProject(), executable, defaultMMP);
+ }
+ }
+ }
+
+ List<IProject> projects = CarbideBuilderPlugin.getProjectsFromSelection(selection);
+ if (projects.size() > 0) {
+ return LaunchPlugin.getDefault().getLaunchConfigurations(projects.get(0), null, defaultMMP);
+ }
+ return null;
+ }
+
+ public ILaunchConfiguration[] getLaunchConfigurations(IEditorPart editorpart) {
+ IEditorInput editorInput = editorpart.getEditorInput();
+ if (editorInput instanceof IFileEditorInput) {
+ IFile file = ((IFileEditorInput)editorInput).getFile();
+ if (file != null) {
+ return LaunchPlugin.getDefault().getLaunchConfigurations(file.getProject(), null, null);
+ }
+ }
+ return null;
+ }
+
+ public IResource getLaunchableResource(ISelection selection) {
+ if (selection instanceof IStructuredSelection) {
+ Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+ if (firstElement != null && firstElement instanceof IFile)
+ {
+ IFile file = (IFile) firstElement;
+ return file.getProject();
+ }
+ if (firstElement != null && firstElement instanceof Executable)
+ {
+ return ((Executable)firstElement).getProject();
+ }
+ }
+ List<IProject> projects = CarbideBuilderPlugin.getProjectsFromSelection(selection);
+ if (projects.size() > 0) {
+ return projects.get(0);
+ }
+ return null;
+ }
+
+ public IResource getLaunchableResource(IEditorPart editorpart) {
+ IEditorInput editorInput = editorpart.getEditorInput();
+ if (editorInput instanceof IFileEditorInput) {
+ IFile file = ((IFileEditorInput)editorInput).getFile();
+ if (file != null) {
+ return file.getProject();
+ }
+ }
+ return null;
+ }
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/BoardLaunchShortcut.java Tue Feb 16 13:44:12 2010 -0600
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.cdt.internal.debug.launch;
+
+import org.eclipse.cdt.debug.core.executables.Executable;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+
+import com.nokia.cdt.internal.debug.launch.LaunchPlugin.ILaunchCreationWizardFactory;
+import com.nokia.cdt.internal.debug.launch.wizard.AbstractLaunchWizard;
+import com.nokia.cdt.internal.debug.launch.wizard.ILaunchCreationWizard;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchCreationWizard;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchCreationWizardInstance;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchOptions;
+
+public class BoardLaunchShortcut extends AbstractSymbianLaunchShortcut {
+
+ @Override
+ protected void launchProject(IProject project, Executable executable, IPath defaultMMP, String mode) {
+ LaunchPlugin.getDefault().launchProject(project, executable, defaultMMP, mode,
+ new ILaunchCreationWizardFactory() {
+ public ILaunchCreationWizard createLaunchCreationWizard(LaunchOptions launchOptions) throws Exception {
+ LaunchCreationWizard creationWizard =
+ LaunchCreationWizardInstance.getInstance().create(
+ launchOptions.project,
+ launchOptions.configurationName,
+ launchOptions.mmps,
+ launchOptions.exes,
+ launchOptions.defaultExecutable,
+ launchOptions.isEmulation,
+ launchOptions.emulatorOnly,
+ launchOptions.mode);
+ creationWizard.setCategoryId(AbstractLaunchWizard.BOARD_CATEGORY_ID);
+ return creationWizard;
+ }
+ });
+ }
+
+
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/EmulatorLaunchShortcut.java Tue Feb 16 13:44:12 2010 -0600
@@ -0,0 +1,49 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.cdt.internal.debug.launch;
+
+import org.eclipse.cdt.debug.core.executables.Executable;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+
+import com.nokia.cdt.internal.debug.launch.LaunchPlugin.ILaunchCreationWizardFactory;
+import com.nokia.cdt.internal.debug.launch.wizard.ILaunchCreationWizard;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchCreationWizardInstance;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchOptions;
+
+public class EmulatorLaunchShortcut extends AbstractSymbianLaunchShortcut {
+
+ @Override
+ protected void launchProject(IProject project, Executable executable, IPath defaultMMP, String mode) {
+ LaunchPlugin.getDefault().launchProject(project, executable, defaultMMP, mode,
+ new ILaunchCreationWizardFactory() {
+ public ILaunchCreationWizard createLaunchCreationWizard(LaunchOptions launchOptions) throws Exception {
+ return LaunchCreationWizardInstance.getInstance().create(
+ launchOptions.project,
+ launchOptions.configurationName,
+ launchOptions.mmps,
+ launchOptions.exes,
+ launchOptions.defaultExecutable,
+ launchOptions.isEmulation,
+ launchOptions.emulatorOnly,
+ launchOptions.mode);
+ }
+ });
+ }
+
+}
+
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/LaunchPlugin.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/LaunchPlugin.java Tue Feb 16 13:44:12 2010 -0600
@@ -16,23 +16,51 @@
*/
package com.nokia.cdt.internal.debug.launch;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
-import org.eclipse.cdt.core.model.*;
+import org.eclipse.cdt.core.model.CModelException;
+import org.eclipse.cdt.core.model.CoreModel;
+import org.eclipse.cdt.core.model.IBinary;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.debug.core.executables.Executable;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.*;
-import org.eclipse.debug.core.*;
-import org.eclipse.debug.ui.*;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationListener;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchListener;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.ui.AbstractDebugView;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.debug.ui.IDebugView;
import org.eclipse.debug.ui.contexts.DebugContextEvent;
import org.eclipse.debug.ui.contexts.IDebugContextListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.viewers.*;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.*;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.IWindowListener;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.progress.UIJob;
import org.osgi.framework.BundleContext;
@@ -46,15 +74,20 @@
import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
import com.nokia.carbide.remoteconnections.interfaces.IService;
-import com.nokia.cdt.debug.cw.symbian.*;
-import com.nokia.cdt.internal.debug.launch.wizard.LaunchCreationWizard;
-import com.nokia.cdt.internal.debug.launch.wizard.LaunchCreationWizardInstance;
+import com.nokia.cdt.debug.cw.symbian.SettingsData;
+import com.nokia.cdt.internal.debug.launch.wizard.ILaunchCreationWizard;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchOptions;
import com.nokia.cpp.internal.api.utils.core.Logging;
/**
* The main plugin class to be used in the desktop.
*/
public class LaunchPlugin extends AbstractUIPlugin implements ILaunchListener, ILaunchConfigurationListener, IStartup {
+
+ public interface ILaunchCreationWizardFactory {
+ ILaunchCreationWizard createLaunchCreationWizard(LaunchOptions launchOptions) throws Exception;
+ }
+
//The shared instance.
private static LaunchPlugin plugin;
//Resource bundle.
@@ -206,7 +239,8 @@
return isX86;
}
- private ILaunchConfiguration createConfigurationForProject(IProject project, Executable executable, IPath defaultMMP, String mode) throws CoreException {
+ private ILaunchConfiguration createConfigurationForProject(IProject project, Executable executable,
+ IPath defaultMMP, String mode, ILaunchCreationWizardFactory wizardFactory) throws CoreException {
boolean openLaunchConfigDialog = false;
@@ -292,15 +326,17 @@
// which exe to launch or emulator if not required,
// which non-emulator launch type,
// or both
+ LaunchOptions launchOptions = new LaunchOptions();
+ launchOptions.project = project;
+ launchOptions.mode = mode;
+ launchOptions.configurationName = defaultConfigName;
+ launchOptions.isEmulation = isX86;
+ launchOptions.emulatorOnly = useEmulatorByDefault;
+ launchOptions.defaultExecutable = defaultExecutable;
+ launchOptions.exes = exePaths;
+ launchOptions.mmps = mmpPaths;
try {
- final LaunchCreationWizard wizard =
- LaunchCreationWizardInstance.getInstance().create(project, defaultConfigName, mmpPaths, exePaths, defaultExecutable, isX86, useEmulatorByDefault, mode);
- Display.getDefault().syncExec(new Runnable() {
- public void run() {
- wizard.init(PlatformUI.getWorkbench(), null);
- wizard.openWizard(CUIPlugin.getActiveWorkbenchShell());
- }
- });
+ final ILaunchCreationWizard wizard = openLaunchCreationWizard(launchOptions, wizardFactory);
config = wizard.getLaunchConfiguration();
openLaunchConfigDialog = wizard.shouldOpenLaunchConfigurationDialog();
}
@@ -326,6 +362,19 @@
return null;
}
+ private ILaunchCreationWizard openLaunchCreationWizard(LaunchOptions launchOptions,
+ ILaunchCreationWizardFactory wizardFactory) throws Exception {
+ final ILaunchCreationWizard wizard =
+ wizardFactory.createLaunchCreationWizard(launchOptions);
+ Display.getDefault().syncExec(new Runnable() {
+ public void run() {
+ wizard.init();
+ wizard.openWizard(CUIPlugin.getActiveWorkbenchShell());
+ }
+ });
+ return wizard;
+ }
+
public ILaunchConfiguration[] getLaunchConfigurations(IProject project, Executable executable, IPath defaultMMP)
{
IPath defaultExecutable = null;
@@ -368,10 +417,11 @@
return configs.toArray(new ILaunchConfiguration[configs.size()]);
}
- public void launchProject(IProject project, Executable executable, IPath defaultMMP, String mode) {
+ public void launchProject(IProject project, Executable executable, IPath defaultMMP, String mode,
+ ILaunchCreationWizardFactory wizardFactory) {
ILaunchConfiguration configuration = null;
try {
- configuration = createConfigurationForProject(project, executable, defaultMMP, mode);
+ configuration = createConfigurationForProject(project, executable, defaultMMP, mode, wizardFactory);
} catch (CoreException e) {
log(e);
}
@@ -540,7 +590,7 @@
});
}
-
+
public static IService getTRKService() {
return RemoteConnectionsActivator.getConnectionTypeProvider().
findServiceByID("com.nokia.carbide.trk.support.service.TRKService"); //$NON-NLS-1$
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/PhoneLaunchShortcut.java Tue Feb 16 13:44:12 2010 -0600
@@ -0,0 +1,45 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.cdt.internal.debug.launch;
+
+import org.eclipse.cdt.debug.core.executables.Executable;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+
+import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
+import com.nokia.carbide.remoteconnections.interfaces.IConnectionTypeProvider;
+import com.nokia.carbide.remoteconnections.interfaces.IService;
+import com.nokia.cdt.internal.debug.launch.LaunchPlugin.ILaunchCreationWizardFactory;
+import com.nokia.cdt.internal.debug.launch.newwizard.LaunchWizard;
+import com.nokia.cdt.internal.debug.launch.wizard.ILaunchCreationWizard;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchOptions;
+
+public class PhoneLaunchShortcut extends AbstractSymbianLaunchShortcut {
+
+ @Override
+ protected void launchProject(IProject project, Executable executable, IPath defaultMMP, String mode) {
+ LaunchPlugin.getDefault().launchProject(project, executable, defaultMMP, mode,
+ new ILaunchCreationWizardFactory() {
+ public ILaunchCreationWizard createLaunchCreationWizard(LaunchOptions launchOptions) throws Exception {
+ IConnectionTypeProvider provider = RemoteConnectionsActivator.getConnectionTypeProvider();
+ IService trkService = provider.findServiceByID("com.nokia.carbide.trk.support.service.TRKService"); //$NON-NLS-1$
+ LaunchWizard launchWizard = new LaunchWizard(launchOptions, trkService);
+ return launchWizard;
+ };
+ });
+ }
+}
\ No newline at end of file
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/SymbianLaunchShortcut.java Tue Feb 16 13:43:06 2010 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,204 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-package com.nokia.cdt.internal.debug.launch;
-
-import java.util.List;
-
-import org.eclipse.cdt.debug.core.executables.Executable;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.ui.DebugUITools;
-import org.eclipse.debug.ui.ILaunchShortcut2;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-
-import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
-
-public class SymbianLaunchShortcut implements ILaunchShortcut2 {
-
- public void launch(IEditorPart editor, String mode) {
- // launch an existing config if one exists
- ILaunchConfiguration[] configs = getLaunchConfigurations(editor);
- if (configs.length > 0) {
- // just launch the first one that supports the mode
- for (ILaunchConfiguration config : configs) {
- try {
- if (config.supportsMode(mode)) {
- DebugUITools.launch(configs[0], mode);
- return;
- }
- } catch (CoreException e) {
- e.printStackTrace();
- }
- }
- }
-
- IEditorInput editorInput = editor.getEditorInput();
- if (editorInput instanceof IFileEditorInput) {
- IFile file = ((IFileEditorInput)editorInput).getFile();
- if (file != null) {
- launchProject(file.getProject(), null, null, mode);
- }
- }
- }
-
- public void launch(ISelection selection, String mode) {
-
- // launch an existing config if one exists
- ILaunchConfiguration[] configs = getLaunchConfigurations(selection);
- if (configs.length > 0) {
- // just launch the first one that supports the mode
- for (ILaunchConfiguration config : configs) {
- try {
- if (config.supportsMode(mode)) {
- DebugUITools.launch(configs[0], mode);
- return;
- }
- } catch (CoreException e) {
- e.printStackTrace();
- }
- }
- }
-
- IPath defaultMMP = null;
- boolean launched = false;
- Executable executable = null;
-
- if (selection instanceof IStructuredSelection) {
- Object firstElement = ((IStructuredSelection) selection).getFirstElement();
- if (firstElement != null && firstElement instanceof Executable)
- {
- launchProject(((Executable)firstElement).getProject(), (Executable)firstElement, defaultMMP, mode);
- launched = true;
- }
- else
- if (firstElement != null && firstElement instanceof IAdaptable)
- {
- IFile file = (IFile) ((IAdaptable) firstElement).getAdapter(IFile.class);
- if (file != null)
- {
- IPath filePath = file.getLocation();
- if ("mmp".equalsIgnoreCase(filePath.getFileExtension()))
- {
- defaultMMP = filePath;
- }
- else
- {
- executable = new Executable(file.getLocation(), file.getProject(), file);
- launchProject(file.getProject(), executable, defaultMMP, mode);
- launched = true;
- }
- }
- }
- }
-
- if (!launched)
- {
- List<IProject> projects = CarbideBuilderPlugin.getProjectsFromSelection(selection);
- if (projects.size() > 0) {
- launchProject(projects.get(0), executable, defaultMMP, mode);
- }
- }
- }
-
- private void launchProject(final IProject project, final Executable executable, final IPath defaultMMP, final String mode) {
- LaunchPlugin.getDefault().launchProject(project, executable, defaultMMP, mode);
- }
-
- public ILaunchConfiguration[] getLaunchConfigurations(ISelection selection) {
- IPath defaultMMP = null;
- if (selection instanceof IStructuredSelection) {
- Object firstElement = ((IStructuredSelection) selection).getFirstElement();
- if (firstElement != null && firstElement instanceof Executable)
- {
- return LaunchPlugin.getDefault().getLaunchConfigurations(((Executable)firstElement).getProject(), (Executable)firstElement, defaultMMP);
- }
- else
- if (firstElement != null && firstElement instanceof IAdaptable)
- {
- IFile file = (IFile) ((IAdaptable) firstElement).getAdapter(IFile.class);
- if (file != null)
- {
- IPath filePath = file.getLocation();
- if ("mmp".equalsIgnoreCase(filePath.getFileExtension()))
- {
- defaultMMP = filePath;
- }
- Executable executable = new Executable(file.getLocation(), file.getProject(), file);
- return LaunchPlugin.getDefault().getLaunchConfigurations(file.getProject(), executable, defaultMMP);
- }
- }
- }
-
- List<IProject> projects = CarbideBuilderPlugin.getProjectsFromSelection(selection);
- if (projects.size() > 0) {
- return LaunchPlugin.getDefault().getLaunchConfigurations(projects.get(0), null, defaultMMP);
- }
- return null;
- }
-
- public ILaunchConfiguration[] getLaunchConfigurations(IEditorPart editorpart) {
- IEditorInput editorInput = editorpart.getEditorInput();
- if (editorInput instanceof IFileEditorInput) {
- IFile file = ((IFileEditorInput)editorInput).getFile();
- if (file != null) {
- return LaunchPlugin.getDefault().getLaunchConfigurations(file.getProject(), null, null);
- }
- }
- return null;
- }
-
- public IResource getLaunchableResource(ISelection selection) {
- if (selection instanceof IStructuredSelection) {
- Object firstElement = ((IStructuredSelection) selection).getFirstElement();
- if (firstElement != null && firstElement instanceof IFile)
- {
- IFile file = (IFile) firstElement;
- return file.getProject();
- }
- if (firstElement != null && firstElement instanceof Executable)
- {
- return ((Executable)firstElement).getProject();
- }
- }
- List<IProject> projects = CarbideBuilderPlugin.getProjectsFromSelection(selection);
- if (projects.size() > 0) {
- return projects.get(0);
- }
- return null;
- }
-
- public IResource getLaunchableResource(IEditorPart editorpart) {
- IEditorInput editorInput = editorpart.getEditorInput();
- if (editorInput instanceof IFileEditorInput) {
- IFile file = ((IFileEditorInput)editorInput).getFile();
- if (file != null) {
- return file.getProject();
- }
- }
- return null;
- }
-}
-
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/SymbianProjectPropertyTester.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/SymbianProjectPropertyTester.java Tue Feb 16 13:44:12 2010 -0600
@@ -16,16 +16,22 @@
*/
package com.nokia.cdt.internal.debug.launch;
+import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IBinary;
import org.eclipse.cdt.core.model.ICElement;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.debug.core.executables.Executable;
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IPath;
import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext;
/**
* A property tester that determines if a file is an executable.
@@ -41,7 +47,13 @@
}
if ("isCarbideProject".equals(property)) { //$NON-NLS-1$
return isCarbideProject(receiver);
- }
+ }
+ if ("isEmulator".equals(property)) { //$NON-NLS-1$
+ return isEmulator(receiver);
+ }
+ if ("isNotEmulator".equals(property)) { //$NON-NLS-1$
+ return !isEmulator(receiver);
+ }
return true;
}
@@ -81,4 +93,63 @@
return (celement != null && celement instanceof IBinary);
}
+ private boolean isEmulator(Object receiver) {
+ if (receiver instanceof Executable) {
+ return isEmulatorBinaryPath(((Executable) receiver).getPath());
+ }
+ if (receiver instanceof IBinary) {
+ return isEmulatorBinaryPath(((IBinary) receiver).getPath());
+ }
+ if (receiver instanceof IAdaptable) {
+ IResource res = (IResource) ((IAdaptable) receiver).getAdapter(IResource.class);
+ if (res != null) {
+ IProject project = res.getProject();
+ if (project != null) {
+ ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
+ if (cpi != null) {
+ ICarbideBuildConfiguration buildConfig = cpi.getDefaultConfiguration();
+ // just check the platform for the default config
+ if (buildConfig.getPlatformString().equals(ISymbianBuildContext.EMULATOR_PLATFORM)) {
+ return true;
+ }
+ }
+ else {
+ return getIsEmulatorFromExecutablesProject(project);
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ private boolean getIsEmulatorFromExecutablesProject(IProject project) {
+ ICProject cProject = CoreModel.getDefault().create(project);
+ if (cProject != null) {
+ try {
+ for (IBinary bin : cProject.getBinaryContainer().getBinaries()) {
+ if (bin.isExecutable()) {
+ IPath path = bin.getResource().getLocation();
+ if (isEmulatorBinaryPath(path)) {
+ return true;
+ }
+ }
+ }
+ } catch (CModelException e) {
+ }
+ }
+ return false;
+ }
+
+ private boolean isEmulatorBinaryPath(IPath binaryPath) {
+ if (binaryPath != null) {
+ for (String segment : binaryPath.segments()) {
+ if (segment.equalsIgnoreCase("winscw")) //$NON-NLS-1$
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/AbstractLaunchSettingsDialog.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/AbstractLaunchSettingsDialog.java Tue Feb 16 13:44:12 2010 -0600
@@ -38,9 +38,9 @@
*/
public abstract class AbstractLaunchSettingsDialog extends TitleAreaDialog {
- protected final static String UID = ".uid";
+ protected final static String UID = ".uid"; //$NON-NLS-1$
- protected final LaunchOptionsData data;
+ protected final LaunchWizardData data;
protected int INDENT;
private String title;
@@ -50,7 +50,7 @@
* @param parentShell
* @param data
*/
- public AbstractLaunchSettingsDialog(Shell parentShell, LaunchOptionsData data) {
+ public AbstractLaunchSettingsDialog(Shell parentShell, LaunchWizardData data) {
super(parentShell);
setShellStyle(getShellStyle() | SWT.RESIZE);
this.data = data;
@@ -61,7 +61,7 @@
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
- newShell.setText("New Launch Configuration Wizard");
+ newShell.setText(Messages.getString("AbstractLaunchSettingsDialog.Title")); //$NON-NLS-1$
}
protected Composite initDialogArea(Composite parent, String title, String helpId) {
@@ -115,7 +115,7 @@
setTitle(title);
if (status.isOK()) {
- setMessage("", IMessageProvider.NONE);
+ setMessage("", IMessageProvider.NONE); //$NON-NLS-1$
} else {
setMessage(status.getMessage(), severityToMsgType(status.getSeverity()));
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/AbstractLaunchWizardSection.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/AbstractLaunchWizardSection.java Tue Feb 16 13:44:12 2010 -0600
@@ -47,8 +47,8 @@
*/
public abstract class AbstractLaunchWizardSection implements IWizardSection {
- private static final String CHANGE_LABEL = "Change...";
- protected final LaunchOptionsData data;
+ private static final String CHANGE_LABEL = Messages.getString("AbstractLaunchWizardSection.ChangeLabel"); //$NON-NLS-1$
+ protected final LaunchWizardData data;
private String sectionName;
protected IStatus status;
@@ -56,11 +56,13 @@
protected Button changeButton;
protected Composite control;
private ISectionChangeListener changeListener;
+ protected final UnifiedLaunchOptionsPage launchOptionsPage;
- public AbstractLaunchWizardSection(LaunchOptionsData data, String sectionName) {
+ public AbstractLaunchWizardSection(LaunchWizardData data, String sectionName, UnifiedLaunchOptionsPage launchOptionsPage) {
this.data = data;
this.sectionName = sectionName;
+ this.launchOptionsPage = launchOptionsPage;
status = Status.OK_STATUS;
}
@@ -83,7 +85,7 @@
public abstract void createControl(Composite parent);
/** Create the dialog for the Change... button. */
- protected abstract AbstractLaunchSettingsDialog createChangeSettingsDialog(Shell shell, LaunchOptionsData dialogData);
+ protected abstract AbstractLaunchSettingsDialog createChangeSettingsDialog(Shell shell, LaunchWizardData dialogData);
/** Refresh the section after the Change... dialog has been closed. */
protected abstract void refresh();
@@ -162,11 +164,12 @@
* @see com.nokia.cdt.internal.debug.launch.wizard2.AbstractLaunchWizardSection#doChange()
*/
protected void doChange() {
- LaunchOptionsData dialogData = data.copy();
+ LaunchWizardData dialogData = data.copy();
AbstractLaunchSettingsDialog dialog = createChangeSettingsDialog(getControl().getShell(), dialogData);
if (dialog.open() == Window.OK) {
data.apply(dialogData);
refresh();
+ launchOptionsPage.getWizard().getContainer().getShell().pack();
}
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/CommandRunLaunchWizard2.java Tue Feb 16 13:43:06 2010 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-package com.nokia.cdt.internal.debug.launch.newwizard;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.commands.AbstractHandler;
-import org.eclipse.core.commands.ExecutionEvent;
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.WizardDialog;
-import org.eclipse.ui.handlers.HandlerUtil;
-
-import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
-import com.nokia.carbide.cdt.builder.EpocEngineHelper;
-import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
-import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
-import com.nokia.carbide.remoteconnections.interfaces.IService;
-
-/**
- * Our sample handler extends AbstractHandler, an IHandler base class.
- * @see org.eclipse.core.commands.IHandler
- * @see org.eclipse.core.commands.AbstractHandler
- */
-public class CommandRunLaunchWizard2 extends AbstractHandler {
- /**
- * The constructor.
- */
- public CommandRunLaunchWizard2() {
- }
-
- /**
- * the command has been executed, so extract extract the needed information
- * from the application context.
- */
- public Object execute(ExecutionEvent event) throws ExecutionException {
- ISelection sel = HandlerUtil.getCurrentSelection(event);
- IProject project = null;
- if (sel instanceof IStructuredSelection) {
- Object obj = ((IStructuredSelection) sel).getFirstElement();
- if (obj instanceof IResource)
- project = ((IResource) obj).getProject();
- else if (obj instanceof IAdaptable) {
- IResource rsrc = (IResource)((IAdaptable) obj).getAdapter(IResource.class);
- if (rsrc != null)
- project = rsrc.getProject();
- }
- if (project == null)
- throw new ExecutionException("No project in selection");
-
- ICarbideProjectInfo info = CarbideBuilderPlugin.getBuildManager()
- .getProjectInfo(project);
- if (info == null)
- throw new ExecutionException("Not a Carbide project");
- List<IPath> mmpFiles = EpocEngineHelper.getMMPFilesForProject(info);
- IService trkService = RemoteConnectionsActivator.getConnectionTypeProvider().
- findServiceByID("com.nokia.carbide.trk.support.service.TRKService"); //$NON-NLS-1$
-
- List<IPath> allExePaths = new ArrayList<IPath>();
- List<IPath> currBuiltExePaths = new ArrayList<IPath>();
- List<IPath> allMMPPaths = new ArrayList<IPath>();
- List<IPath> currBuiltMMPPaths = new ArrayList<IPath>();
-
- EpocEngineHelper.getPathToAllExecutables(info.getDefaultConfiguration(),
- allExePaths,
- currBuiltExePaths,
- allMMPPaths,
- currBuiltMMPPaths);
-
- LaunchWizard wiz = new LaunchWizard(project,
- info.getDefaultBuildConfigName(),
- mmpFiles,
- currBuiltExePaths,
- EpocEngineHelper.getHostPathForExecutable(info.getDefaultConfiguration(), mmpFiles.get(0)),
- false, false,
- ILaunchManager.DEBUG_MODE,
- trkService
- );
- WizardDialog dialog = new WizardDialog(HandlerUtil.getActiveShell(event), wiz);
- dialog.setPageSize(500, 300);
- dialog.open();
- }
-
- return null;
- }
-}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceDialog.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceDialog.java Tue Feb 16 13:44:12 2010 -0600
@@ -25,8 +25,11 @@
import java.util.Set;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
+import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelection;
@@ -40,11 +43,15 @@
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.FontMetrics;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
@@ -64,11 +71,13 @@
public class ConnectToDeviceDialog extends AbstractLaunchSettingsDialog implements IConnectionListener {
private IConnectionsManager manager;
private IConnectionTypeProvider typeProvider;
+ private FontMetrics fm;
private ComboViewer viewer;
private Button editButton;
private Label descriptionLabel;
+ private Button newButton;
- protected ConnectToDeviceDialog(Shell shell, LaunchOptionsData data) {
+ protected ConnectToDeviceDialog(Shell shell, LaunchWizardData data) {
super(shell, data);
manager = RemoteConnectionsActivator.getConnectionsManager();
typeProvider = RemoteConnectionsActivator.getConnectionTypeProvider();
@@ -76,17 +85,15 @@
@Override
protected Control createDialogArea(Composite parent) {
+ initializeDialogUnits(parent);
final Composite composite = initDialogArea(parent,
- "Change connection",
+ Messages.getString("ConnectToDeviceDialog.Title"), //$NON-NLS-1$
LaunchWizardHelpIds.WIZARD_DIALOG_CHANGE_CONNECTION);
- Composite viewerGroup = new Composite(composite, SWT.NONE);
+ Group viewerGroup = new Group(composite, SWT.NONE);
+ viewerGroup.setText(Messages.getString("ConnectToDeviceDialog.GroupLabel")); //$NON-NLS-1$
GridDataFactory.fillDefaults().applyTo(viewerGroup);
- GridLayoutFactory.swtDefaults().numColumns(3).applyTo(viewerGroup);
-
- Label label = new Label(viewerGroup, SWT.NONE);
- label.setText("Current connection");
- GridDataFactory.defaultsFor(label).applyTo(label);
+ GridLayoutFactory.swtDefaults().applyTo(viewerGroup);
viewer = new ComboViewer(viewerGroup, SWT.READ_ONLY);
viewer.setLabelProvider(new LabelProvider() {
@@ -95,7 +102,7 @@
if (element instanceof IConnection)
return ((IConnection) element).getDisplayName();
- return "No Current connection";
+ return Messages.getString("ConnectToDeviceDialog.NoCurrentItem"); //$NON-NLS-1$
}
});
viewer.setContentProvider(new ArrayContentProvider());
@@ -110,10 +117,45 @@
});
manager.addConnectionListener(this);
- editButton = new Button(viewerGroup, SWT.PUSH);
- editButton.setText("Edit...");
- GridDataFactory.defaultsFor(editButton).applyTo(editButton);
- editButton.setData(UID, "edit_button"); //$NON-NLS-1$
+ final Composite buttonGroup = new Composite(viewerGroup, SWT.NONE);
+ int w = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.HORIZONTAL_MARGIN);
+ int h = Dialog.convertVerticalDLUsToPixels(fm, IDialogConstants.VERTICAL_MARGIN);
+ int hs = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.HORIZONTAL_SPACING);
+ int vs = Dialog.convertVerticalDLUsToPixels(fm, IDialogConstants.VERTICAL_SPACING);
+ GridLayoutFactory.swtDefaults().numColumns(2).equalWidth(true).
+ margins(w, h).spacing(hs, vs).applyTo(buttonGroup);
+ GridDataFactory.swtDefaults().align(SWT.END, SWT.CENTER).applyTo(buttonGroup);
+ buttonGroup.setFont(parent.getFont());
+
+ newButton = new Button(buttonGroup, SWT.PUSH);
+ newButton.setText(Messages.getString("ConnectToDeviceDialog.NewLabel")); //$NON-NLS-1$
+ newButton.setFont(JFaceResources.getDialogFont());
+ int widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH);
+ Point minSize = newButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
+ widthHint = Math.max(widthHint, minSize.x);
+ GridDataFactory.swtDefaults().align(SWT.FILL, SWT.TOP).hint(widthHint, SWT.DEFAULT).applyTo(newButton);
+ newButton.setData(UID, "newButton"); //$NON-NLS-1$
+ newButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ SettingsWizard wizard = new SettingsWizard(null, data.getService());
+ wizard.open(composite.getShell());
+ IConnection connection = wizard.getConnectionToEdit();
+ // note: refresh ASAP so the selection will be valid; but endure a listener event
+ // which will redo this
+ refreshUI();
+ setViewerInput(connection);
+ }
+ });
+
+ editButton = new Button(buttonGroup, SWT.PUSH);
+ editButton.setText(Messages.getString("ConnectToDeviceDialog.EditLabel")); //$NON-NLS-1$
+ editButton.setFont(JFaceResources.getDialogFont());
+ widthHint = Dialog.convertHorizontalDLUsToPixels(fm, IDialogConstants.BUTTON_WIDTH);
+ minSize = editButton.computeSize(SWT.DEFAULT, SWT.DEFAULT, true);
+ widthHint = Math.max(widthHint, minSize.x);
+ GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).hint(widthHint, SWT.DEFAULT).applyTo(editButton);
+ editButton.setData(UID, "editButton"); //$NON-NLS-1$
editButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
@@ -139,6 +181,13 @@
return composite;
}
+ private void initializeDialogUnits(Composite parent) {
+ GC gc = new GC(parent);
+ gc.setFont(JFaceResources.getDialogFont());
+ fm = gc.getFontMetrics();
+ gc.dispose();
+ }
+
protected void validate() {
IStatus status = ConnectToDeviceSection.revalidate(data);
@@ -157,7 +206,7 @@
if (connectedService == null) {
status = error(MessageFormat.format(
- "The selected connection does not support {0}",
+ Messages.getString("ConnectToDeviceDialog.ServiceNotSupportedError"), //$NON-NLS-1$
data.getService().getDisplayName()));
}
else {
@@ -165,7 +214,7 @@
connectedService.getStatus();
if (!serviceStatus.getEStatus().equals(
com.nokia.carbide.remoteconnections.interfaces.IConnectedService.IStatus.EStatus.UP)) {
- status = warning("The selected connection may not be usable for debugging:\n {0}",
+ status = warning(Messages.getString("ConnectToDeviceDialog.ServiceNotAvailWarning"), //$NON-NLS-1$
serviceStatus.getLongDescription());
}
}
@@ -184,7 +233,7 @@
if (connection != null) {
descriptionLabel.setText(standardPNPMessage);
} else {
- descriptionLabel.setText("No connections are detected or defined. " + standardPNPMessage);
+ descriptionLabel.setText(Messages.getString("ConnectToDeviceDialog.NoConnectionsText") + standardPNPMessage); //$NON-NLS-1$
}
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceSection.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/ConnectToDeviceSection.java Tue Feb 16 13:44:12 2010 -0600
@@ -35,17 +35,15 @@
*/
public class ConnectToDeviceSection extends AbstractLaunchWizardSection implements IConnectionListener {
- private static final String NO_CURRENT_CONNECTION_MSG = "No current connection is defined or detected.";
- private final UnifiedLaunchOptionsPage launchOptionsPage;
+ private static final String NO_CURRENT_CONNECTION_MSG = Messages.getString("ConnectToDeviceSection.NoConnectionMsg"); //$NON-NLS-1$
private final IConnectionsManager manager;
/**
* @param unifiedLaunchOptionsPage
*
*/
- public ConnectToDeviceSection(LaunchOptionsData data, UnifiedLaunchOptionsPage launchOptionsPage) {
- super(data, "Connect to device");
- this.launchOptionsPage = launchOptionsPage;
+ public ConnectToDeviceSection(LaunchWizardData data, UnifiedLaunchOptionsPage launchOptionsPage) {
+ super(data, Messages.getString("ConnectToDeviceSection.Title"), launchOptionsPage); //$NON-NLS-1$
manager = RemoteConnectionsActivator.getConnectionsManager();
}
@@ -69,7 +67,7 @@
}
/** Get the simple status for the connection state */
- static IStatus revalidate(LaunchOptionsData data) {
+ static IStatus revalidate(LaunchWizardData data) {
IStatus status = Status.OK_STATUS;
if (data.getConnection() == null) {
@@ -80,7 +78,7 @@
}
static String getStandardPNPMessage() {
- return "You may plug in a device over USB or activate it over WLAN, or create a new connection now for your device or simulator.";
+ return Messages.getString("ConnectToDeviceSection.StdPNPMsg"); //$NON-NLS-1$
}
@Override
@@ -90,16 +88,16 @@
String msg;
if (data.getConnection() != null)
- msg = MessageFormat.format("The current connection is now ''{0}''.", data.getConnectionName());
+ msg = MessageFormat.format(Messages.getString("ConnectToDeviceSection.CurrentConnectionLabel"), data.getConnectionName()); //$NON-NLS-1$
else
- msg = MessageFormat.format("{0} {1}", NO_CURRENT_CONNECTION_MSG, getStandardPNPMessage());
+ msg = MessageFormat.format("{0} {1}", NO_CURRENT_CONNECTION_MSG, getStandardPNPMessage()); //$NON-NLS-1$
descriptionLabel.setText(msg);
launchOptionsPage.changed();
}
@Override
- protected AbstractLaunchSettingsDialog createChangeSettingsDialog(Shell shell, LaunchOptionsData dialogData) {
+ protected AbstractLaunchSettingsDialog createChangeSettingsDialog(Shell shell, LaunchWizardData dialogData) {
return new ConnectToDeviceDialog(shell, dialogData);
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/DebugRunProcessDialog.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/DebugRunProcessDialog.java Tue Feb 16 13:44:12 2010 -0600
@@ -64,7 +64,7 @@
import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
-import com.nokia.cdt.internal.debug.launch.newwizard.LaunchOptionsData.EExeSelection;
+import com.nokia.cdt.internal.debug.launch.newwizard.LaunchWizardData.EExeSelection;
import com.nokia.cpp.internal.api.utils.core.PathUtils;
import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils;
@@ -85,7 +85,7 @@
private Button sisBrowse;
private Composite installPackageUI;
- protected DebugRunProcessDialog(Shell shell, LaunchOptionsData data) {
+ protected DebugRunProcessDialog(Shell shell, LaunchWizardData data) {
super(shell, data);
}
@@ -96,7 +96,7 @@
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = initDialogArea(parent,
- MessageFormat.format("Change {0} Process", data.getModeLabel()),
+ MessageFormat.format(Messages.getString("DebugRunProcessDialog.ChangeProcessMsg"), data.getModeLabel()), //$NON-NLS-1$
data.isDebug() ? LaunchWizardHelpIds.WIZARD_DIALOG_CHANGE_DEBUG_PROCESS :
LaunchWizardHelpIds.WIZARD_DIALOG_CHANGE_RUN_PROCESS);
@@ -120,7 +120,7 @@
Label label;
label = new Label(composite, SWT.WRAP);
- label.setText(MessageFormat.format("{0} method:", data.getModeLabel()));
+ label.setText(MessageFormat.format(Messages.getString("DebugRunProcessDialog.ModeLabel"), data.getModeLabel())); //$NON-NLS-1$
label.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
GridDataFactory.fillDefaults().grab(true, false).applyTo(composite);
@@ -139,9 +139,9 @@
String msg;
if (data.isDebug())
- msg = "Configure how to debug the program. The initial settings reflect the debug capabilities of the selected device and the SIS builder settings.";
+ msg = Messages.getString("DebugRunProcessDialog.DebugConfigureMsg"); //$NON-NLS-1$
else
- msg = "Configure how to run the program.";
+ msg = Messages.getString("DebugRunProcessDialog.RunConfigureMsg"); //$NON-NLS-1$
setMessage(msg);
switch (data.getExeSelection()) {
@@ -161,7 +161,7 @@
Label label;
label = new Label(composite, SWT.WRAP);
- label.setText(MessageFormat.format("Deploy method:", data.getModeLabel()));
+ label.setText(MessageFormat.format(Messages.getString("DebugRunProcessDialog.DeployLabel"), data.getModeLabel())); //$NON-NLS-1$
label.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT));
GridDataFactory.fillDefaults().grab(true, true).applyTo(composite);
@@ -178,7 +178,7 @@
installPackageCheckbox = new Button(composite, SWT.CHECK);
GridDataFactory.fillDefaults().applyTo(installPackageCheckbox);
- installPackageCheckbox.setText("Install package before launch");
+ installPackageCheckbox.setText(Messages.getString("DebugRunProcessDialog.InstallBeforeLaunchLabel")); //$NON-NLS-1$
installPackageUI = new Composite(composite, SWT.NONE);
GridDataFactory.fillDefaults().indent(INDENT, 0).applyTo(installPackageUI);
@@ -194,8 +194,9 @@
});
- if (data.requiresInstallPackage()) {
+ if (data.isInstallPackage()) {
installPackageCheckbox.setSelection(true);
+ updatePackageUI();
}
updateSisFile();
@@ -209,16 +210,16 @@
ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(project);
if (cpi != null) {
final Label sisLabel = new Label(composite, SWT.NONE);
- sisLabel.setText("SIS File to Install:");
+ sisLabel.setText(Messages.getString("DebugRunProcessDialog.SISFileLabel")); //$NON-NLS-1$
GridDataFactory.fillDefaults().align(SWT.LEFT, SWT.CENTER).span(1, 1).applyTo(sisLabel);
- sisLabel.setToolTipText("Specify which SIS file to install on the phone prior to launching");
- sisLabel.setData(UID, "DebugRunProcessDialog.sisLabel");
+ sisLabel.setToolTipText(Messages.getString("DebugRunProcessDialog.SISQueryTip")); //$NON-NLS-1$
+ sisLabel.setData(UID, "DebugRunProcessDialog.sisLabel"); //$NON-NLS-1$
sisFile = new Combo(composite, SWT.READ_ONLY);
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).span(1, 1).grab(true, false).applyTo(sisLabel);
- sisFile.setToolTipText("Specify which SIS file to install on the phone prior to launching");
+ sisFile.setToolTipText(Messages.getString("DebugRunProcessDialog.SISQueryTip")); //$NON-NLS-1$
sisFile.add("None"); //$NON-NLS-1$
- sisFile.setData(UID, "DebugRunProcessDialog.sisFile");
+ sisFile.setData(UID, "DebugRunProcessDialog.sisFile"); //$NON-NLS-1$
sisFile.addSelectionListener(new SelectionAdapter() {
@Override
@@ -251,44 +252,44 @@
});
Link link = new Link(composite, SWT.NONE);
- link.setText("<a>" + "Modify SIS builder settings for build configuration" + "...</a>");
+ link.setText("<a>" + Messages.getString("DebugRunProcessDialog.SISConfigLinkText") + "...</a>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
GridDataFactory.swtDefaults().align(SWT.FILL, SWT.CENTER).span(2, 1).grab(true, false).applyTo(link);
link.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
- PreferencesUtil.createPropertyDialogOn(getShell(), project, "com.nokia.carbide.cdt.internal.builder.ui.CarbideBuildConfigurationsPage", null, null).open();
+ PreferencesUtil.createPropertyDialogOn(getShell(), project, "com.nokia.carbide.cdt.internal.builder.ui.CarbideBuildConfigurationsPage", null, null).open(); //$NON-NLS-1$
}
});
- link.setData(UID, "DebugRunProcessDialog.link");
+ link.setData(UID, "DebugRunProcessDialog.link"); //$NON-NLS-1$
} else {
// not a Carbide project, just an executable. show a browse/edit combo
// to let them select a sis file if they want to.
final Label sisLabel = new Label(composite, SWT.NONE);
sisLabel.setText("SIS File to Install:"); //$NON-NLS-1$
GridDataFactory.swtDefaults().span(2, 1).applyTo(sisLabel);
- sisLabel.setToolTipText("Specify which SIS file to install on the phone prior to launching");
- sisLabel.setData(UID, "DebugRunProcessDialog.sisLabel");
+ sisLabel.setToolTipText(Messages.getString("DebugRunProcessDialog.SISQueryTip")); //$NON-NLS-1$
+ sisLabel.setData(UID, "DebugRunProcessDialog.sisLabel"); //$NON-NLS-1$
sisEdit = new Text(composite, SWT.BORDER);
GridDataFactory.fillDefaults().span(1, 1).align(SWT.FILL, SWT.CENTER).grab(true, false).applyTo(sisEdit);
- sisEdit.setToolTipText("Specify which SIS file to install on the phone prior to launching");
+ sisEdit.setToolTipText(Messages.getString("DebugRunProcessDialog.SISQueryTip")); //$NON-NLS-1$
sisEdit.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
updateSisFile();
validate();
}
});
- sisEdit.setData(UID, "DebugRunProcessDialog.sisEdit");
+ sisEdit.setData(UID, "DebugRunProcessDialog.sisEdit"); //$NON-NLS-1$
sisBrowse = new Button(composite, SWT.NONE);
- sisBrowse.setText("Browse...");
+ sisBrowse.setText(Messages.getString("DebugRunProcessDialog.BrowseLabel")); //$NON-NLS-1$
sisBrowse.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
sisBrowse.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent evt) {
FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
- dialog.setText("Select installation file");
- dialog.setFilterExtensions(new String[] {"*.sis*", "*.*"});
- dialog.setFilterNames(new String[] {"Installation Files", "All Files"});
+ dialog.setText(Messages.getString("DebugRunProcessDialog.Title")); //$NON-NLS-1$
+ dialog.setFilterExtensions(new String[] {"*.sis*", "*.*"}); //$NON-NLS-1$ //$NON-NLS-2$
+ dialog.setFilterNames(new String[] {Messages.getString("DebugRunProcessDialog.InstallFilterName"), Messages.getString("DebugRunProcessDialog.AllFilterName")}); //$NON-NLS-1$ //$NON-NLS-2$
BrowseDialogUtils.initializeFrom(dialog, sisEdit);
@@ -300,7 +301,7 @@
}
}
});
- sisBrowse.setData(UID, "DebugRunProcessDialog.sisBrowse");
+ sisBrowse.setData(UID, "DebugRunProcessDialog.sisBrowse"); //$NON-NLS-1$
}
}
@@ -311,7 +312,7 @@
protected void updateSisFile() {
String sisPath;
if (sisFile != null) {
- sisPath = sisFile.getSelectionIndex() == 0 ? "" : sisFile.getText(); //$NON-NLS-1$
+ sisPath = sisFile.getSelectionIndex() == 0 ? null : sisFile.getText(); //$NON-NLS-1$
data.setSisPath(sisPath);
} else if (sisEdit != null) {
sisPath = sisEdit.getText();
@@ -344,7 +345,7 @@
if (cpi != null) {
sisFile.removeAll();
- sisFile.add("None");
+ sisFile.add(Messages.getString("DebugRunProcessDialog.NoneItem")); //$NON-NLS-1$
ICarbideBuildConfiguration config = cpi.getDefaultConfiguration();
for (ISISBuilderInfo info : config.getSISBuilderInfoList()) {
@@ -392,7 +393,7 @@
private IPath createSuggestedRemotePath(IPath exeSelectionPath) {
String filename = exeSelectionPath.lastSegment();
- return PathUtils.createPath("C:/sys/bin").append(filename);
+ return PathUtils.createPath("C:/sys/bin").append(filename); //$NON-NLS-1$
}
/**
@@ -402,12 +403,12 @@
private void createProjectExecutableRadioButton(Composite radioGroup) {
projectExecutableRadioButton = new Button(radioGroup, SWT.RADIO);
GridDataFactory.fillDefaults().grab(false, false).applyTo(projectExecutableRadioButton);
- projectExecutableRadioButton.setText("Launch project &executable:");
- projectExecutableRadioButton.setData(UID, "radio_project_executable");
+ projectExecutableRadioButton.setText(Messages.getString("DebugRunProcessDialog.LaunchProjectExeLabel")); //$NON-NLS-1$
+ projectExecutableRadioButton.setData(UID, "radio_project_executable"); //$NON-NLS-1$
projectExecutableViewer = new ComboViewer(radioGroup, SWT.READ_ONLY);
GridDataFactory.fillDefaults().grab(true, false).applyTo(projectExecutableViewer.getControl());
- projectExecutableViewer.getControl().setData(UID, "combo_project_executable");
+ projectExecutableViewer.getControl().setData(UID, "combo_project_executable"); //$NON-NLS-1$
projectExecutableViewer.setContentProvider(new ArrayContentProvider());
projectExecutableViewer.setLabelProvider(new LabelProvider() {
@@ -469,14 +470,14 @@
private void createRemoteExecutableRadioButton(Composite radioGroup) {
remoteExecutableRadioButton = new Button(radioGroup, SWT.RADIO);
GridDataFactory.fillDefaults().grab(false, false).applyTo(remoteExecutableRadioButton);
- remoteExecutableRadioButton.setText("Launch &remote program:");
+ remoteExecutableRadioButton.setText(Messages.getString("DebugRunProcessDialog.LaunchRemoteProgLabel")); //$NON-NLS-1$
- remoteExecutableRadioButton.setData(UID, "radio_remote_program");
+ remoteExecutableRadioButton.setData(UID, "radio_remote_program"); //$NON-NLS-1$
remoteProgramEntry = new Text(radioGroup, SWT.BORDER);
GridDataFactory.fillDefaults().grab(true, false).applyTo(remoteProgramEntry);
- remoteProgramEntry.setData(UID, "text_remote_program");
+ remoteProgramEntry.setData(UID, "text_remote_program"); //$NON-NLS-1$
remoteExecutableRadioButton.addSelectionListener(new SelectionAdapter() {
@Override
@@ -514,14 +515,14 @@
private void createAttachToProcessRadioButton(Composite radioGroup) {
attachToProcessRadioButton = new Button(radioGroup, SWT.RADIO);
GridDataFactory.fillDefaults().grab(false, false).applyTo(attachToProcessRadioButton);
- attachToProcessRadioButton.setText("&Attach to process:");
+ attachToProcessRadioButton.setText(Messages.getString("DebugRunProcessDialog.AttachLabel")); //$NON-NLS-1$
- attachToProcessRadioButton.setData(UID, "radio_attach_to_process");
+ attachToProcessRadioButton.setData(UID, "radio_attach_to_process"); //$NON-NLS-1$
Label label = new Label(radioGroup, SWT.WRAP);
GridDataFactory.fillDefaults().grab(false, false).align(SWT.LEFT, SWT.CENTER).applyTo(label);
- label.setText("(selected at launch time)");
+ label.setText(Messages.getString("DebugRunProcessDialog.AttachAddlMsg")); //$NON-NLS-1$
attachToProcessRadioButton.addSelectionListener(new SelectionAdapter() {
@Override
@@ -552,12 +553,12 @@
switch (data.getExeSelection()) {
case USE_PROJECT_EXECUTABLE:
if (exePath.isEmpty()) {
- status = error("The project builds no executables.");
+ status = error(Messages.getString("DebugRunProcessDialog.NoExesError")); //$NON-NLS-1$
}
break;
case USE_REMOTE_EXECUTABLE:
if (exePath.isEmpty()) {
- status = error("Enter a non-empty executable path.");
+ status = error(Messages.getString("DebugRunProcessDialog.EnterPathError")); //$NON-NLS-1$
} else {
String exePathString = exePath.toString();
char drive = exePathString.charAt(0);
@@ -566,9 +567,9 @@
char lastChar = exePathString.charAt(exePathString.length() - 1);
if (!Character.isLetter(drive) || colon != ':' || (root != '\\' && root != '/') ||
lastChar == '\\' || lastChar == '/' || lastChar == ':') {
- status = error("The executable path must be absolute.");
+ status = error(Messages.getString("DebugRunProcessDialog.AbsolutePathError")); //$NON-NLS-1$
} else if (exePath.getFileExtension() == null) {
- status = warning("The executable path should end in a filename.");
+ status = warning(Messages.getString("DebugRunProcessDialog.FilePathError")); //$NON-NLS-1$
}
}
break;
@@ -585,7 +586,7 @@
// it exists
File file = new File(text);
if (!file.exists()) {
- status = error("The SIS file ''{0}'' does not exist.", text);
+ status = error(Messages.getString("DebugRunProcessDialog.SISFileExistError"), text); //$NON-NLS-1$
}
}
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/DebugRunProcessSection.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/DebugRunProcessSection.java Tue Feb 16 13:44:12 2010 -0600
@@ -19,11 +19,16 @@
import java.text.MessageFormat;
+import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Status;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
-import com.nokia.cdt.internal.debug.launch.newwizard.LaunchOptionsData.EExeSelection;
+import com.nokia.carbide.cdt.builder.CarbideBuilderPlugin;
+import com.nokia.carbide.cdt.builder.project.ICarbideBuildConfiguration;
+import com.nokia.carbide.cdt.builder.project.ICarbideProjectInfo;
+import com.nokia.carbide.cdt.builder.project.ISISBuilderInfo;
+import com.nokia.cdt.internal.debug.launch.newwizard.LaunchWizardData.EExeSelection;
import com.nokia.cpp.internal.api.utils.core.PathUtils;
/**
@@ -31,8 +36,8 @@
*/
public class DebugRunProcessSection extends AbstractLaunchWizardSection {
- public DebugRunProcessSection(LaunchOptionsData data) {
- super(data, MessageFormat.format("{0} process", data.getModeLabel()));
+ public DebugRunProcessSection(LaunchWizardData data, UnifiedLaunchOptionsPage launchOptionsPage) {
+ super(data, MessageFormat.format(Messages.getString("DebugRunProcessSection.Title"), data.getModeLabel()), launchOptionsPage); //$NON-NLS-1$
}
@Override
@@ -52,11 +57,20 @@
data.setExeSelectionPath(data.getExes().get(0));
else if (data.getDefaultExecutable() != null)
data.setExeSelectionPath(data.getDefaultExecutable());
+ ICarbideProjectInfo cpi = CarbideBuilderPlugin.getBuildManager().getProjectInfo(data.getProject());
+ if (cpi != null) {
+ data.setInstallPackage(!data.isSysTRKConnection());
+ ICarbideBuildConfiguration config = cpi.getDefaultConfiguration();
+ for (ISISBuilderInfo info : config.getSISBuilderInfoList()) {
+ IPath sisPath = info.getSigningType() == ISISBuilderInfo.DONT_SIGN ? info.getUnsignedSISFullPath() : info.getSignedSISFullPath();
+ data.setSisPath(sisPath.toOSString());
+ }
+ }
}
@Override
protected AbstractLaunchSettingsDialog createChangeSettingsDialog(
- Shell shell, LaunchOptionsData dialogData) {
+ Shell shell, LaunchWizardData dialogData) {
return new DebugRunProcessDialog(shell, dialogData);
}
@@ -73,52 +87,60 @@
switch (data.getExeSelection()) {
case USE_PROJECT_EXECUTABLE:
if (data.getExeSelectionPath() == null)
- status = error("This project does not build any executables.",
+ status = error(Messages.getString("DebugRunProcessSection.NoExesError"), //$NON-NLS-1$
data.getModeLabel().toLowerCase());
break;
case USE_REMOTE_EXECUTABLE:
if (data.getExeSelectionPath() == null)
- status = error("No remote executable is selected.",
+ status = error(Messages.getString("DebugRunProcessSection.NoRemoteExeError"), //$NON-NLS-1$
data.getModeLabel().toLowerCase());
break;
case ATTACH_TO_PROCESS:
break;
}
-
- // TODO: package
+
+ if (data.isInstallPackage() && (data.getSisPath() == null || data.getSisPath().length() == 0))
+ status = error(Messages.getString("DebugRunProcessSection.MustInstallError")); //$NON-NLS-1$
}
-
+
@Override
protected void updateUI() {
validate();
if (status.isOK()) {
- String mainFormat = "Carbide will {0} and {1}.";
- String copyOrInstallMsg = "";
- String runOrLaunchMsg = "";
+ String mainFormat = Messages.getString("DebugRunProcessSection.MainFormat"); //$NON-NLS-1$
+ String copyOrInstallMsg = ""; //$NON-NLS-1$
+ String runOrLaunchMsg = ""; //$NON-NLS-1$
switch (data.getExeSelection()) {
case USE_PROJECT_EXECUTABLE:
- runOrLaunchMsg = "launch '" + data.getExeSelectionPath().lastSegment() + "'";
+ runOrLaunchMsg = MessageFormat.format(Messages.getString("DebugRunProcessSection.LaunchFormat"), data.getExeSelectionPath().lastSegment()); //$NON-NLS-1$
break;
case USE_REMOTE_EXECUTABLE:
- runOrLaunchMsg = "launch '" + PathUtils.convertPathToWindows(data.getExeSelectionPath()) + "'";
+ runOrLaunchMsg = MessageFormat.format(Messages.getString("DebugRunProcessSection.LaunchFormat"), PathUtils.convertPathToWindows(data.getExeSelectionPath())); //$NON-NLS-1$
break;
case ATTACH_TO_PROCESS:
- runOrLaunchMsg = "attach to a process selected at launch time";
+ runOrLaunchMsg = Messages.getString("DebugRunProcessSection.AttachMsg"); //$NON-NLS-1$
break;
}
- copyOrInstallMsg = "copy files to the device";
+ copyOrInstallMsg = getCopyOrInstallMsg();
String runOrDebugProcessMessage = MessageFormat.format(mainFormat, copyOrInstallMsg, runOrLaunchMsg);
descriptionLabel.setText(runOrDebugProcessMessage);
} else {
- descriptionLabel.setText(status.getMessage() + "\n\n" +
- MessageFormat.format("Click the 'Change...' button to select another {0} method.",
+ descriptionLabel.setText(status.getMessage() + "\n\n" + //$NON-NLS-1$
+ MessageFormat.format(Messages.getString("DebugRunProcessSection.ChangeMsg"), //$NON-NLS-1$
data.getModeLabel().toLowerCase()));
}
}
+ private String getCopyOrInstallMsg() {
+ if (data.isSysTRKConnection() || !data.isInstallPackage())
+ return Messages.getString("DebugRunProcessSection.CopyMsg"); //$NON-NLS-1$
+ else
+ return MessageFormat.format(Messages.getString("DebugRunProcessSection.InstallMsg"), data.getSisPath()); //$NON-NLS-1$
+ }
+
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/LaunchOptionsData.java Tue Feb 16 13:43:06 2010 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,299 +0,0 @@
-/*
-* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
-
-package com.nokia.cdt.internal.debug.launch.newwizard;
-
-import java.util.List;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.preferences.InstanceScope;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.ui.IDebugUIConstants;
-import org.osgi.service.prefs.Preferences;
-
-import com.nokia.carbide.remoteconnections.interfaces.IConnection;
-import com.nokia.carbide.remoteconnections.interfaces.IService;
-import com.nokia.cpp.internal.api.utils.core.TextUtils;
-
-/**
- * Data manipulated by the launch wizard and its dialogs.
- */
-public class LaunchOptionsData {
- public interface IPathValidator {
- /**
- * @param path IPath
- * @return Error string or <code>null</code> if is valid
- */
- String isValidPath(IPath path);
- }
-
- // settings detected in project
- private final List<IPath> mmps;
- private final List<IPath> exes;
- private final IPath defaultExecutable;
- private final IProject project;
- private final String configurationName;
- private final IService service;
- private final boolean isEmulation;
- private final boolean emulatorOnly;
- private final String mode;
- private IConnection connection;
-
- // overall target
- public static class LaunchType {
- private final String launchId;
-
- public LaunchType(String launchId) {
- this.launchId = launchId;
- }
-
- public boolean isApplicable(LaunchOptionsData data) {
- return true;
- }
-
- public String getLaunchId() {
- return launchId;
- }
- };
-
- public final static LaunchType APP_TRK = new LaunchType(null);
- public final static LaunchType SYS_TRK = new LaunchType(null);
- public final static LaunchType ATTACH_TO_PROCESS_LAUNCH = new LaunchType(null);
- public final static LaunchType PLATSIM_RUN_MODE = new LaunchType(null);
- public final static LaunchType PLATSIM_STOP_MODE = new LaunchType(null);
-
- // settings made in Debug/Run Process section
- enum EExeSelection {
- USE_PROJECT_EXECUTABLE,
- USE_REMOTE_EXECUTABLE,
- ATTACH_TO_PROCESS,
- };
-
- private EExeSelection exeSelection;
- private IPath exeSelectionPath = Path.EMPTY;
- private EBuildBeforeLaunchOption buildBeforeLaunch;
- private boolean installPackage;
- private String sisPath;
-
- // settings made in the Other Settings section
- enum EBuildBeforeLaunchOption {
- ALWAYS,
- NEVER,
- USE_WORKSPACE_SETTING,
- }
-
- public LaunchOptionsData(List<IPath> mmps, List<IPath> exes,
- IPath defaultExecutable, IProject project,
- String configurationName, boolean isEmulation,
- boolean emulatorOnly, String mode,
- IService trkService) {
- this.mmps = mmps;
- this.exes = exes;
- this.defaultExecutable = defaultExecutable;
- this.project = project;
- this.configurationName = configurationName;
- this.isEmulation = isEmulation;
- this.emulatorOnly = emulatorOnly;
- this.mode = mode;
- this.service = trkService;
- }
-
- /**
- * @return the service
- */
- public IService getService() {
- return service;
- }
-
- /**
- * @return
- */
- public boolean isDebug() {
- return mode.equals(ILaunchManager.DEBUG_MODE);
- }
-
- public String getModeLabel() {
- if (mode.equals(ILaunchManager.RUN_MODE))
- return "Run";
- else if (mode.equals(ILaunchManager.DEBUG_MODE))
- return "Debug";
- else
- return TextUtils.titleCase(mode);
-
- }
-
- /**
- * Validate the detected and/or configured data
- * @return IStatus, never <code>null</code>
- */
- public IStatus validate() {
- return Status.OK_STATUS;
- }
-
- /**
- * @return
- * @return
- */
- public List<IPath> getExes() {
- return exes;
- }
-
- /**
- * @return the defaultExecutable
- */
- public IPath getDefaultExecutable() {
- return defaultExecutable;
- }
-
- /**
- * Set the executable selection mode
- * @param selection
- */
- public void setExeSelection(EExeSelection selection) {
- this.exeSelection = selection;
- }
- /**
- * Set the path for the exe
- * @param path or <code>null</code>
- */
- public void setExeSelectionPath(IPath path) {
- this.exeSelectionPath = path != null ? path : Path.EMPTY;
- }
-
- /**
- * @return
- */
- public EExeSelection getExeSelection() {
- return exeSelection;
- }
-
- public IPath getExeSelectionPath() {
- return exeSelectionPath;
- }
-
- public String getConnectionName() {
- IConnection connection = getConnection();
- if (connection == null)
- return null;
- return connection.getDisplayName();
- }
-
- public void setBuildBeforeLaunchOption(
- EBuildBeforeLaunchOption setting) {
- this.buildBeforeLaunch = setting;
- }
-
- public EBuildBeforeLaunchOption getBuildBeforeLaunch() {
- return buildBeforeLaunch;
- }
-
- /** Get current workspace setting */
- public boolean isWorkspaceBuildBeforeLaunch() {
- // here's how to get the prefs from a plugin's #getPreferenceStore() without violating access
- String prefId = IDebugUIConstants.PREF_BUILD_BEFORE_LAUNCH;
- int idx = prefId.lastIndexOf('.');
- String plugin = prefId.substring(0, idx);
- Preferences node = Platform.getPreferencesService().getRootNode().node(InstanceScope.SCOPE).node(plugin);
- return node.getBoolean(prefId, true);
- }
-
- /** Get actual launch-time setting */
- public boolean isCurrentBuildBeforeLaunch() {
- if (buildBeforeLaunch != EBuildBeforeLaunchOption.USE_WORKSPACE_SETTING)
- return buildBeforeLaunch == EBuildBeforeLaunchOption.ALWAYS;
- return isWorkspaceBuildBeforeLaunch();
- }
-
- /**
- * @param selection
- */
- public void setInstallPackage(boolean selection) {
- this.installPackage = selection;
- }
-
- /**
- * @return the installPackage
- */
- public boolean isInstallPackage() {
- return installPackage;
- }
-
- /**
- * @return
- */
- public IProject getProject() {
- return project;
- }
-
- /**
- * @param sisPath
- */
- public void setSisPath(String sisPath) {
- this.sisPath = sisPath;
- }
-
- /**
- * Copy the data, for use by a transient dialog.
- * @return new copy of data
- */
- public LaunchOptionsData copy() {
- LaunchOptionsData d = new LaunchOptionsData(
- mmps, exes, defaultExecutable, project, configurationName,
- isEmulation, emulatorOnly, mode, service);
- d.exeSelection = exeSelection;
- d.exeSelectionPath = exeSelectionPath;
- d.buildBeforeLaunch = buildBeforeLaunch;
- d.installPackage = installPackage;
- d.sisPath = sisPath;
- d.connection = connection;
- return d;
- }
-
- /**
- * Apply the given data to the receiver (when a transient dialog is accepted)
- * @param dialogData
- */
- public void apply(LaunchOptionsData dialogData) {
- exeSelection = dialogData.exeSelection;
- exeSelectionPath = dialogData.exeSelectionPath;
- buildBeforeLaunch = dialogData.buildBeforeLaunch;
- installPackage = dialogData.installPackage;
- sisPath = dialogData.sisPath;
- connection = dialogData.connection;
- }
-
- /**
- * @return
- */
- public boolean requiresInstallPackage() {
- return false;
- }
-
- public void setConnection(IConnection connection) {
- this.connection = connection;
- }
-
- public IConnection getConnection() {
- return connection;
- }
-
-}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/LaunchWizard.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/LaunchWizard.java Tue Feb 16 13:44:12 2010 -0600
@@ -18,14 +18,12 @@
package com.nokia.cdt.internal.debug.launch.newwizard;
import java.text.MessageFormat;
-import java.util.List;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IPageChangedListener;
-import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.PageChangedEvent;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.wizard.IWizardContainer;
@@ -38,31 +36,32 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
import com.nokia.carbide.remoteconnections.interfaces.IService;
+import com.nokia.cdt.internal.debug.launch.LaunchPlugin;
+import com.nokia.cdt.internal.debug.launch.wizard.ILaunchCreationWizard;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchOptions;
/**
* New launch wizard for Carbide 3.0.
*
* See https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=10419
*/
-public class LaunchWizard extends Wizard {
+public class LaunchWizard extends Wizard implements ILaunchCreationWizard {
- private LaunchOptionsData launchData;
+ private LaunchWizardData launchData;
private UnifiedLaunchOptionsPage mainPage;
private Button advancedButton;
private boolean advancedEdit;
private IPageChangedListener pageChangedListener;
+ private boolean hasFinished;
- public LaunchWizard(IProject project, String configurationName,
- List<IPath> mmps, List<IPath> exes, IPath defaultExecutable,
- boolean isEmulation, boolean emulatorOnly, String mode,
- IService trkService) {
- launchData = new LaunchOptionsData(mmps, exes, defaultExecutable, project, configurationName,
- isEmulation, emulatorOnly, mode, trkService);
+ public LaunchWizard(LaunchOptions launchOptions, IService trkService) {
+ launchData = new LaunchWizardData(launchOptions, trkService);
mainPage = new UnifiedLaunchOptionsPage(launchData);
mainPage.initializeSettings();
- setWindowTitle("New Launch Configuration Wizard");
+ setWindowTitle(Messages.getString("LaunchWizard.Title")); //$NON-NLS-1$
}
/* (non-Javadoc)
@@ -103,9 +102,9 @@
((GridLayout) parent.getLayout()).numColumns++;
advancedButton.moveBelow(parent.getChildren()[0]);
- advancedButton.setText("Edit advanced settings before launch");
+ advancedButton.setText(Messages.getString("LaunchWizard.AdvancedLabel")); //$NON-NLS-1$
advancedButton.setToolTipText(MessageFormat.format(
- "Before finishing the wizard, edit settings in the ''{0} Configurations'' dialog.",
+ Messages.getString("LaunchWizard.AdvancedTip"), //$NON-NLS-1$
launchData.getModeLabel()));
advancedButton.addSelectionListener(new SelectionAdapter() {
@Override
@@ -132,12 +131,12 @@
if (finishButton != null) {
advancedEdit = advancedButton.getSelection();
if (advancedEdit) {
- finishButton.setText("Edit");
- finishButton.setToolTipText("Click to accept settings and edit advanced settings.");
+ finishButton.setText(Messages.getString("LaunchWizard.EditLabel")); //$NON-NLS-1$
+ finishButton.setToolTipText(Messages.getString("LaunchWizard.EditTip")); //$NON-NLS-1$
getContainer().updateButtons();
} else {
finishButton.setText(launchData.getModeLabel());
- finishButton.setToolTipText("Click to accept settings and launch the program.");
+ finishButton.setToolTipText(Messages.getString("LaunchWizard.FinishTip")); //$NON-NLS-1$
getContainer().updateButtons();
}
}
@@ -176,8 +175,33 @@
@Override
public boolean performFinish() {
- MessageDialog.openWarning(getShell(), "New Launch Configuration Wizard", "Launching from this wizard not enabled yet");
- return false;
+ hasFinished = true;
+ return true;
+ }
+
+ public boolean shouldOpenLaunchConfigurationDialog() {
+ return hasFinished && advancedEdit;
}
+ public ILaunchConfigurationWorkingCopy getLaunchConfiguration() {
+ if (!hasFinished)
+ return null;
+
+ ILaunchConfigurationWorkingCopy config = null;
+ try {
+ config = launchData.createConfiguration();
+ } catch (CoreException e) {
+ LaunchPlugin.log(e);
+ }
+
+ return config;
+ }
+
+ public void init() {
+ }
+
+ public int openWizard(Shell shell) {
+ WizardDialog dialog = new WizardDialog(shell, this);
+ return dialog.open();
+ }
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/LaunchWizardData.java Tue Feb 16 13:44:12 2010 -0600
@@ -0,0 +1,404 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.cdt.internal.debug.launch.newwizard;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.core.ILaunchConfigurationType;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.osgi.service.prefs.Preferences;
+
+import com.freescale.cdt.debug.cw.core.RemoteConnectionsTRKHelper;
+import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator;
+import com.nokia.carbide.remoteconnections.interfaces.IConnectedService;
+import com.nokia.carbide.remoteconnections.interfaces.IConnection;
+import com.nokia.carbide.remoteconnections.interfaces.IService;
+import com.nokia.carbide.remoteconnections.internal.api.IConnectedService2;
+import com.nokia.carbide.remoteconnections.internal.registry.Registry;
+import com.nokia.cdt.debug.cw.symbian.SettingsData;
+import com.nokia.cdt.internal.debug.launch.wizard.LaunchOptions;
+import com.nokia.cpp.internal.api.utils.core.TextUtils;
+
+import cwdbg.PreferenceConstants;
+
+/**
+ * Data manipulated by the launch wizard and its dialogs.
+ */
+@SuppressWarnings("restriction")
+public class LaunchWizardData extends LaunchOptions {
+ public interface IPathValidator {
+ /**
+ * @param path IPath
+ * @return Error string or <code>null</code> if is valid
+ */
+ String isValidPath(IPath path);
+ }
+
+ private final IService service;
+
+ // overall target
+ public static class LaunchType {
+ private final String launchId;
+
+ public LaunchType(String launchId) {
+ this.launchId = launchId;
+ }
+
+ public boolean isApplicable(LaunchWizardData data) {
+ return true;
+ }
+
+ public String getLaunchId() {
+ return launchId;
+ }
+ };
+
+ public final static LaunchType APP_TRK = new LaunchType(null);
+ public final static LaunchType SYS_TRK = new LaunchType(null);
+ public final static LaunchType ATTACH_TO_PROCESS_LAUNCH = new LaunchType(null);
+ public final static LaunchType PLATSIM_RUN_MODE = new LaunchType(null);
+ public final static LaunchType PLATSIM_STOP_MODE = new LaunchType(null);
+
+ // settings made in Debug/Run Process section
+ enum EExeSelection {
+ USE_PROJECT_EXECUTABLE,
+ USE_REMOTE_EXECUTABLE,
+ ATTACH_TO_PROCESS,
+ };
+
+ private EExeSelection exeSelection;
+ private IPath exeSelectionPath = Path.EMPTY;
+ private EBuildBeforeLaunchOption buildBeforeLaunch;
+ private boolean installPackage;
+ private String sisPath;
+ private IConnection connection;
+
+ // settings made in the Other Settings section
+ enum EBuildBeforeLaunchOption {
+ ALWAYS,
+ NEVER,
+ USE_WORKSPACE_SETTING,
+ }
+
+ public LaunchWizardData(LaunchOptions launchOptions, IService trkService) {
+ this.mmps = launchOptions.mmps;
+ this.exes = launchOptions.exes;
+ this.defaultExecutable = launchOptions.defaultExecutable;
+ this.project = launchOptions.project;
+ this.configurationName = launchOptions.configurationName;
+ this.isEmulation = launchOptions.isEmulation;
+ this.emulatorOnly = launchOptions.emulatorOnly;
+ this.mode = launchOptions.mode;
+ this.service = trkService;
+ }
+
+ /**
+ * @return the service
+ */
+ public IService getService() {
+ return service;
+ }
+
+ /**
+ * @return
+ */
+ public boolean isDebug() {
+ return mode.equals(ILaunchManager.DEBUG_MODE);
+ }
+
+ public String getModeLabel() {
+ if (mode.equals(ILaunchManager.RUN_MODE))
+ return Messages.getString("LaunchWizardData.RunModeLabel"); //$NON-NLS-1$
+ else if (mode.equals(ILaunchManager.DEBUG_MODE))
+ return Messages.getString("LaunchWizardData.DebugModeLabel"); //$NON-NLS-1$
+ else
+ return TextUtils.titleCase(mode);
+
+ }
+
+ /**
+ * Validate the detected and/or configured data
+ * @return IStatus, never <code>null</code>
+ */
+ public IStatus validate() {
+ return Status.OK_STATUS;
+ }
+
+ /**
+ * @return
+ * @return
+ */
+ public List<IPath> getExes() {
+ return exes;
+ }
+
+ /**
+ * @return the defaultExecutable
+ */
+ public IPath getDefaultExecutable() {
+ return defaultExecutable;
+ }
+
+ /**
+ * Set the executable selection mode
+ * @param selection
+ */
+ public void setExeSelection(EExeSelection selection) {
+ this.exeSelection = selection;
+ }
+ /**
+ * Set the path for the exe
+ * @param path or <code>null</code>
+ */
+ public void setExeSelectionPath(IPath path) {
+ this.exeSelectionPath = path != null ? path : Path.EMPTY;
+ }
+
+ /**
+ * @return
+ */
+ public EExeSelection getExeSelection() {
+ return exeSelection;
+ }
+
+ public IPath getExeSelectionPath() {
+ return exeSelectionPath;
+ }
+
+ public String getConnectionName() {
+ IConnection connection = getConnection();
+ if (connection == null)
+ return null;
+ return connection.getDisplayName();
+ }
+
+ public void setBuildBeforeLaunchOption(
+ EBuildBeforeLaunchOption setting) {
+ this.buildBeforeLaunch = setting;
+ }
+
+ public EBuildBeforeLaunchOption getBuildBeforeLaunch() {
+ return buildBeforeLaunch;
+ }
+
+ /** Get current workspace setting */
+ public boolean isWorkspaceBuildBeforeLaunch() {
+ // here's how to get the prefs from a plugin's #getPreferenceStore() without violating access
+ String prefId = IDebugUIConstants.PREF_BUILD_BEFORE_LAUNCH;
+ int idx = prefId.lastIndexOf('.');
+ String plugin = prefId.substring(0, idx);
+ Preferences node = Platform.getPreferencesService().getRootNode().node(InstanceScope.SCOPE).node(plugin);
+ return node.getBoolean(prefId, true);
+ }
+
+ /** Get actual launch-time setting */
+ public boolean isCurrentBuildBeforeLaunch() {
+ if (buildBeforeLaunch != EBuildBeforeLaunchOption.USE_WORKSPACE_SETTING)
+ return buildBeforeLaunch == EBuildBeforeLaunchOption.ALWAYS;
+ return isWorkspaceBuildBeforeLaunch();
+ }
+
+ /**
+ * @param selection
+ */
+ public void setInstallPackage(boolean selection) {
+ this.installPackage = selection;
+ }
+
+ /**
+ * @return the installPackage
+ */
+ public boolean isInstallPackage() {
+ return installPackage;
+ }
+
+ /**
+ * @return
+ */
+ public IProject getProject() {
+ return project;
+ }
+
+ /**
+ * @param sisPath
+ */
+ public void setSisPath(String sisPath) {
+ this.sisPath = sisPath;
+ }
+
+ /**
+ * @return
+ */
+ public String getSisPath() {
+ return sisPath;
+ }
+
+ /**
+ * Copy the data, for use by a transient dialog.
+ * @return new copy of data
+ */
+ public LaunchWizardData copy() {
+ LaunchOptions launchOptions = new LaunchOptions();
+ launchOptions.mmps = mmps;
+ launchOptions.exes = exes;
+ launchOptions.defaultExecutable = defaultExecutable;
+ launchOptions.project = project;
+ launchOptions.configurationName = configurationName;
+ launchOptions.isEmulation = isEmulation;
+ launchOptions.emulatorOnly = emulatorOnly;
+ launchOptions.mode = mode;
+ LaunchWizardData d = new LaunchWizardData(launchOptions, service);
+ d.exeSelection = exeSelection;
+ d.exeSelectionPath = exeSelectionPath;
+ d.buildBeforeLaunch = buildBeforeLaunch;
+ d.installPackage = installPackage;
+ d.sisPath = sisPath;
+ d.connection = connection;
+ return d;
+ }
+
+ /**
+ * Apply the given data to the receiver (when a transient dialog is accepted)
+ * @param dialogData
+ */
+ public void apply(LaunchWizardData dialogData) {
+ exeSelection = dialogData.exeSelection;
+ exeSelectionPath = dialogData.exeSelectionPath;
+ buildBeforeLaunch = dialogData.buildBeforeLaunch;
+ installPackage = dialogData.installPackage;
+ sisPath = dialogData.sisPath;
+ connection = dialogData.connection;
+ }
+
+ /**
+ * @return
+ */
+ public boolean requiresInstallPackage() {
+ return !isSysTRKConnection() || installPackage;
+ }
+
+ public void setConnection(IConnection connection) {
+ this.connection = connection;
+ }
+
+ public IConnection getConnection() {
+ return connection;
+ }
+
+ public ILaunchConfigurationWorkingCopy createConfiguration() throws CoreException {
+ String launchTypeId = getApplicableLaunchTypeId();
+ ILaunchConfigurationType launchType = DebugPlugin.getDefault().getLaunchManager().getLaunchConfigurationType(launchTypeId);
+ ILaunchConfigurationWorkingCopy config = launchType.newInstance(null, configurationName);
+ initializeConfigSettings(launchTypeId, config);
+
+ return config;
+ }
+
+ private void initializeConfigSettings(String launchTypeId, ILaunchConfigurationWorkingCopy config) {
+ IPath exePath = getExePath();
+ IPath mmpPath = getMmpPath(exePath);
+ if (launchTypeId.equals(SettingsData.APP_TRK_LAUNCH_TYPE_ID)) {
+ SettingsData.setDefaults(config, SettingsData.LaunchConfig_AppTRK, project, mmpPath, exePath);
+ }
+ else if (launchTypeId.equals(SettingsData.SYS_TRK_LAUNCH_TYPE_ID)) {
+ SettingsData.setDefaults(config, SettingsData.LaunchConfig_SysTRK, project, mmpPath, exePath);
+ }
+ else if (launchTypeId.equals(SettingsData.ATTACH_LAUNCH_TYPE_ID)) {
+ SettingsData.setDefaults(config, SettingsData.LaunchConfig_AppTRK, project, mmpPath, exePath);
+ }
+ addBuildOptions(config);
+ // always set the current connection id
+ config.setAttribute(RemoteConnectionsTRKHelper.CONNECTION_ATTRIBUTE, Registry.CURRENT_CONNECTION_ID);
+ if (installPackage)
+ config.setAttribute(PreferenceConstants.J_PN_SisFileHostPath, sisPath);
+ }
+
+ private IPath getMmpPath(IPath exePath) {
+ if (!mmps.isEmpty()) {
+ for (int i = 0; i < exes.size(); i++) {
+ IPath exe = exes.get(i);
+ if (exe.lastSegment().equals(exePath.lastSegment()))
+ return mmps.get(i);
+ }
+ }
+ return null;
+ }
+
+ private IPath getExePath() {
+ if (exeSelection.equals(EExeSelection.ATTACH_TO_PROCESS))
+ return exes.get(0);
+ return exeSelectionPath;
+ }
+
+ private IConnectedService getConnectedService() {
+ if (connection != null) {
+ Collection<IConnectedService> connectedServices =
+ RemoteConnectionsActivator.getConnectionsManager().getConnectedServices(connection);
+ for (IConnectedService connectedService : connectedServices) {
+ if (connectedService.getService().getIdentifier().equals(service.getIdentifier()))
+ return connectedService;
+ }
+ }
+ return null;
+ }
+
+ public boolean isSysTRKConnection() {
+ IConnectedService connectedService = getConnectedService();
+ if (connectedService instanceof IConnectedService2) {
+ String value = ((IConnectedService2) connectedService).getProperties().get("is-system-trk"); //$NON-NLS-1$
+ return Boolean.parseBoolean(value);
+ }
+ return false;
+ }
+
+ private String getApplicableLaunchTypeId() {
+ if (exeSelection.equals(EExeSelection.ATTACH_TO_PROCESS))
+ return SettingsData.ATTACH_LAUNCH_TYPE_ID;
+ else if (!installPackage || isSysTRKConnection())
+ return SettingsData.SYS_TRK_LAUNCH_TYPE_ID;
+ else
+ return SettingsData.APP_TRK_LAUNCH_TYPE_ID;
+ }
+
+ private void addBuildOptions(ILaunchConfigurationWorkingCopy config) {
+ int buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING;
+ switch (buildBeforeLaunch) {
+ case NEVER:
+ buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_DISABLED;
+ break;
+ case ALWAYS:
+ buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_ENABLED;
+ break;
+ }
+ config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_BUILD_BEFORE_LAUNCH, buildBeforeLaunchValue);
+ }
+}
+
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/OtherSettingsDialog.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/OtherSettingsDialog.java Tue Feb 16 13:44:12 2010 -0600
@@ -35,7 +35,7 @@
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.PreferencesUtil;
-import com.nokia.cdt.internal.debug.launch.newwizard.LaunchOptionsData.EBuildBeforeLaunchOption;
+import com.nokia.cdt.internal.debug.launch.newwizard.LaunchWizardData.EBuildBeforeLaunchOption;
/**
* This dialog allows in-depth configuration of the other settings in the launch.
@@ -48,7 +48,7 @@
private Button fWorkspaceSettingsButton;
private Link fWorkspaceSettingsLink;
- protected OtherSettingsDialog(Shell shell, LaunchOptionsData data) {
+ protected OtherSettingsDialog(Shell shell, LaunchWizardData data) {
super(shell, data);
}
@@ -59,12 +59,12 @@
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = initDialogArea(parent,
- "Other Settings",
+ Messages.getString("OtherSettingsDialog.Title"), //$NON-NLS-1$
LaunchWizardHelpIds.WIZARD_DIALOG_OTHER_SETTINGS);
- String description = "Build the project before launch? " +
- "This can take a very long time in some projects and build systems. " +
- "On the other hand, you must remember to build the project yourself if you make changes.";
+ String description = Messages.getString("OtherSettingsDialog.Desc1") + //$NON-NLS-1$
+ Messages.getString("OtherSettingsDialog.Desc2") + //$NON-NLS-1$
+ Messages.getString("OtherSettingsDialog.Desc3"); //$NON-NLS-1$
final Label label = new Label(composite, SWT.WRAP);
label.setText(description);
@@ -89,7 +89,7 @@
fDisableBuildButton = new Button(radio, SWT.RADIO);
fDisableBuildButton.setText(Messages.getString("OtherSettingsDialog.DisableButtonLabel")); //$NON-NLS-1$
fDisableBuildButton.setToolTipText(Messages.getString("OtherSettingsDialog.DisableButtonToolTip")); //$NON-NLS-1$
- fDisableBuildButton.setData(UID, "OtherSettingsDialog.disableBuildButton");
+ fDisableBuildButton.setData(UID, "OtherSettingsDialog.disableBuildButton"); //$NON-NLS-1$
GridDataFactory.fillDefaults().span(2, 1).applyTo(fDisableBuildButton);
@@ -104,7 +104,7 @@
fEnableBuildButton = new Button(radio, SWT.RADIO);
fEnableBuildButton.setText(Messages.getString("OtherSettingsDialog.EnableButtonLabel")); //$NON-NLS-1$
fEnableBuildButton.setToolTipText(Messages.getString("OtherSettingsDialog.EnableButtonToolTip")); //$NON-NLS-1$
- fEnableBuildButton.setData(UID, "OtherSettingsDialog.enableBuildButon");
+ fEnableBuildButton.setData(UID, "OtherSettingsDialog.enableBuildButon"); //$NON-NLS-1$
GridDataFactory.fillDefaults().span(2, 1).applyTo(fEnableBuildButton);
@@ -119,7 +119,7 @@
fWorkspaceSettingsButton = new Button(radio, SWT.RADIO);
fWorkspaceSettingsButton.setText(Messages.getString("OtherSettingsDialog.WorkspaceSettingsButtonLabel")); //$NON-NLS-1$
fWorkspaceSettingsButton.setToolTipText(Messages.getString("OtherSettingsDialog.WorkspaceSettingsButtonToolTip")); //$NON-NLS-1$
- fWorkspaceSettingsButton.setData(UID, "OtherSettingsDialog.workspaceSettingsButton");
+ fWorkspaceSettingsButton.setData(UID, "OtherSettingsDialog.workspaceSettingsButton"); //$NON-NLS-1$
GridDataFactory.swtDefaults().span(1, 1).applyTo(fWorkspaceSettingsButton);
@@ -133,7 +133,7 @@
fWorkspaceSettingsLink = new Link(radio, SWT.NONE);
fWorkspaceSettingsLink.setText(Messages.getString("OtherSettingsDialog.WorkspaceSettingsLinkLabel")); //$NON-NLS-1$
- fWorkspaceSettingsLink.setData(UID, "OtherSettingsDialog.workspaceSettingsLink");
+ fWorkspaceSettingsLink.setData(UID, "OtherSettingsDialog.workspaceSettingsLink"); //$NON-NLS-1$
GridDataFactory.swtDefaults().align(SWT.RIGHT, SWT.CENTER).grab(true, false).span(1, 1).applyTo(fWorkspaceSettingsLink);
@@ -173,11 +173,11 @@
IStatus status = Status.OK_STATUS;
updateStatus(status);
- String wsState = "";
+ String wsState = ""; //$NON-NLS-1$
if (data.isWorkspaceBuildBeforeLaunch())
- wsState = " (enabled)";
+ wsState = Messages.getString("OtherSettingsDialog.EnabledLabel"); //$NON-NLS-1$
else
- wsState = " (disabled)";
+ wsState = Messages.getString("OtherSettingsDialog.DisabledLabel"); //$NON-NLS-1$
fWorkspaceSettingsButton.setText(
Messages.getString("OtherSettingsDialog.WorkspaceSettingsButtonLabel") + //$NON-NLS-1$
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/OtherSettingsSection.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/OtherSettingsSection.java Tue Feb 16 13:44:12 2010 -0600
@@ -21,7 +21,7 @@
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
-import com.nokia.cdt.internal.debug.launch.newwizard.LaunchOptionsData.EBuildBeforeLaunchOption;
+import com.nokia.cdt.internal.debug.launch.newwizard.LaunchWizardData.EBuildBeforeLaunchOption;
/**
* Present the "Build before debug" section with a short description.
@@ -31,8 +31,8 @@
/**
*
*/
- public OtherSettingsSection(LaunchOptionsData data) {
- super(data, "Other settings");
+ public OtherSettingsSection(LaunchWizardData data, UnifiedLaunchOptionsPage launchOptionsPage) {
+ super(data, Messages.getString("OtherSettingsSection.Title"), launchOptionsPage); //$NON-NLS-1$
}
@@ -69,16 +69,16 @@
protected void updateUI() {
String msg;
- String ifWorkspace = "";
+ String ifWorkspace = ""; //$NON-NLS-1$
if (data.getBuildBeforeLaunch() == EBuildBeforeLaunchOption.USE_WORKSPACE_SETTING)
- ifWorkspace = " (workspace setting)";
+ ifWorkspace = Messages.getString("OtherSettingsSection.WorkspaceLabel"); //$NON-NLS-1$
if (data.isCurrentBuildBeforeLaunch())
- msg = "Carbide will build the project before launch";
+ msg = Messages.getString("OtherSettingsSection.BuildBeforeLabel"); //$NON-NLS-1$
else
- msg = "Carbide will not build the project before launch";
+ msg = Messages.getString("OtherSettingsSection.NoBuildBeforeLabel"); //$NON-NLS-1$
- descriptionLabel.setText(msg + ifWorkspace + ".");
+ descriptionLabel.setText(msg + ifWorkspace + "."); //$NON-NLS-1$
}
/* (non-Javadoc)
@@ -86,7 +86,7 @@
*/
@Override
protected AbstractLaunchSettingsDialog createChangeSettingsDialog(
- Shell shell, LaunchOptionsData dialogData) {
+ Shell shell, LaunchWizardData dialogData) {
return new OtherSettingsDialog(shell, dialogData);
}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/UnifiedLaunchOptionsPage.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/UnifiedLaunchOptionsPage.java Tue Feb 16 13:44:12 2010 -0600
@@ -46,7 +46,7 @@
*/
public class UnifiedLaunchOptionsPage extends WizardPage implements ISectionChangeListener {
- private final LaunchOptionsData data;
+ private final LaunchWizardData data;
private ArrayList<IWizardSection> sections;
@@ -57,10 +57,10 @@
* @param project
* @param configurationName
*/
- public UnifiedLaunchOptionsPage(LaunchOptionsData data) {
- super("Configure Launch Settings");
+ public UnifiedLaunchOptionsPage(LaunchWizardData data) {
+ super(Messages.getString("UnifiedLaunchOptionsPage.Title")); //$NON-NLS-1$
- setDescription("Configure the connection and process to launch.");
+ setDescription(Messages.getString("UnifiedLaunchOptionsPage.Desc")); //$NON-NLS-1$
this.data = data;
this.sections = new ArrayList<IWizardSection>();
@@ -71,10 +71,10 @@
section = new ConnectToDeviceSection(data, this);
sections.add(section);
- section = new DebugRunProcessSection(data);
+ section = new DebugRunProcessSection(data, this);
sections.add(section);
- section = new OtherSettingsSection(data);
+ section = new OtherSettingsSection(data, this);
sections.add(section);
}
@@ -116,9 +116,9 @@
if (status.isOK())
continue;
if (builder.length() > 0)
- builder.append("\n");
+ builder.append("\n"); //$NON-NLS-1$
- builder.append(MessageFormat.format("{0}: {1}",
+ builder.append(MessageFormat.format("{0}: {1}", //$NON-NLS-1$
section.getSectionName(),
status.getMessage()));
severity = Math.max(severity, status.getSeverity());
@@ -131,7 +131,7 @@
pageStatus = data.validate();
}
- setTitle("Configure launch configuration");
+ setTitle(Messages.getString("UnifiedLaunchOptionsPage.TitleText")); //$NON-NLS-1$
if (pageStatus != null && !pageStatus.isOK()) {
setMessage(pageStatus.getMessage(), severityToMsgType(pageStatus.getSeverity()));
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/messages.properties Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/newwizard/messages.properties Tue Feb 16 13:44:12 2010 -0600
@@ -1,11 +1,79 @@
+AbstractLaunchSettingsDialog.Title=New Launch Configuration Wizard
+AbstractLaunchWizardSection.ChangeLabel=Change...
+ConnectToDeviceDialog.EditLabel=Edit...
+ConnectToDeviceDialog.GroupLabel=Current connection
+ConnectToDeviceDialog.NewLabel=New...
+ConnectToDeviceDialog.NoConnectionsText=No connections are detected or defined.
+ConnectToDeviceDialog.NoCurrentItem=No Current connection
+ConnectToDeviceDialog.ServiceNotAvailWarning=The selected connection may not be usable for debugging:\n {0}
+ConnectToDeviceDialog.ServiceNotSupportedError=The selected connection does not support {0}
+ConnectToDeviceDialog.Title=Change connection
+ConnectToDeviceSection.CurrentConnectionLabel=The current connection is now ''{0}''.
+ConnectToDeviceSection.NoConnectionMsg=No current connection is defined or detected.
+ConnectToDeviceSection.StdPNPMsg=You may plug in a device over USB or activate it over WLAN, or create a new connection now for your device.
+ConnectToDeviceSection.Title=Connect to device
+DebugRunProcessDialog.AbsolutePathError=The executable path must be absolute.
+DebugRunProcessDialog.AllFilterName=All Files
+DebugRunProcessDialog.AttachAddlMsg=(selected at launch time)
+DebugRunProcessDialog.AttachLabel=&Attach to process:
+DebugRunProcessDialog.BrowseLabel=Browse...
+DebugRunProcessDialog.ChangeProcessMsg=Change {0} Process
+DebugRunProcessDialog.DebugConfigureMsg=Configure how to debug the program. The initial settings reflect the debug capabilities of the selected device and the SIS builder settings.
+DebugRunProcessDialog.DeployLabel=Deploy method:
+DebugRunProcessDialog.EnterPathError=Enter a non-empty executable path.
+DebugRunProcessDialog.FilePathError=The executable path should end in a filename.
+DebugRunProcessDialog.InstallBeforeLaunchLabel=Install package before launch
+DebugRunProcessDialog.InstallFilterName=Installation Files
+DebugRunProcessDialog.LaunchProjectExeLabel=Launch project &executable:
+DebugRunProcessDialog.LaunchRemoteProgLabel=Launch &remote program:
+DebugRunProcessDialog.ModeLabel={0} method:
+DebugRunProcessDialog.NoExesError=The project builds no executables.
+DebugRunProcessDialog.NoneItem=None
+DebugRunProcessDialog.RunConfigureMsg=Configure how to run the program.
+DebugRunProcessDialog.SISConfigLinkText=Modify SIS builder settings for build configuration
+DebugRunProcessDialog.SISFileExistError=The SIS file ''{0}'' does not exist.
+DebugRunProcessDialog.SISFileLabel=SIS File to Install:
+DebugRunProcessDialog.SISQueryTip=Specify which SIS file to install on the phone prior to launching
+DebugRunProcessDialog.Title=Select installation file
+DebugRunProcessSection.AttachMsg=attach to a process selected at launch time
+DebugRunProcessSection.ChangeMsg=Click the 'Change...' button to select another {0} method.
+DebugRunProcessSection.CopyMsg=copy files to the device
+DebugRunProcessSection.InstallMsg=install "{0}"
+DebugRunProcessSection.LaunchFormat=launch ''{0}''
+DebugRunProcessSection.MainFormat=Carbide will {0} and {1}.
+DebugRunProcessSection.MustInstallError=Carbide must install a package to debug this project.
+DebugRunProcessSection.NoExesError=This project does not build any executables.
+DebugRunProcessSection.NoRemoteExeError=No remote executable is selected.
+DebugRunProcessSection.Title={0} process
+LaunchWizard.AdvancedLabel=Edit advanced settings before launch
+LaunchWizard.AdvancedTip=Before finishing the wizard, edit settings in the ''{0} Configurations'' dialog.
+LaunchWizard.EditLabel=Edit
+LaunchWizard.EditTip=Click to accept settings and edit advanced settings.
+LaunchWizard.FinishTip=Click to accept settings and launch the program.
+LaunchWizard.Title=New Launch Configuration Wizard
+LaunchWizardData.DebugModeLabel=Debug
+LaunchWizardData.RunModeLabel=Run
OtherSettingsDialog.Title=Build Options Selection
+OtherSettingsDialog.Desc1=Build the project before launch?
+OtherSettingsDialog.Desc2=This can take a very long time in some projects and build systems.
+OtherSettingsDialog.Desc3=On the other hand, you must remember to build the project yourself if you make changes.
+OtherSettingsDialog.Title=Other Settings
OtherSettingsDialog.Description=Select build options before launching
OtherSettingsDialog.OptionsGroupLabel=Build (if required) before launching
OtherSettingsDialog.DisableButtonLabel=Disable build before launch
OtherSettingsDialog.DisableButtonToolTip=Requires manually building project before launching (this may improve launch performance)
+OtherSettingsDialog.DisabledLabel=\ (disabled)
OtherSettingsDialog.EnableButtonLabel=Enable build before launch
OtherSettingsDialog.EnableButtonToolTip=Always build project before launching (this may impact launch performance)
+OtherSettingsDialog.EnabledLabel=\ (enabled)
OtherSettingsDialog.WorkspaceSettingsButtonLabel=Use workspace settings
OtherSettingsDialog.WorkspaceSettingsButtonToolTip=Use workspace setting for "Build (if required) before Launch"
OtherSettingsDialog.WorkspaceSettingsLinkLabel=<a>Configure Workspace Settings...</a>
OtherSettingsDialog.WorkspaceSettingsPageID=org.eclipse.debug.ui.LaunchingPreferencePage
+OtherSettingsSection.BuildBeforeLabel=Carbide will build the project before launch
+OtherSettingsSection.NoBuildBeforeLabel=Carbide will not build the project before launch
+OtherSettingsSection.Title=Other settings
+OtherSettingsSection.WorkspaceLabel=\ (workspace setting)
+UnifiedLaunchOptionsPage.Desc=Configure the connection and process to launch.
+UnifiedLaunchOptionsPage.Title=Configure Launch Settings
+UnifiedLaunchOptionsPage.TitleText=Configure launch configuration
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/wizard/ILaunchCreationWizard.java Tue Feb 16 13:44:12 2010 -0600
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+package com.nokia.cdt.internal.debug.launch.wizard;
+
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.swt.widgets.Shell;
+
+public interface ILaunchCreationWizard {
+
+ void init();
+
+ int openWizard(Shell shell);
+
+ ILaunchConfigurationWorkingCopy getLaunchConfiguration();
+
+ boolean shouldOpenLaunchConfigurationDialog();
+}
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/wizard/LaunchCreationWizard.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/wizard/LaunchCreationWizard.java Tue Feb 16 13:44:12 2010 -0600
@@ -30,11 +30,9 @@
import org.eclipse.core.runtime.Platform;
import org.eclipse.debug.core.DebugPlugin;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.IWorkbench;
import com.nokia.carbide.cpp.ui.CarbideUIPlugin;
import com.nokia.carbide.cpp.ui.ICarbideSharedImages;
@@ -44,11 +42,10 @@
import com.nokia.cpp.internal.api.utils.core.Logging;
import com.nokia.cpp.internal.api.utils.core.Pair;
-public class LaunchCreationWizard extends Wizard {
+public class LaunchCreationWizard extends Wizard implements ILaunchCreationWizard {
private MainExecutableSelectionWizardPage fBinarySelectionPage;
private LaunchWizardSummaryPage fEmulationSummaryPage;
- private LaunchCategorySelectionPage fCategorySelectionPage;
private LaunchWizardSelectionPage fWizardSelectionPage;
private BuildOptionsSelectionPage fBuildOptionsSelectionPage;
private ILaunchConfigurationWorkingCopy launchConfig;
@@ -56,6 +53,7 @@
private IProject project;
private String configurationName;
private List<AbstractLaunchWizard> wizards = new ArrayList<AbstractLaunchWizard>();
+ private String categoryId;
public LaunchCreationWizard(IProject project, String configurationName,
List<IPath> mmps, List<IPath> exes, IPath defaultExecutable,
@@ -76,7 +74,6 @@
fBinarySelectionPage = new MainExecutableSelectionWizardPage(mmps, exes, defaultExecutable, true, emulatorPath, emulatorOnly, fEmulationSummaryPage);
}
else {
- fCategorySelectionPage = new LaunchCategorySelectionPage(this);
fWizardSelectionPage = new LaunchWizardSelectionPage(this, mmps, exes, defaultExecutable, project, configurationName, mode);
}
}
@@ -117,7 +114,6 @@
addPage(fEmulationSummaryPage);
}
else if (fWizardSelectionPage != null) {
- addPage(fCategorySelectionPage);
addPage(fWizardSelectionPage);
}
}
@@ -127,7 +123,7 @@
return true;
}
- public void init(IWorkbench workbench, IStructuredSelection selection) {
+ public void init() {
setWindowTitle(Messages.getString("LaunchCreationWizard.0")); //$NON-NLS-1$
setDefaultPageImageDescriptor(CarbideUIPlugin.getSharedImages().getImageDescriptor(ICarbideSharedImages.IMG_NEW_LAUNCH_CONFIG_WIZARD_BANNER));
}
@@ -155,8 +151,12 @@
return shouldOpenLaunchDialog;
}
- public String getSelectedCategoryId() {
- return fCategorySelectionPage.getSelectedCategoryId();
+ public void setCategoryId(String categoryId) {
+ this.categoryId = categoryId;
+ }
+
+ public String getCategoryId() {
+ return categoryId;
}
public List<Wizard> getWizardsForCategory(String categoryId) {
@@ -170,30 +170,12 @@
}
private void loadWizards(List<IPath> mmps, List<IPath> exes, IPath defaultExecutable, String mode) {
- AppTRKLaunchWizard appTRKWizard = new AppTRKLaunchWizard(mmps, exes, defaultExecutable, project, configurationName);
- if (appTRKWizard.supportsMode(mode)) {
- appTRKWizard.addPages();
- wizards.add(appTRKWizard);
- }
-
- SystemTRKLaunchWizard sysTRKWizard = new SystemTRKLaunchWizard(mmps, exes, defaultExecutable, project, configurationName);
- if (sysTRKWizard.supportsMode(mode)) {
- sysTRKWizard.addPages();
- wizards.add(sysTRKWizard);
- }
-
Trace32LaunchWizard trace32Wizard = new Trace32LaunchWizard(mmps, exes, defaultExecutable, project, configurationName);
if (trace32Wizard.supportsMode(mode)) {
trace32Wizard.addPages();
wizards.add(trace32Wizard);
}
- AttachTRKLaunchWizard attachTRKWizard = new AttachTRKLaunchWizard(mmps, exes, defaultExecutable, project, configurationName);
- if (attachTRKWizard.supportsMode(mode)) {
- attachTRKWizard.addPages();
- wizards.add(attachTRKWizard);
- }
-
// load any wizard extensions
IExtensionRegistry extensionRegistry = Platform.getExtensionRegistry();
IExtensionPoint extensionPoint = extensionRegistry.getExtensionPoint(LaunchPlugin.PLUGIN_ID + ".launchWizardExtension"); //$NON-NLS-1$
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/wizard/LaunchOptions.java Tue Feb 16 13:44:12 2010 -0600
@@ -0,0 +1,19 @@
+package com.nokia.cdt.internal.debug.launch.wizard;
+
+import java.util.List;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+
+public class LaunchOptions {
+
+ public IProject project;
+ public String mode;
+ public String configurationName;
+ public boolean isEmulation; // aka isX86
+ public boolean emulatorOnly; // aka useEmulationByDefault
+ public IPath defaultExecutable;
+ public List<IPath> exes;
+ public List<IPath> mmps;
+
+}
\ No newline at end of file
--- a/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/wizard/LaunchWizardSelectionPage.java Tue Feb 16 13:43:06 2010 -0600
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/wizard/LaunchWizardSelectionPage.java Tue Feb 16 13:44:12 2010 -0600
@@ -146,7 +146,7 @@
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible && wizardSelectionTableViewer != null) {
- wizardSelectionTableViewer.setInput(mainWizard.getWizardsForCategory(mainWizard.getSelectedCategoryId()));
+ wizardSelectionTableViewer.setInput(mainWizard.getWizardsForCategory(mainWizard.getCategoryId()));
if (inputChanged) {
wizardSelectionTableViewer.setSelection(new StructuredSelection(wizardSelectionTableViewer.getElementAt(0)), true);
}