protected override void ContextClicked() { if (SelectionContainsRuleContainer) { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("Run Analyze Rule"), false, RunAllSelectedRules); menu.AddItem(new GUIContent("Clear Analyze Results"), false, ClearAllSelectedRules); if (SelectionContainsFixableRule && SelectionContainsErrors) { menu.AddItem(new GUIContent("Fix Analyze Rule"), false, FixAllSelectedRules); } else { menu.AddDisabledItem(new GUIContent("Fix Analyze Rule")); } IList <int> selectedIds = GetSelection(); if (selectedIds.Count == 1) { AnalyzeRuleContainerTreeViewItem analyzeRuleContainer = FindItem(selectedIds[0], rootItem) as AnalyzeRuleContainerTreeViewItem; if (analyzeRuleContainer != null) { foreach (var customMenuItem in analyzeRuleContainer.analyzeRule.GetCustomContextMenuItems()) { if (customMenuItem.MenuEnabled) { menu.AddItem(new GUIContent(customMenuItem.MenuName), customMenuItem.ToggledOn, () => customMenuItem.MenuAction()); } else { menu.AddDisabledItem(new GUIContent(customMenuItem.MenuName)); } } } } menu.ShowAsContext(); Repaint(); } else { var selectedIds = this.GetSelection(); List <AnalyzeResultsTreeViewItem> items = new List <AnalyzeResultsTreeViewItem>(); foreach (int id in selectedIds) { var item = FindItem(id, rootItem) as AnalyzeResultsTreeViewItem; if (item != null) { items.Add(item); } } if (items.Count > 0) { AnalyzeResultsTreeViewItem.ContextClicked(items); } } }
protected override TreeViewItem BuildRoot() { m_CurrentDepth = 0; var root = new TreeViewItem(-1, -1); root.children = new List <TreeViewItem>(); string baseName = "Analyze Rules"; string fixableRules = "Fixable Rules"; string unfixableRules = "Unfixable Rules"; AnalyzeRuleContainerTreeViewItem baseViewItem = new AnalyzeRuleContainerTreeViewItem(baseName.GetHashCode(), m_CurrentDepth, baseName); baseViewItem.children = new List <TreeViewItem>(); baseViewItem.analyzeRule.CanFix = true; root.AddChild(baseViewItem); m_CurrentDepth++; var fixable = new AnalyzeRuleContainerTreeViewItem(fixableRules.GetHashCode(), m_CurrentDepth, fixableRules); var unfixable = new AnalyzeRuleContainerTreeViewItem(unfixableRules.GetHashCode(), m_CurrentDepth, unfixableRules); fixable.analyzeRule.CanFix = true; unfixable.analyzeRule.CanFix = false; baseViewItem.AddChild(fixable); baseViewItem.AddChild(unfixable); m_CurrentDepth++; for (int i = 0; i < AnalyzeRuleGUI.Rules.Count; i++) { AnalyzeRuleContainerTreeViewItem ruleContainer = new AnalyzeRuleContainerTreeViewItem( AnalyzeRuleGUI.Rules[i].ruleName.GetHashCode(), m_CurrentDepth, AnalyzeRuleGUI.Rules[i]); if (ruleContainer.analyzeRule.CanFix) { fixable.AddChild(ruleContainer); } else { unfixable.AddChild(ruleContainer); } } m_CurrentDepth++; int index = 0; var ruleContainers = GatherAllInheritRuleContainers(baseViewItem); foreach (var ruleContainer in ruleContainers) { if (ruleContainer != null && resultData.Data.ContainsKey(ruleContainer.analyzeRule.ruleName)) { EditorUtility.DisplayProgressBar("Calculating Results for " + ruleContainer.displayName, "", (index / ruleContainers.Count) % 100); BuildResults(ruleContainer, resultData.Data[ruleContainer.analyzeRule.ruleName]); } index++; } EditorUtility.ClearProgressBar(); return(root); }