void addTeam_Click(object sender, EventArgs e) { var parentTeam = this.FindAncestor <OrgContainerShape>(); var newTeam = new OrgContainerShape(_context) { 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; OrganizationShemaForm.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, OrganizationShemaForm.currentLayoutSettings); }
private void PopulateWithData() { _org = _userContext.Organization.ToList(); foreach (var item in _org.Where(x => x.Parent == 0)) { OrgContainerShape node = this.CreateNode(item, null); node.BaseColor = this.groupColor[0]; this.radDiagram1.AddShape(node); currentLayoutSettings.Roots.Add(node); this.GetSubNodes(item, node, 2); } Program.IsStart = true; }
private OrgContainerShape CreateNode(AlimexDAL.Entity.Organization element, OrgContainerShape parentNode) { OrgContainerShape orgTeam = new OrgContainerShape(_userContext) { Name = element.Name, Id = element.Id }; orgTeam.ToggleCollapseButton.ImagePrimitive.Visibility = Telerik.WinControls.ElementVisibility.Hidden; orgTeam.Text = orgTeam.Name; orgTeam.Tag = element.Id.ToString(); 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; connection.Route = true; 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); }
private RadDiagramShape CreateMemberShape(OrgContainerShape team, User 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.Name; 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.Roles.Select(x => x.Name).FirstOrDefault()); return(member); }
private ObservableCollection <OrgContainerShape> GetSubNodes(AlimexDAL.Entity.Organization element, OrgContainerShape parent, int level) { var nodes = new ObservableCollection <OrgContainerShape>(); var elements = _org.Where(x => x.Parent == element.Id).ToList(); if (elements.Count == 0) { return(nodes); } Random rnd = new Random(); foreach (var subElement in elements) { OrgContainerShape node = this.CreateNode(subElement, parent); node.ShowCollapseButton = level < 3; if (subElement.Parent == 1) { node.BaseColor = Color.FromArgb(rnd.Next(150), rnd.Next(150), rnd.Next(150)); } //if (node.Path.Contains("Production")) //{ // node.BaseColor = this.groupColor[2]; //}else //if (node.Path.Contains("Accounting")) //{ // node.BaseColor = this.groupColor[1]; //} this.radDiagram1.AddShape(node); this.GetSubNodes(subElement, node, level + 1); nodes.Add(node); } return(nodes); }
private ObservableCollection <RadDiagramShape> GetTeamMembers(AlimexDAL.Entity.Organization element, OrgContainerShape orgTeam) { var members = new ObservableCollection <RadDiagramShape>(); if (element.Users != null) { foreach (var xmlNodeMember in element.Users) { RadDiagramShape member = this.CreateMemberShape(orgTeam, xmlNodeMember); member.Tag = xmlNodeMember.Id; members.Add(member); } } return(members); }