void addTeam_Click(object sender, EventArgs e)
        {
            var parentTeam = this.FindAncestor <OrgContainerShape>();
            var newTeam    = new OrgContainerShape()
            {
                Name      = "New " + parentTeam.Tag.ToString() + " Team",
                BaseColor = parentTeam.BaseColor,
            };

            parentTeam.ShowCollapseButton = true;
            newTeam.ToggleCollapseButton.ImagePrimitive.Visibility = Telerik.WinControls.ElementVisibility.Hidden;
            newTeam.Text               = newTeam.Name;
            newTeam.Tag                = parentTeam.Tag.ToString();
            newTeam.Path               = string.Format("{0}|{1}", parentTeam.Path, newTeam.Name);
            newTeam.TeamMembers        = string.Format("0 Team Members");
            newTeam.ShowCollapseButton = false;
            OrgChartForm.currentLayoutSettings.Roots.Add(newTeam);

            var diagramElement = this.FindAncestor <RadDiagramElement>();

            diagramElement.AddShape(newTeam);

            RadDiagramConnection connection = new RadDiagramConnection();

            connection.ConnectionType = Telerik.Windows.Diagrams.Core.ConnectionType.Polyline;
            connection.Source         = parentTeam;
            connection.Target         = newTeam;
            connection.Route          = true;
            diagramElement.AddConnection(connection);

            diagramElement.SetLayout(Telerik.Windows.Diagrams.Core.LayoutType.Tree, OrgChartForm.currentLayoutSettings);
        }
Beispiel #2
0
        private ObservableCollection <OrgContainerShape> GetSubNodes(XContainer element, OrgContainerShape parent, int level)
        {
            var             nodes    = new ObservableCollection <OrgContainerShape>();
            List <XElement> elements = new List <XElement>(element.Elements("Node"));

            if (elements.Count == 0)
            {
                return(nodes);
            }


            foreach (var subElement in elements)
            {
                OrgContainerShape node = this.CreateNode(subElement, parent);
                node.ShowCollapseButton = level < 3;
                if (node.Path.Contains("Development"))
                {
                    node.BaseColor = this.groupColor[2];
                }
                if (node.Path.Contains("Marketing"))
                {
                    node.BaseColor = this.groupColor[1];
                }

                this.radDiagram1.AddShape(node);

                this.GetSubNodes(subElement, node, level + 1);
                nodes.Add(node);
            }

            return(nodes);
        }
Beispiel #3
0
        private void PopulateWithData()
        {
            XElement dataXml = XElement.Load(@"C:\Users\Cantekin\Desktop\Yeni klasör (2)\Diagram\Diagram\DiagramFirstLook\Resources\Organization.xml");

            foreach (XElement element in dataXml.Elements("Node"))
            {
                OrgContainerShape node = this.CreateNode(element, null);
                node.BaseColor = this.groupColor[0];
                this.radDiagram1.AddShape(node);
                currentLayoutSettings.Roots.Add(node);
                this.GetSubNodes(element, node, 2);
            }
        }
Beispiel #4
0
        private OrgContainerShape CreateNode(XElement element, OrgContainerShape parentNode)
        {
            OrgContainerShape orgTeam = new OrgContainerShape()
            {
                Name = element.Attribute("Name").Value,
            };

            orgTeam.ToggleCollapseButton.ImagePrimitive.Visibility = Telerik.WinControls.ElementVisibility.Hidden;
            orgTeam.Text = orgTeam.Name;
            orgTeam.Tag  = element.Attribute("Branch").Value;
            orgTeam.Path = parentNode == null ? orgTeam.Name : string.Format("{0}|{1}", parentNode.Path, orgTeam.Name);
            currentLayoutSettings.Roots.Add(orgTeam);
            if (parentNode != null)
            {
                RadDiagramConnection connection = new RadDiagramConnection();
                connection.ConnectionType = Telerik.Windows.Diagrams.Core.ConnectionType.Polyline;
                connection.Source         = parentNode;
                connection.Target         = orgTeam;

                this.radDiagram1.AddConnection(connection);
            }

            var teamMembers = this.GetTeamMembers(element, orgTeam);
            var position    = new Telerik.Windows.Diagrams.Core.Point(10, 50);

            int memberCount = 0;

            foreach (var member in teamMembers)
            {
                this.radDiagram1.AddShape(member);
                orgTeam.Items.Add(member);
                member.Position = position;
                position.X     += member.Width + 20;
                if (++memberCount % 2 == 0)
                {
                    position = new Telerik.Windows.Diagrams.Core.Point(10, position.Y + member.Height + 10);
                }
            }

            orgTeam.IsCollapsedChanged += this.orgTeam_IsCollapsedChanged;
            return(orgTeam);
        }
Beispiel #5
0
        private RadDiagramShape CreateMemberShape(OrgContainerShape team, XElement xmlNodeMember)
        {
            RadDiagramShape member = new RadDiagramShape();

            member.IsConnectorsManipulationEnabled = false;
            member.ForeColor         = Color.White;
            member.IsRotationEnabled = false;
            member.IsResizingEnabled = false;
            member.Shape             = new Telerik.WinControls.RoundRectShape(0);
            member.BackColor         = Color.LightBlue;
            member.Width             = 190;
            member.Height            = 50;
            member.Tag  = team;
            member.Name = xmlNodeMember.Attribute("Name").Value;
            member.DiagramShapeElement.TextAlignment     = ContentAlignment.MiddleLeft;
            member.DiagramShapeElement.ImageLayout       = ImageLayout.None;
            member.DiagramShapeElement.Padding           = new System.Windows.Forms.Padding(5, 2, 2, 0);
            member.DiagramShapeElement.Image             = null;//this.GetImageFromResource(member.Name);
            member.DiagramShapeElement.ImageAlignment    = ContentAlignment.MiddleLeft;
            member.DiagramShapeElement.TextImageRelation = TextImageRelation.ImageBeforeText;
            member.DiagramShapeElement.TextWrap          = false;
            member.Text = string.Format(" {0}\n {1}", member.Name, xmlNodeMember.Attribute("Position").Value);
            return(member);
        }
Beispiel #6
0
        private ObservableCollection <RadDiagramShape> GetTeamMembers(XContainer element, OrgContainerShape team)
        {
            var members = new ObservableCollection <RadDiagramShape>();

            foreach (var xmlNodeMember in element.Elements("NodeMember"))
            {
                RadDiagramShape member = this.CreateMemberShape(team, xmlNodeMember);
                members.Add(member);
            }

            return(members);
        }