1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-19 06:05:56 +02:00

[175106] force a synchronous connect before launchign the shell

This commit is contained in:
David McKnight 2007-02-22 14:11:39 +00:00
parent e3b1ff83ff
commit cc9e4f6621

View file

@ -16,6 +16,7 @@
package org.eclipse.rse.shells.ui.actions; package org.eclipse.rse.shells.ui.actions;
import java.lang.reflect.InvocationTargetException;
import java.util.Iterator; import java.util.Iterator;
import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IAdaptable;
@ -26,7 +27,9 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.window.Window; import org.eclipse.jface.window.Window;
import org.eclipse.rse.core.filters.ISystemFilterReference; import org.eclipse.rse.core.filters.ISystemFilterReference;
import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.model.IHost;
import org.eclipse.rse.core.model.ISystemRegistry;
import org.eclipse.rse.core.subsystems.ISubSystem; import org.eclipse.rse.core.subsystems.ISubSystem;
import org.eclipse.rse.core.subsystems.SubSystem;
import org.eclipse.rse.services.clientserver.PathUtility; import org.eclipse.rse.services.clientserver.PathUtility;
import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.services.clientserver.messages.SystemMessage;
import org.eclipse.rse.shells.ui.RemoteCommandHelpers; import org.eclipse.rse.shells.ui.RemoteCommandHelpers;
@ -41,6 +44,8 @@ import org.eclipse.rse.ui.ISystemMessages;
import org.eclipse.rse.ui.RSEUIPlugin; import org.eclipse.rse.ui.RSEUIPlugin;
import org.eclipse.rse.ui.actions.SystemBaseAction; import org.eclipse.rse.ui.actions.SystemBaseAction;
import org.eclipse.rse.ui.dialogs.SystemPromptDialog; import org.eclipse.rse.ui.dialogs.SystemPromptDialog;
import org.eclipse.rse.ui.operations.SystemFetchOperation.PromptForPassword;
import org.eclipse.rse.ui.operations.SystemFetchOperation.UpdateRegistry;
import org.eclipse.rse.ui.view.ISystemViewElementAdapter; import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyEvent;
@ -51,6 +56,7 @@ import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
@ -61,6 +67,43 @@ import org.eclipse.swt.widgets.Shell;
*/ */
public class SystemCommandAction extends SystemBaseAction public class SystemCommandAction extends SystemBaseAction
{ {
public class PromptForPassword implements Runnable
{
public SubSystem _ss;
public PromptForPassword(SubSystem ss)
{
_ss = ss;
}
public void run()
{
try
{
_ss.promptForPassword();
}
catch (Exception e)
{
}
}
}
public class UpdateRegistry implements Runnable
{
private SubSystem _ss;
public UpdateRegistry(SubSystem ss)
{
_ss = ss;
}
public void run()
{
ISystemRegistry registry = RSEUIPlugin.getTheSystemRegistry();
registry.connectedStatusChange(_ss, true, false);
}
}
private IRemoteFile _selected; private IRemoteFile _selected;
private ISystemFilterReference _selectedFilterRef; private ISystemFilterReference _selectedFilterRef;
@ -68,6 +111,7 @@ public class SystemCommandAction extends SystemBaseAction
private boolean _isShell; private boolean _isShell;
private IRemoteCmdSubSystem _cmdSubSystem; private IRemoteCmdSubSystem _cmdSubSystem;
/** /**
* The command dialog used when running a command. * The command dialog used when running a command.
@ -492,7 +536,7 @@ public class SystemCommandAction extends SystemBaseAction
} }
else else
{ {
cmdSubSystem.connect(); connect(new NullProgressMonitor(), (SubSystem)cmdSubSystem);
if (cmdSubSystem.isConnected()) if (cmdSubSystem.isConnected())
{ {
SystemCommandsUI commandsUI = SystemCommandsUI.getInstance(); SystemCommandsUI commandsUI = SystemCommandsUI.getInstance();
@ -512,6 +556,29 @@ public class SystemCommandAction extends SystemBaseAction
} }
} }
private boolean connect(IProgressMonitor monitor, SubSystem ss)
{
if (!ss.isConnected())
{
Display dis = Display.getDefault();
dis.syncExec(new PromptForPassword(ss));
try
{
ss.getConnectorService().connect(monitor);
}
catch (InvocationTargetException exc)
{
}
catch (Exception e)
{
}
dis.asyncExec(new UpdateRegistry(ss));
}
return true;
}
/** /**
* shows the command in the remote shell view * shows the command in the remote shell view