예제 #1
0
        /// <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;
                    }
                }
            }
        }
예제 #3
0
        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;
        }