Esempio n. 1
0
        private RichText GetRichText(IResource res)
        {
            lock ( _richTextCache )
            {
                RichText richText = (RichText)_richTextCache [res.Id];
                if (richText != null)
                {
                    return(richText);
                }
            }

            TextStyle defaultStyle = new TextStyle(FontStyle.Regular,
                                                   SystemColors.WindowText, Color.Transparent);
            RichTextParameters defaultParams = new RichTextParameters(OwnerControl.Font,
                                                                      defaultStyle);

            if (Core.State == CoreState.ShuttingDown)
            {
                return(new RichText("", defaultParams));
            }

            Thread.SetData(_itemBeingDecoratedSlot, res.Id);
            RichText newRichText = new RichText(res.DisplayName, defaultParams);

            _decoratorLock.AcquireReaderLock(-1);
            try
            {
                HashSet processedDecorators = new HashSet();
                for (int i = _decorators.Count - 1; i >= 0; i--)
                {
                    IResourceNodeDecorator decorator = (IResourceNodeDecorator)_decorators [i];
                    string key = decorator.DecorationKey;
                    if (key != null && processedDecorators.Contains(key))
                    {
                        continue;
                    }
                    if (decorator.DecorateNode(res, newRichText))
                    {
                        if (key != null)
                        {
                            processedDecorators.Add(key);
                        }
                    }
                }
            }
            finally
            {
                _decoratorLock.ReleaseReaderLock();
            }

            Thread.SetData(_itemBeingDecoratedSlot, -1);
            lock ( _richTextCache )
            {
                _richTextCache [res.Id] = newRichText;
            }
            return(newRichText);
        }
Esempio n. 2
0
        public void InsertNodeDecorator(IResourceNodeDecorator decorator, int pos)
        {
            _decoratorLock.AcquireWriterLock(-1);
            try
            {
                _decorators.Insert(pos, decorator);
            }
            finally
            {
                _decoratorLock.ReleaseWriterLock();
            }

            decorator.DecorationChanged += HandleDecorationChanged;
        }
Esempio n. 3
0
        public void AddNodeDecorator(IResourceNodeDecorator decorator)
        {
            _decoratorLock.AcquireWriterLock(-1);
            try
            {
                _decorators.Add(decorator);
            }
            finally
            {
                _decoratorLock.ReleaseWriterLock();
            }

            decorator.DecorationChanged += HandleDecorationChanged;
        }
Esempio n. 4
0
 public void AddDecorator(IResourceNodeDecorator decorator)
 {
     _nameColumn.AddNodeDecorator(decorator);
 }
Esempio n. 5
0
 /// <summary>
 /// Method is supposed to control the order of decorators activation in
 /// more flexible manner, due to the fixed (previously) position of
 /// <c>UnreadNodeDecorator</c> handler.
 /// </summary>
 public void InsertNodeDecorator(IResourceNodeDecorator decorator, int pos)
 {
     _textColumn.InsertNodeDecorator(decorator, pos);
 }
Esempio n. 6
0
 public void AddNodeDecorator(IResourceNodeDecorator decorator)
 {
     _textColumn.AddNodeDecorator(decorator);
 }