Example #1
0
            /// <summary>
            /// Updates associated text label for the entry in the menu
            /// </summary>
            public virtual void UpdateText(bool isHighlighted, bool isDuplicating)
            {
                ITextBoard nameTB         = Element.name.TextBoard,
                           valueTB        = Element.value.TextBoard,
                           postTB         = Element.postfix.TextBoard;
                IBlockMember  blockMember = AssocMember;
                StringBuilder name        = blockMember.Name,
                              disp        = blockMember.FormattedValue,
                              status      = blockMember.StatusText;

                GlyphFormat dupeCrossFormat, bodyFormat, valueFormat;

                if (PropertyOpen)
                {
                    dupeCrossFormat = QuickActionMenu.selectedFormat;
                    bodyFormat      = QuickActionMenu.selectedFormat;
                    valueFormat     = QuickActionMenu.selectedFormat;
                }
                else
                {
                    dupeCrossFormat = QuickActionMenu.dupeCrossFormat;
                    bodyFormat      = QuickActionMenu.bodyFormat;
                    valueFormat     = isHighlighted ? QuickActionMenu.highlightFormat : QuickActionMenu.valueFormat;
                }

                // Update Name
                nameTB.Clear();

                if (isDuplicating && IsSelectedForDuplication)
                {
                    nameTB.Append("+ ", dupeCrossFormat);
                }

                if (name != null)
                {
                    textBuf.Clear();
                    textBuf.AppendSubstringMax(name, maxEntryCharCount);
                    nameTB.Append(textBuf, bodyFormat);

                    if (disp != null || status != null)
                    {
                        nameTB.Append(": ", bodyFormat);
                    }
                }

                // Update Value
                if (!Element.value.InputOpen && !WaitingForChatInput)
                {
                    valueTB.Clear();

                    if (disp != null)
                    {
                        var colorMember = AssocMember as IBlockNumericValue <Color>;
                        valueTB.Append(disp, valueFormat);
                    }
                }

                // Update Postfix
                postTB.Clear();

                if (status != null)
                {
                    postTB.Append(' ', bodyFormat);
                    postTB.Append(status, bodyFormat);
                }
            }