// stephenm TODO - if AssemblySelectionWindow and AreaSelectionWindow end up sharing a common base class then // DrawAssemblyFilter() and DrawAreaFilter() can be made to call a common method and just pass the selection, names // and the type of window we want. void DrawAreaFilter() { if (!activeView.desc.showAreaSelection) { return; } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(Contents.AreaFilter, GUILayout.Width(LayoutSize.FilterOptionsLeftLabelWidth)); if (AreaNames.Length > 0) { var lastEnabled = GUI.enabled; var enabled = IsAnalysisValid() && !AreaSelectionWindow.IsOpen(); GUI.enabled = enabled; if (GUILayout.Button(Contents.AreaFilterSelect, EditorStyles.miniButton, GUILayout.Width(LayoutSize.FilterOptionsEnumWidth))) { var analytic = ProjectAuditorAnalytics.BeginAnalytic(); // Note: Window auto closes as it loses focus so this isn't strictly required if (AreaSelectionWindow.IsOpen()) { AreaSelectionWindow.CloseAll(); } else { var windowPosition = new Vector2(Event.current.mousePosition.x + LayoutSize.FilterOptionsEnumWidth, Event.current.mousePosition.y + GUI.skin.label.lineHeight); var screenPosition = GUIUtility.GUIToScreenPoint(windowPosition); AreaSelectionWindow.Open(screenPosition.x, screenPosition.y, this, m_AreaSelection, AreaNames); } ProjectAuditorAnalytics.SendUIButtonEvent(ProjectAuditorAnalytics.UIButton.AreaSelect, analytic); } GUI.enabled = lastEnabled; m_AreaSelectionSummary = GetSelectedAreasSummary(); Utility.DrawSelectedText(m_AreaSelectionSummary); GUILayout.FlexibleSpace(); } EditorGUILayout.EndHorizontal(); }
// stephenm TODO - if AssemblySelectionWindow and AreaSelectionWindow end up sharing a common base class then // DrawAssemblyFilter() and DrawAreaFilter() can be made to call a common method and just pass the selection, names // and the type of window we want. private void DrawAreaFilter() { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(Styles.AreaFilter, GUILayout.Width(LayoutSize.FilterOptionsLeftLabelWidth)); if (m_AreaNames.Length > 0) { var lastEnabled = GUI.enabled; // stephenm TODO - We don't currently have any sense of when the Auditor is busy and should disallow user input var enabled = /*!IsAnalysisRunning() &&*/ !AreaSelectionWindow.IsOpen(); GUI.enabled = enabled; if (GUILayout.Button(Styles.AreaFilterSelect, EditorStyles.miniButton, GUILayout.Width(LayoutSize.FilterOptionsEnumWidth))) { var analytic = ProjectAuditorAnalytics.BeginAnalytic(); // Note: Window auto closes as it loses focus so this isn't strictly required if (AreaSelectionWindow.IsOpen()) { AreaSelectionWindow.CloseAll(); } else { var windowPosition = new Vector2(Event.current.mousePosition.x + LayoutSize.FilterOptionsEnumWidth, Event.current.mousePosition.y + GUI.skin.label.lineHeight); var screenPosition = GUIUtility.GUIToScreenPoint(windowPosition); AreaSelectionWindow.Open(screenPosition.x, screenPosition.y, this, m_AreaSelection, m_AreaNames); } ProjectAuditorAnalytics.SendUIButtonEvent(ProjectAuditorAnalytics.UIButton.AreaSelect, analytic); } GUI.enabled = lastEnabled; m_AreaSelectionSummary = GetSelectedAreasSummary(); DrawSelectedText(m_AreaSelectionSummary); GUILayout.FlexibleSpace(); } EditorGUILayout.EndHorizontal(); }