private List <CopiedOptionItem> GetItems() { List <CopiedOptionItem> items = new List <CopiedOptionItem>(); List <CopiedOptionItem> queue = new List <CopiedOptionItem>(); queue.Add(mapping[handler]); while (queue.Count > 0) { CopiedOptionItem item = queue[0]; queue.RemoveAt(0); if (item != null) { items.Add(item); if (item is IOptionGroup) { foreach (IOptionItem optionItem in ((IOptionGroup)item).Items) { if (optionItem is CopiedOptionItem) { queue.Add((CopiedOptionItem)optionItem); } } } } } return(items); }
private void delegateItem_PropertyChanged(object sender, PropertyChangedEventArgs e) { CopiedOptionItem item = GetItem(sender); if (item != null) { item.delegateItem_PropertyChanged(sender, e); } }
internal CopiedOptionItem CreateCopy(CopiedOptionGroup newParent, IOptionItem itemToCopy) { CopiedOptionItem newItem; if (itemToCopy is IOptionGroup) { CopiedOptionGroup copiedGroup = new CopiedOptionGroup(itemToCopy as IOptionGroup, newParent); newItem = copiedGroup; } else { newItem = new CopiedOptionItem(itemToCopy, newParent); } newItem.AutoAdopt = IsAutoAdopt; newItem.AutoCommit = IsAutoCommit; mapping[itemToCopy] = newItem; return(newItem); }
private CopiedOptionItem GetItem(object source) { CopiedOptionItem item = Target as CopiedOptionItem; if (item == null) { Disconnect(source); } else { if (item.delegateItem == null) { // can happen if Disconnect has been triggered in the same event dispatch Disconnect(source); return(null); } } return(item); }
public WeakListener(CopiedOptionItem item, IOptionItem optionItem) { this.Target = item; optionItem.PropertyChanged += new PropertyChangedEventHandler(delegateItem_PropertyChanged); }
internal void Dispose(IOptionItem optionItem, CopiedOptionItem copiedOptionItem) { mapping.Remove(optionItem); }
public DelegatingMapper(CopiedOptionItem copiedOptionItem) { this.copiedOptionItem = copiedOptionItem; }