/// <summary>Hit when the client is finished connecting and logging in.</summary>
        /// <param name="sender">The client that called it.</param>
        /// <param name="e">Event Args.</param>
        private void client_FinishConnecting(object sender, EventArgs e)
        {
            try
            {
                ImportExport client = (ImportExport)sender;
                string       eType  = e.GetType().ToString();
                eType = eType.Substring(eType.LastIndexOf('.') + 1);

                switch (eType)
                {
                case "Connection_Authenticate2CompletedEventArgs":
                {
                    //Connect finished.
                    Connection_Authenticate2CompletedEventArgs evt = (Connection_Authenticate2CompletedEventArgs)e;
                    ObjectState evtObj = (ObjectState)evt.UserState;
                    if (evt.Error == null)
                    {
                        client.System_GetProductVersionAsync(evtObj);
                    }
                    else
                    {
                        //Set error to node.
                        TreeViewItem oldNode = (TreeViewItem)this.trvProject.Items[evtObj.NodeNumber];
                        this.trvProject.Items.RemoveAt(evtObj.NodeNumber);
                        this.trvProject.Items.Insert(evtObj.NodeNumber, this.changeNodeImage(oldNode, "imgError"));
                        ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).ToolTip = new TextBlock()
                        {
                            Text = evt.Error.Message
                        };
                        ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).Items.Clear();
                        //Error, clean up.
                        removeClient(client);
                    }
                }
                break;

                case "System_GetProductVersionCompletedEventArgs":
                {
                    //Connect finished.
                    System_GetProductVersionCompletedEventArgs evt = (System_GetProductVersionCompletedEventArgs)e;
                    ObjectState evtObj = (ObjectState)evt.UserState;
                    if (evt.Error == null)
                    {
                        evtObj.ClientVersion = evt.Result;
                        client.Connection_ConnectToProjectAsync(evtObj.Project.ProjectID, evtObj);
                    }
                    else
                    {
                        //Set error to node.
                        TreeViewItem oldNode = (TreeViewItem)this.trvProject.Items[evtObj.NodeNumber];
                        this.trvProject.Items.RemoveAt(evtObj.NodeNumber);
                        this.trvProject.Items.Insert(evtObj.NodeNumber, this.changeNodeImage(oldNode, "imgError"));
                        ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).ToolTip = new TextBlock()
                        {
                            Text = evt.Error.Message
                        };
                        ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).Items.Clear();
                        //Error, clean up.
                        removeClient(client);
                    }
                }
                break;

                case "Connection_ConnectToProjectCompletedEventArgs":
                {
                    //Connect finished.
                    Connection_ConnectToProjectCompletedEventArgs evt = (Connection_ConnectToProjectCompletedEventArgs)e;
                    ObjectState evtObj = (ObjectState)evt.UserState;
                    if (evt.Error == null)
                    {
                        evtObj.curSearchIsMine = true;
                        RemoteFilter[] filters = GenerateFilter(evtObj.Project.UserID, this.btnShowClosed.IsChecked.Value, "IN");
                        RemoteSort     sort    = GenerateSort();
                        client.Incident_RetrieveAsync(filters, sort, 1, 9999999, evtObj);
                    }
                    else
                    {
                        //Set error to node.
                        TreeViewItem oldNode = (TreeViewItem)this.trvProject.Items[evtObj.NodeNumber];
                        this.trvProject.Items.RemoveAt(evtObj.NodeNumber);
                        this.trvProject.Items.Insert(evtObj.NodeNumber, this.changeNodeImage(oldNode, "imgError"));
                        ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).ToolTip = new TextBlock()
                        {
                            Text = evt.Error.Message
                        };
                        ((TreeViewItem)this.trvProject.Items[evtObj.NodeNumber]).Items.Clear();
                        //Error, clean up.
                        removeClient(client);
                    }
                }
                break;
                }
            }
            catch (Exception ex)
            {
                Connect.logEventMessage("wpfProjectTree::client_FinishConnecting", ex, System.Diagnostics.EventLogEntryType.Error);
            }
        }