/// <summary> /// Проверяет, можно ли добавить группу дисплеев на область мониторинга (разрешить drag-n-drop) /// </summary> /// <param name="node">Нода группы дисплеев</param> /// <returns>true, если можно</returns> public bool canAddGroup(DisplayGroupNode node) { foreach(String name in node.DisplayGroup.DisplayNameList) if(!m_Viewers.ContainsKey(name)) return true; return false; }
public List<Interfaces.IDisplayViewer> addGroup(DisplayGroupNode node) { List<Interfaces.IDisplayViewer> retValue = new List<IDisplayViewer>(); List<Display> displays = DisplayController.Instance.ForceCheckGroup(node); foreach (Display disp in displays) { if (!m_Viewers.ContainsKey(disp.Type.Name)) { DisplayViewer viewer = new DisplayViewer(disp) { Pos = getPosition(disp) }; m_Viewers.Add(disp.Type.Name, viewer); retValue.Add(viewer); } } PresentationController.Instance.NotifyMonitorListChanged(from pair in m_Viewers select pair.Value.Display); return retValue; }
void Instance_OnDisplayGroupCreated(DisplayGroup newGroup) { TreeNodeAdv node = new DisplayGroupNode(newGroup); displayTree.Nodes.Add(node); displayTree.BeginEdit(node); }
/// <summary> /// Обработчик включения галочки для группы извне. Оповещает свой контол. Возвращает список дисплеев в группе /// </summary> /// <param name="node">Нода группы</param> /// <returns>Список дисплеев в группе</returns> public List<Display> ForceCheckGroup(DisplayGroupNode node) { List<Display> displays = this.DisplayByGroup(node.DisplayGroup); if (OnDisplayForceChecked != null) foreach (Display disp in displays) OnDisplayForceChecked(disp, true); return displays; }
private void LoadDisplays(bool rememberLastDisplay) { displayTree.Nodes.Clear(); DisplayNode d1 = null; DisplayGroupNode d2 = null; TreeNodeAdv tNode = displayTree.SelectedNode; // Выбираем дисплеи в том порядке, в котором их отсортировал пользователь var query = from d in DisplayController.Instance.UngrouppedDisplays() join ord in PresentationController.Instance.Presentation.DisplayPositionList on d.Name equals ord.Key into d_ord from sub in d_ord.DefaultIfEmpty() orderby (sub.Key == null ? -1 : sub.Value) select d; foreach (Display disp in query/*DisplayController.Instance.UngrouppedDisplays()*/) { DisplayNode node = new DisplayNode(disp); //if (DisplayController.IsPlayerMode) bool? state = DisplayController.Instance.DisplayStates[disp]; node.TextColor = state.HasValue ? (state.Value ? Color.Green : Color.Red) : Color.Black; //node.TextColor = DisplayController.Instance.DisplayStates[disp] ? Color.Black : Color.Red; if (d1 == null) { d1 = node; displayTree.Nodes.Add(d1); } else displayTree.Nodes.Add(node); } foreach (var dd in DisplayController.Instance.GrouppedDisplays()) { DisplayGroupNode groupNode = new DisplayGroupNode(dd.Key); if (d2 == null) d2 = groupNode; foreach (Display display in dd.Value) { DisplayNode node = new DisplayNode(display); //if (DisplayController.IsPlayerMode) bool? state = DisplayController.Instance.DisplayStates[display]; node.TextColor = state.HasValue ? (state.Value ? Color.Green : Color.Red) : Color.Black; //node.TextColor = DisplayController.Instance.DisplayStates[display] ? Color.Black : Color.Red; groupNode.Nodes.Add(node); } displayTree.Nodes.Add(groupNode); } if (d1 != null && !rememberLastDisplay) { DisplayController.Instance.SelectDisplay(d1.Display); this.displayTree.SelectedNode = d1; return; } if (d2 != null && !rememberLastDisplay) { DisplayController.Instance.SelectDisplayGroup(d2.DisplayGroup); this.displayTree.SelectedNode = d2; } if (rememberLastDisplay && tNode != null) { if (displayTree.Nodes.Contains(tNode)) displayTree.SelectedNode = tNode; } this.displayTree.SelectedNodeForeColor = this.displayTree.SelectedNode.TextColor; this.displayTree.InactiveSelectedNodeForeColor = this.displayTree.SelectedNode.TextColor; }