Exemplo n.º 1
0
        private void GroupsTree_DragDrop(object o, DragDropArgs args)
        {
            Drag.Finish(args.Context, true, true, args.Time);
            if (grid.Selection.Count == 0)
            {
                return;
            }

            TreePath             path;
            TreeViewDropPosition pos;

            groupsPanel.GroupsTree.GetDestRowAtPos(args.X, args.Y, out path, out pos);

            TreeIter row;

            groupsPanel.GroupsTree.Model.GetIter(out row, path);
            G group = (G)groupsPanel.GroupsTree.Model.GetValue(row, 2);

            using (Message messageDialog = GetMovingToGroupMessage(group.Name)) {
                messageDialog.Buttons = MessageButtons.YesNo;
                if (messageDialog.Run() != ResponseType.Yes)
                {
                    return;
                }

                foreach (int selectedIndex in grid.Selection)
                {
                    object entity = grid.Model [selectedIndex];
                    IPersistableEntity <T> persistableEntity = entity as IPersistableEntity <T>;
                    if (persistableEntity == null)
                    {
                        continue;
                    }

                    IHirarchicalEntity hirarchicalEntity = entity as IHirarchicalEntity;
                    if (hirarchicalEntity == null)
                    {
                        continue;
                    }

                    if (group.Id == GroupBase <G> .DeletedGroupId)
                    {
                        hirarchicalEntity.Deleted = true;
                        hirarchicalEntity.GroupId = GroupBase <G> .DefaultGroupId;
                    }
                    else
                    {
                        hirarchicalEntity.Deleted = false;
                        hirarchicalEntity.GroupId = group.Id;
                    }
                    persistableEntity.CommitChanges();
                }
                OnEntitiesChanged(groupsPanel.GetSelectedGroupId());
                OnEntitiesMovedToAGroup();
            }
        }
Exemplo n.º 2
0
        protected virtual long?GetEntityGroup(T entity)
        {
            IHirarchicalEntity groupEnt = entity as IHirarchicalEntity;

            if (groupEnt != null)
            {
                return(groupEnt.GroupId);
            }

            return(null);
        }
Exemplo n.º 3
0
        protected override void ReinitializeGrid(bool reinitGroups, long?selectedGroup)
        {
            if (reinitializing)
            {
                return;
            }

            try {
                reinitializing = true;
                if (btnGroups.Active)
                {
                    if (reinitGroups)
                    {
                        if (selectedGroup.HasValue)
                        {
                            selectedGroupId = selectedGroup.Value;
                        }
                        else if (groupsPanel.GroupsCount > 0)
                        {
                            selectedGroupId = groupsPanel.GetSelectedGroupId();
                        }
                        else
                        {
                            LoadSavedGroup();
                        }

                        groupsPanel.LoadGroups(GetAllGroups());

                        if (SelectedItems.Length > 0)
                        {
                            T lastSelected = SelectedItems [SelectedItems.Length - 1];
                            IHirarchicalEntity lastSelectedHieararchical = lastSelected as IHirarchicalEntity;
                            if (lastSelectedHieararchical == null || !lastSelectedHieararchical.Deleted)
                            {
                                selectedGroupId = GetEntityGroup(lastSelected);
                            }
                        }

                        if ((!selectedGroupId.HasValue || !groupsPanel.SelectGroupId((int)selectedGroupId)) &&
                            groupsPanel.SelectFirstGroup())
                        {
                            selectedGroupId = groupsPanel.GetSelectedGroupId();
                        }
                    }
                    SaveGroup();
                }
                else
                {
                    selectedGroupId = null;
                }

                GetNewEntities();
                grid.GrabFocus();

                bool selected = false;
                if (selectedId.HasValue)
                {
                    int index = entities.FindIndex(e => Equals(propertyForID.GetValue(e, null), selectedId));
                    if (index >= 0)
                    {
                        grid.Selection.Clear();
                        grid.Selection.Select(index);
                        grid.FocusRow(index);
                        selected = true;
                    }
                }

                if (selected)
                {
                    RefreshTotalRows();
                }
                else
                {
                    SelectFirstRow();
                }
            } finally {
                reinitializing = false;
            }
        }