protected virtual void DrawHeader()
        {
            EditorGUILayout.BeginHorizontal();
            int prevIndex = searchTypeIndex;

            searchTypeIndex = GUILayout.Toolbar(searchTypeIndex, searchTypeTexts);
            EditorGUILayout.EndHorizontal();

            if (searchTypeIndex != prevIndex)
            {
                FindMissingComponents(CurrentSearchType);
            }

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button(EditorGUIUtility.IconContent("d_Refresh"), GUILayout.MaxWidth(30)))
            {
                FindMissingComponents(CurrentSearchType);
            }

            if (missingComponentInfos.Count == 0)
            {
                GUILayout.Label("No missing components found");
            }
            else
            {
                GUILayout.Label(EditorGUIUtility.IconContent("d_console.warnicon"), GUILayout.MaxWidth(20), GUILayout.MaxHeight(20));
                GUILayout.Label("Found " + totalMissingComponentCount + " missing component(s)");
            }

            GUI.enabled = missingComponentInfos.Count > 0;
            if (GUILayout.Button("Select All", GUILayout.MaxWidth(100)))
            {
                Selection.objects = missingComponentInfos.Select(info => info.gameObject).ToArray();
                selectedInfo      = null;
            }
            GUI.enabled = true;

            EditorGUILayout.EndHorizontal();
            DrawLine(1);
        }
 private void SelectGameObject(MissingComponentInfo info)
 {
     Selection.activeObject = info.gameObject;
     selectedInfo           = info;
     EditorGUIUtility.PingObject(Selection.activeObject);
 }