/******************************************************************************* * Copyright (c) 2006, 2008 Wind River Systems, 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: * Michael Scharf (Wind River) - initial API and implementation * Martin Oberhuber (Wind River) - fixed copyright headers and beautified * Johnson Ma (Wind River) - [218880] Add UI setting for ssh keepalives * Martin Oberhuber (Wind River) - [206917] Add validation for Terminal Settings *******************************************************************************/ package com.netifera.platform.net.ssh.terminal; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.tm.internal.terminal.provisional.api.ISettingsPage; public class SSHSettingsPage implements ISettingsPage { private Text fHostText; private Text fUser; private Text fTimeout; private Text fKeepalive; private final SSHSettings fTerminalSettings; private Text fPort; private Text fPassword; public SSHSettingsPage(SSHSettings settings) { fTerminalSettings=settings; } public void saveSettings() { fTerminalSettings.setHost(fHostText.getText()); fTerminalSettings.setUser(fUser.getText()); fTerminalSettings.setPassword(fPassword.getText()); fTerminalSettings.setPort(fPort.getText()); fTerminalSettings.setTimeout(fTimeout.getText()); fTerminalSettings.setKeepalive(fKeepalive.getText()); } public void loadSettings() { if(fTerminalSettings!=null) { fHostText.setText(get(fTerminalSettings.getHost(),""));//$NON-NLS-1$ fTimeout.setText(get(fTerminalSettings.getTimeoutString(),"0"));//$NON-NLS-1$ fKeepalive.setText(get(fTerminalSettings.getKeepaliveString(),"300"));//$NON-NLS-1$ fUser.setText(get(fTerminalSettings.getUser(),""));//$NON-NLS-1$ fPort.setText(get(fTerminalSettings.getPortString(),"22"));//$NON-NLS-1$ fPassword.setText(get(fTerminalSettings.getPassword(),""));//$NON-NLS-1$ } } String get(String value, String def) { if(value==null || value.length()==0) return def; return value; } public boolean validateSettings() { if (fHostText.getText().trim().length() == 0) { return false; } if (fUser.getText().trim().length() == 0) { return false; } try { int p = Integer.parseInt(fPort.getText().trim()); if (p <= 0 || p > 65535) { return false; } p = Integer.parseInt(fTimeout.getText().trim()); if (p < 0) { return false; } p = Integer.parseInt(fKeepalive.getText().trim()); if (p < 0) { return false; } } catch (Exception e) { return false; } return true; } public void createControl(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(2, false); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); composite.setLayout(gridLayout); composite.setLayoutData(gridData); fHostText = createTextField(composite, "Host:"); fUser = createTextField(composite, "User:"); fPassword = createTextField(composite, "Password:",SWT.PASSWORD); fTimeout = createTextField(composite, "Timeout:"); fKeepalive = createTextField(composite, "Keep Alive:"); // fKeepalive.setToolTipText(SshMessages.KEEPALIVE_Tooltip); fPort = createTextField(composite, "Port:"); loadSettings(); } private Text createTextField(Composite composite, String labelTxt, int textOptions) { GridData gridData; // Add label Label ctlLabel = new Label(composite, SWT.RIGHT); ctlLabel.setText(labelTxt + ":"); //$NON-NLS-1$ // Add control gridData = new GridData(GridData.FILL_HORIZONTAL); Text text= new Text(composite, SWT.BORDER | textOptions); text.setLayoutData(gridData); return text; } private Text createTextField(Composite composite, String labelTxt) { return createTextField(composite, labelTxt, 0); } }