debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/Trace32ConnectionTab.java
changeset 0 fb279309251b
child 245 0575745dfefb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/Trace32ConnectionTab.java	Fri Apr 03 23:33:03 2009 +0100
@@ -0,0 +1,373 @@
+/*
+* 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.ui;
+
+import com.nokia.carbide.cpp.internal.support.SupportPlugin;
+import com.nokia.cdt.debug.cw.symbian.SettingsData;
+import com.nokia.cdt.internal.debug.launch.LaunchPlugin;
+
+import org.eclipse.cdt.launch.ui.CLaunchConfigurationTab;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.*;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.*;
+import org.eclipse.ui.PlatformUI;
+
+import java.io.File;
+
+public class Trace32ConnectionTab extends CLaunchConfigurationTab {
+
+	private Label t32ExeLabel;
+	private Text t32ExePath;
+	private Button t32ExeBrowse;
+	
+	private Label t32ConfigLabel;
+	private Text t32ConfigFilePath;
+	private Button t32ConfigFileBrowse;
+	
+	private Label t32BootConfigLabel;
+	private Text t32BootConfigFilePath;
+	private Button t32BootConfigFileBrowse;
+
+	//private Label t32PortLabel;
+	//private Text t32Port;
+
+	private Button viewT32Messages;
+	
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.ui.ILaunchConfigurationTab#createControl(org.eclipse.swt.widgets.Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite comp = new Composite(parent, SWT.NONE);
+		setControl(comp);
+		
+		PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), LaunchTabHelpIds.STOP_MODE_T32_CONNECTION);
+		
+		GridLayout topLayout = new GridLayout();
+		topLayout.numColumns = 2;
+		comp.setLayout(topLayout);
+
+		createVerticalSpacer(comp, 2);
+		createT32TextGroup(comp, 1);
+		createVerticalSpacer(comp, 1);
+
+		Dialog.applyDialogFont(parent);
+		checkControlState();
+	}
+
+	protected void createT32TextGroup(Composite parent, int colSpan) {
+		Composite projComp = new Composite(parent, SWT.NONE);
+		GridLayout projLayout = new GridLayout();
+		projLayout.numColumns = 2;
+		projLayout.marginHeight = 0;
+		projLayout.marginWidth = 0;
+		projComp.setLayout(projLayout);
+		GridData data = new GridData(GridData.FILL_HORIZONTAL);
+		data.horizontalSpan = colSpan;
+		projComp.setLayoutData(data);
+
+		t32ExeLabel = new Label(projComp, SWT.NONE);
+		t32ExeLabel.setText(Messages.getString("Trace32ConnectionTab.1")); //$NON-NLS-1$
+		data = new GridData();
+		data.horizontalSpan = 2;
+		t32ExeLabel.setLayoutData(data);
+		t32ExeLabel.setToolTipText(Messages.getString("Trace32ConnectionTab.2")); //$NON-NLS-1$
+
+		t32ExePath = new Text(projComp, SWT.BORDER);
+		data = new GridData(GridData.FILL_HORIZONTAL);
+		t32ExePath.setLayoutData(data);
+		t32ExePath.setToolTipText(Messages.getString("Trace32ConnectionTab.2")); //$NON-NLS-1$
+		t32ExePath.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				updateLaunchConfigurationDialog();
+			}
+		});
+
+		t32ExeBrowse = createPushButton(projComp, Messages.getString("Trace32ConnectionTab.3"), null); //$NON-NLS-1$
+		t32ExeBrowse.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent evt) {
+				FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
+
+				dialog.setText(Messages.getString("Trace32ConnectionTab.4")); //$NON-NLS-1$
+				dialog.setFilterExtensions(new String[] {"*.exe*", "*.*"}); //$NON-NLS-1$ //$NON-NLS-2$
+				dialog.setFilterNames(new String[] {Messages.getString("Trace32ConnectionTab.23"), Messages.getString("Trace32ConnectionTab.25")}); //$NON-NLS-1$ //$NON-NLS-2$
+
+				String result = dialog.open();
+				if (result != null && new File(result).exists()) {
+					t32ExePath.setText(result);
+					updateLaunchConfigurationDialog();
+				}
+			}
+		});
+
+		t32ConfigLabel = new Label(projComp, SWT.NONE);
+		t32ConfigLabel.setText(Messages.getString("Trace32ConnectionTab.5")); //$NON-NLS-1$
+		data = new GridData();
+		data.horizontalSpan = 2;
+		t32ConfigLabel.setLayoutData(data);
+		t32ConfigLabel.setToolTipText(Messages.getString("Trace32ConnectionTab.6")); //$NON-NLS-1$
+
+		t32ConfigFilePath = new Text(projComp, SWT.BORDER);
+		data = new GridData(GridData.FILL_HORIZONTAL);
+		t32ConfigFilePath.setLayoutData(data);
+		t32ConfigFilePath.setToolTipText(Messages.getString("Trace32ConnectionTab.6")); //$NON-NLS-1$
+		t32ConfigFilePath.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				updateLaunchConfigurationDialog();
+			}
+		});
+
+		t32ConfigFileBrowse = createPushButton(projComp, Messages.getString("Trace32ConnectionTab.3"), null); //$NON-NLS-1$
+		t32ConfigFileBrowse.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent evt) {
+				FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
+
+				dialog.setText(Messages.getString("Trace32ConnectionTab.7")); //$NON-NLS-1$
+				dialog.setFilterExtensions(new String[] {"*.t32*", "*.*"}); //$NON-NLS-1$ //$NON-NLS-2$
+				dialog.setFilterNames(new String[] {Messages.getString("Trace32ConnectionTab.24"), Messages.getString("Trace32ConnectionTab.25")}); //$NON-NLS-1$ //$NON-NLS-2$
+
+				String result = dialog.open();
+				if (result != null && new File(result).exists()) {
+					t32ConfigFilePath.setText(result);
+					updateLaunchConfigurationDialog();
+				}
+			}
+		});
+
+		t32BootConfigLabel = new Label(projComp, SWT.NONE);
+		t32BootConfigLabel.setText(Messages.getString("Trace32ConnectionTab.8")); //$NON-NLS-1$
+		data = new GridData();
+		data.horizontalSpan = 2;
+		t32BootConfigLabel.setLayoutData(data);
+		t32BootConfigLabel.setToolTipText(Messages.getString("Trace32ConnectionTab.9")); //$NON-NLS-1$
+
+		t32BootConfigFilePath = new Text(projComp, SWT.BORDER);
+		data = new GridData(GridData.FILL_HORIZONTAL);
+		t32BootConfigFilePath.setLayoutData(data);
+		t32BootConfigFilePath.setToolTipText(Messages.getString("Trace32ConnectionTab.9")); //$NON-NLS-1$
+		t32BootConfigFilePath.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				updateLaunchConfigurationDialog();
+			}
+		});
+
+		t32BootConfigFileBrowse = createPushButton(projComp, Messages.getString("Trace32ConnectionTab.3"), null); //$NON-NLS-1$
+		t32BootConfigFileBrowse.addSelectionListener(new SelectionAdapter() {
+
+			public void widgetSelected(SelectionEvent evt) {
+				FileDialog dialog = new FileDialog(getShell(), SWT.NONE);
+
+				dialog.setText(Messages.getString("Trace32ConnectionTab.10")); //$NON-NLS-1$
+				dialog.setFilterExtensions(new String[] {"*.cmm*", "*.*"}); //$NON-NLS-1$ //$NON-NLS-2$
+				dialog.setFilterNames(new String[] {Messages.getString("Trace32ConnectionTab.22"), Messages.getString("Trace32ConnectionTab.25")}); //$NON-NLS-1$ //$NON-NLS-2$
+
+				String result = dialog.open();
+				if (result != null && new File(result).exists()) {
+					t32BootConfigFilePath.setText(result);
+					updateLaunchConfigurationDialog();
+				}
+			}
+		});
+
+		/*t32PortLabel = new Label(projComp, SWT.NONE);
+		t32PortLabel.setText(Messages.getString("Trace32ConnectionTab.11")); //$NON-NLS-1$
+		data = new GridData();
+		data.horizontalSpan = 2;
+		t32PortLabel.setLayoutData(data);
+		t32PortLabel.setToolTipText(Messages.getString("Trace32ConnectionTab.12")); //$NON-NLS-1$
+
+		t32Port = new Text(projComp, SWT.BORDER);
+		data = new GridData(GridData.FILL_HORIZONTAL);
+		data.horizontalSpan = 1;
+		t32Port.setLayoutData(data);
+		t32Port.setToolTipText(Messages.getString("Trace32ConnectionTab.12")); //$NON-NLS-1$
+		t32Port.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				updateLaunchConfigurationDialog();
+			}
+		});*/
+
+		createVerticalSpacer(projComp, 1);
+
+		viewT32Messages = createCheckButton(projComp, Messages.getString("Trace32ConnectionTab.13")); //$NON-NLS-1$
+		data = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+		data.horizontalSpan = 2;
+		viewT32Messages.setLayoutData(data);
+		viewT32Messages.setToolTipText(Messages.getString("Trace32ConnectionTab.14")); //$NON-NLS-1$
+		viewT32Messages.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				updateLaunchConfigurationDialog();
+			}
+		});
+
+		createVerticalSpacer(projComp, 1);
+	}
+
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
+	 */
+	public void setDefaults(ILaunchConfigurationWorkingCopy config) {
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.ui.ILaunchConfigurationTab#initializeFrom(org.eclipse.debug.core.ILaunchConfiguration)
+	 */
+	public void initializeFrom(ILaunchConfiguration configuration) {
+		try {			
+			String t32ExePathStr = "C:\\t32\\t32marm.exe"; //$NON-NLS-1$
+	
+			//set the default config file from the Symbian support folder which has the predefined settings for connecting to Carbide.
+			String supportDir = SupportPlugin.getDefault().getSymbianSupportDirectory();
+			String defaultConfigFilePath = supportDir + "\\Trace32\\config_carbide.t32"; //$NON-NLS-1$
+	
+			if (new File("C:\\apps\\t32\\t32marm.exe").exists()) { //$NON-NLS-1$
+				t32ExePathStr = "C:\\apps\\t32\\t32marm.exe"; //$NON-NLS-1$
+				// use config_carbide_1.t32 where the SYS path is C:\Apps\T32\
+				defaultConfigFilePath = supportDir + "\\Trace32\\config_carbide_1.t32"; //$NON-NLS-1$
+			}
+			
+			t32ExePath.setText(configuration.getAttribute( SettingsData.spn_Trace32Conn_ExePath, t32ExePathStr)); 							
+			t32ConfigFilePath.setText(configuration.getAttribute( SettingsData.spn_Trace32Conn_ConfigFilePath, defaultConfigFilePath)); //$NON-NLS-1$
+			t32BootConfigFilePath.setText(configuration.getAttribute( SettingsData.spn_Trace32Conn_BootScriptFile, "")); //$NON-NLS-1$
+			viewT32Messages.setSelection(configuration.getAttribute( SettingsData.spn_Trace32Conn_LogOption, false));	
+			
+			checkControlState();
+		} catch (CoreException e) {
+			LaunchPlugin.log(e);
+		}
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.ui.ILaunchConfigurationTab#performApply(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
+	 */
+	public void performApply(ILaunchConfigurationWorkingCopy configuration) {
+		configuration.setAttribute( SettingsData.spn_Trace32Conn_ExePath, t32ExePath.getText());
+		configuration.setAttribute( SettingsData.spn_Trace32Conn_ConfigFilePath, t32ConfigFilePath.getText());
+		configuration.setAttribute( SettingsData.spn_Trace32Conn_BootScriptFile, t32BootConfigFilePath.getText());
+		configuration.setAttribute( SettingsData.spn_Trace32Conn_LogOption, viewT32Messages.getSelection());
+		
+		configuration.setAttribute( SettingsData.spn_Trace32Conn_BootConfigArgs, ""); //$NON-NLS-1$
+		
+		String portNumber = "20000"; //$NON-NLS-1$
+		T32ConfigFileReader configFileReader = new T32ConfigFileReader(t32ConfigFilePath.getText().trim());
+		if (configFileReader.isValid()) {
+			portNumber = configFileReader.getPortNumber();
+		}
+		
+		configuration.setAttribute( SettingsData.spn_Trace32Conn_UdpPort, portNumber);
+	}
+
+	/* (non-Javadoc)
+	 * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getName()
+	 */
+	public String getName() {
+		return Messages.getString("Trace32ConnectionTab.21"); //$NON-NLS-1$
+	}
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.debug.ui.ILaunchConfigurationTab#getImage()
+	 */
+	public Image getImage() {
+		return LaunchImages.get(LaunchImages.IMG_VIEW_CONNECTION_TAB);
+	}
+
+	protected void checkControlState()
+	{
+	}
+
+	public boolean isValid(ILaunchConfiguration config) {
+		
+		setErrorMessage(null);
+		setMessage(null);
+
+		boolean result = super.isValid(config);
+		if (result){
+			String pcPath = t32ExePath.getText().trim();
+			if (pcPath.length() < 1) {
+				setErrorMessage(Messages.getString("Trace32ConnectionTab.15")); //$NON-NLS-1$
+				return false;
+			} else {
+				if (!new File(pcPath).exists()) {
+					setErrorMessage(Messages.getString("Trace32ConnectionTab.16")); //$NON-NLS-1$
+					result = false;
+				}
+			}
+			
+			String configFilePath = t32ConfigFilePath.getText().trim();
+			if (configFilePath.length() < 1) {
+				setErrorMessage(Messages.getString("Trace32ConnectionTab.17")); //$NON-NLS-1$
+				result = false;
+			} else {
+				if (!new File(configFilePath).exists()) {
+					setErrorMessage(Messages.getString("Trace32ConnectionTab.18")); //$NON-NLS-1$
+					result = false;
+				}
+			} 	
+						
+			T32ConfigFileReader configFileReader = new T32ConfigFileReader(t32ConfigFilePath.getText().trim());
+			if (!configFileReader.isValid()) {
+	         	result = false;
+            	setErrorMessage(Messages.getString("Trace32ConnectionTab.26")); //$NON-NLS-1$
+			} else {			
+				// get the t32exe path
+				IPath t32Path = new Path(t32ExePath.getText().trim().toLowerCase());
+				t32Path = t32Path.removeLastSegments(1);
+				
+				if (configFileReader.getT32Path()!= null && configFileReader.getT32Path().length()>0) {
+					IPath t32PathfromConfigFile = new Path(configFileReader.getT32Path().toLowerCase());					
+					if (!t32PathfromConfigFile.equals(t32Path)) {
+						setErrorMessage(Messages.getString("Trace32ConnectionTab.27")); //$NON-NLS-1$
+						result = false;
+					}	
+				}			
+			}
+			
+			String cmmScriptPath = t32BootConfigFilePath.getText().trim();
+			if (cmmScriptPath.length() < 1) {
+				setErrorMessage(Messages.getString("Trace32ConnectionTab.19")); //$NON-NLS-1$
+				result = false;
+			} else {
+				if (!new File(cmmScriptPath).exists()) {
+					setErrorMessage(Messages.getString("Trace32ConnectionTab.20")); //$NON-NLS-1$
+					result = false;
+				}
+			} 			
+		}
+		return result;
+	}
+
+	@Override
+	public void activated(ILaunchConfigurationWorkingCopy workingCopy) {
+		super.activated(workingCopy);
+		
+		// forces page to get focus so that help works without having to select some control first.
+		getControl().setFocus();
+	}
+}