blob: 2c8738cb670170e367fe60102031ceee847cab76 [file] [log] [blame]
/*******************************************************************************
* 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);
}
}