private void Core_ProxyAdded(Core sender, IEnumerable <ICOMObject> ownerPath, ICOMObject comObject) { Action method = delegate { try { TreeNode node = FindPath(ownerPath); if (null != node) { TreeNode newNode = node.Nodes.Add(ComObjectName(comObject)); newNode.Tag = comObject.GetHashCode(); if (ViewOptions.HighlightNewNodes) { newNode.BackColor = Color.LightGreen; HighlightNodes.Add(newNode, DateTime.Now); } if (ViewOptions.AutoExpandNodes) { HierarchicalGrid.ExpandAll(); } } } catch (Exception exception) { ShowOverlayError(exception); } }; TryBeginInvoke(method); }
private void InitializeView() { if (InvokeRequired) { Invoke(new Action(InitializeView)); } else { Core factory = Factory; if (null != factory) { IEnumerable <ICOMObject> comObjects = factory.GetRootInstances(); foreach (ICOMObject comObject in comObjects) { TreeNode node = View.Nodes.Add(ComObjectName(comObject)); node.Tag = comObject.GetHashCode(); ICOMObject[] childs = ToArray(comObject.ChildObjects); TreeNode[] childNodes = new TreeNode[childs.Length]; for (int i = 0; i < childs.Length; i++) { ICOMObject subObj = childs[i]; childNodes[i] = new TreeNode(ComObjectName(subObj)); childNodes[i].Tag = subObj.GetHashCode(); EnumerateProxies(childNodes[i], ToArray(subObj.ChildObjects)); } if (childNodes.Length > 0) { node.Nodes.AddRange(childNodes); } } } } }
private void Core_ProxyAdded(Core sender, IEnumerable <ICOMObject> ownerPath, ICOMObject comObject) { void ProxyAddedAction() { try { TreeNode node = FindPath(ownerPath); if (null != node) { TreeNode newNode = node.Nodes.Add(ComObjectName(comObject)); newNode.Tag = comObject.GetHashCode(); if (HighlightNewProxies) { newNode.BackColor = _highlightColor; HighlightNodes.Add(newNode, DateTime.Now); } if (AutoExpandNodes) { View.ExpandAll(); } } else { TreeNode newNode = View.Nodes.Add(ComObjectName(comObject)); newNode.Tag = comObject.GetHashCode(); if (HighlightNewProxies) { newNode.BackColor = _highlightColor; HighlightNodes.Add(newNode, DateTime.Now); } if (AutoExpandNodes) { View.ExpandAll(); } } } catch (Exception exception) { ShowOverlayError(exception); } } TryBeginInvoke(ProxyAddedAction); }
private void Core_ProxyRemoved(Core sender, IEnumerable <ICOMObject> ownerPath, ICOMObject comObject) { Action method = delegate { try { int objectHashCode = comObject.GetHashCode(); TreeNode node = FindPath(ownerPath); if (null != node) { TreeNode targetNode = null; foreach (TreeNode item in node.Nodes) { if (null == item.Tag) { continue; } int itemHashCode = (int)item.Tag; if (itemHashCode == objectHashCode) { targetNode = item; break; } } if (null != targetNode) { HighlightNodes.Remove(targetNode); node.Nodes.Remove(targetNode); } } } catch (Exception exception) { ShowOverlayError(exception); } }; TryBeginInvoke(method); }
private void ShowDataSource(object dataSource) { if (dataSource is TrayMenuMonitorItem.Options) { EnumeratorGrid.Visible = false; SingleGrid.Visible = false; HierarchicalGrid.Visible = false; OptionsGrid.Visible = true; } else if (dataSource is IEnumerable <ICOMObject> ) { EnumeratorGrid.Visible = false; SingleGrid.Visible = false; HierarchicalGrid.Visible = true; OptionsGrid.Visible = false; IEnumerable <ICOMObject> comObjects = dataSource as IEnumerable <ICOMObject>; HierarchicalGrid.Nodes.Clear(); foreach (ICOMObject comObject in comObjects) { TreeNode node = HierarchicalGrid.Nodes.Add(ComObjectName(comObject)); node.Tag = comObject.GetHashCode(); ICOMObject[] childs = comObject.ChildObjects.ToArray(); TreeNode[] childNodes = new TreeNode[childs.Length]; for (int i = 0; i < childs.Length; i++) { ICOMObject subObj = childs[i]; childNodes[i] = new TreeNode(ComObjectName(subObj)); childNodes[i].Tag = subObj.GetHashCode(); EnumerateProxies(childNodes[i], subObj.ChildObjects.ToArray()); } if (childNodes.Length > 0) { node.Nodes.AddRange(childNodes); } } if (ViewOptions.AutoExpandNodes) { HierarchicalGrid.ExpandAll(); } } else if (dataSource is IEnumerable) { EnumeratorGrid.Visible = true; SingleGrid.Visible = false; HierarchicalGrid.Visible = false; OptionsGrid.Visible = false; EnumeratorGrid.DataSource = dataSource; switch (EnumeratorGrid.Columns.Count) { case 1: EnumeratorGrid.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet; EnumeratorGrid.Columns[0].Width = EnumeratorGrid.Width - 32; break; case 2: EnumeratorGrid.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet; EnumeratorGrid.Columns[0].Width = (EnumeratorGrid.Width / 2) - 16; EnumeratorGrid.Columns[1].Width = (EnumeratorGrid.Width / 2) - 16; break; case 3: EnumeratorGrid.Columns[0].Width = FirstColumnOptimumWidht(); EnumeratorGrid.Columns[1].Visible = ViewOptions.ShowConsoleTimeColumn; EnumeratorGrid.Columns[2].Visible = ViewOptions.ShowConsoleKindColumn; if (!EnumeratorGrid.Columns[1].Visible || !EnumeratorGrid.Columns[2].Visible) { EnumeratorGrid.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; } else { EnumeratorGrid.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.NotSet; } break; case 0: break; default: break; } } else { SingleGrid.SelectedObject = dataSource; EnumeratorGrid.Visible = false; SingleGrid.Visible = true; HierarchicalGrid.Visible = false; OptionsGrid.Visible = false; } }