private void ShowAgentViewer() { if (lvwAgents.SelectedItems.Count == 1 && lvwAgents.SelectedItems[0].Tag is INotifier) { INotifier currentNotifier = (INotifier)lvwAgents.SelectedItems[0].Tag; INotivierViewer currentNotivierViewer = (from v in agentDetailViews where v.SelectedNotifier == currentNotifier select v).FirstOrDefault(); if (currentNotivierViewer != null && !currentNotivierViewer.IsViewerStillVisible()) { agentDetailViews.Remove(currentNotivierViewer); currentNotivierViewer = null; } if (currentNotivierViewer == null) { WinFormsUINotifierBase agentUI = RegisteredAgentUIMapper.GetNotifierUIClass(currentNotifier); if (agentUI != null && agentUI.HasDetailView) { currentNotivierViewer = agentUI.Viewer; currentNotivierViewer.SelectedNotifier = currentNotifier; agentDetailViews.Add(currentNotivierViewer); } } if (currentNotivierViewer != null) { currentNotivierViewer.ShowNotifierViewer(); } ; } }
public void RefreshNotifierDetails() { if (SelectedNotifierHost != null) { txtName.Text = SelectedNotifierHost.Name; Text = "Notifier Agent List Viewer - " + SelectedNotifierHost.Name; lvwAgents.Items.Clear(); foreach (INotifier n in SelectedNotifierHost.NotifierAgents) { ListViewItem lvi = new ListViewItem(n.Name); lvi.SubItems.Add(n.AgentClassDisplayName); lvi.Tag = n; try { WinFormsUINotifierBase agentUI = RegisteredAgentUIMapper.GetNotifierUIClass(n); if (agentUI == null) { lvi.ForeColor = SystemColors.GrayText; lvi.ImageIndex = 0; //lvi.Tag = new NotifierContainer() { Notifier = n, AgentUI = null }; } else if (!agentUI.HasDetailView) { lvi.ForeColor = SystemColors.GrayText; lvi.ImageIndex = 0; //lvi.Tag = new NotifierContainer() { Notifier = n, AgentUI = agentUI }; } else { lvi.ForeColor = SystemColors.ControlText; lvi.ImageIndex = 1; //lvi.Tag = new NotifierContainer() { Notifier = n, AgentUI = agentUI }; } } catch { lvi.ForeColor = SystemColors.GrayText; lvi.ImageIndex = 0; //lvi.Tag = new NotifierContainer() { Notifier = n, AgentUI = null }; } lvwAgents.Items.Add(lvi); } } }
private void EditAgent() { //Call local (in this assembly) utility that match editor type for agent class. // This assembly will search through all assemblies in local directory for classes that inherits IWinFormsUI // each IWinFormsUI class must provide the name of the IAgent class it can edit // thus each IAgent class name must be unique... // each IWinFormsUI class must have a method to edit the IAgent class. EditAgent(xmlConfigString) //If no default editor can be found show raw xml editor... try { if (lvwEntries.SelectedItems.Count == 1) { INotifier agent = (INotifier)lvwEntries.SelectedItems[0].Tag; WinFormsUINotifierBase agentEditor = (WinFormsUINotifierBase)RegisteredAgentUIMapper.GetUIClass(agent); if (agentEditor != null) { IAgentConfigEntryEditWindow detailEditor = agentEditor.DetailEditor; detailEditor.SelectedEntry = agent.AgentConfig; if (detailEditor.ShowEditEntry() == QuickMonDialogResult.Ok) { agent.AgentConfig = detailEditor.SelectedEntry; lvwEntries.SelectedItems[0].Tag = agent;; lvwEntries.SelectedItems[0].SubItems[2].Text = detailEditor.SelectedEntry.ConfigSummary; } } else { MessageBox.Show("There is no registered UI editor for this type of agent yet! Please contact the creator of the agent type.", "Agent type", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } CheckOkEnabled(); }