private void _comboAdd_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (e.AddedItems.Count < 1 || e.AddedItems[0] is string)
            {
                return;
            }

            // Get the item to add (one of 'em will always be null, eh, what)
            Oltp.UserRow      user  = e.AddedItems[0] as Oltp.UserRow;
            Oltp.UserGroupRow group = e.AddedItems[0] as Oltp.UserGroupRow;

            // Add default permissions
            Oltp.AccountPermissionDataTable pTable = new Oltp.AccountPermissionDataTable();
            foreach (Type pageClass in Const.DefaultPermissions)
            {
                Oltp.AccountPermissionRow pRow = pTable.NewAccountPermissionRow();
                pRow.AccountID      = Window.CurrentAccount.ID;
                pRow.TargetID       = user != null ? user.ID : group.ID;
                pRow.TargetIsGroup  = user == null;
                pRow.PermissionType = pageClass.FullName;
                pRow.Value          = true;
                pTable.Rows.Add(pRow);
            }

            // Save the new permissions
            Window.AsyncOperation(delegate()
            {
                using (OltpProxy proxy = new OltpProxy())
                {
                    proxy.Service.AccountPermission_Save(pTable);
                }
            },
                                  delegate(Exception ex)
            {
                MainWindow.MessageBoxError("Failed to add new permissions.", ex);
                return(false);
            },
                                  delegate()
            {
                //... now update the GUI

                // Remove from the items of the combobox
                (user != null ? _usersToAdd : _groupsToAdd)
                .Remove(user != null ? user as DataRow : group as DataRow);

                // Insert in the cirrect new index
                int newIndex = user != null ? _items.Count : GetFirstUserIndex();
                _items.Insert(
                    newIndex,
                    user != null ? user as DataRow : group as DataRow
                    );

                (sender as ComboBox).SelectedIndex = 0;
                _listTable.ListView.SelectedIndex  = newIndex;
            });
        }
        private void radio_Checked(object sender, RoutedEventArgs e)
        {
            if (_openingDialog)
            {
                return;
            }

            // Check which radio button was pressed
            bool?state = (sender as RadioButton).Name == "radioAllow" ?
                         (bool?)true :
                         (sender as RadioButton).Name == "radioDeny" ?
                         (bool?)false :
                         (bool?)null;


            // Retrieve the data of the permission being set
            ListBoxItem lbItem          = VisualTree.GetParent <ListBoxItem>(sender as RadioButton);
            ApiMenuItem x               = (ApiMenuItem)lbItem.Content;
            string      permissionValue = x.Path;

            if (permissionValue == null)
            {
                return;
            }

            // Retrieve relevant parameters
            object[]          parameters = PermissionTarget_dialog.Content as object[];
            Oltp.UserRow      user       = parameters[0] as Oltp.UserRow;
            Oltp.UserGroupRow group      = parameters[0] as Oltp.UserGroupRow;
            Oltp.AccountPermissionDataTable permissionsTable = parameters[1] as Oltp.AccountPermissionDataTable;

            // Get the row with the last value for this permissions
            Oltp.AccountPermissionRow perm = permissionsTable.FindByAccountIDTargetIDTargetIsGroupPermissionType(
                Window.CurrentAccount.ID,
                user == null ? group.ID : user.ID,
                user == null,
                permissionValue);

            if (state == null && perm != null)
            {
                // Moving to unset, so if a permission exists, delete it
                perm.Delete();
            }
            else if (state != null)
            {
                if (perm == null)
                {
                    // Create a new permission target if none exists
                    perm                = permissionsTable.NewAccountPermissionRow();
                    perm.AccountID      = Window.CurrentAccount.ID;
                    perm.TargetID       = user != null ? user.ID : group.ID;
                    perm.TargetIsGroup  = user == null;
                    perm.PermissionType = permissionValue;
                    perm.Value          = true;
                    permissionsTable.Rows.Add(perm);
                }
                else if (perm.RowState == DataRowState.Deleted)
                {
                    // If the target was deleted, restore it
                    perm.RejectChanges();
                }

                // Apply the correct value
                if (state == true)
                {
                    perm.Value = true;
                }
                else
                {
                    perm.Value = false;
                }
            }
        }