// this is the formatted item placed into
        // a left / center / right padded space
        // exactly ColWidth in size
        // and then the margins are added to
        // the left / right sides resp.
        public static string FormatForColumn(string value,
                                             RevisionDataDisplay dd,
                                             char left = ' ', char right = ' ',
                                             RevisionMetaData.Justification justification = RevisionMetaData.Justification.UNDEFINED)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                value = "";
            }

            string formatted;

            formatted = Abbreviate(value, dd.ColWidth, '…');

            if (justification == RevisionMetaData.Justification.UNDEFINED)
            {
                formatted = Justify(formatted, dd.JustifyColumn, dd.ColWidth, left, right);
            }
            else
            {
                formatted = Justify(formatted, justification, dd.ColWidth, left, right);
            }

            formatted = ApplyMargin(formatted, dd.MarginLeft,
                                    dd.MarginRight, left, right);

            return(formatted);
        }
        public static string Justify(string formatted,
                                     RevisionMetaData.Justification justifyColumn, int width, char left = ' ', char right = ' ')
        {
            string result = formatted;

            switch (justifyColumn)
            {
            case RevisionMetaData.Justification.LEFT:
            {
                result = formatted.PadRight(width, left);
                break;
            }

            case RevisionMetaData.Justification.CENTER:
            {
                result = formatted.PadCenter(width, left, right);
                break;
            }

            case RevisionMetaData.Justification.RIGHT:
            {
                result = formatted.PadLeft(width, right);
                break;
            }
            }
            return(result);
        }