private void AddonButtonClick(object sender, EventArgs e)
        {
            Logger.LogTrace("MainForm.AddonButtonClick called ...");

            NavigationAddon addon = null;

            OPMAddonMenuItem button = sender as OPMAddonMenuItem;

            if (button != null)
            {
                addon = button.Tag as NavigationAddon;
                if (addon == null)
                {
                    return;
                }

                if (!string.IsNullOrEmpty(_launchPath))
                {
                    addon.AddonPanel.Tag = _launchPath;
                    _launchPath          = string.Empty;
                }

                if (addon != null)
                {
                    pnlNavContainer.SuspendLayout();

                    addon.AddonPanel.Dock       = DockStyle.Fill;
                    addon.AddonPanel.Visible    = true;
                    addon.AddonPanel.PanelTitle = button.Text.Replace("\r", "").Replace("\n", "");

                    addon.AddonPanel.NavigationAction -=
                        new NavBaseCtl.NavigationActionEventHandler(OnNavigationAction);
                    addon.AddonPanel.NavigationAction +=
                        new NavBaseCtl.NavigationActionEventHandler(OnNavigationAction);

                    pnlNavContainer.Controls.Clear();
                    pnlNavContainer.Controls.Add(addon.AddonPanel);

                    pnlNavContainer.ResumeLayout();

                    foreach (OPMToolStripMenuItem tsButton in msMain.Items)
                    {
                        if (tsButton is OPMAddonMenuItem)
                        {
                            if (button.Tag != tsButton.Tag)
                            {
                                NavigationAddon na = tsButton.Tag as NavigationAddon;
                                if (na != null && na.AddonPanel != null)
                                {
                                    na.AddonPanel.OnActiveStateChanged(false);
                                }

                                tsButton.Checked = false;
                            }
                        }
                    }

                    addon.AddonPanel.OnActiveStateChanged(true);

                    ThemeManager.SetDoubleBuffer(addon.AddonPanel);

                    //button.Image = null;
                    button.Checked = true;
                    //button.BackColor = Color.FromArgb(150, ThemeManager.GradientNormalColor2);
                    AddonAppConfig.LastNavAddon = button.Name;

                    SetTitle($"{Translator.TranslatedAppName} - {button.Text}");
                }
            }

            Logger.LogTrace("MainForm.AddonButtonClick done.");
        }
        /// <summary>
        /// Gets all the navigation addons and displays them in the
        /// navigation bar.
        /// </summary>
        private bool GetNavigationAddons()
        {
            Logger.LogTrace("MainForm.GetNavigationAddons called ...");

            AddonsCore.Instance.PreviewEnded += new PreviewEndedEventHandler(Instance_PreviewEnded);

            if (AddonsCore.Instance.NavAddonsLoader == null ||
                AddonsCore.Instance.NavAddonsLoader.Addons == null ||
                AddonsCore.Instance.NavAddonsLoader.Addons.Count < 1)
            {
                return(false);
            }

            IDictionaryEnumerator enumerator =
                AddonsCore.Instance.NavAddonsLoader.Addons.GetEnumerator();

            Translator.TranslateToolStrip(msMain, DesignMode);

            OPMAddonMenuItem catalogButton       = null;
            OPMAddonMenuItem previousAddonButton = null;

            while (enumerator.MoveNext())
            {
                NavigationAddon addon = enumerator.Value as NavigationAddon;

                if (addon != null)
                {
                    string           name   = Translator.Translate(addon.Name);
                    OPMAddonMenuItem button = new OPMAddonMenuItem(name.Replace("*", ""));

                    button.Name   = addon.AddonTypeName;
                    button.Click += new EventHandler(AddonButtonClick);
                    //button.AutoSize = true;

                    NavBaseCtl panel = addon.AddonPanel;
                    button.Image = panel.SmallAddonImage;
                    button.Tag   = addon;
                    button.ImageTransparentColor = Color.Magenta;

                    msMain.Items.Add(button);

                    if (addon.AddonTypeName == AddonAppConfig.LastNavAddon)
                    {
                        previousAddonButton = button;
                    }
                    if (addon.AddonTypeName.ToLowerInvariant().Contains("catalog"))
                    {
                        catalogButton = button;
                    }
                }
            }

            msMain.ResumeLayout();

            if (!string.IsNullOrEmpty(_launchPath))
            {
                // Need to figure out which navigation addon must be used to open this file
                if (msMain.Items.Count >= 1)
                {
                    string ext = PathUtils.GetExtension(_launchPath);

                    foreach (OPMToolStripMenuItem button in msMain.Items)
                    {
                        NavigationAddon addon = button.Tag as NavigationAddon;
                        if (addon != null &&
                            addon.AddonPanel != null &&
                            addon.AddonPanel.HandledFileTypes != null &&
                            addon.AddonPanel.HandledFileTypes.Count > 0 &&
                            addon.AddonPanel.HandledFileTypes.Contains(ext))
                        {
                            AddonButtonClick(button, null);
                            return(true);
                        }
                    }

                    ErrorDispatcher.DispatchError("ProTONE Media Library cannot handle this file: " + _launchPath, false);
                    Process.GetCurrentProcess().Kill();
                    return(true);
                }
            }

            if (previousAddonButton != null)
            {
                AddonButtonClick(previousAddonButton, null);
            }
            else if (msMain.Items.Count >= 1)
            {
                foreach (OPMToolStripMenuItem button in msMain.Items)
                {
                    if (button is OPMAddonMenuItem && button.Tag is NavigationAddon)
                    {
                        AddonButtonClick(button, null);
                        break;
                    }
                }
            }

            Logger.LogTrace("MainForm.GetNavigationAddons done.");

            return(true);
        }