private void ClickOnStatusInfo(object sender, EventArgs e) { if (sender is LabelItem label && label.Tag is string id) { var existing = GetLoadedStatusInfoProviders()?.ToArray(); var providers = _providers? .Where(x => (string.CompareOrdinal(id, x.GetExtensionId()) == 0) || !(existing?.Contains(x.GetExtensionId()) ?? false)) .ToArray(); if (providers?.Any() ?? false) { using (var dialog = new StatusBarItemSelectionDialog(providers) { Provider = _providers.FirstOrDefault(x => string.CompareOrdinal(id, x.GetExtensionId()) == 0) }) { var result = dialog.ShowDialog(this); if (result == DialogResult.OK) { var provider = dialog.Provider; if (provider != null) { var newId = provider.GetExtensionId(); if (string.CompareOrdinal(id, newId) != 0) { provider.Initialize(_model); label.Text = provider.CurrentStatus; label.Tag = newId; provider.UpdateInfo += UpdateStatusInfo; UpdateProviderConfig(); _statusBar.Refresh(); } } } else if (result == DialogResult.Abort) { dialog.Provider?.Dispose(); _statusBar.Items.Remove(label); UpdateProviderConfig(); _statusBar.Refresh(); } } } } }
private void _addStatusInfoProvider_Click(object sender, EventArgs e) { var existing = GetLoadedStatusInfoProviders()?.ToArray(); var providers = _providers? .Where(x => !(existing?.Contains(x.GetExtensionId()) ?? false)) .ToArray(); if (providers?.Any() ?? false) { using (var dialog = new StatusBarItemSelectionDialog(providers)) { if (dialog.ShowDialog(this) == DialogResult.OK) { var provider = dialog.Provider; if (provider != null) { AddProviderLabel(provider); UpdateProviderConfig(); } } } } }