/// <summary> /// 从xml文件中初始化对象 /// </summary> public override void FromXML(XmlNode node) { this.DataState = DataState.UnChanged; this.Namespace = node.Attributes["namespace"].Value; this._guid = node.Attributes["Guid"].Value; this.ProjName = node.Attributes["Name"].Value; this.DataState = DataState.Update; this.EntityList.Clear(); this.FloderList.Clear(); this.DTOList.Clear(); this.EnumList.Clear(); this.RefrenceList.Clear(); XmlNodeList nodeList = node.SelectNodes("RefrenceList/Refrence"); if (nodeList != null) { foreach (XmlNode n in nodeList) { ProjectRefrence projRef = new ProjectRefrence(this, string.Empty, string.Empty); projRef.FromXML(n); this.RefrenceList.Add(projRef); } } nodeList = node.SelectNodes("EntityList/Entity"); //查找当前工程文件下所有的实体 if (nodeList != null) { foreach (XmlNode n in nodeList) { BEEntity entity = new BEEntity(this, string.Empty, string.Empty); entity.FromXML(n); this.EntityList.Add(entity); } } this.FloderList.AddRange(this.LoadFloderList(node)); nodeList = node.SelectNodes("DTOList/DTO"); if (nodeList != null) { foreach (XmlNode n in nodeList) { DTOEntity dtoEntity = new DTOEntity(this, string.Empty, string.Empty); dtoEntity.FromXML(n); this.DTOList.Add(dtoEntity); } } nodeList = node.SelectNodes("EnumList/Enum"); if (nodeList != null) { foreach (XmlNode n in nodeList) { EnumEntity enumEntity = new EnumEntity(this, string.Empty, string.Empty); enumEntity.FromXML(n); this.EnumList.Add(enumEntity); } } this.IsChanged = false; }
private void treeView1_DragDrop(object sender, DragEventArgs e) { TreeNode node = null; if (e.Data.GetDataPresent(typeof(MetaDataTreeNode))) { node = (MetaDataTreeNode)(e.Data.GetData(typeof(MetaDataTreeNode))); } else if (e.Data.GetDataPresent(typeof(ComponentTreeNode))) { node = (ComponentTreeNode)(e.Data.GetData(typeof(ComponentTreeNode))); } else { Array aryFiles = ((System.Array)e.Data.GetData(DataFormats.FileDrop)); if (aryFiles != null) { foreach (string file in aryFiles) { LoadProj(file); } } return; } pos.X = e.X; pos.Y = e.Y; pos = tvProject.PointToClient(pos); ComponentTreeNode dropNode = this.tvProject.GetNodeAt(pos) as ComponentTreeNode; if (dropNode == null) dropNode = this._currentProjNode; if (node is MetaDataTreeNode) { ComponentTreeNode rootNode = GetRootNode(dropNode); ComponentTreeNode refrenceNode = rootNode.Nodes[0] as ComponentTreeNode; MetaDataTreeNode dragNode = node as MetaDataTreeNode; //如果dll已经引用则不需要引用 foreach (ComponentTreeNode subNode in refrenceNode.Nodes) { if (subNode.Text == dragNode.Text) return; } ComponentTreeNode newNode = new ComponentTreeNode(NodeType.RefrenceDll, Guid.NewGuid().ToString()); newNode.RefType = dragNode.RefType; newNode.Text = dragNode.Text; newNode.FileName = dragNode.FileName; newNode.ImageIndex = newNode.SelectedImageIndex = 8; refrenceNode.Nodes.Add(newNode); refrenceNode.Expand(); this.tvProject.SelectedNode = refrenceNode; IProject currentProj = this.GetProject(rootNode.Guid); ProjectRefrence projRefrence = new ProjectRefrence(currentProj, newNode.Guid, this.getRelativePath(dragNode.FilePath)); projRefrence.RefProjName = newNode.FileName; projRefrence.RefrenceType = newNode.RefType; projRefrence.Code = projRefrence.Name = newNode.Text; currentProj.RefrenceList.Add(projRefrence); } else if (node is ComponentTreeNode) { ComponentTreeNode dragNode = node as ComponentTreeNode; // 如果目标节点不存在,即拖拽的位置不存在节点,那么就将被拖拽节点放在根节点之下 if (node is ComponentTreeNode) { if (dragNode.NodeType == NodeType.BEProj || dragNode.NodeType == NodeType.BPProj) { return; } } //不能将节点拖拽到实体节点上 if (dropNode.NodeType == NodeType.BEEntity || dropNode.NodeType == NodeType.BPEntity || dropNode.NodeType == NodeType.Refrence || dropNode.NodeType == NodeType.RefrenceDll || dropNode.NodeType == NodeType.EnumEntity) { return; } ComponentTreeNode rootNode = GetRootNode(dropNode); //不能够跨项目进行拖拽 AbstractPlatformComponent currentProj = this._currentProj as AbstractPlatformComponent; if (rootNode.Guid != currentProj.Guid) { return; } // 1.目标节点不是空。2.目标节点不是被拖拽接点的字节点。3.目标节点不是被拖拽节点本身 if (dropNode != null && dropNode.Parent != node && dropNode != node) { // 将被拖拽节点从原来位置删除。 node.Remove(); // 在目标节点下增加被拖拽节点 dropNode.Nodes.Add(dragNode); } if (dropNode.NodeType == NodeType.BEProj || dropNode.NodeType == NodeType.BPProj) { if (dragNode.NodeType == NodeType.BEEntity) { BEEntity entity = this._currentProj.Get(dragNode.Guid) as BEEntity; if (entity != null) { entity.FloderGuid = string.Empty; } } else if (dragNode.NodeType == NodeType.BPEntity) { BPEntity entity = this._currentProj.Get(dragNode.Guid) as BPEntity; if (entity != null) { entity.FloderGuid = string.Empty; } } else if (dragNode.NodeType == NodeType.DTOEntity) { DTOEntity entity = this._currentProj.Get(dragNode.Guid) as DTOEntity; if (entity != null) { entity.FloderGuid = string.Empty; } } else if (dragNode.NodeType == NodeType.EnumEntity) { EnumEntity entity = this._currentProj.Get(dragNode.Guid) as EnumEntity; if (entity != null) { entity.FloderGuid = string.Empty; } } else if (dragNode.NodeType == NodeType.Floder) { Floder floder = this._currentProj.GetFloder(dragNode.Guid); floder.PGuid = string.Empty; } } else if (dropNode.NodeType == NodeType.Floder) { if (dragNode.NodeType == NodeType.BEEntity) { BEEntity entity = this._currentProj.Get(dragNode.Guid) as BEEntity; if (entity != null) { entity.FloderGuid = dropNode.Guid; } } else if (dragNode.NodeType == NodeType.BPEntity) { BPEntity entity = this._currentProj.Get(dragNode.Guid) as BPEntity; if (entity != null) { entity.FloderGuid = dropNode.Guid; } } else if (dragNode.NodeType == NodeType.DTOEntity) { DTOEntity entity = this._currentProj.Get(dragNode.Guid) as DTOEntity; if (entity != null) { entity.FloderGuid = dropNode.Guid; } } else if (dragNode.NodeType == NodeType.EnumEntity) { EnumEntity entity = this._currentProj.Get(dragNode.Guid) as EnumEntity; if (entity != null) { entity.FloderGuid = dropNode.Guid; } } else if (dragNode.NodeType == NodeType.Floder) { Floder floder = this._currentProj.GetFloder(dragNode.Guid); floder.PGuid = dropNode.Guid; } } } }
public static IProject CreateProject(string ns, string projName) { BEProj proj = new BEProj(string.Empty, System.Guid.NewGuid().ToString()); proj.ProjName = projName; proj.Namespace = ns; //添加自我引用 ProjectRefrence pr = new ProjectRefrence(proj, System.Guid.NewGuid().ToString(), string.Empty); pr.RefProjName = proj.ProjName + ".be"; pr.Code = pr.Name = proj.Namespace + ".dll"; pr.RefrenceType = Net.Code.Builder.Enums.RefType.BEEntity; proj.RefrenceList.Add(pr); pr = new ProjectRefrence(proj, System.Guid.NewGuid().ToString(), string.Empty); pr.RefProjName = proj.ProjName + ".be"; pr.Code = pr.Name = proj.Namespace + ".Deploy.dll"; pr.RefrenceType = Net.Code.Builder.Enums.RefType.Deploy; proj.RefrenceList.Add(pr); proj.ToFile(); return proj; }