예제 #1
0
 public void Refresh()
 {
     SearchService.SearchTextChanged(m_Context);
     m_FilteredItems    = SearchService.GetItems(m_Context);
     m_SelectedIndex    = -1;
     m_ScrollPosition.y = 0;
     UpdateWindowTitle();
     Repaint();
 }
예제 #2
0
        internal void OnEnable()
        {
            m_Context = new SearchContext {
                searchBoxText = SearchService.LastSearch, focusedWindow = lastFocusedWindow
            };
            SearchService.SearchTextChanged(m_Context);
            m_SearchBoxFocus  = true;
            lastFocusedWindow = s_FocusedWindow;
            UpdateWindowTitle();

            m_SelectedIndex    = -1;
            m_FilteredItems    = null;
            m_ScrollPosition.y = 0;

            SearchService.asyncItemReceived += OnAsyncItemsReceived;

            foreach (var provider in SearchService.Providers)
            {
                provider.onEnable?.Invoke();
            }
        }
예제 #3
0
        private void DrawToolbar(SearchContext context)
        {
            if (context == null)
            {
                return;
            }

            GUILayout.BeginHorizontal(Styles.toolbar);
            {
                var rightRect = EditorGUILayout.GetControlRect(GUILayout.MaxWidth(32f), GUILayout.ExpandHeight(true));
                if (EditorGUI.DropdownButton(rightRect, Styles.filterButtonContent, FocusType.Passive, Styles.filterButton) || m_ShowFilterWindow)
                {
                    if (FilterWindow.canShow)
                    {
                        rightRect.x += 12f; rightRect.y -= 3f;
                        if (m_ShowFilterWindow)
                        {
                            rightRect.y += 30f;
                        }

                        m_ShowFilterWindow = false;
                        if (FilterWindow.ShowAtPosition(this, rightRect))
                        {
                            GUIUtility.ExitGUI();
                        }
                    }
                }

                EditorGUI.BeginChangeCheck();

                using (new BlinkCursorScope(m_CursorBlinking, new Color(0, 0, 0, 0.01f)))
                {
                    var userSearchQuery = context.searchBoxText;
                    if (!String.IsNullOrEmpty(m_CycledSearch) && (Event.current.type == EventType.Repaint || Event.current.type == EventType.Layout))
                    {
                        userSearchQuery  = m_CycledSearch;
                        m_CycledSearch   = null;
                        m_SearchBoxFocus = true;
                        GUI.changed      = true;
                    }

                    GUI.SetNextControlName(k_QuickSearchBoxName);
                    context.searchBoxText = EditorGUILayout.TextField(userSearchQuery, Styles.searchField, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true));
                }

                if (String.IsNullOrEmpty(context.searchBoxText))
                {
                    EditorGUI.BeginDisabledGroup(true);
                    EditorGUI.TextArea(GUILayoutUtility.GetLastRect(), "search anything...", Styles.placeholderTextStyle);
                    EditorGUI.EndDisabledGroup();
                }
                if (!String.IsNullOrEmpty(context.searchBoxText))
                {
                    if (GUILayout.Button(Icons.clear, Styles.searchFieldClear, GUILayout.Width(24), GUILayout.Height(24)))
                    {
                        context.searchBoxText = "";
                        GUI.changed           = true;
                        GUI.FocusControl(null);
                    }
                }

                if (EditorGUI.EndChangeCheck() || m_FilteredItems == null)
                {
                    m_SelectedIndex    = -1;
                    m_ScrollPosition.y = 0;
                    SearchService.SearchTextChanged(context);
                    m_FilteredItems = SearchService.GetItems(context);
                    UpdateWindowTitle();
                }

                #if QUICKSEARCH_DEBUG
                DrawDebugTools();
                #endif
            }
            GUILayout.EndHorizontal();
        }