| /******************************************************************************* |
| * Copyright (c) 2009, 2014 Xored Software Inc and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Xored Software Inc - initial API and implementation and/or initial documentation |
| *******************************************************************************/ |
| package org.eclipse.rcptt.internal.launching.remote.ui; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.debug.core.ILaunchConfiguration; |
| import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; |
| import org.eclipse.jface.dialogs.IDialogConstants; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.ModifyEvent; |
| import org.eclipse.swt.events.ModifyListener; |
| import org.eclipse.swt.events.VerifyEvent; |
| import org.eclipse.swt.events.VerifyListener; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Group; |
| import org.eclipse.swt.widgets.Label; |
| import org.eclipse.swt.widgets.Text; |
| |
| import org.eclipse.rcptt.launching.IQ7Launch; |
| import org.eclipse.rcptt.launching.Q7LaunchUtils; |
| |
| public final class AUTArgumentsBlock { |
| |
| private RemoteAUTMainTab fTab; |
| |
| private Text eclPortField; |
| private Text teslaPortField; |
| |
| private Text hostField; |
| |
| ModifyListener listener = new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| // fT3ab.validateTab(); |
| fTab.scheduleUpdateJob(); |
| } |
| }; |
| |
| public AUTArgumentsBlock(RemoteAUTMainTab tab) { |
| fTab = tab; |
| } |
| |
| public void createControl(Composite parent) { |
| Group group = new Group(parent, SWT.NONE); |
| String locationLabel = "&Remote Application Under Test (AUT)"; |
| group.setText(locationLabel); |
| GridLayout layout = new GridLayout(); |
| layout.numColumns = 2; |
| GridData gridData = new GridData(GridData.FILL_HORIZONTAL); |
| group.setLayout(layout); |
| group.setLayoutData(gridData); |
| |
| Label l = new Label(group, SWT.WRAP); |
| l.setText("Host:"); |
| hostField = new Text(group, SWT.BORDER); |
| gridData = new GridData(GridData.FILL_HORIZONTAL); |
| gridData.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; |
| hostField.setLayoutData(gridData); |
| hostField.addModifyListener(listener); |
| // hostField.setEnabled(false); |
| |
| l = new Label(group, SWT.WRAP); |
| l.setText("ECL port:"); |
| eclPortField = new Text(group, SWT.BORDER); |
| gridData = new GridData(GridData.FILL_HORIZONTAL); |
| gridData.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; |
| eclPortField.setLayoutData(gridData); |
| eclPortField.addModifyListener(listener); |
| |
| l = new Label(group, SWT.WRAP); |
| l.setText("Tesla port:"); |
| teslaPortField = new Text(group, SWT.BORDER); |
| gridData = new GridData(GridData.FILL_HORIZONTAL); |
| gridData.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH; |
| teslaPortField.setLayoutData(gridData); |
| teslaPortField.addModifyListener(listener); |
| |
| VerifyListener verity = new VerifyListener() { |
| public void verifyText(VerifyEvent e) { |
| for (char c : e.text.toCharArray()) { |
| if (!Character.isDigit(c)) { |
| e.doit = false; |
| } |
| } |
| } |
| }; |
| eclPortField.addVerifyListener(verity); |
| teslaPortField.addVerifyListener(verity); |
| } |
| |
| public String validate() { |
| final String hostName[] = { null }; |
| final int port[] = { 0 }; |
| if (hostField != null && !hostField.isDisposed()) { |
| hostField.getDisplay().syncExec(new Runnable() { |
| public void run() { |
| hostName[0] = getHostName(); |
| port[0] = getECLPort(); |
| } |
| }); |
| if (hostName[0] == null || hostName[0].trim().length() == 0) { |
| return "Please specify Remote AUT host..."; |
| } |
| |
| try { |
| Q7LaunchUtils.verifyConnection(hostName[0], port[0]); |
| } catch (CoreException e) { |
| return "AUT connection is not available..."; |
| } |
| } |
| return null; |
| } |
| |
| public void performApply(ILaunchConfigurationWorkingCopy config) { |
| try { |
| config.setAttribute(IQ7Launch.ATTR_HOST, hostField.getText()); |
| config.setAttribute(IQ7Launch.ATTR_TESLA_PORT, |
| Integer.valueOf(teslaPortField.getText())); |
| } catch (NumberFormatException e) { |
| |
| } |
| config.setAttribute(IQ7Launch.ATTR_ECL_PORT, getECLPort()); |
| } |
| |
| private Integer getECLPort() { |
| try { |
| return Integer.valueOf(eclPortField.getText()); |
| } catch (NumberFormatException e) { |
| return 0; |
| } |
| } |
| |
| private String getHostName() { |
| return hostField.getText(); |
| } |
| |
| public void initializeFrom(final ILaunchConfiguration config) { |
| eclPortField.setText(getValue(config, IQ7Launch.ATTR_ECL_PORT)); |
| teslaPortField.setText(getValue(config, IQ7Launch.ATTR_TESLA_PORT)); |
| try { |
| hostField.setText(config.getAttribute(IQ7Launch.ATTR_HOST, "")); |
| } catch (CoreException e) { |
| } |
| } |
| |
| private String getValue(final ILaunchConfiguration config, String attr) { |
| String location = null; |
| try { |
| location = Integer.toString(config.getAttribute(attr, 0)); |
| } catch (CoreException e) { |
| Activator.getDefault().log(e); |
| } |
| return location; |
| } |
| |
| public void setDefaults(ILaunchConfigurationWorkingCopy config) { |
| config.setAttribute(IQ7Launch.ATTR_TESLA_PORT, |
| IQ7Launch.TESLA_DEFAULT_PORT); |
| config.setAttribute(IQ7Launch.ATTR_ECL_PORT, IQ7Launch.ECL_DEFAULT_PORT); |
| config.setAttribute(IQ7Launch.ATTR_HOST, IQ7Launch.DEFAULT_HOST); |
| } |
| } |