protected override void InternalClonemembers(FileSystemItem src) { base.InternalClonemembers(src); FsContainer s = (FsContainer)src; _itemsById = new Dictionary <Int64, FileSystemItem>(); _itemsByName = new Dictionary <String, FileSystemItem>(); foreach (KeyValuePair <Int64, FileSystemItem> kv in s._itemsById) { FileSystemItem srcItem = kv.Value; if (srcItem is FsLink) { FsLink lnk = (FsLink)srcItem; FsLink lnkNew = (FsLink)srcItem.Clone(); AddItem(lnkNew, false); if (FileSystemItem.BelongsTo(src.Owner._currentMovingRoot, lnk.ItemTo, true)) { src.Owner._linksToFlip.Add(lnkNew); } } else { AddItem(srcItem.Clone(), false); } } }
protected override void InternalClonemembers(FileSystemItem src) { base.InternalClonemembers(src); FsLink s = (FsLink)src; if (_itemTo != null) { _itemTo.RegisterLink(this); } }
public FsLink AddLink(FileSystemItem itemLinkTo, Boolean isDynamic) { if (itemLinkTo is FsLink) { throw new ApplicationException("Creating link to link is prohibited."); } FsLink res = isDynamic ? (FsLink) new FsDynamicLink(itemLinkTo):(FsLink) new FsHardLink(itemLinkTo); itemLinkTo.RegisterLink(res); AddItem(res, true); return(res); }
public FileSystemItem GetTargetItemOfLink(FsLink lnk) { return(_allNodes[lnk.ItemTo.ID]); }
public void UnregisterLink(FsLink lnk) { _links.Remove(lnk); }
public void RegisterLink(FsLink lnk) { _links.Add(lnk); }