private void GenerateRootNode() { if (children != null) { return; } this._entity = null; this.parent = null; CreateChildNodes(); }
/// <summary> /// 获取指定目录对象的完整(Id)路径 /// </summary> /// <param name="folder"></param> /// <returns></returns> public string GetFolderFullPath(WindowFolderEntity folder) { if (folder == null) { Debug.Assert(false, "folder 为 null"); throw new ArgumentNullException(); } return(GetFolderFullPath(folder.Id).TrimStart('/')); }
/// <summary> /// 获取用于存储在XML索引文件中的索引节点 /// </summary> /// <param name="entity"></param> /// <returns></returns> private XElement GetArchiveIndex(WindowFolderEntity entity) { Debug.Assert(entity != null, "entity 为 null"); //文件夹在索引文件中可直接ToXml存储 return(XElement.Parse(entity.ToXml())); //XElement ele = new XElement("Entity", // new XAttribute("Id", entity.Id), // new XAttribute("Name", entity.Name), // new XAttribute("ParentId", entity.Parent)); //return ele; }
private void btnOK_Click(object sender, EventArgs e) { if (this.DoValidate() == false) { return; } if (this.FormFolderEntity == null) { this.FormFolderEntity = new WindowFolderEntity(); this.FormFolderEntity.Parent = _parentId; } this.FormFolderEntity.Name = txtName.Text; WindowArchive.Instance.Commit(this.FormFolderEntity); this.DialogResult = DialogResult.OK; this.Close(); }
/// <summary> /// 提交 /// 根据Id进行判断,如果已存在,调用update,如果不存在,调用add /// </summary> /// <param name="dataEntity"></param> public void Commit(WindowFolderEntity entity) { Debug.Assert(entity != null, "FormFolderEntity 为 null"); if (entity == null) { return; } if (FolderExistById(entity.Id)) { UpdateFolder(entity); } else { AddFolder(entity); } }
/// <summary> /// 添加文件夹 /// </summary> /// <param name="entity"></param> public void AddFolder(WindowFolderEntity entity) { Debug.Assert(entity != null, "FormFolderEntity 为 null"); if (entity == null) { return; } //添加索引信息 _indexXml.XPathSelectElement(XPATH_Index_Folder).Add(GetArchiveIndex(entity)); SaveIndexFile(); //发布事件 WindowFolderEventArgs args = new WindowFolderEventArgs(entity); _eventAggregator.GetEvent <WindowFolderAddedEvent>().Publish(args); }
//原来是通过返回null,如传入了一个空串,来表示获取根目录(根目录实际上不是一个目录) //现在改进为查不到抛异常,是不是根目录外部判断处理,不通过返回null隐式的表达其它含义 /// <summary> /// 获取一个文件夹实体 /// </summary> /// <param name="id"></param> /// <returns></returns> public WindowFolderEntity GetFolderEntity(string id) { if (String.IsNullOrEmpty(id)) { Debug.Assert(false, "GetFolderEntity 传入的 id 为空"); return(null); } XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectFolder, id)); if (element == null) { Debug.Assert(false, "GetFolderEntity 失败,返回了 null"); } WindowFolderEntity formFolderEntity = new WindowFolderEntity(); formFolderEntity.FromXml(element.ToString()); return(formFolderEntity); }
/// <summary> /// 获取隶属于指定目录的子目录集合 /// </summary> /// <param name="folderId"></param> /// <returns></returns> public WindowFolderEntityCollection GetFolderCollection(string folderId) { if (folderId == null) { folderId = String.Empty; } WindowFolderEntityCollection collection = new WindowFolderEntityCollection(); foreach (XElement element in _indexXml.XPathSelectElements(String.Format(XPATH_Index_SelectFolder_ByParentId, folderId))) { WindowFolderEntity formFolderEntity = new WindowFolderEntity(); //FormFolderEntity在往Index文件里存的时候是直接ToXml的 //所以此处直接FromXml即可 formFolderEntity.FromXml(element.ToString()); collection.Add(formFolderEntity); } return(collection); }
/// <summary> /// 此方法供DeleteFolder调用 /// 作用是避免每次递归都SaveXml /// </summary> /// <param name="id"></param> /// <param name="deleteForm"></param> private void ProcessFolderDelete(string id) { WindowFolderEntity folderEntity = GetFolderEntity(id); Debug.Assert(folderEntity != null, "folderEntity 为 null"); //递归当前目录下所有子目录,删除之 WindowFolderEntityCollection folderCollection = GetFolderCollection(id); foreach (WindowFolderEntity folder in folderCollection) { ProcessFolderDelete(folder.Id); } //删除窗体 foreach (XElement element in from c in _indexXml.XPathSelectElements(String.Format(XPATH_Index_SelectWindow_ByFolderId, id)) select c) { string formId = element.Attribute("Id").Value; //移除索引信息 element.Remove(); //移除实体文件 _packageService.Current.DeleteFile(Path.Combine(Constant.PACKAGE_WINDOW_FOLDER, formId)); //移除缓存 _cachingService.Remove(formId); } //从索引文件中删除本目录 _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectFolder, id)).Remove(); //发布事件 WindowFolderEventArgs args = new WindowFolderEventArgs(folderEntity); _eventAggregator.GetEvent <WindowFolderRemovedEvent>().Publish(args); }
/// <summary> /// 更新一个文件夹 /// </summary> /// <param name="formFolderEntity"></param> public void UpdateFolder(WindowFolderEntity entity) { Debug.Assert(entity != null, "FormFolderEntity 为 null"); if (entity == null) { return; } //更新索引信息 XElement element = _indexXml.XPathSelectElement(String.Format(XPATH_Index_SelectFolder, entity.Id)); Debug.Assert(element != null, "更新窗体文件夹索引时未找到指定文件夹的索引记录"); if (element != null) { element.ReplaceWith(GetArchiveIndex(entity)); SaveIndexFile(); //发布事件 WindowFolderEventArgs args = new WindowFolderEventArgs(entity); _eventAggregator.GetEvent <WindowFolderUpdatedEvent>().Publish(args); } }
public System.Collections.IEnumerable GetChildren(TreePath treePath) { if (treePath.IsEmpty()) { foreach (WindowFolderEntity folder in _windowComponentService.GetFolderCollection()) { FolderItem item = new FolderItem(folder); yield return(item); } foreach (WindowEntity form in _windowComponentService.GetWindowList(String.Empty)) { FormItem item = new FormItem(form, null); yield return(item); } } else { List <GlobalFormElementTreeItemBase> items = new List <GlobalFormElementTreeItemBase>(); GlobalFormElementTreeItemBase parent = treePath.LastNode as GlobalFormElementTreeItemBase; if (parent != null) { if (parent is FolderItem) { FolderItem folderItem = (FolderItem)parent; WindowFolderEntity formFolderEntity = folderItem.Folder; if (formFolderEntity != null) { foreach (WindowEntity formEntityItem in _windowComponentService.GetWindowList(formFolderEntity.Id)) { GlobalFormElementTreeItemBase elementItem = new FormItem(formEntityItem, parent); items.Add(elementItem); } } } WindowEntity formEntity = parent.Entity as WindowEntity; if (formEntity != null) { foreach (UIElement formElementItem in formEntity.GetFormElement()) { if (this.AllowFormElementControlType.Allowable(formElementItem)) { GlobalFormElementTreeItemBase elementItem = new FormElementItem(formElementItem, parent); items.Add(elementItem); } else { foreach (UIElement innerElement in formElementItem.GetInnerElement()) { if (this.AllowFormElementControlType.Allowable(innerElement)) { GlobalFormElementTreeItemBase elementItem = new FormElementItem(formElementItem, parent); items.Add(elementItem); break; } } } } } UIElement formElement = parent.Entity as UIElement; if (formElement != null) { foreach (UIElement formElementItem in formElement.GetInnerElement()) { if (this.AllowFormElementControlType.Allowable(formElementItem) == false) { continue; } GlobalFormElementTreeItemBase elementItem = new FormElementItem(formElementItem, parent); items.Add(elementItem); } } foreach (GlobalFormElementTreeItemBase item in items) { yield return(item); } } else { yield break; } } }
public WindowFolderEventArgs(WindowFolderEntity folder) { _folder = folder; }
public FolderItem(WindowFolderEntity entity) : base(null) { _entity = entity; }
public string GetFolderFullPath(WindowFolderEntity folder) { return(_windowArchive.GetFolderFullPath(folder)); }
public void DeleteFolder(WindowFolderEntity entity) { DeleteFolder(entity.Id); }
public FolderAddressNode(WindowFolderEntity entity, FolderAddressNode parent) { _windowComponentService = ServiceUnity.Container.Resolve <IWindowComponentService>(); this._entity = entity; this.parent = parent; }
public FolderEntityIndex(WindowFolderEntity entity) { _folder = entity; _initialized = true; }