Example #1
0
        // Returns all unused colors in the Palette.
        public static IEnumerable <ColorPair> GetUnusedColors(ColorDriver driver)
        {
            var result = Palette.Except(UsedSubitemColors);

            if (driver != ColorDriver.Custom)
            {
                HashSet <ColorPair> usedRowColors = new HashSet <ColorPair>();

                foreach (IFilterable item in GetAllDriverItems(driver))
                {
                    if (item.RowColors != null)
                    {
                        usedRowColors.Add(item.RowColors);
                    }
                }

                result = result.Except(usedRowColors);
            }

            if (!result.Any() && !_recursing)
            {
                // Refresh UsedSubitemColors to make sure it's accurate, then try again with a recursive call.
                // Use _recursing to prevent the recursion from going more than one level deep.

                _recursing = true;
                RefreshUsedSubItemColors();
                result     = GetUnusedColors(driver);
                _recursing = false;
            }

            return(result);
        }
Example #2
0
        // Gets the IFilterable object whose Colors property determines
        // this Record's colors.
        public IFilterable GetColorableItem(ColorDriver driver)
        {
            switch (driver)
            {
            case ColorDriver.Loggers:
                return(this.Logger);

            case ColorDriver.Methods:
                return(this.MethodName);

            case ColorDriver.ThreadIDs:
                return(this.Thread);

            case ColorDriver.Sessions:
                return(this.Session);

            case ColorDriver.ThreadNames:
                return(this.ThreadName);

            case ColorDriver.TraceLevels:
                return(this.TLevel);

            case ColorDriver.Custom:
                return(null);

            default:
                return(null);
            }
        }
Example #3
0
        private static IEnumerable <IFilterable> GetAllDriverItems(ColorDriver driver)
        {
            // TODO: These calls aren't thread-safe!

            switch (driver)
            {
            case ColorDriver.Loggers:
                return(LoggerObjects.AllLoggers.Cast <IFilterable>());

            case ColorDriver.Methods:
                return(MethodObjects.AllMethods.Cast <IFilterable>());

            case ColorDriver.Sessions:
                return(SessionObjects.AllSessionObjects.Cast <IFilterable>());

            case ColorDriver.ThreadIDs:
                return(ThreadObjects.AllThreadObjects.Cast <IFilterable>());

            case ColorDriver.ThreadNames:
                return(ThreadNames.AllThreadNames.Cast <IFilterable>());

            case ColorDriver.TraceLevels:
                return(TraceLevelObjects.AllTraceLevels.Values.Cast <IFilterable>());

            default:
                return(null);
            }
        }