/// <summary> /// Indicates that at least one message of type levelEnum is attached to the element /// </summary> /// <param name="levelEnum"></param> /// <returns></returns> public bool HasMessage(ElementLog.LevelEnum levelEnum) { bool retVal = false; foreach (ElementLog log in Messages) { if (log.Level == levelEnum) { retVal = true; break; } } return(retVal); }
/// <summary> /// Selects the next node whose error level corresponds to the levelEnum provided /// </summary> /// <param name="current">the model element that is currently displayed</param> /// <param name="node">the node from which the selection process must begin</param> /// <param name="levelEnum"></param> /// <param name="considerThisOne">Indicates that the current node should be considered by the search</param> /// <returns>The node which corresponds to the search criteria, null otherwise</returns> private BaseTreeNode RecursivelySelectNext(IModelElement current, BaseTreeNode node, ElementLog.LevelEnum levelEnum, bool considerThisOne) { BaseTreeNode retVal = null; if (current != null) { IModelElement model = node.Model; if (considerThisOne && (node.Parent == null || node.Model != ((BaseTreeNode)node.Parent).Model)) { if (levelEnum == ElementLog.LevelEnum.Error && (model.MessagePathInfo & MessageInfoEnum.Error) != 0) { retVal = node; } else if (levelEnum == ElementLog.LevelEnum.Warning && (model.MessagePathInfo & MessageInfoEnum.Warning) != 0) { retVal = node; } else if (levelEnum == ElementLog.LevelEnum.Info && (model.MessagePathInfo & MessageInfoEnum.Info) != 0) { retVal = node; } } if (retVal == null) { if (levelEnum == ElementLog.LevelEnum.Error && (model.MessagePathInfo & MessageInfoEnum.PathToError) != 0) { retVal = InnerSelectNext(current, node, levelEnum); } else if (levelEnum == ElementLog.LevelEnum.Warning && (model.MessagePathInfo & MessageInfoEnum.PathToWarning) != 0) { retVal = InnerSelectNext(current, node, levelEnum); } else if (levelEnum == ElementLog.LevelEnum.Info && (model.MessagePathInfo & MessageInfoEnum.PathToInfo) != 0) { retVal = InnerSelectNext(current, node, levelEnum); } } } return(retVal); }
/// <summary> /// Adds a rule check message on the corresponding model element /// </summary> /// <param name="id"></param> /// <param name="level"></param> /// <param name="message"></param> public void AddRuleCheckMessage(RuleChecksEnum id, ElementLog.LevelEnum level, string message) { bool enabled = true; IRuleCheckDisabling ruleCheckDisabling = EnclosingFinder <IRuleCheckDisabling> .find(this, true); while (enabled && ruleCheckDisabling != null) { if (ruleCheckDisabling.Disabling != null) { enabled = ruleCheckDisabling.Disabling.Enabled(id); } ruleCheckDisabling = EnclosingFinder <IRuleCheckDisabling> .find(ruleCheckDisabling as IEnclosed, false); } if (enabled) { AddElementLog(new ElementLog(level, id + ": " + message)); } }
/// <summary> /// Selects the next node whose error level corresponds to the levelEnum provided /// </summary> /// <param name="levelEnum"></param> public void SelectNext(ElementLog.LevelEnum levelEnum) { BaseTreeNode node = Selected; BaseTreeNode toSelect; if (node != null) { IModelElement current = node.Model; toSelect = RecursivelySelectNext(current, node, levelEnum, false); while (toSelect == null && node != null) { while (node != null && node.NextNode == null) { node = node.Parent as BaseTreeNode; } if (node != null) { node = node.NextNode as BaseTreeNode; toSelect = RecursivelySelectNext(current, node, levelEnum, true); } } } else { toSelect = RecursivelySelectNext(null, Nodes[0] as BaseTreeNode, levelEnum, true); } if (toSelect != null) { EfsSystem.Instance.Context.SelectElement(toSelect.Model, toSelect, Context.SelectionCriteria.DoubleClick); } else { MessageBox.Show( Resources.BaseTreeView_SelectNext_No_more_element_found, Resources.BaseTreeView_SelectNext_End_of_selection); } }
/// <summary> /// Builds the subnodes if needed, then try to select the next Error/Warning/Info /// </summary> /// <param name="current">the model element that is currently displayed</param> /// <param name="node">the node from which the selection process must begin</param> /// <param name="levelEnum"></param> /// <returns>The node which corresponds to the search criteria, null otherwise</returns> private BaseTreeNode InnerSelectNext(IModelElement current, BaseTreeNode node, ElementLog.LevelEnum levelEnum) { BaseTreeNode retVal = null; if (!node.SubNodesBuilt) { node.BuildOrRefreshSubNodes(null); } foreach (BaseTreeNode subNode in node.Nodes) { retVal = RecursivelySelectNext(current, subNode, levelEnum, true); if (retVal != null) { break; } } return(retVal); }