/***************************************************************************** * Copyright (c) 2006, 2007 g-Eclipse Consortium * 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 * * Initial development of the original code was made for the * g-Eclipse project founded by European Union * project number: FP6-IST-034327 http://www.geclipse.eu/ * * Contributors: * Thomas Koeckerbauer GUP, JKU - initial API and implementation *****************************************************************************/ package eu.geclipse.terminal.ssh.internal; import java.net.URL; import java.util.List; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.wizard.Wizard; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import eu.geclipse.core.portforward.IForward; import eu.geclipse.terminal.ITerminalView; import eu.geclipse.ui.wizards.portforward.PortForwardOptionsWizardPage; import eu.geclipse.ui.wizards.wizardselection.IInitializableWizard; /** * A "new terminal wizard" for creating SSH terminal sessions. */ public class SSHWizard extends Wizard implements IInitializableWizard { SSHConnectionWizardPage mainPage; ITerminalView termView; PortForwardOptionsWizardPage portForwardPage; private String preSelectedHostname; public SSHWizard() { // empty constructor } public SSHWizard( final String preSelectedHostname ) { this.preSelectedHostname = preSelectedHostname; try { this.termView = (ITerminalView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("eu.geclipse.terminal.views.TerminalView"); } catch( PartInitException exception ) { Activator.logException( exception ); } } @Override public boolean performFinish() { final SSHConnectionInfo info = this.mainPage.getConnectionInfo(); final List<IForward> forwards = SSHWizard.this.portForwardPage.getForwards(); Job job = new Job(Messages.getString("SSHWizard.openingSSHTerminal")){ //$NON-NLS-1$ @Override protected IStatus run( final IProgressMonitor monitor ) { monitor.beginTask( Messages.getString("SSHWizard.openingSSHTerminal"), 1 ); //$NON-NLS-1$ monitor.subTask( Messages.getString("SSHWizard.connecting") ); //$NON-NLS-1$ SshShell sshShell = new SshShell(); sshShell.createTerminal( SSHWizard.this.termView, info, forwards); return Status.OK_STATUS; } }; job.setUser( true ); job.schedule(); return true; } @Override public void addPages() { this.mainPage = new SSHConnectionWizardPage( Messages.getString( "SSHWizard.ssh" ) ); //$NON-NLS-1$ this.mainPage.setPreselectedHostname( this.preSelectedHostname ); this.portForwardPage = new PortForwardOptionsWizardPage( Messages.getString( "SSHWizard.ssh" ) ); //$NON-NLS-1$ addPage( this.mainPage ); addPage( this.portForwardPage ); } @Override public String getWindowTitle() { return Messages.getString( "SSHWizard.ssh" ); //$NON-NLS-1$ } @Override public String toString() { return Messages.getString( "SSHWizard.ssh" ); //$NON-NLS-1$ } public boolean init( final Object data ) { boolean result = false; if ( data instanceof ITerminalView ) { this.termView = ( ITerminalView ) data; URL imgUrl = Activator.getDefault().getBundle().getEntry( "icons/wizban/newconn_wiz.gif" ); //$NON-NLS-1$ setDefaultPageImageDescriptor( ImageDescriptor.createFromURL( imgUrl ) ); result = true; } return result; } }