void UpdateAreaSelection()
 {
     if (m_AreaSelection == null)
     {
         m_AreaSelection = new TreeViewSelection();
         if (!string.IsNullOrEmpty(m_AreaSelectionSummary))
         {
             if (m_AreaSelectionSummary == "All")
             {
                 m_AreaSelection.SetAll(AreaNames);
             }
             else if (m_AreaSelectionSummary != "None")
             {
                 var areas = m_AreaSelectionSummary.Split(new[] { ", " }, StringSplitOptions.None);
                 foreach (var area in areas)
                 {
                     m_AreaSelection.selection.Add(area);
                 }
             }
         }
         else
         {
             m_AreaSelection.SetAll(AreaNames);
         }
     }
 }
        void OnEnable()
        {
            ProjectAuditorAnalytics.EnableAnalytics();

            m_ProjectAuditor = new ProjectAuditor();

            UpdateAssemblySelection();

            if (m_AreaSelection == null)
            {
                m_AreaSelection = new TreeViewSelection();
                if (!string.IsNullOrEmpty(m_AreaSelectionSummary))
                {
                    if (m_AreaSelectionSummary == "All")
                    {
                        m_AreaSelection.SetAll(AreaNames);
                    }
                    else if (m_AreaSelectionSummary != "None")
                    {
                        var areas = m_AreaSelectionSummary.Split(new[] { ", " }, StringSplitOptions.None);
                        foreach (var area in areas)
                        {
                            m_AreaSelection.selection.Add(area);
                        }
                    }
                }
                else
                {
                    m_AreaSelection.SetAll(AreaNames);
                }
            }

            m_ModeNames = m_AnalysisViewDescriptors.Select(m => m.name).ToArray();

            if (m_TextFilter == null)
            {
                m_TextFilter = new TextFilter();
            }

            m_AnalysisViews.Clear();
            foreach (var desc in m_AnalysisViewDescriptors)
            {
                var view = new AnalysisView();
                view.CreateTable(desc, m_ProjectAuditor.config, m_Preferences, this);

                if (m_AnalysisState == AnalysisState.Valid)
                {
                    view.AddIssues(m_ProjectReport.GetIssues(view.desc.category));
                }

                m_AnalysisViews.Add(view);
            }

            RefreshDisplay();
        }
        void UpdateAssemblySelection()
        {
            if (m_AssemblyNames == null)
            {
                return;
            }

            if (m_AssemblySelection == null)
            {
                m_AssemblySelection = new TreeViewSelection();
            }

            m_AssemblySelection.selection.Clear();
            if (!string.IsNullOrEmpty(m_AssemblySelectionSummary))
            {
                if (m_AssemblySelectionSummary == "All")
                {
                    m_AssemblySelection.SetAll(m_AssemblyNames);
                }
                else if (m_AssemblySelectionSummary != "None")
                {
                    var assemblies = m_AssemblySelectionSummary.Split(new[] { ", " }, StringSplitOptions.None)
                                     .Where(assemblyName => m_AssemblyNames.Contains(assemblyName));
                    if (assemblies.Count() > 0)
                    {
                        foreach (var assembly in assemblies)
                        {
                            m_AssemblySelection.selection.Add(assembly);
                        }
                    }
                }
            }

            if (!m_AssemblySelection.selection.Any())
            {
                // initial selection setup:
                // - assemblies from user scripts or editable packages, or
                // - default assembly, or,
                // - all generated assemblies

                var compiledAssemblies = m_AssemblyNames.Where(a => !AssemblyInfoProvider.IsUnityEngineAssembly(a));
                compiledAssemblies = compiledAssemblies.Where(a =>
                                                              !AssemblyInfoProvider.IsReadOnlyAssembly(a));
                m_AssemblySelection.selection.AddRange(compiledAssemblies);

                if (!m_AssemblySelection.selection.Any())
                {
                    if (m_AssemblyNames.Contains(AssemblyInfo.DefaultAssemblyName))
                    {
                        m_AssemblySelection.Set(AssemblyInfo.DefaultAssemblyName);
                    }
                    else
                    {
                        m_AssemblySelection.SetAll(m_AssemblyNames);
                    }
                }
            }

            // update assembly selection summary
            m_AssemblySelectionSummary = GetSelectedAssembliesSummary();
        }