internal void SelectTab(IceTabPage page) { if (CurrentTab != null && CurrentTab.TextWindow != null) CurrentTab.TextWindow.resetUnreadMarker(); for (int i = 0; i < _TabPages.Count; i++) { if (_TabPages[i] == page) { SelectedIndex = i; this.Invalidate(); if (this.SelectedIndexChanged != null) { TabEventArgs e = new TabEventArgs(); e.IsHandled = true; SelectedIndexChanged(this, e); } break; } } }
/// <summary> /// A New Tab was Selected for the Main Tab Control /// Update the Input Panel with the Current Connection /// Change the Status text for the Status Bar /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void TabSelectedIndexChanged(object sender, TabEventArgs e) { this.Invoke((MethodInvoker)delegate() { if (mainTabControl.CurrentTab.WindowStyle != IceTabPage.WindowType.Console) { //System.Diagnostics.Debug.WriteLine("TabSelected:" + mainTabControl.CurrentTab.TabCaption); if (mainTabControl.CurrentTab != null) { IceTabPage t = mainTabControl.CurrentTab; if (t.TextWindow != null) t.TextWindow.resetUnreadMarker(); nickList.RefreshList(t); inputPanel.CurrentConnection = t.Connection; string network = ""; if (CurrentWindowType != IceTabPage.WindowType.Debug && CurrentWindowType != IceTabPage.WindowType.DCCFile && CurrentWindowType != IceTabPage.WindowType.Window && t.Connection.ServerSetting.NetworkName.Length > 0) network = " (" + t.Connection.ServerSetting.NetworkName + ")"; if (CurrentWindowType == IceTabPage.WindowType.Channel) StatusText(t.Connection.ServerSetting.NickName + " in channel " + t.TabCaption + " [" + t.ChannelModes + "] {" + t.Connection.ServerSetting.RealServerName + "}" + network); else if (CurrentWindowType == IceTabPage.WindowType.Query) StatusText(t.Connection.ServerSetting.NickName + " in private chat with " + t.TabCaption + " {" + t.Connection.ServerSetting.RealServerName + "}" + network); else if (CurrentWindowType == IceTabPage.WindowType.DCCChat) StatusText(t.Connection.ServerSetting.NickName + " in DCC chat with " + t.TabCaption + " {" + t.Connection.ServerSetting.RealServerName + "}" + network); else if (CurrentWindowType == IceTabPage.WindowType.ChannelList) StatusText(t.Connection.ServerSetting.NickName + " in Channel List for {" + t.Connection.ServerSetting.RealServerName + "}" + network); CurrentWindow.LastMessageType = ServerMessageType.Default; t = null; if (!e.IsHandled) serverTree.SelectTab(mainTabControl.CurrentTab, false); } } else { //make sure the 1st tab is not selected nickList.RefreshList(); nickList.Header = iceChatLanguage.consoleTabTitle; if (mainTabControl.GetTabPage("Console").ConsoleTab.SelectedIndex != 0) { inputPanel.CurrentConnection = mainTabControl.GetTabPage("Console").CurrentConnection; string network = ""; if (inputPanel.CurrentConnection.ServerSetting.NetworkName.Length > 0) network = " (" + inputPanel.CurrentConnection.ServerSetting.NetworkName + ")"; if (inputPanel.CurrentConnection.IsConnected) { if (inputPanel.CurrentConnection.ServerSetting.UseBNC) StatusText(inputPanel.CurrentConnection.ServerSetting.NickName + " connected to " + inputPanel.CurrentConnection.ServerSetting.BNCIP); else StatusText(inputPanel.CurrentConnection.ServerSetting.NickName + " connected to " + inputPanel.CurrentConnection.ServerSetting.RealServerName + network); } else { if (inputPanel.CurrentConnection.ServerSetting.UseBNC) StatusText(inputPanel.CurrentConnection.ServerSetting.NickName + " disconnected from " + inputPanel.CurrentConnection.ServerSetting.BNCIP); else StatusText(inputPanel.CurrentConnection.ServerSetting.NickName + " disconnected from " + inputPanel.CurrentConnection.ServerSetting.ServerName + network); } if (!e.IsHandled) serverTree.SelectTab(mainTabControl.GetTabPage("Console").CurrentConnection.ServerSetting, false); } else { inputPanel.CurrentConnection = null; StatusText("Welcome to " + ProgramID + " " + VersionID); } } inputPanel.FocusTextBox(); }); }