protected void AddItemPanel(UserRelationItemPanel itemPanel)
 {
     itemPanel.Added     += OnAdded;
     itemPanel.Updated   += OnUpdated;
     itemPanel.Deleted   += OnDeleted;
     itemPanel.Activated += OnActivated;
     itemPanel.FillUsers(this.Users);
     itemPanel.FillRoles(this.Roles);
     this.panel.Children.Add(itemPanel);
 }
        private void OnUpdated(object item)
        {
            UserRelationItemPanel panel = (UserRelationItemPanel)item;

            if (this.User == null)
            {
                this.User = new Domain.User();
            }
            this.User.relationsListChangeHandler.AddUpdated(panel.RelationItem);
            updated = true;
            OnChanged(panel.RelationItem);
        }
        private void OnActivated(object item)
        {
            UserRelationItemPanel panel = (UserRelationItemPanel)item;

            if (this.ActiveItemPanel != panel)
            {
                this.ActiveItemPanel = panel;
                if (ItemChanged != null && panel.RelationItem != null)
                {
                    ItemChanged(panel.RelationItem);
                }
            }
        }
        private void OnDeleted(object item)
        {
            UserRelationItemPanel panel = (UserRelationItemPanel)item;

            this.panel.Children.Remove(panel);
            if (this.panel.Children.Count == 0)
            {
                OnAdded(null);
                return;
            }
            if (panel.RelationItem != null)
            {
                if (this.User.relationsListChangeHandler.Items.Count > 1)
                {
                    if (this.User == null)
                    {
                        this.User = new Domain.User();
                    }

                    if (ItemDeleted != null && panel.RelationItem != null)
                    {
                        ItemDeleted(panel.RelationItem);
                    }


                    if (this.ActiveItemPanel != null && this.ActiveItemPanel == panel)
                    {
                        this.ActiveItemPanel = (UserRelationItemPanel)this.panel.Children[this.panel.Children.Count - 1];
                    }
                    int index = 1;
                    int j     = 0;
                    for (int i = this.panel.Children.Count - 1; i >= 0; i--)
                    {
                        UserRelationItemPanel pan = this.panel.Children[j] as UserRelationItemPanel;
                        pan.Index = index++;
                        j++;
                    }
                    if (Changed != null)
                    {
                        Changed();
                    }
                }
            }
        }
        private void OnAdded(object item)
        {
            UserRelationItemPanel panel = (UserRelationItemPanel)item;

            if (this.User == null)
            {
                this.User = new Domain.User();
            }
            if (panel == null)
            {
                panel = new UserRelationItemPanel(1);
            }
            if (panel.RelationItem == null)
            {
                panel.RelationItem = new Relation();
            }
            panel.RelationItem.user = this.User;
            this.User.relationsListChangeHandler.AddNew(panel.RelationItem);
            updated = false;
            OnChanged(panel.RelationItem);
        }
        /// <summary>
        /// affiche le calculatedMeasure en edition
        /// </summary>
        /// <param name="table"></param>
        public void DisplayUserRelations(Domain.User user)
        {
            this.User = user;
            this.panel.Children.Clear();
            int index = 1;

            if (user == null)
            {
                this.ActiveItemPanel = new UserRelationItemPanel(index);
                AddItemPanel(this.ActiveItemPanel);
                return;
            }
            foreach (Relation item in user.relationsListChangeHandler.Items)
            {
                UserRelationItemPanel itemPanel = new UserRelationItemPanel();
                itemPanel.Index = index;
                AddItemPanel(itemPanel);
                itemPanel.Display(item);
                index++;
            }

            this.ActiveItemPanel = new UserRelationItemPanel(index);
            AddItemPanel(this.ActiveItemPanel);
        }