static public AreaSelectionWindow Open(float screenX, float screenY, ProjectAuditorWindow projectAuditorWindow, TreeViewSelection selection, string[] names) { AreaSelectionWindow window = GetWindow <AreaSelectionWindow>("Areas"); window.position = new Rect(screenX, screenY, 400, 500); window.SetData(projectAuditorWindow, selection, names); window.Show(); return(window); }
// SteveM 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; // SteveM 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))) { // 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); } } GUI.enabled = lastEnabled; m_AreaSelectionSummary = GetSelectedAreasSummary(); DrawSelectedText(m_AreaSelectionSummary); GUILayout.FlexibleSpace(); } EditorGUILayout.EndHorizontal(); }
static public void CloseAll() { AreaSelectionWindow window = GetWindow <AreaSelectionWindow>("Areas"); window.Close(); }