private void Disconnect(TrayMenuMonitorItem.ShowMode mode)
        {
            switch (mode)
            {
            case TrayMenuMonitorItem.ShowMode.Core:
                Addin.Factory.ProxyCountChanged    -= Core_ProxyCountChanged;
                Addin.Factory.IsInitializedChanged -= Core_IsInitializedChanged;
                break;

            case TrayMenuMonitorItem.ShowMode.Settings:
                break;

            case TrayMenuMonitorItem.ShowMode.Console:
                Addin.Factory.Console.MessageAdded   -= Console_MessageAdded;
                Addin.Factory.Console.MessageRemoved -= Console_MessageRemoved;
                Addin.Factory.Console.MessageClear   -= Console_MessageClear;
                break;

            case TrayMenuMonitorItem.ShowMode.Diagnostics:
                break;

            case TrayMenuMonitorItem.ShowMode.Proxies:
                Addin.Factory.ProxyAdded   -= Core_ProxyAdded;
                Addin.Factory.ProxyRemoved -= Core_ProxyRemoved;
                Addin.Factory.ProxyCleared -= Core_ProxyCleared;
                break;

            case TrayMenuMonitorItem.ShowMode.Options:
                break;

            default:
                throw new IndexOutOfRangeException();
            }
        }
 private RadioButton GetHeaderButton(TrayMenuMonitorItem.ShowMode mode)
 {
     foreach (KeyValuePair <RadioButton, object> item in ShownItems)
     {
         TrayMenuMonitorItem.ShowMode itemMode = (TrayMenuMonitorItem.ShowMode)item.Key.Tag;
         if (itemMode == mode)
         {
             return(item.Key);
         }
     }
     throw new ArgumentOutOfRangeException();
 }
 /// <summary>
 /// Get Category Visibility
 /// </summary>
 /// <param name="mode">target mode</param>
 /// <returns>visibilty</returns>
 public bool GetModeVisible(TrayMenuMonitorItem.ShowMode mode)
 {
     if (InvokeRequired)
     {
         return((bool)Invoke(new Func <TrayMenuMonitorItem.ShowMode, bool>(GetModeVisible), mode));
     }
     else
     {
         RadioButton button = GetHeaderButton(mode);
         return(button.Visible);
     }
 }
 /// <summary>
 /// Set current view mode
 /// </summary>
 /// <param name="mode">target mode</param>
 public void SetCurrentMode(TrayMenuMonitorItem.ShowMode mode)
 {
     if (InvokeRequired)
     {
         Invoke(new Action <TrayMenuMonitorItem.ShowMode>(SetCurrentMode), mode);
     }
     else
     {
         RadioButton button = GetHeaderButton(mode);
         if (!button.Visible)
         {
             HeaderRadioButton_CheckedChanged(button, EventArgs.Empty);
         }
     }
 }
 /// <summary>
 /// Set View Category Visibility
 /// </summary>
 /// <param name="mode">target mode, Core is unsupported</param>
 /// <param name="visible">visibilty</param>
 public void SetModeVisible(TrayMenuMonitorItem.ShowMode mode, bool visible)
 {
     if (InvokeRequired)
     {
         Invoke(new Action <TrayMenuMonitorItem.ShowMode, bool>(SetModeVisible), mode, visible);
     }
     else
     {
         if (mode != TrayMenuMonitorItem.ShowMode.Core)
         {
             RadioButton button = GetHeaderButton(mode);
             if (button == SelectedHeaderButton)
             {
                 HeaderRadioButton_CheckedChanged(CoreRadioButton, EventArgs.Empty);
             }
             button.Visible = visible;
         }
     }
 }
 private void UpdateMode()
 {
     TrayMenuMonitorItem.ShowMode mode = (TrayMenuMonitorItem.ShowMode)SelectedHeaderButton.Tag;
     Mode = mode;
 }
 /// <summary>
 /// Get current category visibilty
 /// </summary>
 /// <param name="mode">target mode</param>
 /// <returns>visibility</returns>
 public bool GetModeVisible(TrayMenuMonitorItem.ShowMode mode)
 {
     return(_control.GetModeVisible(mode));
 }
 /// <summary>
 /// Enable or disable category visibilty. Core is ignored
 /// </summary>
 /// <param name="mode">mode to set</param>
 /// <param name="visible">visibility</param>
 public void SetModeVisible(TrayMenuMonitorItem.ShowMode mode, bool visible)
 {
     _control.SetModeVisible(mode, visible);
 }