void RefreshList()
        {
            //CTL...generate settings in case not generated before
            CTL_Settings.GenerateInstanceIfNotExist();

            sNeedRefreshAuto = false;
            if (sIsRefreshing)
            {
                return;
            }

            //CTL...clear refs
            for (int i = 0; i < sFilesObjects.Count; i++)
            {
                sFilesObjects[i].Clear();
            }
            sFilesObjects.Clear();

            //CTL...start refresh thread
            sFileParsed    = 0;
            sFileCount     = 0;
            sIsRefreshing  = true;
            mRefreshWorker = new CTL_RefreshWorker();
            mRefreshWorker.ProcessChanged += worker_ProcessChanged;
            mRefreshWorker.WorkCompleted  += worker_WorkCompleted;
            mRefreshThread = new Thread(mRefreshWorker.Work);
            mRefreshThread.Start();
        }
 int GetRefreshProgressPercent()
 {
     return((int)(CTL_RefreshWorker.GetTotalProgress() * 100));
 }
        //CTL...DRAW panel main
        void DrawMainPanel()
        {
            if (sIsRefreshing)
            {
                string msg = sRefreshStepName;
                float  progressDisplayed   = CTL_RefreshWorker.GetTotalProgress();
                Rect   progressBarRect     = new Rect(position.width * .125f, position.height * .4f, position.width * .75f, 20);
                Rect   progressBarTextRect = new Rect(position.width * .125f, position.height * .4f, position.width * .75f, 20);
                EditorGUI.ProgressBar(progressBarRect, progressDisplayed, msg);
                EditorGUI.LabelField(progressBarTextRect, GetRefreshProgressPercent() + "%", new GUIStyle("label")
                {
                    alignment = TextAnchor.MiddleRight
                });
                return;
            }
            if (sProgressBarNeedClear)
            {
                if (Event.current.type == EventType.Repaint)
                {
                    sProgressBarNeedClear = false;
                }
                return;
            }



            Rect headerRect = mMultiColumnHeader_TodoObjects.Draw(position, CTL_Styles.HEADER_HEIGHT, mScrollPosMainTab.x);

            GUILayout.Space(headerRect.height);

            mScrollPosMainTab = EditorGUILayout.BeginScrollView(mScrollPosMainTab);

            float headerWidth = mMultiColumnHeader_TodoObjects.GetHeaderWidth();

            CTL_TodoObject.GenerateDisplayedElementListIfNeeded();
            EditorGUILayout.LabelField("", GUILayout.Width(headerWidth - 8));           //CTL...space only horizontal

            GUIStyle style = new GUIStyle();

            style.border = new RectOffset(0, 0, 0, 0);
            EditorGUILayout.BeginVertical(style);
            GUILayout.Space(CTL_Styles.MAIN_TAB_ELEMENT_HEIGHT * (CTL_TodoObject.sDisplayedElementList.Count - 1));

            int startElement = (int)mScrollPosMainTab.y / CTL_Styles.MAIN_TAB_ELEMENT_HEIGHT;
            int totalHeight  = 0;

            int  hoveredElementId   = -1;
            Rect hoveredElementRect = new Rect();;
            Rect curElemRect;


            //CTL...draw only visible elements
            for (int i = startElement; i < CTL_TodoObject.sDisplayedElementList.Count; i++)
            {
                curElemRect  = DrawElement(CTL_TodoObject.sDisplayedElementList[i], i * CTL_Styles.MAIN_TAB_ELEMENT_HEIGHT, position.width, headerWidth);
                totalHeight += (int)curElemRect.height;

                if (curElemRect.Contains(Event.current.mousePosition))
                {
                    hoveredElementId   = i;
                    hoveredElementRect = new Rect(curElemRect);
                }

                if (totalHeight > position.height - CTL_Styles.HEADER_HEIGHT - CTL_Styles.MAIN_TAB_MCH_HEIGHT)
                {
                    break;
                }
            }

            if (hoveredElementId >= 0 && CTL_Settings.EnableCommentTooltip && Event.current.modifiers == CTL_Settings.DisplayTooltipModifier)
            {
                DrawElementTooltip(hoveredElementRect, position, CTL_TodoObject.sDisplayedElementList[hoveredElementId]);
            }

            EditorGUILayout.EndVertical();
            EditorGUILayout.EndScrollView();
        }