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); }
public void InsertNodeDecorator(IResourceNodeDecorator decorator, int pos) { _decoratorLock.AcquireWriterLock(-1); try { _decorators.Insert(pos, decorator); } finally { _decoratorLock.ReleaseWriterLock(); } decorator.DecorationChanged += HandleDecorationChanged; }
public void AddNodeDecorator(IResourceNodeDecorator decorator) { _decoratorLock.AcquireWriterLock(-1); try { _decorators.Add(decorator); } finally { _decoratorLock.ReleaseWriterLock(); } decorator.DecorationChanged += HandleDecorationChanged; }
public void AddDecorator(IResourceNodeDecorator decorator) { _nameColumn.AddNodeDecorator(decorator); }
/// <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); }
public void AddNodeDecorator(IResourceNodeDecorator decorator) { _textColumn.AddNodeDecorator(decorator); }