public static ctlPuttyPanel FromPersistString(String persistString)
{
ctlPuttyPanel panel = null;
if (persistString.StartsWith(typeof(ctlPuttyPanel).FullName))
{
int idx = persistString.IndexOf("?");
if (idx != -1)
{
NameValueCollection data = HttpUtility.ParseQueryString(persistString.Substring(idx + 1));
string sessionId = data["SessionId"] ?? data["SessionName"];
string tabName = data["TabName"];
Log.InfoFormat("Restoring putty session, sessionId={0}, tabName={1}", sessionId, tabName);
SessionData session = SuperPuTTY.GetSessionById(sessionId);
if (session != null)
{
panel = ctlPuttyPanel.NewPanel(session);
if (panel == null)
{
Log.WarnFormat("Could not restore putty session, sessionId={0}", sessionId);
}
else
{
panel.Icon = SuperPuTTY.GetIconForSession(session);
panel.Text = tabName;
panel.TextOverride = tabName;
}
}
else
{
Log.WarnFormat("Session not found, sessionId={0}", sessionId);
}
}
else
{
idx = persistString.IndexOf(":");
if (idx != -1)
{
string sessionId = persistString.Substring(idx + 1);
Log.InfoFormat("Restoring putty session, sessionId={0}", sessionId);
SessionData session = SuperPuTTY.GetSessionById(sessionId);
if (session != null)
{
panel = ctlPuttyPanel.NewPanel(session);
}
else
{
Log.WarnFormat("Session not found, sessionId={0}", sessionId);
}
}
}
}
return panel;
}